diff --git a/app/containers/markdown/index.js b/app/containers/markdown/index.js index d4435edea..40af9e171 100644 --- a/app/containers/markdown/index.js +++ b/app/containers/markdown/index.js @@ -60,6 +60,8 @@ const emojiCount = (str) => { return counter; }; +const parser = new Parser(); + class Markdown extends PureComponent { static propTypes = { msg: PropTypes.string, @@ -81,13 +83,9 @@ class Markdown extends PureComponent { constructor(props) { super(props); - - this.parser = this.createParser(); this.renderer = this.createRenderer(props.preview); } - createParser = () => new Parser(); - createRenderer = (preview = false) => new Renderer({ renderers: { text: this.renderText, @@ -385,7 +383,7 @@ class Markdown extends PureComponent { if (preview) { m = m.split('\n').reduce((lines, line) => `${ lines } ${ line }`, ''); - const ast = this.parser.parse(m); + const ast = parser.parse(m); return this.renderer.render(ast); } @@ -393,7 +391,7 @@ class Markdown extends PureComponent { return {m}; } - const ast = this.parser.parse(m); + const ast = parser.parse(m); this.isMessageContainsOnlyEmoji = isOnlyEmoji(m) && emojiCount(m) <= 3; this.editedMessage(ast); diff --git a/app/index.js b/app/index.js index 0f596f650..428a0c190 100644 --- a/app/index.js +++ b/app/index.js @@ -43,6 +43,9 @@ import Tablet, { initTabletNav } from './tablet'; import sharedStyles from './views/Styles'; import { SplitContext } from './split'; +import RoomsListView from './views/RoomsListView'; +import RoomView from './views/RoomView'; + if (isIOS) { const RNScreens = require('react-native-screens'); RNScreens.useScreens(); @@ -111,9 +114,7 @@ const OutsideStackModal = createStackNavigator({ }); const RoomRoutes = { - RoomView: { - getScreen: () => require('./views/RoomView').default - }, + RoomView, ThreadMessagesView: { getScreen: () => require('./views/ThreadMessagesView').default }, @@ -127,9 +128,7 @@ const RoomRoutes = { // Inside const ChatsStack = createStackNavigator({ - RoomsListView: { - getScreen: () => require('./views/RoomsListView').default - }, + RoomsListView, RoomActionsView: { getScreen: () => require('./views/RoomActionsView').default }, diff --git a/app/lib/methods/subscriptions/rooms.js b/app/lib/methods/subscriptions/rooms.js index 52f527d56..02fac22f3 100644 --- a/app/lib/methods/subscriptions/rooms.js +++ b/app/lib/methods/subscriptions/rooms.js @@ -1,4 +1,5 @@ import { sanitizedRaw } from '@nozbe/watermelondb/RawRecord'; +import { InteractionManager } from 'react-native'; import database from '../../database'; import { merge } from '../helpers/mergeSubscriptionsRooms'; @@ -23,7 +24,7 @@ let subQueue = {}; let subTimer = null; let roomQueue = {}; let roomTimer = null; -const WINDOW_TIME = 1000; +const WINDOW_TIME = 500; const createOrUpdateSubscription = async(subscription, room) => { try { @@ -176,7 +177,9 @@ const debouncedUpdateSub = (subscription) => { subQueue = {}; subTimer = null; Object.keys(subBatch).forEach((key) => { - createOrUpdateSubscription(subBatch[key]); + InteractionManager.runAfterInteractions(() => { + createOrUpdateSubscription(subBatch[key]); + }); }); }, WINDOW_TIME); } @@ -190,7 +193,9 @@ const debouncedUpdateRoom = (room) => { roomQueue = {}; roomTimer = null; Object.keys(roomBatch).forEach((key) => { - createOrUpdateSubscription(null, roomBatch[key]); + InteractionManager.runAfterInteractions(() => { + createOrUpdateSubscription(null, roomBatch[key]); + }); }); }, WINDOW_TIME); } diff --git a/app/views/RoomView/List.js b/app/views/RoomView/List.js index c39e32e63..864f60cce 100644 --- a/app/views/RoomView/List.js +++ b/app/views/RoomView/List.js @@ -25,9 +25,9 @@ class List extends React.Component { rid: PropTypes.string, t: PropTypes.string, tmid: PropTypes.string, - animated: PropTypes.bool, theme: PropTypes.string, - listRef: PropTypes.func + listRef: PropTypes.func, + navigation: PropTypes.object }; constructor(props) { @@ -40,9 +40,17 @@ class List extends React.Component { loading: true, end: false, messages: [], - refreshing: false + refreshing: false, + animated: false }; this.init(); + this.didFocusListener = props.navigation.addListener('didFocus', () => { + if (this.mounted) { + this.setState({ animated: true }); + } else { + this.state.animated = true; + } + }); console.timeEnd(`${ this.constructor.name } init`); } @@ -130,6 +138,9 @@ class List extends React.Component { if (this.onEndReached && this.onEndReached.stop) { this.onEndReached.stop(); } + if (this.didFocusListener && this.didFocusListener.remove) { + this.didFocusListener.remove(); + } console.countReset(`${ this.constructor.name }.render calls`); } @@ -180,7 +191,10 @@ class List extends React.Component { // eslint-disable-next-line react/sort-comp update = () => { - animateNextTransition(); + const { animated } = this.state; + if (animated) { + animateNextTransition(); + } this.forceUpdate(); }; diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js index df8b5dffe..2f3150d94 100644 --- a/app/views/RoomView/index.js +++ b/app/views/RoomView/index.js @@ -182,8 +182,6 @@ class RoomView extends React.Component { this.findAndObserveRoom(this.rid); } - this.beginAnimating = false; - this.didFocusListener = props.navigation.addListener('didFocus', () => this.beginAnimating = true); this.messagebox = React.createRef(); this.list = React.createRef(); this.willBlurListener = props.navigation.addListener('willBlur', () => this.mounted = false); @@ -289,9 +287,6 @@ class RoomView extends React.Component { } } this.unsubscribe(); - if (this.didFocusListener && this.didFocusListener.remove) { - this.didFocusListener.remove(); - } if (this.didMountInteraction && this.didMountInteraction.cancel) { this.didMountInteraction.cancel(); } @@ -321,7 +316,6 @@ class RoomView extends React.Component { navigation.navigate('RoomActionsView', { rid: this.rid, t: this.t, room }); } - // eslint-disable-next-line react/sort-comp init = async() => { try { this.setState({ loading: true }); @@ -893,7 +887,9 @@ class RoomView extends React.Component { const { room, reactionsModalVisible, selectedMessage, loading, reacting } = this.state; - const { user, baseUrl, theme } = this.props; + const { + user, baseUrl, theme, navigation + } = this.props; const { rid, t } = room; return ( @@ -916,7 +912,7 @@ class RoomView extends React.Component { room={room} renderRow={this.renderItem} loading={loading} - animated={this.beginAnimating} + navigation={navigation} /> {this.renderFooter()} {this.renderActions()} diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index c2a99673f..755b761b6 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -182,6 +182,7 @@ class RoomsListView extends React.Component { console.time(`${ this.constructor.name } mount`); this.gotSubscriptions = false; + this.animated = false; const { width } = Dimensions.get('window'); this.state = { searching: false, @@ -215,9 +216,11 @@ class RoomsListView extends React.Component { } }); this.didFocusListener = navigation.addListener('didFocus', () => { + this.animated = true; this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.handleBackPress); }); this.willBlurListener = navigation.addListener('willBlur', () => { + this.animated = false; closeServerDropdown(); if (this.backHandler && this.backHandler.remove) { this.backHandler.remove(); @@ -338,12 +341,11 @@ class RoomsListView extends React.Component { console.countReset(`${ this.constructor.name }.render calls`); } + // eslint-disable-next-line react/sort-comp onDimensionsChange = ({ window: { width } }) => this.setState({ width }); - // eslint-disable-next-line react/sort-comp internalSetState = (...args) => { - const { navigation } = this.props; - if (navigation.isFocused()) { + if (this.animated) { animateNextTransition(); } this.setState(...args); @@ -532,7 +534,7 @@ class RoomsListView extends React.Component { prid: item.prid, room: item }); - }; + } _onPressItem = async(item = {}) => { if (!item.search) { diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 2a0b1daeb..c0bec2f56 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -34,35 +34,41 @@ PODS: - React-Core (= 0.61.5) - React-jsi (= 0.61.5) - ReactCommon/turbomodule/core (= 0.61.5) - - Firebase/Core (6.8.1): + - Firebase/Core (6.16.0): - Firebase/CoreOnly - - FirebaseAnalytics (= 6.1.1) - - Firebase/CoreOnly (6.8.1): - - FirebaseCore (= 6.2.3) - - FirebaseAnalytics (6.1.1): - - FirebaseCore (~> 6.2) - - FirebaseInstanceID (~> 4.2) - - GoogleAppMeasurement (= 6.1.1) + - FirebaseAnalytics (= 6.2.2) + - Firebase/CoreOnly (6.16.0): + - FirebaseCore (= 6.6.1) + - FirebaseAnalytics (6.2.2): + - FirebaseCore (~> 6.6) + - FirebaseInstanceID (~> 4.3) + - GoogleAppMeasurement (= 6.2.2) - GoogleUtilities/AppDelegateSwizzler (~> 6.0) - GoogleUtilities/MethodSwizzler (~> 6.0) - GoogleUtilities/Network (~> 6.0) - "GoogleUtilities/NSData+zlib (~> 6.0)" - - nanopb (~> 0.3) - - FirebaseCore (6.2.3): - - FirebaseCoreDiagnostics (~> 1.0) - - FirebaseCoreDiagnosticsInterop (~> 1.0) - - GoogleUtilities/Environment (~> 6.2) - - GoogleUtilities/Logger (~> 6.2) - - FirebaseCoreDiagnostics (1.0.1): - - FirebaseCoreDiagnosticsInterop (~> 1.0) - - GoogleDataTransportCCTSupport (~> 1.0) - - GoogleUtilities/Environment (~> 6.2) - - GoogleUtilities/Logger (~> 6.2) - - FirebaseCoreDiagnosticsInterop (1.0.0) - - FirebaseInstanceID (4.2.5): - - FirebaseCore (~> 6.0) - - GoogleUtilities/Environment (~> 6.0) - - GoogleUtilities/UserDefaults (~> 6.0) + - nanopb (= 0.3.9011) + - FirebaseCore (6.6.1): + - FirebaseCoreDiagnostics (~> 1.2) + - FirebaseCoreDiagnosticsInterop (~> 1.2) + - GoogleUtilities/Environment (~> 6.5) + - GoogleUtilities/Logger (~> 6.5) + - FirebaseCoreDiagnostics (1.2.0): + - FirebaseCoreDiagnosticsInterop (~> 1.2) + - GoogleDataTransportCCTSupport (~> 1.3) + - GoogleUtilities/Environment (~> 6.5) + - GoogleUtilities/Logger (~> 6.5) + - nanopb (~> 0.3.901) + - FirebaseCoreDiagnosticsInterop (1.2.0) + - FirebaseInstallations (1.1.0): + - FirebaseCore (~> 6.6) + - GoogleUtilities/UserDefaults (~> 6.5) + - PromisesObjC (~> 1.2) + - FirebaseInstanceID (4.3.0): + - FirebaseCore (~> 6.6) + - FirebaseInstallations (~> 1.0) + - GoogleUtilities/Environment (~> 6.5) + - GoogleUtilities/UserDefaults (~> 6.5) - Folly (2018.10.22.00): - boost-for-react-native - DoubleConversion @@ -73,51 +79,52 @@ PODS: - DoubleConversion - glog - glog (0.3.5) - - GoogleAppMeasurement (6.1.1): + - GoogleAppMeasurement (6.2.2): - GoogleUtilities/AppDelegateSwizzler (~> 6.0) - GoogleUtilities/MethodSwizzler (~> 6.0) - GoogleUtilities/Network (~> 6.0) - "GoogleUtilities/NSData+zlib (~> 6.0)" - - nanopb (~> 0.3) - - GoogleDataTransport (1.2.0) - - GoogleDataTransportCCTSupport (1.0.4): - - GoogleDataTransport (~> 1.2) - - nanopb - - GoogleUtilities/AppDelegateSwizzler (6.3.0): + - nanopb (= 0.3.9011) + - GoogleDataTransport (3.3.1) + - GoogleDataTransportCCTSupport (1.3.1): + - GoogleDataTransport (~> 3.3) + - nanopb (~> 0.3.901) + - GoogleUtilities/AppDelegateSwizzler (6.5.1): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - - GoogleUtilities/Environment (6.3.0) - - GoogleUtilities/Logger (6.3.0): + - GoogleUtilities/Environment (6.5.1) + - GoogleUtilities/Logger (6.5.1): - GoogleUtilities/Environment - - GoogleUtilities/MethodSwizzler (6.3.0): + - GoogleUtilities/MethodSwizzler (6.5.1): - GoogleUtilities/Logger - - GoogleUtilities/Network (6.3.0): + - GoogleUtilities/Network (6.5.1): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (6.3.0)" - - GoogleUtilities/Reachability (6.3.0): + - "GoogleUtilities/NSData+zlib (6.5.1)" + - GoogleUtilities/Reachability (6.5.1): - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (6.3.0): + - GoogleUtilities/UserDefaults (6.5.1): - GoogleUtilities/Logger - JitsiMeetSDK (2.4.0) - KeyCommands (2.0.3): - React - - libwebp (1.0.3): - - libwebp/demux (= 1.0.3) - - libwebp/mux (= 1.0.3) - - libwebp/webp (= 1.0.3) - - libwebp/demux (1.0.3): + - libwebp (1.1.0): + - libwebp/demux (= 1.1.0) + - libwebp/mux (= 1.1.0) + - libwebp/webp (= 1.1.0) + - libwebp/demux (1.1.0): - libwebp/webp - - libwebp/mux (1.0.3): + - libwebp/mux (1.1.0): - libwebp/demux - - libwebp/webp (1.0.3) - - nanopb (0.3.901): - - nanopb/decode (= 0.3.901) - - nanopb/encode (= 0.3.901) - - nanopb/decode (0.3.901) - - nanopb/encode (0.3.901) + - libwebp/webp (1.1.0) + - nanopb (0.3.9011): + - nanopb/decode (= 0.3.9011) + - nanopb/encode (= 0.3.9011) + - nanopb/decode (0.3.9011) + - nanopb/encode (0.3.9011) + - PromisesObjC (1.2.8) - RCTRequired (0.61.5) - RCTTypeSafety (0.61.5): - FBLazyVector (= 0.61.5) @@ -395,10 +402,10 @@ PODS: - RNVectorIcons (6.6.0): - React - RSKImageCropper (2.2.3) - - SDWebImage (5.1.1): - - SDWebImage/Core (= 5.1.1) - - SDWebImage/Core (5.1.1) - - SDWebImageWebPCoder (0.2.4): + - SDWebImage (5.5.2): + - SDWebImage/Core (= 5.5.2) + - SDWebImage/Core (5.5.2) + - SDWebImageWebPCoder (0.2.5): - libwebp (~> 1.0) - SDWebImage/Core (~> 5.0) - UMBarCodeScannerInterface (3.0.0) @@ -500,7 +507,7 @@ DEPENDENCIES: - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: - https://github.com/CocoaPods/Specs.git: + trunk: - boost-for-react-native - Crashlytics - Fabric @@ -509,6 +516,7 @@ SPEC REPOS: - FirebaseCore - FirebaseCoreDiagnostics - FirebaseCoreDiagnosticsInterop + - FirebaseInstallations - FirebaseInstanceID - GoogleAppMeasurement - GoogleDataTransport @@ -516,6 +524,7 @@ SPEC REPOS: - GoogleUtilities - libwebp - nanopb + - PromisesObjC - RSKImageCropper - SDWebImage - SDWebImageWebPCoder @@ -713,22 +722,24 @@ SPEC CHECKSUMS: Fabric: 706c8b8098fff96c33c0db69cbf81f9c551d0d74 FBLazyVector: aaeaf388755e4f29cd74acbc9e3b8da6d807c37f FBReactNativeSpec: 118d0d177724c2d67f08a59136eb29ef5943ec75 - Firebase: 9cbe4e5b5eaafa05dc932be58b7c8c3820d71e88 - FirebaseAnalytics: 843c7f64a8f9c79f0d03281197ebe7bb1d58d477 - FirebaseCore: e9d9bd1dae61c1e82bc1e0e617a9d832392086a0 - FirebaseCoreDiagnostics: 4c04ae09d0ab027c30179828c6bb47764df1bd13 - FirebaseCoreDiagnosticsInterop: 6829da2b8d1fc795ff1bd99df751d3788035d2cb - FirebaseInstanceID: 550df9be1f99f751d8fcde3ac342a1e21a0e6c42 + Firebase: 497158b816d0a86fc31babbd05546fcd7e6083ff + FirebaseAnalytics: cf95d3aab897612783020fbd98401d5366f135ee + FirebaseCore: 85064903ed6c28e47fec9c7bd149d94ba1b6b6e7 + FirebaseCoreDiagnostics: 5e78803ab276bc5b50340e3c539c06c3de35c649 + FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850 + FirebaseInstallations: 575cd32f2aec0feeb0e44f5d0110a09e5e60b47b + FirebaseInstanceID: 6668efc1655a4052c083f287a7141f1ead12f9c2 Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 glog: 1f3da668190260b06b429bb211bfbee5cd790c28 - GoogleAppMeasurement: 86a82f0e1f20b8eedf8e20326530138fd71409de - GoogleDataTransport: 8f9897b8e073687f24ca8d3c3a8013dec7d2d1cc - GoogleDataTransportCCTSupport: 7455d07b98851aa63e4c05a34dad356ca588479e - GoogleUtilities: 9c2c544202301110b29f7974a82e77fdcf12bf51 + GoogleAppMeasurement: d0560d915abf15e692e8538ba1d58442217b6aff + GoogleDataTransport: 0048df6388dab1c254799f2a30365b1dffe20422 + GoogleDataTransportCCTSupport: f880d70972efa2ed1be4e9173a0f4c5f3dc2d176 + GoogleUtilities: 06eb53bb579efe7099152735900dd04bf09e7275 JitsiMeetSDK: d4a3aeed1a75fd57e6a78e5d202b6051dfcb9320 KeyCommands: f66c535f698ed14b3d3a4e58859d79a827ea907e - libwebp: 057912d6d0abfb6357d8bb05c0ea470301f5d61e - nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48 + libwebp: 946cb3063cea9236285f7e9a8505d806d30e07f3 + nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd + PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6 RCTRequired: b153add4da6e7dbc44aebf93f3cf4fcae392ddf1 RCTTypeSafety: 9aa1b91d7f9310fc6eadc3cf95126ffe818af320 React: b6a59ef847b2b40bb6e0180a97d0ca716969ac78 @@ -778,8 +789,8 @@ SPEC CHECKSUMS: RNUserDefaults: af71a1cdf1c12baf8210bc741c65f5faba9826d6 RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4 RSKImageCropper: a446db0e8444a036b34f3c43db01b2373baa4b2a - SDWebImage: 96d7f03415ccb28d299d765f93557ff8a617abd8 - SDWebImageWebPCoder: cc72085bb20368b2f8dbb21b7e355c667e1309b7 + SDWebImage: 4d5c027c935438f341ed33dbac53ff9f479922ca + SDWebImageWebPCoder: 947093edd1349d820c40afbd9f42acb6cdecd987 UMBarCodeScannerInterface: 84ea2d6b58ff0dc27ef9b68bab71286be18ee020 UMCameraInterface: 26b26005d1756a0d5f4f04f1e168e39ea9154535 UMConstantsInterface: 038bacb19de12b6fd328c589122c8dc977cccf61 diff --git a/ios/Pods/Firebase/CoreOnly/Sources/Firebase.h b/ios/Pods/Firebase/CoreOnly/Sources/Firebase.h index 5e060e0c1..e5049ca43 100755 --- a/ios/Pods/Firebase/CoreOnly/Sources/Firebase.h +++ b/ios/Pods/Firebase/CoreOnly/Sources/Firebase.h @@ -1,3 +1,17 @@ +// Copyright 2019 Google +// +// 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 #if !defined(__has_include) @@ -12,6 +26,10 @@ #import #endif + #if __has_include() + #import + #endif + #if __has_include() #import #endif diff --git a/ios/Pods/GoogleUtilities/LICENSE b/ios/Pods/Firebase/LICENSE similarity index 100% rename from ios/Pods/GoogleUtilities/LICENSE rename to ios/Pods/Firebase/LICENSE diff --git a/ios/Pods/Firebase/README.md b/ios/Pods/Firebase/README.md old mode 100755 new mode 100644 index 20aa6928e..5097a89ae --- a/ios/Pods/Firebase/README.md +++ b/ios/Pods/Firebase/README.md @@ -1,93 +1,254 @@ -# Firebase APIs for iOS +# Firebase iOS Open Source Development [![Build Status](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) -Simplify your iOS development, grow your user base, and monetize more -effectively with Firebase services. +This repository contains a subset of the Firebase iOS SDK source. It currently +includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, +FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, +FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and +FirebaseStorage. -Much more information can be found at [https://firebase.google.com](https://firebase.google.com). +The repository also includes GoogleUtilities source. The +[GoogleUtilities](GoogleUtilities/README.md) pod is +a set of utilities used by Firebase and other Google products. -## Install a Firebase SDK using CocoaPods +Firebase is an app development platform with tools to help you build, grow and +monetize your app. More information about Firebase can be found at +[https://firebase.google.com](https://firebase.google.com). -Firebase distributes several iOS specific APIs and SDKs via CocoaPods. -You can install the CocoaPods tool on OS X by running the following command from -the terminal. Detailed information is available in the [Getting Started -guide](https://guides.cocoapods.org/using/getting-started.html#getting-started). +## Installation +See the three subsections for details about three different installation methods. +1. [Standard pod install](README.md#standard-pod-install) +1. [Installing from the GitHub repo](README.md#installing-from-github) +1. [Experimental Carthage](README.md#carthage-ios-only) + +### Standard pod install + +Go to +[https://firebase.google.com/docs/ios/setup](https://firebase.google.com/docs/ios/setup). + +### Installing from GitHub + +For releases starting with 5.0.0, the source for each release is also deployed +to CocoaPods master and available via standard +[CocoaPods Podfile syntax](https://guides.cocoapods.org/syntax/podfile.html#pod). + +These instructions can be used to access the Firebase repo at other branches, +tags, or commits. + +#### Background + +See +[the Podfile Syntax Reference](https://guides.cocoapods.org/syntax/podfile.html#pod) +for instructions and options about overriding pod source locations. + +#### Accessing Firebase Source Snapshots + +All of the official releases are tagged in this repo and available via CocoaPods. To access a local +source snapshot or unreleased branch, use Podfile directives like the following: + +To access FirebaseFirestore via a branch: ``` -$ sudo gem install cocoapods +pod 'FirebaseCore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'master' +pod 'FirebaseFirestore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'master' ``` -## Try out an SDK - -You can try any of the SDKs with `pod try`. Run the following command and select -the SDK you are interested in when prompted: +To access FirebaseMessaging via a checked out version of the firebase-ios-sdk repo do: ``` -$ pod try Firebase +pod 'FirebaseCore', :path => '/path/to/firebase-ios-sdk' +pod 'FirebaseMessaging', :path => '/path/to/firebase-ios-sdk' ``` -Note that some SDKs may require credentials. More information is available in -the SDK-specific documentation at [https://firebase.google.com/docs/](https://firebase.google.com/docs/). +### Carthage (iOS only) -## Add a Firebase SDK to your iOS app +Instructions for the experimental Carthage distribution are at +[Carthage](Carthage.md). -CocoaPods is used to install and manage dependencies in existing Xcode projects. +### Rome -1. Create an Xcode project, and save it to your local machine. -2. Create a file named `Podfile` in your project directory. This file defines - your project's dependencies, and is commonly referred to as a Podspec. -3. Open `Podfile`, and add your dependencies. A simple Podspec is shown here: +Instructions for installing binary frameworks via +[Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). - ``` - platform :ios, '8.0' - pod 'Firebase' - ``` +## Development -4. Save the file. +To develop Firebase software in this repository, ensure that you have at least +the following software: -5. Open a terminal and `cd` to the directory containing the Podfile. + * Xcode 10.1 (or later) + * CocoaPods 1.7.2 (or later) + * [CocoaPods generate](https://github.com/square/cocoapods-generate) - ``` - $ cd /project/ - ``` +For the pod that you want to develop: -6. Run the `pod install` command. This will install the SDKs specified in the - Podspec, along with any dependencies they may have. +`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios` - ``` - $ pod install - ``` +Note: If the CocoaPods cache is out of date, you may need to run +`pod repo update` before the `pod gen` command. -7. Open your app's `.xcworkspace` file to launch Xcode. Use this file for all - development on your app. +Note: Set the `--platforms` option to `macos` or `tvos` to develop/test for +those platforms. Since 10.2, Xcode does not properly handle multi-platform +CocoaPods workspaces. -8. You can also install other Firebase SDKs by adding the subspecs in the - Podfile. +Firestore has a self contained Xcode project. See +[Firestore/README.md](Firestore/README.md). - ``` - pod 'Firebase/AdMob' - pod 'Firebase/Analytics' - pod 'Firebase/Auth' - pod 'Firebase/Database' - pod 'Firebase/DynamicLinks' - pod 'Firebase/Firestore' - pod 'Firebase/Functions' - pod 'Firebase/InAppMessaging' - pod 'Firebase/InAppMessagingDisplay' - pod 'Firebase/Messaging' - pod 'Firebase/MLCommon' - pod 'Firebase/MLModelInterpreter' - pod 'Firebase/MLNLLanguageID' - pod 'Firebase/MLNLSmartReply' - pod 'Firebase/MLNLTranslate' - pod 'Firebase/MLNaturalLanguage' - pod 'Firebase/MLVision' - pod 'Firebase/MLVisionAutoML' - pod 'Firebase/MLVisionBarcodeModel' - pod 'Firebase/MLVisionFaceModel' - pod 'Firebase/MLVisionLabelModel' - pod 'Firebase/MLVisionObjectDetection' - pod 'Firebase/MLVisionTextModel' - pod 'Firebase/Performance' - pod 'Firebase/RemoteConfig' - pod 'Firebase/Storage' - ``` +### Development for Catalyst +* `pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios` +* Check the Mac box in the App-iOS Build Settings +* Sign the App in the Settings Signing & Capabilities tab +* Click Pods in the Project Manager +* Add Signing to the iOS host app and unit test targets +* Select the Unit-unit scheme +* Run it to build and test + +### Adding a New Firebase Pod + +See [AddNewPod.md](AddNewPod.md). + +### Code Formatting + +To ensure that the code is formatted consistently, run the script +[./scripts/style.sh](https://github.com/firebase/firebase-ios-sdk/blob/master/scripts/style.sh) +before creating a PR. + +Travis will verify that any code changes are done in a style compliant way. Install +`clang-format` and `swiftformat`. +These commands will get the right versions: + +``` +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb +``` + +Note: if you already have a newer version of these installed you may need to +`brew switch` to this version. + +To update this section, find the versions of clang-format and swiftformat.rb to +match the versions in the CI failure logs +[here](https://github.com/Homebrew/homebrew-core/tree/master/Formula). + +### Running Unit Tests + +Select a scheme and press Command-u to build a component and run its unit tests. + +#### Viewing Code Coverage + +First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. + +After running the `AllUnitTests_iOS` scheme in Xcode, execute +`xcov --workspace Firebase.xcworkspace --scheme AllUnitTests_iOS --output_directory xcov_output` +at Example/ in the terminal. This will aggregate the coverage, and you can run `open xcov_output/index.html` to see the results. + +### Running Sample Apps +In order to run the sample apps and integration tests, you'll need valid +`GoogleService-Info.plist` files for those samples. The Firebase Xcode project contains dummy plist +files without real values, but can be replaced with real plist files. To get your own +`GoogleService-Info.plist` files: + +1. Go to the [Firebase Console](https://console.firebase.google.com/) +2. Create a new Firebase project, if you don't already have one +3. For each sample app you want to test, create a new Firebase app with the sample app's bundle +identifier (e.g. `com.google.Database-Example`) +4. Download the resulting `GoogleService-Info.plist` and replace the appropriate dummy plist file +(e.g. in [Example/Database/App/](Example/Database/App/)); + +Some sample apps like Firebase Messaging ([Example/Messaging/App](Example/Messaging/App)) require +special Apple capabilities, and you will have to change the sample app to use a unique bundle +identifier that you can control in your own Apple Developer account. + +## Specific Component Instructions +See the sections below for any special instructions for those components. + +### Firebase Auth + +If you're doing specific Firebase Auth development, see +[the Auth Sample README](Example/Auth/README.md) for instructions about +building and running the FirebaseAuth pod along with various samples and tests. + +### Firebase Database + +To run the Database Integration tests, make your database authentication rules +[public](https://firebase.google.com/docs/database/security/quickstart). + +### Firebase Storage + +To run the Storage Integration tests, follow the instructions in +[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). + +#### Push Notifications + +Push notifications can only be delivered to specially provisioned App IDs in the developer portal. +In order to actually test receiving push notifications, you will need to: + +1. Change the bundle identifier of the sample app to something you own in your Apple Developer +account, and enable that App ID for push notifications. +2. You'll also need to +[upload your APNs Provider Authentication Key or certificate to the Firebase Console](https://firebase.google.com/docs/cloud-messaging/ios/certs) +at **Project Settings > Cloud Messaging > [Your Firebase App]**. +3. Ensure your iOS device is added to your Apple Developer portal as a test device. + +#### iOS Simulator + +The iOS Simulator cannot register for remote notifications, and will not receive push notifications. +In order to receive push notifications, you'll have to follow the steps above and run the app on a +physical device. + +## Community Supported Efforts + +We've seen an amazing amount of interest and contributions to improve the Firebase SDKs, and we are +very grateful! We'd like to empower as many developers as we can to be able to use Firebase and +participate in the Firebase community. + +### tvOS, macOS, and Catalyst +Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on +tvOS, macOS, and Catalyst. + +For tvOS, checkout the [Sample](Example/tvOSSample). + +Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +repository is actively developed primarily for iOS. While we can catch basic unit test issues with +Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). + +During app setup in the console, you may get to a step that mentions something like "Checking if the app +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +**It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. + +To install, add a subset of the following to the Podfile: + +``` +pod 'Firebase/ABTesting' +pod 'Firebase/Auth' +pod 'Firebase/Crashlytics' +pod 'Firebase/Database' +pod 'Firebase/Firestore' +pod 'Firebase/Functions' +pod 'Firebase/Messaging' +pod 'Firebase/RemoteConfig' +pod 'Firebase/Storage' +``` + +#### Additional Catalyst Notes + +* FirebaseAuth and FirebaseMessaging require adding `Keychain Sharing Capability` +to Build Settings. +* FirebaseFirestore requires signing the +[gRPC Resource target](https://github.com/firebase/firebase-ios-sdk/issues/3500#issuecomment-518741681). + +## Roadmap + +See [Roadmap](ROADMAP.md) for more about the Firebase iOS SDK Open Source +plans and directions. + +## Contributing + +See [Contributing](CONTRIBUTING.md) for more information on contributing to the Firebase +iOS SDK. + +## License + +The contents of this repository is licensed under the +[Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0). + +Your use of Firebase is governed by the +[Terms of Service for Firebase Services](https://firebase.google.com/terms/). diff --git a/ios/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector b/ios/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector index 9a0d0f3b3..1a7eaec7d 100755 Binary files a/ios/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector and b/ios/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector differ diff --git a/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/FirebaseAnalytics b/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/FirebaseAnalytics index 7c4c6e164..fa7ceb951 100755 Binary files a/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/FirebaseAnalytics and b/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/FirebaseAnalytics differ diff --git a/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h b/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h index afb9f820b..be0b1faee 100755 --- a/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h +++ b/ios/Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.framework/Headers/FIRAnalytics.h @@ -9,6 +9,10 @@ NS_ASSUME_NONNULL_BEGIN /// The top level Firebase Analytics singleton that provides methods for logging events and setting /// user properties. See the developer guides for general /// information on using Firebase Analytics in your apps. +/// +/// @note The Analytics SDK uses SQLite to persist events and other app-specific data. Calling +/// certain thread-unsafe global SQLite methods like `sqlite3_shutdown()` can result in +/// unexpected crashes at runtime. NS_SWIFT_NAME(Analytics) @interface FIRAnalytics : NSObject diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRAnalyticsConfiguration.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.m similarity index 97% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRAnalyticsConfiguration.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.m index a57936b9b..3a7d6de0e 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRAnalyticsConfiguration.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRAnalyticsConfiguration.m @@ -14,7 +14,7 @@ #import -#import "Private/FIRAnalyticsConfiguration.h" +#import "FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h" #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-implementations" diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRApp.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRApp.m similarity index 88% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRApp.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRApp.m index 48b76f60e..02f3ac3f8 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRApp.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRApp.m @@ -22,17 +22,22 @@ #import #endif -#import "FIRApp.h" +#import -#import "Private/FIRAnalyticsConfiguration.h" -#import "Private/FIRAppInternal.h" -#import "Private/FIRBundleUtil.h" -#import "Private/FIRComponentContainerInternal.h" -#import "Private/FIRConfigurationInternal.h" -#import "Private/FIRCoreDiagnosticsConnector.h" -#import "Private/FIRLibrary.h" -#import "Private/FIRLogger.h" -#import "Private/FIROptionsInternal.h" +#import "FirebaseCore/Sources/FIRBundleUtil.h" +#import "FirebaseCore/Sources/FIRVersion.h" +#import "FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h" +#import "FirebaseCore/Sources/Private/FIRAppInternal.h" +#import "FirebaseCore/Sources/Private/FIRComponentContainerInternal.h" +#import "FirebaseCore/Sources/Private/FIRConfigurationInternal.h" +#import "FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h" +#import "FirebaseCore/Sources/Private/FIRLibrary.h" +#import "FirebaseCore/Sources/Private/FIRLogger.h" +#import "FirebaseCore/Sources/Private/FIROptionsInternal.h" + +#import + +#import // The kFIRService strings are only here while transitioning CoreDiagnostics from the Analytics // pod to a Core dependency. These symbols are not used and should be deleted after the transition. @@ -111,6 +116,7 @@ static NSMutableArray> *sRegisteredAsConfigurable; static NSMutableDictionary *sAllApps; static FIRApp *sDefaultApp; static NSMutableDictionary *sLibraryVersions; +static dispatch_once_t sFirebaseUserAgentOnceToken; + (void)configure { FIROptions *options = [FIROptions defaultOptions]; @@ -159,8 +165,9 @@ static NSMutableDictionary *sLibraryVersions; if ([name isEqualToString:kFIRDefaultAppName]) { if (sDefaultApp) { - [NSException raise:kFirebaseCoreErrorDomain - format:@"Default app has already been configured."]; + // The default app already exixts. Handle duplicate `configure` calls and return. + [self appWasConfiguredTwice:sDefaultApp usingOptions:options]; + return; } FIRLogDebug(kFIRLoggerCore, @"I-COR000001", @"Configuring the default app."); @@ -176,8 +183,9 @@ static NSMutableDictionary *sLibraryVersions; @synchronized(self) { if (sAllApps && sAllApps[name]) { - [NSException raise:kFirebaseCoreErrorDomain - format:@"App named %@ has already been configured.", name]; + // The app already exists. Handle a duplicate `configure` call and return. + [self appWasConfiguredTwice:sAllApps[name] usingOptions:options]; + return; } } @@ -191,10 +199,44 @@ static NSMutableDictionary *sLibraryVersions; } [FIRApp addAppToAppDictionary:app]; + + // The FIRApp instance is ready to go, `sDefaultApp` is assigned, other SDKs are now ready to be + // instantiated. + [app.container instantiateEagerComponents]; [FIRApp sendNotificationsToSDKs:app]; } } +/// Called when `configure` has been called multiple times for the same app. This can either throw +/// an exception (most cases) or ignore the duplicate configuration in situations where it's allowed +/// like an extension. ++ (void)appWasConfiguredTwice:(FIRApp *)app usingOptions:(FIROptions *)options { + // Only extensions should potentially be able to call `configure` more than once. + if (![GULAppEnvironmentUtil isAppExtension]) { + // Throw an exception since this is now an invalid state. + if (app.isDefaultApp) { + [NSException raise:kFirebaseCoreErrorDomain + format:@"Default app has already been configured."]; + } else { + [NSException raise:kFirebaseCoreErrorDomain + format:@"App named %@ has already been configured.", app.name]; + } + } + + // In an extension, the entry point could be called multiple times. As long as the options are + // identical we should allow multiple `configure` calls. + if ([options isEqual:app.options]) { + // Everything is identical but the extension's lifecycle triggered `configure` twice. + // Ignore duplicate calls and return since everything should still be in a valid state. + FIRLogDebug(kFIRLoggerCore, @"I-COR000035", + @"Ignoring second `configure` call in an extension."); + return; + } else { + [NSException raise:kFirebaseCoreErrorDomain + format:@"App named %@ has already been configured.", app.name]; + } +} + + (FIRApp *)defaultApp { if (sDefaultApp) { return sDefaultApp; @@ -236,6 +278,7 @@ static NSMutableDictionary *sLibraryVersions; sAllApps = nil; [sLibraryVersions removeAllObjects]; sLibraryVersions = nil; + sFirebaseUserAgentOnceToken = 0; } } @@ -352,7 +395,7 @@ static NSMutableDictionary *sLibraryVersions; } // Check if the Analytics flag is explicitly set. If so, no further actions are necessary. - if ([self.options isAnalyticsCollectionExpicitlySet]) { + if ([self.options isAnalyticsCollectionExplicitlySet]) { return; } @@ -517,6 +560,25 @@ static NSMutableDictionary *sLibraryVersions; + (NSString *)firebaseUserAgent { @synchronized(self) { + dispatch_once(&sFirebaseUserAgentOnceToken, ^{ + // Report FirebaseCore version for useragent string + [FIRApp registerLibrary:@"fire-ios" + withVersion:[NSString stringWithUTF8String:FIRCoreVersionString]]; + + NSDictionary *info = [[NSBundle mainBundle] infoDictionary]; + NSString *xcodeVersion = info[@"DTXcodeBuild"]; + NSString *sdkVersion = info[@"DTSDKBuild"]; + if (xcodeVersion) { + [FIRApp registerLibrary:@"xcode" withVersion:xcodeVersion]; + } + if (sdkVersion) { + [FIRApp registerLibrary:@"apple-sdk" withVersion:sdkVersion]; + } + + NSString *swiftFlagValue = [self hasSwiftRuntime] ? @"true" : @"false"; + [FIRApp registerLibrary:@"swift" withVersion:swiftFlagValue]; + }); + NSMutableArray *libraries = [[NSMutableArray alloc] initWithCapacity:sLibraryVersions.count]; for (NSString *libraryName in sLibraryVersions) { @@ -528,6 +590,20 @@ static NSMutableDictionary *sLibraryVersions; } } ++ (BOOL)hasSwiftRuntime { + // The class + // [Swift._SwiftObject](https://github.com/apple/swift/blob/5eac3e2818eb340b11232aff83edfbd1c307fa03/stdlib/public/runtime/SwiftObject.h#L35) + // is a part of Swift runtime, so it should be present if Swift runtime is available. + + BOOL hasSwiftRuntime = + objc_lookUpClass("Swift._SwiftObject") != nil || + // Swift object class name before + // https://github.com/apple/swift/commit/9637b4a6e11ddca72f5f6dbe528efc7c92f14d01 + objc_getClass("_TtCs12_SwiftObject") != nil; + + return hasSwiftRuntime; +} + - (void)checkExpectedBundleID { NSArray *bundles = [FIRBundleUtil relevantBundles]; NSString *expectedBundleID = [self expectedBundleID]; @@ -811,16 +887,16 @@ static NSMutableDictionary *sLibraryVersions; - (void)subscribeForAppDidBecomeActiveNotifications { #if TARGET_OS_IOS || TARGET_OS_TV NSNotificationName notificationName = UIApplicationDidBecomeActiveNotification; -#endif - -#if TARGET_OS_OSX +#elif TARGET_OS_OSX NSNotificationName notificationName = NSApplicationDidBecomeActiveNotification; #endif +#if !TARGET_OS_WATCH [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appDidBecomeActive:) name:notificationName object:nil]; +#endif } - (void)appDidBecomeActive:(NSNotification *)notification { diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRAppAssociationRegistration.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.m similarity index 96% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRAppAssociationRegistration.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.m index 2aecdabe1..e4125cd25 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRAppAssociationRegistration.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRAppAssociationRegistration.m @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "Private/FIRAppAssociationRegistration.h" +#import "FirebaseCore/Sources/Private/FIRAppAssociationRegistration.h" #import diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRBundleUtil.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRBundleUtil.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRBundleUtil.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.m similarity index 98% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRBundleUtil.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.m index 65fc309f1..b858f14c4 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRBundleUtil.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.m @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "Private/FIRBundleUtil.h" +#import "FirebaseCore/Sources/FIRBundleUtil.h" #import diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRComponent.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponent.m similarity index 93% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRComponent.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponent.m index 2474d1aab..9c1fbed3c 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRComponent.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponent.m @@ -14,10 +14,10 @@ * limitations under the License. */ -#import "Private/FIRComponent.h" +#import "FirebaseCore/Sources/Private/FIRComponent.h" -#import "Private/FIRComponentContainer.h" -#import "Private/FIRDependency.h" +#import "FirebaseCore/Sources/Private/FIRComponentContainer.h" +#import "FirebaseCore/Sources/Private/FIRDependency.h" @interface FIRComponent () diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRComponentContainer.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainer.m similarity index 67% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRComponentContainer.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainer.m index 0306da55b..9f91786fe 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRComponentContainer.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentContainer.m @@ -14,26 +14,27 @@ * limitations under the License. */ -#import "Private/FIRComponentContainer.h" +#import "FirebaseCore/Sources/Private/FIRComponentContainer.h" -#import "Private/FIRAppInternal.h" -#import "Private/FIRComponent.h" -#import "Private/FIRLibrary.h" -#import "Private/FIRLogger.h" +#import "FirebaseCore/Sources/Private/FIRAppInternal.h" +#import "FirebaseCore/Sources/Private/FIRComponent.h" +#import "FirebaseCore/Sources/Private/FIRLibrary.h" +#import "FirebaseCore/Sources/Private/FIRLogger.h" NS_ASSUME_NONNULL_BEGIN -@interface FIRComponentContainer () { - dispatch_queue_t _containerQueue; -} +@interface FIRComponentContainer () -/// The dictionary of components that are registered for a particular app. The key is an NSString +/// The dictionary of components that are registered for a particular app. The key is an `NSString` /// of the protocol. @property(nonatomic, strong) NSMutableDictionary *components; /// Cached instances of components that requested to be cached. @property(nonatomic, strong) NSMutableDictionary *cachedInstances; +/// Protocols of components that have requested to be eagerly instantiated. +@property(nonatomic, strong, nullable) NSMutableArray *eagerProtocolsToInstantiate; + @end @implementation FIRComponentContainer @@ -69,8 +70,6 @@ static NSMutableSet *sFIRComponentRegistrants; _app = app; _cachedInstances = [NSMutableDictionary dictionary]; _components = [NSMutableDictionary dictionary]; - _containerQueue = - dispatch_queue_create("com.google.FirebaseComponentContainer", DISPATCH_QUEUE_SERIAL); [self populateComponentsFromRegisteredClasses:allRegistrants forApp:app]; } @@ -78,6 +77,9 @@ static NSMutableSet *sFIRComponentRegistrants; } - (void)populateComponentsFromRegisteredClasses:(NSSet *)classes forApp:(FIRApp *)app { + // Keep track of any components that need to eagerly instantiate after all components are added. + self.eagerProtocolsToInstantiate = [[NSMutableArray alloc] init]; + // Loop through the verified component registrants and populate the components array. for (Class klass in classes) { // Loop through all the components being registered and store them as appropriate. @@ -96,14 +98,16 @@ static NSMutableSet *sFIRComponentRegistrants; // Store the creation block for later usage. self.components[protocolName] = component.creationBlock; - // Instantiate the instance if it has requested to be instantiated. + // Queue any protocols that should be eagerly instantiated. Don't instantiate them yet + // because they could depend on other components that haven't been added to the components + // array yet. BOOL shouldInstantiateEager = (component.instantiationTiming == FIRInstantiationTimingAlwaysEager); BOOL shouldInstantiateDefaultEager = (component.instantiationTiming == FIRInstantiationTimingEagerInDefaultApp && [app isDefaultApp]); if (shouldInstantiateEager || shouldInstantiateDefaultEager) { - [self instantiateInstanceForProtocol:component.protocol withBlock:component.creationBlock]; + [self.eagerProtocolsToInstantiate addObject:component.protocol]; } } } @@ -111,11 +115,28 @@ static NSMutableSet *sFIRComponentRegistrants; #pragma mark - Instance Creation +- (void)instantiateEagerComponents { + // After all components are registered, instantiate the ones that are requesting eager + // instantiation. + @synchronized(self) { + for (Protocol *protocol in self.eagerProtocolsToInstantiate) { + // Get an instance for the protocol, which will instantiate it since it couldn't have been + // cached yet. Ignore the instance coming back since we don't need it. + __unused id unusedInstance = [self instanceForProtocol:protocol]; + } + + // All eager instantiation is complete, clear the stored property now. + self.eagerProtocolsToInstantiate = nil; + } +} + /// Instantiate an instance of a class that conforms to the specified protocol. /// This will: /// - Call the block to create an instance if possible, /// - Validate that the instance returned conforms to the protocol it claims to, /// - Cache the instance if the block requests it +/// +/// Note that this method assumes the caller already has @sychronized on self. - (nullable id)instantiateInstanceForProtocol:(Protocol *)protocol withBlock:(FIRComponentCreationBlock)creationBlock { if (!creationBlock) { @@ -140,9 +161,7 @@ static NSMutableSet *sFIRComponentRegistrants; // The instance is ready to be returned, but check if it should be cached first before returning. if (shouldCache) { - dispatch_sync(_containerQueue, ^{ - self.cachedInstances[protocolName] = instance; - }); + self.cachedInstances[protocolName] = instance; } return instance; @@ -153,47 +172,35 @@ static NSMutableSet *sFIRComponentRegistrants; - (nullable id)instanceForProtocol:(Protocol *)protocol { // Check if there is a cached instance, and return it if so. NSString *protocolName = NSStringFromProtocol(protocol); - __block id cachedInstance; - dispatch_sync(_containerQueue, ^{ + + id cachedInstance; + @synchronized(self) { cachedInstance = self.cachedInstances[protocolName]; - }); - - if (cachedInstance) { - return cachedInstance; + if (!cachedInstance) { + // Use the creation block to instantiate an instance and return it. + FIRComponentCreationBlock creationBlock = self.components[protocolName]; + cachedInstance = [self instantiateInstanceForProtocol:protocol withBlock:creationBlock]; + } } - - // Use the creation block to instantiate an instance and return it. - FIRComponentCreationBlock creationBlock = self.components[protocolName]; - return [self instantiateInstanceForProtocol:protocol withBlock:creationBlock]; + return cachedInstance; } #pragma mark - Lifecycle - (void)removeAllCachedInstances { - // Loop through the cache and notify each instance that is a maintainer to clean up after itself. - // Design note: we're getting a copy here, unlocking the cached instances, iterating over the - // copy, then locking and removing all cached instances. A race condition *could* exist where a - // new cached instance is created between the copy and the removal, but the chances are slim and - // side-effects are significantly smaller than including the entire loop in the `dispatch_sync` - // block (access to the cache from inside the block would deadlock and crash). - __block NSDictionary *instancesCopy; - dispatch_sync(_containerQueue, ^{ - instancesCopy = [self.cachedInstances copy]; - }); - - for (id instance in instancesCopy.allValues) { - if ([instance conformsToProtocol:@protocol(FIRComponentLifecycleMaintainer)] && - [instance respondsToSelector:@selector(appWillBeDeleted:)]) { - [instance appWillBeDeleted:self.app]; + @synchronized(self) { + // Loop through the cache and notify each instance that is a maintainer to clean up after + // itself. + for (id instance in self.cachedInstances.allValues) { + if ([instance conformsToProtocol:@protocol(FIRComponentLifecycleMaintainer)] && + [instance respondsToSelector:@selector(appWillBeDeleted:)]) { + [instance appWillBeDeleted:self.app]; + } } - } - instancesCopy = nil; - - // Empty the cache. - dispatch_sync(_containerQueue, ^{ + // Empty the cache. [self.cachedInstances removeAllObjects]; - }); + } } @end diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRComponentType.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentType.m similarity index 86% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRComponentType.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentType.m index bdc004fbc..6410f2ea1 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRComponentType.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRComponentType.m @@ -14,9 +14,9 @@ * limitations under the License. */ -#import "Private/FIRComponentType.h" +#import "FirebaseCore/Sources/Private/FIRComponentType.h" -#import "Private/FIRComponentContainerInternal.h" +#import "FirebaseCore/Sources/Private/FIRComponentContainerInternal.h" @implementation FIRComponentType diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRConfiguration.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfiguration.m similarity index 90% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRConfiguration.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfiguration.m index 869f73d7f..a1c9f4a2e 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRConfiguration.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRConfiguration.m @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "Private/FIRConfigurationInternal.h" +#import "FirebaseCore/Sources/Private/FIRConfigurationInternal.h" -#import "Private/FIRAnalyticsConfiguration.h" +#import "FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h" extern void FIRSetLoggerLevel(FIRLoggerLevel loggerLevel); diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRCoreDiagnosticsConnector.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m similarity index 90% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRCoreDiagnosticsConnector.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m index 7d504e86b..4981ca1b0 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRCoreDiagnosticsConnector.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m @@ -14,15 +14,15 @@ * limitations under the License. */ -#import "Private/FIRCoreDiagnosticsConnector.h" +#import "FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h" #import #import -#import "Private/FIRAppInternal.h" -#import "Private/FIRDiagnosticsData.h" -#import "Private/FIROptionsInternal.h" +#import "FirebaseCore/Sources/Private/FIRAppInternal.h" +#import "FirebaseCore/Sources/Private/FIRDiagnosticsData.h" +#import "FirebaseCore/Sources/Private/FIROptionsInternal.h" // Define the interop class symbol declared as an extern in FIRCoreDiagnosticsInterop. Class FIRCoreDiagnosticsImplementation; diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRDependency.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRDependency.m similarity index 95% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRDependency.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRDependency.m index f97998414..e1e25783e 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRDependency.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRDependency.m @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "Private/FIRDependency.h" +#import "FirebaseCore/Sources/Private/FIRDependency.h" @interface FIRDependency () diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRDiagnosticsData.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.m similarity index 91% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRDiagnosticsData.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.m index 04769737f..bbe0561d9 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRDiagnosticsData.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRDiagnosticsData.m @@ -14,12 +14,12 @@ * limitations under the License. */ -#import "Private/FIRDiagnosticsData.h" +#import "FirebaseCore/Sources/Private/FIRDiagnosticsData.h" #import -#import "Private/FIRAppInternal.h" -#import "Private/FIROptionsInternal.h" +#import "FirebaseCore/Sources/Private/FIRAppInternal.h" +#import "FirebaseCore/Sources/Private/FIROptionsInternal.h" @implementation FIRDiagnosticsData { /** Backing ivar for the diagnosticObjects property. */ diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRErrors.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRErrors.m similarity index 94% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRErrors.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRErrors.m index 72120c5c9..104eeb825 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRErrors.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRErrors.m @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "Private/FIRErrors.h" +#import "FirebaseCore/Sources/Private/FIRErrors.h" NSString *const kFirebaseErrorDomain = @"com.firebase"; NSString *const kFirebaseConfigErrorDomain = @"com.firebase.config"; diff --git a/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRHeartbeatInfo.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRHeartbeatInfo.m new file mode 100644 index 000000000..f1359f5d6 --- /dev/null +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRHeartbeatInfo.m @@ -0,0 +1,61 @@ +// Copyright 2019 Google +// +// 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 "FirebaseCore/Sources/Private/FIRHeartbeatInfo.h" +#import +#import + +const static long secondsInDay = 864000; +@implementation FIRHeartbeatInfo : NSObject + +/** Updates the storage with the heartbeat information corresponding to this tag. + * @param heartbeatTag Tag which could either be sdk specific tag or the global tag. + * @return Boolean representing whether the heartbeat needs to be sent for this tag or not. + */ ++ (BOOL)updateIfNeededHeartbeatDateForTag:(NSString *)heartbeatTag { + @synchronized(self) { + NSString *const kHeartbeatStorageFile = @"HEARTBEAT_INFO_STORAGE"; + GULHeartbeatDateStorage *dataStorage = + [[GULHeartbeatDateStorage alloc] initWithFileName:kHeartbeatStorageFile]; + NSDate *heartbeatTime = [dataStorage heartbeatDateForTag:heartbeatTag]; + NSDate *currentDate = [NSDate date]; + if (heartbeatTime != nil) { + NSTimeInterval secondsBetween = [currentDate timeIntervalSinceDate:heartbeatTime]; + if (secondsBetween < secondsInDay) { + return false; + } + } + return [dataStorage setHearbeatDate:currentDate forTag:heartbeatTag]; + } +} + ++ (FIRHeartbeatInfoCode)heartbeatCodeForTag:(NSString *)heartbeatTag { + NSString *globalTag = @"GLOBAL"; + BOOL isSdkHeartbeatNeeded = [FIRHeartbeatInfo updateIfNeededHeartbeatDateForTag:heartbeatTag]; + BOOL isGlobalHeartbeatNeeded = [FIRHeartbeatInfo updateIfNeededHeartbeatDateForTag:globalTag]; + if (!isSdkHeartbeatNeeded && !isGlobalHeartbeatNeeded) { + // Both sdk and global heartbeat not needed. + return FIRHeartbeatInfoCodeNone; + } else if (isSdkHeartbeatNeeded && !isGlobalHeartbeatNeeded) { + // Only SDK heartbeat needed. + return FIRHeartbeatInfoCodeSDK; + } else if (!isSdkHeartbeatNeeded && isGlobalHeartbeatNeeded) { + // Only global heartbeat needed. + return FIRHeartbeatInfoCodeGlobal; + } else { + // Both sdk and global heartbeat are needed. + return FIRHeartbeatInfoCodeCombined; + } +} +@end diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRLogger.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRLogger.m similarity index 98% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRLogger.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRLogger.m index 532a96c29..ba2ee1f58 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIRLogger.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRLogger.m @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "Private/FIRLogger.h" +#import "FirebaseCore/Sources/Private/FIRLogger.h" #import #import #import -#import "Private/FIRVersion.h" +#import "FirebaseCore/Sources/FIRVersion.h" FIRLoggerService kFIRLoggerCore = @"[Firebase/Core]"; diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIROptions.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIROptions.m similarity index 86% rename from ios/Pods/FirebaseCore/Firebase/Core/FIROptions.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIROptions.m index 89a679a74..d18533094 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/FIROptions.m +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIROptions.m @@ -12,12 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "Private/FIRAppInternal.h" -#import "Private/FIRBundleUtil.h" -#import "Private/FIRErrors.h" -#import "Private/FIRLogger.h" -#import "Private/FIROptionsInternal.h" -#import "Private/FIRVersion.h" +#import "FirebaseCore/Sources/FIRBundleUtil.h" +#import "FirebaseCore/Sources/FIRVersion.h" +#import "FirebaseCore/Sources/Private/FIRAppInternal.h" +#import "FirebaseCore/Sources/Private/FIRLogger.h" +#import "FirebaseCore/Sources/Private/FIROptionsInternal.h" // Keys for the strings in the plist file. NSString *const kFIRAPIKey = @"API_KEY"; @@ -110,22 +109,6 @@ static NSDictionary *sDefaultOptionsDictionary = nil; #pragma mark - Private class methods -+ (void)initialize { - // Report FirebaseCore version for useragent string - [FIRApp registerLibrary:@"fire-ios" - withVersion:[NSString stringWithUTF8String:FIRCoreVersionString]]; - - NSDictionary *info = [[NSBundle mainBundle] infoDictionary]; - NSString *xcodeVersion = info[@"DTXcodeBuild"]; - NSString *sdkVersion = info[@"DTSDKBuild"]; - if (xcodeVersion) { - [FIRApp registerLibrary:@"xcode" withVersion:xcodeVersion]; - } - if (sdkVersion) { - [FIRApp registerLibrary:@"apple-sdk" withVersion:sdkVersion]; - } -} - + (NSDictionary *)defaultOptionsDictionary { if (sDefaultOptionsDictionary != nil) { return sDefaultOptionsDictionary; @@ -346,6 +329,59 @@ static NSDictionary *sDefaultOptionsDictionary = nil; _appGroupID = [appGroupID copy]; } +#pragma mark - Equality + +- (BOOL)isEqual:(id)object { + if (!object || ![object isKindOfClass:[FIROptions class]]) { + return NO; + } + + return [self isEqualToOptions:(FIROptions *)object]; +} + +- (BOOL)isEqualToOptions:(FIROptions *)options { + // Skip any non-FIROptions classes. + if (![options isKindOfClass:[FIROptions class]]) { + return NO; + } + + // Check the internal dictionary and custom properties for differences. + if (![options.optionsDictionary isEqualToDictionary:self.optionsDictionary]) { + return NO; + } + + // Validate extra properties not contained in the dictionary. Only validate it if one of the + // objects has the property set. + if ((options.deepLinkURLScheme != nil || self.deepLinkURLScheme != nil) && + ![options.deepLinkURLScheme isEqualToString:self.deepLinkURLScheme]) { + return NO; + } + + if ((options.appGroupID != nil || self.appGroupID != nil) && + ![options.appGroupID isEqualToString:self.appGroupID]) { + return NO; + } + + // Validate the Analytics options haven't changed with the Info.plist. + if (![options.analyticsOptionsDictionary isEqualToDictionary:self.analyticsOptionsDictionary]) { + return NO; + } + + // We don't care about the `editingLocked` or `usingOptionsFromDefaultPlist` properties since + // those relate to lifecycle and construction, we only care if the contents of the options + // themselves are equal. + return YES; +} + +- (NSUInteger)hash { + // This is strongly recommended for any object that implements a custom `isEqual:` method to + // ensure that dictionary and set behavior matches other `isEqual:` checks. + // Note: `self.analyticsOptionsDictionary` was left out here since it solely relies on the + // contents of the main bundle's `Info.plist`. We should avoid reading that file and the contents + // should be identical. + return self.optionsDictionary.hash ^ self.deepLinkURLScheme.hash ^ self.appGroupID.hash; +} + #pragma mark - Internal instance methods - (NSDictionary *)analyticsOptionsDictionaryWithInfoDictionary:(NSDictionary *)infoDictionary { @@ -399,7 +435,7 @@ static NSDictionary *sDefaultOptionsDictionary = nil; return [value boolValue]; } -- (BOOL)isAnalyticsCollectionExpicitlySet { +- (BOOL)isAnalyticsCollectionExplicitlySet { // If it's de-activated, it classifies as explicity set. If not, it's not a good enough indication // that the developer wants FirebaseAnalytics enabled so continue checking. if (self.isAnalyticsCollectionDeactivated) { diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRVersion.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRVersion.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRVersion.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRVersion.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/FIRVersion.m b/ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRVersion.m similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/FIRVersion.m rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/FIRVersion.m diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRAnalyticsConfiguration.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRAnalyticsConfiguration.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRAppAssociationRegistration.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppAssociationRegistration.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRAppAssociationRegistration.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppAssociationRegistration.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRAppInternal.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppInternal.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRAppInternal.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRAppInternal.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRComponent.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponent.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRComponent.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponent.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRComponentContainer.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainer.h similarity index 95% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRComponentContainer.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainer.h index f3dc356d6..8dfab9c10 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRComponentContainer.h +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainer.h @@ -15,8 +15,8 @@ */ #import -#import "FIRComponentType.h" -#import "FIRLibrary.h" +#import +#import NS_ASSUME_NONNULL_BEGIN diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRComponentContainerInternal.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainerInternal.h similarity index 76% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRComponentContainerInternal.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainerInternal.h index e8552fa25..2b7798189 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRComponentContainerInternal.h +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainerInternal.h @@ -15,8 +15,8 @@ */ #import -#import "FIRComponent.h" -#import "FIRComponentContainer.h" +#import +#import @class FIRApp; @@ -24,13 +24,16 @@ NS_ASSUME_NONNULL_BEGIN @interface FIRComponentContainer (Private) -/// Initializes a contain for a given app. This should only be called by the app itself. +/// Initializes a container for a given app. This should only be called by the app itself. - (instancetype)initWithApp:(FIRApp *)app; /// Retrieves an instance that conforms to the specified protocol. This will return `nil` if the -/// protocol wasn't registered, or if the instance couldn't instantiate for the provided app. +/// protocol wasn't registered, or if the instance couldn't be instantiated for the provided app. - (nullable id)instanceForProtocol:(Protocol *)protocol NS_SWIFT_NAME(instance(for:)); +/// Instantiates all the components that have registered as "eager" after initialization. +- (void)instantiateEagerComponents; + /// Remove all of the cached instances stored and allow them to clean up after themselves. - (void)removeAllCachedInstances; diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRComponentType.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentType.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRComponentType.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRComponentType.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRConfigurationInternal.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRConfigurationInternal.h similarity index 95% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRConfigurationInternal.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRConfigurationInternal.h index ee1688670..0d1a36f66 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRConfigurationInternal.h +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRConfigurationInternal.h @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "FIRConfiguration.h" +#import @class FIRAnalyticsConfiguration; diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRCoreDiagnosticsConnector.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRCoreDiagnosticsConnector.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRDependency.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRDependency.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRDependency.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRDependency.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRDiagnosticsData.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRDiagnosticsData.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRDiagnosticsData.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRDiagnosticsData.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRErrorCode.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRErrorCode.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRErrorCode.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRErrorCode.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRErrors.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRErrors.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRErrors.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRErrors.h diff --git a/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h new file mode 100644 index 000000000..bfff73e5d --- /dev/null +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h @@ -0,0 +1,39 @@ +// Copyright 2019 Google +// +// 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRHeartbeatInfo : NSObject + +// Enum representing the different heartbeat codes. +typedef NS_ENUM(NSInteger, FIRHeartbeatInfoCode) { + FIRHeartbeatInfoCodeNone = 0, + FIRHeartbeatInfoCodeSDK = 1, + FIRHeartbeatInfoCodeGlobal = 2, + FIRHeartbeatInfoCodeCombined = 3, +}; + +/** + * Get heartbeat code requred for the sdk. + * @param heartbeatTag String representing the sdk heartbeat tag. + * @return Heartbeat code indicating whether or not an sdk/global heartbeat + * needs to be sent + */ ++ (FIRHeartbeatInfoCode)heartbeatCodeForTag:(NSString *)heartbeatTag; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRLibrary.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLibrary.h similarity index 97% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRLibrary.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLibrary.h index 728c06232..af9d9685d 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRLibrary.h +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLibrary.h @@ -18,7 +18,8 @@ #define FIRLibrary_h #import -#import "FIRComponent.h" + +#import @class FIRApp; diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIRLogger.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLogger.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIRLogger.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIRLogger.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIROptionsInternal.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIROptionsInternal.h similarity index 97% rename from ios/Pods/FirebaseCore/Firebase/Core/Private/FIROptionsInternal.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIROptionsInternal.h index 117efdaa0..0660a3cd8 100644 --- a/ios/Pods/FirebaseCore/Firebase/Core/Private/FIROptionsInternal.h +++ b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Private/FIROptionsInternal.h @@ -65,7 +65,7 @@ extern NSString *const kServiceInfoFileType; * Indicates whether or not Analytics collection was explicitly enabled via a plist flag or at * runtime. */ -@property(nonatomic, readonly) BOOL isAnalyticsCollectionExpicitlySet; +@property(nonatomic, readonly) BOOL isAnalyticsCollectionExplicitlySet; /** * Whether or not Analytics Collection was enabled. Analytics Collection is enabled unless diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Public/FIRApp.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRApp.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Public/FIRApp.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRApp.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Public/FIRConfiguration.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRConfiguration.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Public/FIRConfiguration.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRConfiguration.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Public/FIRLoggerLevel.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRLoggerLevel.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Public/FIRLoggerLevel.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIRLoggerLevel.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Public/FIROptions.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIROptions.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Public/FIROptions.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FIROptions.h diff --git a/ios/Pods/FirebaseCore/Firebase/Core/Public/FirebaseCore.h b/ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore.h similarity index 100% rename from ios/Pods/FirebaseCore/Firebase/Core/Public/FirebaseCore.h rename to ios/Pods/FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore.h diff --git a/ios/Pods/FirebaseCore/README.md b/ios/Pods/FirebaseCore/README.md index d75ae8cb1..5097a89ae 100644 --- a/ios/Pods/FirebaseCore/README.md +++ b/ios/Pods/FirebaseCore/README.md @@ -3,7 +3,8 @@ This repository contains a subset of the Firebase iOS SDK source. It currently includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, -FirebaseInAppMessagingDisplay, FirebaseMessaging and FirebaseStorage. +FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and +FirebaseStorage. The repository also includes GoogleUtilities source. The [GoogleUtilities](GoogleUtilities/README.md) pod is @@ -75,14 +76,31 @@ the following software: * Xcode 10.1 (or later) * CocoaPods 1.7.2 (or later) + * [CocoaPods generate](https://github.com/square/cocoapods-generate) For the pod that you want to develop: -`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open` +`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios` + +Note: If the CocoaPods cache is out of date, you may need to run +`pod repo update` before the `pod gen` command. + +Note: Set the `--platforms` option to `macos` or `tvos` to develop/test for +those platforms. Since 10.2, Xcode does not properly handle multi-platform +CocoaPods workspaces. Firestore has a self contained Xcode project. See [Firestore/README.md](Firestore/README.md). +### Development for Catalyst +* `pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios` +* Check the Mac box in the App-iOS Build Settings +* Sign the App in the Settings Signing & Capabilities tab +* Click Pods in the Project Manager +* Add Signing to the iOS host app and unit test targets +* Select the Unit-unit scheme +* Run it to build and test + ### Adding a New Firebase Pod See [AddNewPod.md](AddNewPod.md). @@ -98,13 +116,17 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/773cb75d360b58f32048f5964038d09825a507c8/Formula/clang-format.rb -brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/3dfea1004e0736754bbf49673cca8aaed8a94089/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to `brew switch` to this version. +To update this section, find the versions of clang-format and swiftformat.rb to +match the versions in the CI failure logs +[here](https://github.com/Homebrew/homebrew-core/tree/master/Formula). + ### Running Unit Tests Select a scheme and press Command-u to build a component and run its unit tests. @@ -177,34 +199,42 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### macOS and tvOS -Thanks to contributions from the community, FirebaseABTesting, FirebaseAuth, FirebaseCore, -FirebaseDatabase, FirebaseMessaging, -FirebaseFirestore, FirebaseFunctions and FirebaseStorage now compile, run unit tests, and work on -macOS and tvOS. +### tvOS, macOS, and Catalyst +Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on +tvOS, macOS, and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). -Keep in mind that macOS and tvOS are not officially supported by Firebase, and this repository is -actively developed primarily for iOS. While we can catch basic unit test issues with Travis, there -may be some changes where the SDK no longer works as expected on macOS or tvOS. If you encounter -this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). +Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +repository is actively developed primarily for iOS. While we can catch basic unit test issues with +Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). -Note that the Firebase pod is not available for macOS and tvOS. +During app setup in the console, you may get to a step that mentions something like "Checking if the app +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +**It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. To install, add a subset of the following to the Podfile: ``` -pod 'FirebaseABTesting' -pod 'FirebaseAuth' -pod 'FirebaseCore' -pod 'FirebaseDatabase' -pod 'FirebaseFirestore' -pod 'FirebaseFunctions' -pod 'FirebaseMessaging' -pod 'FirebaseStorage' +pod 'Firebase/ABTesting' +pod 'Firebase/Auth' +pod 'Firebase/Crashlytics' +pod 'Firebase/Database' +pod 'Firebase/Firestore' +pod 'Firebase/Functions' +pod 'Firebase/Messaging' +pod 'Firebase/RemoteConfig' +pod 'Firebase/Storage' ``` +#### Additional Catalyst Notes + +* FirebaseAuth and FirebaseMessaging require adding `Keychain Sharing Capability` +to Build Settings. +* FirebaseFirestore requires signing the +[gRPC Resource target](https://github.com/firebase/firebase-ios-sdk/issues/3500#issuecomment-518741681). + ## Roadmap See [Roadmap](ROADMAP.md) for more about the Firebase iOS SDK Open Source diff --git a/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m b/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m index 8f87e0929..bb0326be1 100644 --- a/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m +++ b/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m @@ -17,12 +17,13 @@ #import #include -#import -#import -#import -#import +#import +#import +#import +#import #import +#import #import #import @@ -34,8 +35,6 @@ #import "FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h" -#import "FIRCDLibrary/FIRCoreDiagnosticsDateFileStorage.h" - /** The logger service string to use when printing to the console. */ static GULLoggerService kFIRCoreDiagnostics = @"[FirebaseCoreDiagnostics/FIRCoreDiagnostics]"; @@ -85,6 +84,7 @@ static NSString *const kFIRAppDiagnosticsConfigurationTypeKey = static NSString *const kFIRAppDiagnosticsFIRAppKey = @"FIRAppDiagnosticsFIRAppKey"; static NSString *const kFIRAppDiagnosticsSDKNameKey = @"FIRAppDiagnosticsSDKNameKey"; static NSString *const kFIRAppDiagnosticsSDKVersionKey = @"FIRAppDiagnosticsSDKVersionKey"; +static NSString *const kFIRCoreDiagnosticsHeartbeatTag = @"FIRCoreDiagnostics"; /** * The file name to the recent heartbeat date. @@ -92,7 +92,8 @@ static NSString *const kFIRAppDiagnosticsSDKVersionKey = @"FIRAppDiagnosticsSDKV NSString *const kFIRCoreDiagnosticsHeartbeatDateFileName = @"FIREBASE_DIAGNOSTICS_HEARTBEAT_DATE"; /** - * @note This should implement the GDTEventDataObject protocol, but can't because of weak-linking. + * @note This should implement the GDTCOREventDataObject protocol, but can't because of + * weak-linking. */ @interface FIRCoreDiagnosticsLog : NSObject @@ -111,14 +112,14 @@ NSString *const kFIRCoreDiagnosticsHeartbeatDateFileName = @"FIREBASE_DIAGNOSTIC return self; } -// Provided and required by the GDTEventDataObject protocol. +// Provided and required by the GDTCOREventDataObject protocol. - (NSData *)transportBytes { pb_ostream_t sizestream = PB_OSTREAM_SIZING; // Encode 1 time to determine the size. if (!pb_encode(&sizestream, logs_proto_mobilesdk_ios_ICoreConfiguration_fields, &_config)) { - GDTLogError(GDTMCETransportBytesError, @"Error in nanopb encoding for size: %s", - PB_GET_ERROR(&sizestream)); + GDTCORLogError(GDTCORMCETransportBytesError, @"Error in nanopb encoding for size: %s", + PB_GET_ERROR(&sizestream)); } // Encode a 2nd time to actually get the bytes from it. @@ -126,8 +127,8 @@ NSString *const kFIRCoreDiagnosticsHeartbeatDateFileName = @"FIREBASE_DIAGNOSTIC CFMutableDataRef dataRef = CFDataCreateMutable(CFAllocatorGetDefault(), bufferSize); pb_ostream_t ostream = pb_ostream_from_buffer((void *)CFDataGetBytePtr(dataRef), bufferSize); if (!pb_encode(&ostream, logs_proto_mobilesdk_ios_ICoreConfiguration_fields, &_config)) { - GDTLogError(GDTMCETransportBytesError, @"Error in nanopb encoding for bytes: %s", - PB_GET_ERROR(&ostream)); + GDTCORLogError(GDTCORMCETransportBytesError, @"Error in nanopb encoding for bytes: %s", + PB_GET_ERROR(&ostream)); } CFDataSetLength(dataRef, ostream.bytes_written); @@ -149,10 +150,10 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, readonly) dispatch_queue_t diagnosticsQueue; /** The transport object used to send data. */ -@property(nonatomic, readonly) GDTTransport *transport; +@property(nonatomic, readonly) GDTCORTransport *transport; /** The storage to store the date of the last sent heartbeat. */ -@property(nonatomic, readonly) FIRCoreDiagnosticsDateFileStorage *heartbeatDateStorage; +@property(nonatomic, readonly) GULHeartbeatDateStorage *heartbeatDateStorage; @end @@ -170,24 +171,24 @@ NS_ASSUME_NONNULL_END } - (instancetype)init { - GDTTransport *transport = [[GDTTransport alloc] initWithMappingID:@"137" - transformers:nil - target:kGDTTargetCCT]; + GDTCORTransport *transport = [[GDTCORTransport alloc] initWithMappingID:@"137" + transformers:nil + target:kGDTCORTargetFLL]; - FIRCoreDiagnosticsDateFileStorage *dateStorage = [[FIRCoreDiagnosticsDateFileStorage alloc] - initWithFileURL:[[self class] filePathURLWithName:kFIRCoreDiagnosticsHeartbeatDateFileName]]; + GULHeartbeatDateStorage *dateStorage = + [[GULHeartbeatDateStorage alloc] initWithFileName:kFIRCoreDiagnosticsHeartbeatDateFileName]; return [self initWithTransport:transport heartbeatDateStorage:dateStorage]; } /** Initializer for unit tests. * - * @param transport A `GDTTransport` instance which that be used to send event. + * @param transport A `GDTCORTransport` instance which that be used to send event. * @param heartbeatDateStorage An instanse of date storage to track heartbeat sending. * @return Returns the initialized `FIRCoreDiagnostics` instance. */ -- (instancetype)initWithTransport:(GDTTransport *)transport - heartbeatDateStorage:(FIRCoreDiagnosticsDateFileStorage *)heartbeatDateStorage { +- (instancetype)initWithTransport:(GDTCORTransport *)transport + heartbeatDateStorage:(GULHeartbeatDateStorage *)heartbeatDateStorage { self = [super init]; if (self) { _diagnosticsQueue = @@ -198,37 +199,6 @@ NS_ASSUME_NONNULL_END return self; } -#pragma mark - File path helpers - -/** Returns the URL path of the file with name fileName under the Application Support folder for - * local logging. Creates the Application Support folder if the folder doesn't exist. - * - * @return the URL path of the file with the name fileName in Application Support. - */ -+ (NSURL *)filePathURLWithName:(NSString *)fileName { - @synchronized(self) { - NSArray *paths = - NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); - NSArray *components = @[ paths.lastObject, @"Google/FIRApp" ]; - NSString *directoryString = [NSString pathWithComponents:components]; - NSURL *directoryURL = [NSURL fileURLWithPath:directoryString]; - - NSError *error; - if (![directoryURL checkResourceIsReachableAndReturnError:&error]) { - // If fail creating the Application Support directory, return nil. - if (![[NSFileManager defaultManager] createDirectoryAtURL:directoryURL - withIntermediateDirectories:YES - attributes:nil - error:&error]) { - GULLogWarning(kFIRCoreDiagnostics, YES, @"I-COR100001", - @"Unable to create internal state storage: %@", error); - return nil; - } - } - return [directoryURL URLByAppendingPathComponent:fileName]; - } -} - #pragma mark - Metadata helpers /** Returns the model of iOS device. Sample platform strings are @"iPhone7,1" for iPhone 6 Plus, @@ -374,7 +344,8 @@ void FIRPopulateProtoWithCommonInfoFromApp(logs_proto_mobilesdk_ios_ICoreConfigu config->has_pod_name = 1; if (!diagnosticObjects[kFIRCDllAppsCountKey]) { - GDTLogError(GDTMCEGeneralError, @"%@", @"App count is a required value in the data dict."); + GDTCORLogError(GDTCORMCEGeneralError, @"%@", + @"App count is a required value in the data dict."); } config->app_count = (int32_t)[diagnosticObjects[kFIRCDllAppsCountKey] integerValue]; config->has_app_count = 1; @@ -635,8 +606,8 @@ void FIRPopulateProtoWithInfoPlistValues(logs_proto_mobilesdk_ios_ICoreConfigura FIRCoreDiagnosticsLog *log = [[FIRCoreDiagnosticsLog alloc] initWithConfig:icore_config]; // Send the log as a telemetry event. - GDTEvent *event = [self.transport eventForTransport]; - event.dataObject = (id)log; + GDTCOREvent *event = [self.transport eventForTransport]; + event.dataObject = (id)log; [self.transport sendTelemetryEvent:event]; }); } @@ -646,7 +617,8 @@ void FIRPopulateProtoWithInfoPlistValues(logs_proto_mobilesdk_ios_ICoreConfigura - (void)setHeartbeatFlagIfNeededToConfig:(logs_proto_mobilesdk_ios_ICoreConfiguration *)config { // Check if need to send a heartbeat. NSDate *currentDate = [NSDate date]; - NSDate *lastCheckin = [self.heartbeatDateStorage date]; + NSDate *lastCheckin = + [self.heartbeatDateStorage heartbeatDateForTag:kFIRCoreDiagnosticsHeartbeatTag]; if (lastCheckin) { // Ensure the previous checkin was on a different date in the past. if ([self isDate:currentDate inSameDayOrBeforeThan:lastCheckin]) { @@ -655,12 +627,7 @@ void FIRPopulateProtoWithInfoPlistValues(logs_proto_mobilesdk_ios_ICoreConfigura } // Update heartbeat sent date. - NSError *error; - if (![self.heartbeatDateStorage setDate:currentDate error:&error]) { - GULLogError(kFIRCoreDiagnostics, NO, @"I-COR100004", @"Unable to persist internal state: %@", - error); - } - + [self.heartbeatDateStorage setHearbeatDate:currentDate forTag:kFIRCoreDiagnosticsHeartbeatTag]; // Set the flag. config->sdk_name = logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_ICORE; config->has_sdk_name = 1; diff --git a/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnosticsDateFileStorage.m b/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnosticsDateFileStorage.m deleted file mode 100644 index f4dca12a7..000000000 --- a/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnosticsDateFileStorage.m +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2019 Google - * - * 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 "FIRCDLibrary/FIRCoreDiagnosticsDateFileStorage.h" - -@interface FIRCoreDiagnosticsDateFileStorage () -@property(nonatomic, readonly) NSURL *fileURL; -@end - -@implementation FIRCoreDiagnosticsDateFileStorage - -- (instancetype)initWithFileURL:(NSURL *)fileURL { - if (fileURL == nil) { - return nil; - } - - self = [super init]; - if (self) { - _fileURL = fileURL; - } - - return self; -} - -- (BOOL)setDate:(nullable NSDate *)date error:(NSError **)outError { - NSString *stringToSave = @""; - - if (date != nil) { - NSTimeInterval timestamp = [date timeIntervalSinceReferenceDate]; - stringToSave = [NSString stringWithFormat:@"%f", timestamp]; - } - - return [stringToSave writeToURL:self.fileURL - atomically:YES - encoding:NSUTF8StringEncoding - error:outError]; -} - -- (nullable NSDate *)date { - NSString *timestampString = [NSString stringWithContentsOfURL:self.fileURL - encoding:NSUTF8StringEncoding - error:nil]; - if (timestampString.length == 0) { - return nil; - } - - NSTimeInterval timestamp = timestampString.doubleValue; - return [NSDate dateWithTimeIntervalSinceReferenceDate:timestamp]; -} - -@end diff --git a/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c b/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c index 3c35ffb1d..4b2ac2f74 100644 --- a/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c +++ b/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.3.9.2 */ +/* Generated by nanopb-0.3.9.3 */ #include "firebasecore.nanopb.h" @@ -26,28 +26,19 @@ -const pb_field_t logs_proto_mobilesdk_ios_ICoreConfiguration_fields[34] = { +const pb_field_t logs_proto_mobilesdk_ios_ICoreConfiguration_fields[22] = { PB_FIELD( 1, UENUM , OPTIONAL, STATIC , FIRST, logs_proto_mobilesdk_ios_ICoreConfiguration, configuration_type, configuration_type, 0), - PB_FIELD( 2, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, version_name, configuration_type, 0), - PB_FIELD( 3, INT64 , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, build_number, version_name, 0), - PB_FIELD( 4, UENUM , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, build_type, build_number, 0), - PB_FIELD( 5, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, plist_version, build_type, 0), - PB_FIELD( 6, UENUM , REPEATED, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, sdk_service_enabled, plist_version, 0), - PB_FIELD( 7, UENUM , REPEATED, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, sdk_service_installed, sdk_service_enabled, 0), + PB_FIELD( 7, UENUM , REPEATED, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, sdk_service_installed, configuration_type, 0), PB_FIELD( 9, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, device_model, sdk_service_installed, 0), PB_FIELD( 10, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, app_id, device_model, 0), - PB_FIELD( 11, INT64 , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, project_number, app_id, 0), - PB_FIELD( 12, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, bundle_id, project_number, 0), - PB_FIELD( 13, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, client_id, bundle_id, 0), - PB_FIELD( 14, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, install, client_id, 0), - PB_FIELD( 16, UENUM , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, pod_name, install, 0), + PB_FIELD( 12, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, bundle_id, app_id, 0), + PB_FIELD( 16, UENUM , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, pod_name, bundle_id, 0), PB_FIELD( 18, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, icore_version, pod_name, 0), PB_FIELD( 19, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, sdk_version, icore_version, 0), PB_FIELD( 20, UENUM , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, sdk_name, sdk_version, 0), PB_FIELD( 21, INT32 , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, app_count, sdk_name, 0), PB_FIELD( 22, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, os_version, app_count, 0), - PB_FIELD( 23, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, itunes_id, os_version, 0), - PB_FIELD( 24, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, min_supported_ios_version, itunes_id, 0), + PB_FIELD( 24, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, min_supported_ios_version, os_version, 0), PB_FIELD( 25, BOOL , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, use_default_app, min_supported_ios_version, 0), PB_FIELD( 26, BOOL , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, deployed_in_app_store, use_default_app, 0), PB_FIELD( 27, INT32 , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, dynamic_framework_count, deployed_in_app_store, 0), @@ -55,11 +46,8 @@ const pb_field_t logs_proto_mobilesdk_ios_ICoreConfiguration_fields[34] = { PB_FIELD( 29, BOOL , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, using_zip_file, apple_framework_version, 0), PB_FIELD( 30, UENUM , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, deployment_type, using_zip_file, 0), PB_FIELD( 31, BYTES , OPTIONAL, POINTER , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, platform_info, deployment_type, 0), - PB_FIELD( 32, INT64 , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, app_extensions, platform_info, 0), - PB_FIELD( 33, BOOL , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, swizzling_enabled, app_extensions, 0), - PB_FIELD( 34, INT32 , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, log_error_count, swizzling_enabled, 0), - PB_FIELD( 35, INT32 , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, log_warning_count, log_error_count, 0), - PB_FIELD( 36, BOOL , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, using_gdt, log_warning_count, 0), + PB_FIELD( 33, BOOL , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, swizzling_enabled, platform_info, 0), + PB_FIELD( 36, BOOL , OPTIONAL, STATIC , OTHER, logs_proto_mobilesdk_ios_ICoreConfiguration, using_gdt, swizzling_enabled, 0), PB_LAST_FIELD }; diff --git a/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h b/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h index 41059e5d9..3e4c1950d 100644 --- a/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h +++ b/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.3.9.2 */ +/* Generated by nanopb-0.3.9.3 */ #ifndef PB_LOGS_PROTO_MOBILESDK_IOS_FIREBASECORE_NANOPB_H_INCLUDED #define PB_LOGS_PROTO_MOBILESDK_IOS_FIREBASECORE_NANOPB_H_INCLUDED @@ -111,23 +111,11 @@ typedef enum _logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType { typedef struct _logs_proto_mobilesdk_ios_ICoreConfiguration { bool has_configuration_type; logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType configuration_type; - pb_bytes_array_t *version_name; - bool has_build_number; - int64_t build_number; - bool has_build_type; - logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType build_type; - pb_bytes_array_t *plist_version; - pb_size_t sdk_service_enabled_count; - logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType *sdk_service_enabled; pb_size_t sdk_service_installed_count; logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType *sdk_service_installed; pb_bytes_array_t *device_model; pb_bytes_array_t *app_id; - bool has_project_number; - int64_t project_number; pb_bytes_array_t *bundle_id; - pb_bytes_array_t *client_id; - pb_bytes_array_t *install; bool has_pod_name; logs_proto_mobilesdk_ios_ICoreConfiguration_PodName pod_name; pb_bytes_array_t *icore_version; @@ -137,7 +125,6 @@ typedef struct _logs_proto_mobilesdk_ios_ICoreConfiguration { bool has_app_count; int32_t app_count; pb_bytes_array_t *os_version; - pb_bytes_array_t *itunes_id; pb_bytes_array_t *min_supported_ios_version; bool has_use_default_app; bool use_default_app; @@ -151,14 +138,8 @@ typedef struct _logs_proto_mobilesdk_ios_ICoreConfiguration { bool has_deployment_type; logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType deployment_type; pb_bytes_array_t *platform_info; - bool has_app_extensions; - int64_t app_extensions; bool has_swizzling_enabled; bool swizzling_enabled; - bool has_log_error_count; - int32_t log_error_count; - bool has_log_warning_count; - int32_t log_warning_count; bool has_using_gdt; bool using_gdt; /* @@protoc_insertion_point(struct:logs_proto_mobilesdk_ios_ICoreConfiguration) */ @@ -167,30 +148,21 @@ typedef struct _logs_proto_mobilesdk_ios_ICoreConfiguration { /* Default values for struct fields */ /* Initializer values for message structs */ -#define logs_proto_mobilesdk_ios_ICoreConfiguration_init_default {false, _logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_MIN, NULL, false, 0, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType_MIN, NULL, 0, NULL, 0, NULL, NULL, NULL, false, 0, NULL, NULL, NULL, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_MIN, NULL, NULL, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_MIN, false, 0, NULL, NULL, NULL, false, 0, false, 0, false, 0, NULL, false, 0, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_MIN, NULL, false, 0, false, 0, false, 0, false, 0, false, 0} -#define logs_proto_mobilesdk_ios_ICoreConfiguration_init_zero {false, _logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_MIN, NULL, false, 0, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_BuildType_MIN, NULL, 0, NULL, 0, NULL, NULL, NULL, false, 0, NULL, NULL, NULL, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_MIN, NULL, NULL, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_MIN, false, 0, NULL, NULL, NULL, false, 0, false, 0, false, 0, NULL, false, 0, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_MIN, NULL, false, 0, false, 0, false, 0, false, 0, false, 0} +#define logs_proto_mobilesdk_ios_ICoreConfiguration_init_default {false, _logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_MIN, 0, NULL, NULL, NULL, NULL, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_MIN, NULL, NULL, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_MIN, false, 0, NULL, NULL, false, 0, false, 0, false, 0, NULL, false, 0, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_MIN, NULL, false, 0, false, 0} +#define logs_proto_mobilesdk_ios_ICoreConfiguration_init_zero {false, _logs_proto_mobilesdk_ios_ICoreConfiguration_ConfigurationType_MIN, 0, NULL, NULL, NULL, NULL, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_PodName_MIN, NULL, NULL, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_ServiceType_MIN, false, 0, NULL, NULL, false, 0, false, 0, false, 0, NULL, false, 0, false, _logs_proto_mobilesdk_ios_ICoreConfiguration_DeploymentType_MIN, NULL, false, 0, false, 0} /* Field tags (for use in manual encoding/decoding) */ #define logs_proto_mobilesdk_ios_ICoreConfiguration_pod_name_tag 16 #define logs_proto_mobilesdk_ios_ICoreConfiguration_configuration_type_tag 1 -#define logs_proto_mobilesdk_ios_ICoreConfiguration_version_name_tag 2 #define logs_proto_mobilesdk_ios_ICoreConfiguration_icore_version_tag 18 #define logs_proto_mobilesdk_ios_ICoreConfiguration_sdk_version_tag 19 -#define logs_proto_mobilesdk_ios_ICoreConfiguration_build_number_tag 3 -#define logs_proto_mobilesdk_ios_ICoreConfiguration_build_type_tag 4 -#define logs_proto_mobilesdk_ios_ICoreConfiguration_plist_version_tag 5 -#define logs_proto_mobilesdk_ios_ICoreConfiguration_sdk_service_enabled_tag 6 #define logs_proto_mobilesdk_ios_ICoreConfiguration_sdk_service_installed_tag 7 #define logs_proto_mobilesdk_ios_ICoreConfiguration_sdk_name_tag 20 #define logs_proto_mobilesdk_ios_ICoreConfiguration_device_model_tag 9 #define logs_proto_mobilesdk_ios_ICoreConfiguration_os_version_tag 22 #define logs_proto_mobilesdk_ios_ICoreConfiguration_app_id_tag 10 -#define logs_proto_mobilesdk_ios_ICoreConfiguration_project_number_tag 11 #define logs_proto_mobilesdk_ios_ICoreConfiguration_bundle_id_tag 12 -#define logs_proto_mobilesdk_ios_ICoreConfiguration_client_id_tag 13 -#define logs_proto_mobilesdk_ios_ICoreConfiguration_itunes_id_tag 23 #define logs_proto_mobilesdk_ios_ICoreConfiguration_min_supported_ios_version_tag 24 -#define logs_proto_mobilesdk_ios_ICoreConfiguration_install_tag 14 #define logs_proto_mobilesdk_ios_ICoreConfiguration_use_default_app_tag 25 #define logs_proto_mobilesdk_ios_ICoreConfiguration_app_count_tag 21 #define logs_proto_mobilesdk_ios_ICoreConfiguration_deployed_in_app_store_tag 26 @@ -199,14 +171,11 @@ typedef struct _logs_proto_mobilesdk_ios_ICoreConfiguration { #define logs_proto_mobilesdk_ios_ICoreConfiguration_using_zip_file_tag 29 #define logs_proto_mobilesdk_ios_ICoreConfiguration_deployment_type_tag 30 #define logs_proto_mobilesdk_ios_ICoreConfiguration_platform_info_tag 31 -#define logs_proto_mobilesdk_ios_ICoreConfiguration_app_extensions_tag 32 #define logs_proto_mobilesdk_ios_ICoreConfiguration_swizzling_enabled_tag 33 -#define logs_proto_mobilesdk_ios_ICoreConfiguration_log_error_count_tag 34 -#define logs_proto_mobilesdk_ios_ICoreConfiguration_log_warning_count_tag 35 #define logs_proto_mobilesdk_ios_ICoreConfiguration_using_gdt_tag 36 /* Struct field encoding specification for nanopb */ -extern const pb_field_t logs_proto_mobilesdk_ios_ICoreConfiguration_fields[34]; +extern const pb_field_t logs_proto_mobilesdk_ios_ICoreConfiguration_fields[22]; /* Maximum encoded size of messages (where known) */ /* logs_proto_mobilesdk_ios_ICoreConfiguration_size depends on runtime parameters */ diff --git a/ios/Pods/FirebaseCoreDiagnostics/README.md b/ios/Pods/FirebaseCoreDiagnostics/README.md index bf397f057..3ddc8fbd2 100644 --- a/ios/Pods/FirebaseCoreDiagnostics/README.md +++ b/ios/Pods/FirebaseCoreDiagnostics/README.md @@ -1,9 +1,10 @@ # Firebase iOS Open Source Development [![Build Status](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) This repository contains a subset of the Firebase iOS SDK source. It currently -includes FirebaseCore, FirebaseAuth, FirebaseDatabase, FirebaseFirestore, -FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, -FirebaseInAppMessagingDisplay, FirebaseMessaging and FirebaseStorage. +includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, +FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, +FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and +FirebaseStorage. The repository also includes GoogleUtilities source. The [GoogleUtilities](GoogleUtilities/README.md) pod is @@ -75,14 +76,30 @@ the following software: * Xcode 10.1 (or later) * CocoaPods 1.7.2 (or later) + * [CocoaPods generate](https://github.com/square/cocoapods-generate) For the pod that you want to develop: -`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open` +`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios` -Firestore and Functions have self contained Xcode projects. See -[Firestore/README.md](Firestore/README.md) and -[Functions/README.md](Functions/README.md). +Note: If the CocoaPods cache is out of date, you may need to run +`pod repo update` before the `pod gen` command. + +Note: Set the `--platforms` option to `macos` or `tvos` to develop/test for +those platforms. Since 10.2, Xcode does not properly handle multi-platform +CocoaPods workspaces. + +Firestore has a self contained Xcode project. See +[Firestore/README.md](Firestore/README.md). + +### Development for Catalyst +* `pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios` +* Check the Mac box in the App-iOS Build Settings +* Sign the App in the Settings Signing & Capabilities tab +* Click Pods in the Project Manager +* Add Signing to the iOS host app and unit test targets +* Select the Unit-unit scheme +* Run it to build and test ### Adding a New Firebase Pod @@ -99,13 +116,17 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/773cb75d360b58f32048f5964038d09825a507c8/Formula/clang-format.rb -brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/3dfea1004e0736754bbf49673cca8aaed8a94089/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to `brew switch` to this version. +To update this section, find the versions of clang-format and swiftformat.rb to +match the versions in the CI failure logs +[here](https://github.com/Homebrew/homebrew-core/tree/master/Formula). + ### Running Unit Tests Select a scheme and press Command-u to build a component and run its unit tests. @@ -178,32 +199,39 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### macOS and tvOS -Thanks to contributions from the community, FirebaseAuth, FirebaseCore, FirebaseDatabase, FirebaseMessaging, -FirebaseFirestore, FirebaseFunctions and FirebaseStorage now compile, run unit tests, and work on -macOS and tvOS. +### tvOS, macOS, and Catalyst +Thanks to contributions from the community, FirebaseABTesting, FirebaseAuth, FirebaseCore, +FirebaseDatabase, FirebaseMessaging, FirebaseFirestore, +FirebaseFunctions, FirebaseRemoteConfig, and FirebaseStorage now compile, run unit tests, and work on +tvOS, macOS, and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). -Keep in mind that macOS and tvOS are not officially supported by Firebase, and this repository is -actively developed primarily for iOS. While we can catch basic unit test issues with Travis, there -may be some changes where the SDK no longer works as expected on macOS or tvOS. If you encounter -this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). - -Note that the Firebase pod is not available for macOS and tvOS. +Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +repository is actively developed primarily for iOS. While we can catch basic unit test issues with +Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). To install, add a subset of the following to the Podfile: ``` -pod 'FirebaseAuth' -pod 'FirebaseCore' -pod 'FirebaseDatabase' -pod 'FirebaseFirestore' -pod 'FirebaseFunctions' -pod 'FirebaseMessaging' -pod 'FirebaseStorage' +pod 'Firebase/ABTesting' +pod 'Firebase/Auth' +pod 'Firebase/Database' +pod 'Firebase/Firestore' +pod 'Firebase/Functions' +pod 'Firebase/Messaging' +pod 'Firebase/RemoteConfig' +pod 'Firebase/Storage' ``` +#### Additional Catalyst Notes + +* FirebaseAuth and FirebaseMessaging require adding `Keychain Sharing Capability` +to Build Settings. +* FirebaseFirestore requires signing the +[gRPC Resource target](https://github.com/firebase/firebase-ios-sdk/issues/3500#issuecomment-518741681). + ## Roadmap See [Roadmap](ROADMAP.md) for more about the Firebase iOS SDK Open Source diff --git a/ios/Pods/FirebaseCoreDiagnosticsInterop/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h b/ios/Pods/FirebaseCoreDiagnosticsInterop/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h index 7c7477696..69c40721a 100644 --- a/ios/Pods/FirebaseCoreDiagnosticsInterop/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h +++ b/ios/Pods/FirebaseCoreDiagnosticsInterop/Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h @@ -19,36 +19,34 @@ NS_ASSUME_NONNULL_BEGIN /** If present, is a BOOL wrapped in an NSNumber. */ -static NSString *const kFIRCDIsDataCollectionDefaultEnabledKey = - @"FIRCDIsDataCollectionDefaultEnabledKey"; +#define kFIRCDIsDataCollectionDefaultEnabledKey @"FIRCDIsDataCollectionDefaultEnabledKey" /** If present, is an int32_t wrapped in an NSNumber. */ -static NSString *const kFIRCDConfigurationTypeKey = @"FIRCDConfigurationTypeKey"; +#define kFIRCDConfigurationTypeKey @"FIRCDConfigurationTypeKey" /** If present, is an NSString. */ -static NSString *const kFIRCDSdkNameKey = @"FIRCDSdkNameKey"; +#define kFIRCDSdkNameKey @"FIRCDSdkNameKey" /** If present, is an NSString. */ -static NSString *const kFIRCDSdkVersionKey = @"FIRCDSdkVersionKey"; +#define kFIRCDSdkVersionKey @"FIRCDSdkVersionKey" /** If present, is an int32_t wrapped in an NSNumber. */ -static NSString *const kFIRCDllAppsCountKey = @"FIRCDllAppsCountKey"; +#define kFIRCDllAppsCountKey @"FIRCDllAppsCountKey" /** If present, is an NSString. */ -static NSString *const kFIRCDGoogleAppIDKey = @"FIRCDGoogleAppIDKey"; +#define kFIRCDGoogleAppIDKey @"FIRCDGoogleAppIDKey" /** If present, is an NSString. */ -static NSString *const kFIRCDBundleIDKey = @"FIRCDBundleID"; +#define kFIRCDBundleIDKey @"FIRCDBundleID" /** If present, is a BOOL wrapped in an NSNumber. */ -static NSString *const kFIRCDUsingOptionsFromDefaultPlistKey = - @"FIRCDUsingOptionsFromDefaultPlistKey"; +#define kFIRCDUsingOptionsFromDefaultPlistKey @"FIRCDUsingOptionsFromDefaultPlistKey" /** If present, is an NSString. */ -static NSString *const kFIRCDLibraryVersionIDKey = @"FIRCDLibraryVersionIDKey"; +#define kFIRCDLibraryVersionIDKey @"FIRCDLibraryVersionIDKey" /** If present, is an NSString. */ -static NSString *const kFIRCDFirebaseUserAgentKey = @"FIRCDFirebaseUserAgentKey"; +#define kFIRCDFirebaseUserAgentKey @"FIRCDFirebaseUserAgentKey" /** Defines the interface of a data object needed to log diagnostics data. */ @protocol FIRCoreDiagnosticsData diff --git a/ios/Pods/FirebaseCoreDiagnosticsInterop/README.md b/ios/Pods/FirebaseCoreDiagnosticsInterop/README.md index bf397f057..3ddc8fbd2 100644 --- a/ios/Pods/FirebaseCoreDiagnosticsInterop/README.md +++ b/ios/Pods/FirebaseCoreDiagnosticsInterop/README.md @@ -1,9 +1,10 @@ # Firebase iOS Open Source Development [![Build Status](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) This repository contains a subset of the Firebase iOS SDK source. It currently -includes FirebaseCore, FirebaseAuth, FirebaseDatabase, FirebaseFirestore, -FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, -FirebaseInAppMessagingDisplay, FirebaseMessaging and FirebaseStorage. +includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, +FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, +FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and +FirebaseStorage. The repository also includes GoogleUtilities source. The [GoogleUtilities](GoogleUtilities/README.md) pod is @@ -75,14 +76,30 @@ the following software: * Xcode 10.1 (or later) * CocoaPods 1.7.2 (or later) + * [CocoaPods generate](https://github.com/square/cocoapods-generate) For the pod that you want to develop: -`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open` +`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios` -Firestore and Functions have self contained Xcode projects. See -[Firestore/README.md](Firestore/README.md) and -[Functions/README.md](Functions/README.md). +Note: If the CocoaPods cache is out of date, you may need to run +`pod repo update` before the `pod gen` command. + +Note: Set the `--platforms` option to `macos` or `tvos` to develop/test for +those platforms. Since 10.2, Xcode does not properly handle multi-platform +CocoaPods workspaces. + +Firestore has a self contained Xcode project. See +[Firestore/README.md](Firestore/README.md). + +### Development for Catalyst +* `pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios` +* Check the Mac box in the App-iOS Build Settings +* Sign the App in the Settings Signing & Capabilities tab +* Click Pods in the Project Manager +* Add Signing to the iOS host app and unit test targets +* Select the Unit-unit scheme +* Run it to build and test ### Adding a New Firebase Pod @@ -99,13 +116,17 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/773cb75d360b58f32048f5964038d09825a507c8/Formula/clang-format.rb -brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/3dfea1004e0736754bbf49673cca8aaed8a94089/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to `brew switch` to this version. +To update this section, find the versions of clang-format and swiftformat.rb to +match the versions in the CI failure logs +[here](https://github.com/Homebrew/homebrew-core/tree/master/Formula). + ### Running Unit Tests Select a scheme and press Command-u to build a component and run its unit tests. @@ -178,32 +199,39 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### macOS and tvOS -Thanks to contributions from the community, FirebaseAuth, FirebaseCore, FirebaseDatabase, FirebaseMessaging, -FirebaseFirestore, FirebaseFunctions and FirebaseStorage now compile, run unit tests, and work on -macOS and tvOS. +### tvOS, macOS, and Catalyst +Thanks to contributions from the community, FirebaseABTesting, FirebaseAuth, FirebaseCore, +FirebaseDatabase, FirebaseMessaging, FirebaseFirestore, +FirebaseFunctions, FirebaseRemoteConfig, and FirebaseStorage now compile, run unit tests, and work on +tvOS, macOS, and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). -Keep in mind that macOS and tvOS are not officially supported by Firebase, and this repository is -actively developed primarily for iOS. While we can catch basic unit test issues with Travis, there -may be some changes where the SDK no longer works as expected on macOS or tvOS. If you encounter -this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). - -Note that the Firebase pod is not available for macOS and tvOS. +Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +repository is actively developed primarily for iOS. While we can catch basic unit test issues with +Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). To install, add a subset of the following to the Podfile: ``` -pod 'FirebaseAuth' -pod 'FirebaseCore' -pod 'FirebaseDatabase' -pod 'FirebaseFirestore' -pod 'FirebaseFunctions' -pod 'FirebaseMessaging' -pod 'FirebaseStorage' +pod 'Firebase/ABTesting' +pod 'Firebase/Auth' +pod 'Firebase/Database' +pod 'Firebase/Firestore' +pod 'Firebase/Functions' +pod 'Firebase/Messaging' +pod 'Firebase/RemoteConfig' +pod 'Firebase/Storage' ``` +#### Additional Catalyst Notes + +* FirebaseAuth and FirebaseMessaging require adding `Keychain Sharing Capability` +to Build Settings. +* FirebaseFirestore requires signing the +[gRPC Resource target](https://github.com/firebase/firebase-ios-sdk/issues/3500#issuecomment-518741681). + ## Roadmap See [Roadmap](ROADMAP.md) for more about the Firebase iOS SDK Open Source diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.h new file mode 100644 index 000000000..5bc21a11c --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.h @@ -0,0 +1,56 @@ +/* + * Copyright 2019 Google + * + * 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 + +#import + +@class FIRInstallationsHTTPError; + +NS_ASSUME_NONNULL_BEGIN + +void FIRInstallationsItemSetErrorToPointer(NSError *error, NSError **pointer); + +@interface FIRInstallationsErrorUtil : NSObject + ++ (NSError *)keyedArchiverErrorWithException:(NSException *)exception; ++ (NSError *)keyedArchiverErrorWithError:(NSError *)error; + ++ (NSError *)keychainErrorWithFunction:(NSString *)keychainFunction status:(OSStatus)status; + ++ (NSError *)installationItemNotFoundForAppID:(NSString *)appID appName:(NSString *)appName; + ++ (NSError *)JSONSerializationError:(NSError *)error; + ++ (NSError *)networkErrorWithError:(NSError *)error; + ++ (NSError *)FIDRegistrationErrorWithResponseMissingField:(NSString *)missingFieldName; + ++ (NSError *)corruptedIIDTokenData; + ++ (FIRInstallationsHTTPError *)APIErrorWithHTTPResponse:(NSHTTPURLResponse *)HTTPResponse + data:(nullable NSData *)data; ++ (BOOL)isAPIError:(NSError *)error withHTTPCode:(NSInteger)HTTPCode; + +/** + * Returns the passed error if it is already in the public domain or a new error with the passed + * error at `NSUnderlyingErrorKey`. + */ ++ (NSError *)publicDomainErrorWithError:(NSError *)error; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.m new file mode 100644 index 000000000..f85923ace --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.m @@ -0,0 +1,124 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsErrorUtil.h" + +#import "FIRInstallationsHTTPError.h" + +NSString *const kFirebaseInstallationsErrorDomain = @"com.firebase.installations"; + +void FIRInstallationsItemSetErrorToPointer(NSError *error, NSError **pointer) { + if (pointer != NULL) { + *pointer = error; + } +} + +@implementation FIRInstallationsErrorUtil + ++ (NSError *)keyedArchiverErrorWithException:(NSException *)exception { + NSString *failureReason = [NSString + stringWithFormat:@"NSKeyedArchiver exception with name: %@, reason: %@, userInfo: %@", + exception.name, exception.reason, exception.userInfo]; + return [self installationsErrorWithCode:FIRInstallationsErrorCodeUnknown + failureReason:failureReason + underlyingError:nil]; +} + ++ (NSError *)keyedArchiverErrorWithError:(NSError *)error { + NSString *failureReason = [NSString stringWithFormat:@"NSKeyedArchiver error."]; + return [self installationsErrorWithCode:FIRInstallationsErrorCodeUnknown + failureReason:failureReason + underlyingError:error]; +} + ++ (NSError *)keychainErrorWithFunction:(NSString *)keychainFunction status:(OSStatus)status { + NSString *failureReason = [NSString stringWithFormat:@"%@ (%li)", keychainFunction, (long)status]; + return [self installationsErrorWithCode:FIRInstallationsErrorCodeKeychain + failureReason:failureReason + underlyingError:nil]; +} + ++ (NSError *)installationItemNotFoundForAppID:(NSString *)appID appName:(NSString *)appName { + NSString *failureReason = + [NSString stringWithFormat:@"Installation for appID %@ appName %@ not found", appID, appName]; + return [self installationsErrorWithCode:FIRInstallationsErrorCodeUnknown + failureReason:failureReason + underlyingError:nil]; +} + ++ (NSError *)corruptedIIDTokenData { + NSString *failureReason = + @"IID token data stored in Keychain is corrupted or in an incompatible format."; + return [self installationsErrorWithCode:FIRInstallationsErrorCodeUnknown + failureReason:failureReason + underlyingError:nil]; +} + ++ (FIRInstallationsHTTPError *)APIErrorWithHTTPResponse:(NSHTTPURLResponse *)HTTPResponse + data:(nullable NSData *)data { + return [[FIRInstallationsHTTPError alloc] initWithHTTPResponse:HTTPResponse data:data]; +} + ++ (BOOL)isAPIError:(NSError *)error withHTTPCode:(NSInteger)HTTPCode { + if (![error isKindOfClass:[FIRInstallationsHTTPError class]]) { + return NO; + } + + return [(FIRInstallationsHTTPError *)error HTTPResponse].statusCode == HTTPCode; +} + ++ (NSError *)JSONSerializationError:(NSError *)error { + NSString *failureReason = [NSString stringWithFormat:@"Failed to serialize JSON data."]; + return [self installationsErrorWithCode:FIRInstallationsErrorCodeUnknown + failureReason:failureReason + underlyingError:nil]; +} + ++ (NSError *)FIDRegistrationErrorWithResponseMissingField:(NSString *)missingFieldName { + NSString *failureReason = [NSString + stringWithFormat:@"A required response field with name %@ is missing", missingFieldName]; + return [self installationsErrorWithCode:FIRInstallationsErrorCodeUnknown + failureReason:failureReason + underlyingError:nil]; +} + ++ (NSError *)networkErrorWithError:(NSError *)error { + return [self installationsErrorWithCode:FIRInstallationsErrorCodeServerUnreachable + failureReason:@"Network connection error." + underlyingError:error]; +} + ++ (NSError *)publicDomainErrorWithError:(NSError *)error { + if ([error.domain isEqualToString:kFirebaseInstallationsErrorDomain]) { + return error; + } + + return [self installationsErrorWithCode:FIRInstallationsErrorCodeUnknown + failureReason:nil + underlyingError:error]; +} + ++ (NSError *)installationsErrorWithCode:(FIRInstallationsErrorCode)code + failureReason:(nullable NSString *)failureReason + underlyingError:(nullable NSError *)underlyingError { + NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + userInfo[NSUnderlyingErrorKey] = underlyingError; + userInfo[NSLocalizedFailureReasonErrorKey] = failureReason; + + return [NSError errorWithDomain:kFirebaseInstallationsErrorDomain code:code userInfo:userInfo]; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.h new file mode 100644 index 000000000..ad0eb8c13 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.h @@ -0,0 +1,54 @@ +/* + * Copyright 2019 Google + * + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** Represents an error caused by an unexpected API response. */ +@interface FIRInstallationsHTTPError : NSError + +@property(nonatomic, readonly) NSHTTPURLResponse *HTTPResponse; +@property(nonatomic, readonly, nonnull) NSData *data; + +- (instancetype)init NS_UNAVAILABLE; + +- (instancetype)initWithHTTPResponse:(NSHTTPURLResponse *)HTTPResponse data:(nullable NSData *)data; + +@end + +NS_ASSUME_NONNULL_END + +typedef NS_ENUM(NSInteger, FIRInstallationsHTTPCodes) { + FIRInstallationsHTTPCodesTooManyRequests = 429, + FIRInstallationsHTTPCodesServerInternalError = 500, +}; + +/** Possible response HTTP codes for `CreateInstallation` API request. */ +typedef NS_ENUM(NSInteger, FIRInstallationsRegistrationHTTPCode) { + FIRInstallationsRegistrationHTTPCodeSuccess = 201, + FIRInstallationsRegistrationHTTPCodeInvalidArgument = 400, + FIRInstallationsRegistrationHTTPCodeInvalidAPIKey = 401, + FIRInstallationsRegistrationHTTPCodeAPIKeyToProjectIDMismatch = 403, + FIRInstallationsRegistrationHTTPCodeProjectNotFound = 404, + FIRInstallationsRegistrationHTTPCodeTooManyRequests = 429, + FIRInstallationsRegistrationHTTPCodeServerInternalError = 500 +}; + +typedef NS_ENUM(NSInteger, FIRInstallationsAuthTokenHTTPCode) { + FIRInstallationsAuthTokenHTTPCodeInvalidAuthentication = 401, + FIRInstallationsAuthTokenHTTPCodeFIDNotFound = 404, +}; diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m new file mode 100644 index 000000000..5b3eae22b --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m @@ -0,0 +1,78 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsHTTPError.h" +#import "FIRInstallationsErrorUtil.h" + +@implementation FIRInstallationsHTTPError + +- (instancetype)initWithHTTPResponse:(NSHTTPURLResponse *)HTTPResponse + data:(nullable NSData *)data { + NSDictionary *userInfo = [FIRInstallationsHTTPError userInfoWithHTTPResponse:HTTPResponse + data:data]; + self = [super + initWithDomain:kFirebaseInstallationsErrorDomain + code:[FIRInstallationsHTTPError errorCodeWithHTTPCode:HTTPResponse.statusCode] + userInfo:userInfo]; + if (self) { + _HTTPResponse = HTTPResponse; + _data = data; + } + return self; +} + ++ (FIRInstallationsErrorCode)errorCodeWithHTTPCode:(NSInteger)HTTPCode { + return FIRInstallationsErrorCodeUnknown; +} + ++ (NSDictionary *)userInfoWithHTTPResponse:(NSHTTPURLResponse *)HTTPResponse + data:(nullable NSData *)data { + NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + NSString *failureReason = [NSString + stringWithFormat:@"The server responded with an error. HTTP response: %@\nResponse body: %@", + HTTPResponse, responseString]; + return @{NSLocalizedFailureReasonErrorKey : failureReason}; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + return [[FIRInstallationsHTTPError alloc] initWithHTTPResponse:self.HTTPResponse data:self.data]; +} + +#pragma mark - NSSecureCoding + +- (nullable instancetype)initWithCoder:(NSCoder *)coder { + NSHTTPURLResponse *HTTPResponse = [coder decodeObjectOfClass:[NSHTTPURLResponse class] + forKey:@"HTTPResponse"]; + if (!HTTPResponse) { + return nil; + } + NSData *data = [coder decodeObjectOfClass:[NSData class] forKey:@"data"]; + + return [self initWithHTTPResponse:HTTPResponse data:data]; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:self.HTTPResponse forKey:@"HTTPResponse"]; + [coder encodeObject:self.data forKey:@"data"]; +} + ++ (BOOL)supportsSecureCoding { + return YES; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallations.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallations.m new file mode 100644 index 000000000..71e7dd434 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallations.m @@ -0,0 +1,248 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallations.h" + +#if __has_include() +#import +#else +#import "FBLPromises.h" +#endif + +#import +#import +#import +#import +#import +#import + +#import "FIRInstallationsAuthTokenResultInternal.h" + +#import "FIRInstallationsErrorUtil.h" +#import "FIRInstallationsIDController.h" +#import "FIRInstallationsItem.h" +#import "FIRInstallationsLogger.h" +#import "FIRInstallationsStoredAuthToken.h" +#import "FIRInstallationsVersion.h" + +NS_ASSUME_NONNULL_BEGIN + +@protocol FIRInstallationsInstanceProvider +@end + +@interface FIRInstallations () +@property(nonatomic, readonly) FIROptions *appOptions; +@property(nonatomic, readonly) NSString *appName; + +@property(nonatomic, readonly) FIRInstallationsIDController *installationsIDController; + +@end + +@implementation FIRInstallations + +#pragma mark - Firebase component + ++ (void)load { + [FIRApp registerInternalLibrary:(Class)self + withName:@"fire-install" + withVersion:[NSString stringWithUTF8String:FIRInstallationsVersionStr]]; +} + ++ (nonnull NSArray *)componentsToRegister { + FIRComponentCreationBlock creationBlock = + ^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) { + *isCacheable = YES; + FIRInstallations *installations = [[FIRInstallations alloc] initWithApp:container.app]; + return installations; + }; + + FIRComponent *installationsProvider = + [FIRComponent componentWithProtocol:@protocol(FIRInstallationsInstanceProvider) + instantiationTiming:FIRInstantiationTimingAlwaysEager + dependencies:@[] + creationBlock:creationBlock]; + return @[ installationsProvider ]; +} + +- (instancetype)initWithApp:(FIRApp *)app { + return [self initWitAppOptions:app.options appName:app.name]; +} + +- (instancetype)initWitAppOptions:(FIROptions *)appOptions appName:(NSString *)appName { + FIRInstallationsIDController *IDController = + [[FIRInstallationsIDController alloc] initWithGoogleAppID:appOptions.googleAppID + appName:appName + APIKey:appOptions.APIKey + projectID:appOptions.projectID + GCMSenderID:appOptions.GCMSenderID + accessGroup:appOptions.appGroupID]; + return [self initWithAppOptions:appOptions + appName:appName + installationsIDController:IDController + prefetchAuthToken:YES]; +} + +/// The initializer is supposed to be used by tests to inject `installationsStore`. +- (instancetype)initWithAppOptions:(FIROptions *)appOptions + appName:(NSString *)appName + installationsIDController:(FIRInstallationsIDController *)installationsIDController + prefetchAuthToken:(BOOL)prefetchAuthToken { + self = [super init]; + if (self) { + [[self class] validateAppOptions:appOptions appName:appName]; + [[self class] assertCompatibleIIDVersion]; + + _appOptions = [appOptions copy]; + _appName = [appName copy]; + _installationsIDController = installationsIDController; + + // Pre-fetch auth token. + if (prefetchAuthToken) { + [self authTokenWithCompletion:^(FIRInstallationsAuthTokenResult *_Nullable tokenResult, + NSError *_Nullable error){ + }]; + } + } + return self; +} + ++ (void)validateAppOptions:(FIROptions *)appOptions appName:(NSString *)appName { + NSMutableArray *missingFields = [NSMutableArray array]; + if (appName.length < 1) { + [missingFields addObject:@"`FirebaseApp.name`"]; + } + if (appOptions.APIKey.length < 1) { + [missingFields addObject:@"`FirebaseOptions.APIKey`"]; + } + if (appOptions.googleAppID.length < 1) { + [missingFields addObject:@"`FirebaseOptions.googleAppID`"]; + } + + // TODO(#4692): Check for `appOptions.projectID.length < 1` only. + // We can use `GCMSenderID` instead of `projectID` temporary. + if (appOptions.projectID.length < 1 && appOptions.GCMSenderID.length < 1) { + [missingFields addObject:@"`FirebaseOptions.projectID`"]; + } + + if (missingFields.count > 0) { + [NSException + raise:kFirebaseInstallationsErrorDomain + format: + @"%@[%@] Could not configure Firebase Installations due to invalid FirebaseApp " + @"options. The following parameters are nil or empty: %@. If you use " + @"GoogleServices-Info.plist please download the most recent version from the Firebase " + @"Console. If you configure Firebase in code, please make sure you specify all " + @"required parameters.", + kFIRLoggerInstallations, kFIRInstallationsMessageCodeInvalidFirebaseAppOptions, + [missingFields componentsJoinedByString:@", "]]; + } +} + +#pragma mark - Public + ++ (FIRInstallations *)installations { + FIRApp *defaultApp = [FIRApp defaultApp]; + if (!defaultApp) { + [NSException raise:kFirebaseInstallationsErrorDomain + format:@"The default FirebaseApp instance must be configured before the default" + @"FirebaseApp instance can be initialized. One way to ensure that is to " + @"call `[FIRApp configure];` (`FirebaseApp.configure()` in Swift) in the App" + @" Delegate's `application:didFinishLaunchingWithOptions:` " + @"(`application(_:didFinishLaunchingWithOptions:)` in Swift)."]; + } + + return [self installationsWithApp:defaultApp]; +} + ++ (FIRInstallations *)installationsWithApp:(FIRApp *)app { + id installations = + FIR_COMPONENT(FIRInstallationsInstanceProvider, app.container); + return (FIRInstallations *)installations; +} + +- (void)installationIDWithCompletion:(FIRInstallationsIDHandler)completion { + [self.installationsIDController getInstallationItem] + .then(^id(FIRInstallationsItem *installation) { + completion(installation.firebaseInstallationID, nil); + return nil; + }) + .catch(^(NSError *error) { + completion(nil, [FIRInstallationsErrorUtil publicDomainErrorWithError:error]); + }); +} + +- (void)authTokenWithCompletion:(FIRInstallationsTokenHandler)completion { + [self authTokenForcingRefresh:NO completion:completion]; +} + +- (void)authTokenForcingRefresh:(BOOL)forceRefresh + completion:(FIRInstallationsTokenHandler)completion { + [self.installationsIDController getAuthTokenForcingRefresh:forceRefresh] + .then(^FIRInstallationsAuthTokenResult *(FIRInstallationsItem *installation) { + FIRInstallationsAuthTokenResult *result = [[FIRInstallationsAuthTokenResult alloc] + initWithToken:installation.authToken.token + expirationDate:installation.authToken.expirationDate]; + return result; + }) + .then(^id(FIRInstallationsAuthTokenResult *token) { + completion(token, nil); + return nil; + }) + .catch(^void(NSError *error) { + completion(nil, [FIRInstallationsErrorUtil publicDomainErrorWithError:error]); + }); +} + +- (void)deleteWithCompletion:(void (^)(NSError *__nullable error))completion { + [self.installationsIDController deleteInstallation] + .then(^id(id result) { + completion(nil); + return nil; + }) + .catch(^void(NSError *error) { + completion([FIRInstallationsErrorUtil publicDomainErrorWithError:error]); + }); +} + +#pragma mark - IID version compatibility + ++ (void)assertCompatibleIIDVersion { + // We use this flag to disable IID compatibility exception for unit tests. +#ifdef FIR_INSTALLATIONS_ALLOWS_INCOMPATIBLE_IID_VERSION + return; +#else + if (![self isIIDVersionCompatible]) { + [NSException raise:kFirebaseInstallationsErrorDomain + format:@"FirebaseInstallations will not work correctly with current version of " + @"Firebase Instance ID. Please update your Firebase Instance ID version."]; + } +#endif +} + ++ (BOOL)isIIDVersionCompatible { + Class IIDClass = NSClassFromString(@"FIRInstanceID"); + if (IIDClass == nil) { + // It is OK if there is no IID at all. + return YES; + } + // We expect a compatible version having the method `+[FIRInstanceID usesFIS]` defined. + BOOL isCompatibleVersion = [IIDClass respondsToSelector:NSSelectorFromString(@"usesFIS")]; + return isCompatibleVersion; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResult.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResult.m new file mode 100644 index 000000000..92e5fab19 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResult.m @@ -0,0 +1,30 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsAuthTokenResultInternal.h" + +@implementation FIRInstallationsAuthTokenResult + +- (instancetype)initWithToken:(NSString *)token expirationDate:(NSDate *)expirationDate { + self = [super init]; + if (self) { + _authToken = [token copy]; + _expirationDate = expirationDate; + } + return self; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResultInternal.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResultInternal.h new file mode 100644 index 000000000..0c959dba5 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResultInternal.h @@ -0,0 +1,27 @@ +/* + * Copyright 2019 Google + * + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRInstallationsAuthTokenResult (Internal) + +- (instancetype)initWithToken:(NSString *)token expirationDate:(NSDate *)expirationTime; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.h new file mode 100644 index 000000000..95fdf835f --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.h @@ -0,0 +1,86 @@ +/* + * Copyright 2019 Google + * + * 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 + +#import "FIRInstallationsStatus.h" + +@class FIRInstallationsStoredItem; +@class FIRInstallationsStoredAuthToken; +@class FIRInstallationsStoredIIDCheckin; + +NS_ASSUME_NONNULL_BEGIN + +/** + * The class represents the required installation ID and auth token data including possible states. + * The data is stored to Keychain via `FIRInstallationsStoredItem` which has only the storage + * relevant data and does not contain any logic. `FIRInstallationsItem` must be used on the logic + * level (not `FIRInstallationsStoredItem`). + */ +@interface FIRInstallationsItem : NSObject + +/// A `FirebaseApp` identifier. +@property(nonatomic, readonly) NSString *appID; +/// A `FirebaseApp` name. +@property(nonatomic, readonly) NSString *firebaseAppName; +/// A stable identifier that uniquely identifies the app instance. +@property(nonatomic, copy, nullable) NSString *firebaseInstallationID; +/// The `refreshToken` is used to authorize the auth token requests. +@property(nonatomic, copy, nullable) NSString *refreshToken; + +@property(nonatomic, nullable) FIRInstallationsStoredAuthToken *authToken; +@property(nonatomic, assign) FIRInstallationsStatus registrationStatus; + +/// Instance ID default token imported from IID store as a part of IID migration. +@property(nonatomic, nullable) NSString *IIDDefaultToken; + +- (instancetype)initWithAppID:(NSString *)appID firebaseAppName:(NSString *)firebaseAppName; + +/** + * Populates `FIRInstallationsItem` properties with data from `FIRInstallationsStoredItem`. + * @param item An instance of `FIRInstallationsStoredItem` to get data from. + */ +- (void)updateWithStoredItem:(FIRInstallationsStoredItem *)item; + +/** + * Creates a stored item with data from the object. + * @return Returns a `FIRInstallationsStoredItem` instance with the data from the object. + */ +- (FIRInstallationsStoredItem *)storedItem; + +/** + * The installation identifier. + * @return Returns a string uniquely identifying the installation. + */ +- (NSString *)identifier; + +/** + * The installation identifier. + * @param appID A `FirebaseApp` identifier. + * @param appName A `FirebaseApp` name. + * @return Returns a string uniquely identifying the installation. + */ ++ (NSString *)identifierWithAppID:(NSString *)appID appName:(NSString *)appName; + +/** + * Generate a new Firebase Installation Identifier. + * @return Returns a 22 characters long globally unique string created based on UUID. + */ ++ (NSString *)generateFID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.m new file mode 100644 index 000000000..bc819bf8a --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.m @@ -0,0 +1,104 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsItem.h" + +#import "FIRInstallationsStoredAuthToken.h" +#import "FIRInstallationsStoredItem.h" + +@implementation FIRInstallationsItem + +- (instancetype)initWithAppID:(NSString *)appID firebaseAppName:(NSString *)firebaseAppName { + self = [super init]; + if (self) { + _appID = [appID copy]; + _firebaseAppName = [firebaseAppName copy]; + } + return self; +} + +- (nonnull id)copyWithZone:(nullable NSZone *)zone { + FIRInstallationsItem *clone = [[FIRInstallationsItem alloc] initWithAppID:self.appID + firebaseAppName:self.firebaseAppName]; + clone.firebaseInstallationID = [self.firebaseInstallationID copy]; + clone.refreshToken = [self.refreshToken copy]; + clone.authToken = [self.authToken copy]; + clone.registrationStatus = self.registrationStatus; + + return clone; +} + +- (void)updateWithStoredItem:(FIRInstallationsStoredItem *)item { + self.firebaseInstallationID = item.firebaseInstallationID; + self.refreshToken = item.refreshToken; + self.authToken = item.authToken; + self.registrationStatus = item.registrationStatus; + self.IIDDefaultToken = item.IIDDefaultToken; +} + +- (FIRInstallationsStoredItem *)storedItem { + FIRInstallationsStoredItem *storedItem = [[FIRInstallationsStoredItem alloc] init]; + storedItem.firebaseInstallationID = self.firebaseInstallationID; + storedItem.refreshToken = self.refreshToken; + storedItem.authToken = self.authToken; + storedItem.registrationStatus = self.registrationStatus; + storedItem.IIDDefaultToken = self.IIDDefaultToken; + return storedItem; +} + +- (nonnull NSString *)identifier { + return [[self class] identifierWithAppID:self.appID appName:self.firebaseAppName]; +} + ++ (NSString *)identifierWithAppID:(NSString *)appID appName:(NSString *)appName { + return [appID stringByAppendingString:appName]; +} + ++ (NSString *)generateFID { + NSUUID *UUID = [NSUUID UUID]; + uuid_t UUIDBytes; + [UUID getUUIDBytes:UUIDBytes]; + + NSUInteger UUIDLength = sizeof(uuid_t); + NSData *UUIDData = [NSData dataWithBytes:UUIDBytes length:UUIDLength]; + + uint8_t UUIDLast4Bits = UUIDBytes[UUIDLength - 1] & 0b00001111; + + // FID first 4 bits must be `0111`. The last 4 UUID bits will be cut later to form a proper FID. + // To keep 16 random bytes we copy these last 4 UUID to the FID 1st byte after `0111` prefix. + uint8_t FIDPrefix = 0b01110000 | UUIDLast4Bits; + NSMutableData *FIDData = [NSMutableData dataWithBytes:&FIDPrefix length:1]; + + [FIDData appendData:UUIDData]; + NSString *FIDString = [self base64URLEncodedStringWithData:FIDData]; + + // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5 bytes. + // Our generated ID has 16 bytes UUID + 1 byte prefix which after encoding with base64 will become + // 23 characters plus 1 character for "=" padding. + + // Remove the 23rd character that was added because of the extra 4 bits at the + // end of our 17 byte data and the '=' padding. + return [FIDString substringWithRange:NSMakeRange(0, 22)]; +} + ++ (NSString *)base64URLEncodedStringWithData:(NSData *)data { + NSString *string = [data base64EncodedStringWithOptions:0]; + string = [string stringByReplacingOccurrencesOfString:@"/" withString:@"_"]; + string = [string stringByReplacingOccurrencesOfString:@"+" withString:@"-"]; + return string; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.h new file mode 100644 index 000000000..baeadb2e3 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.h @@ -0,0 +1,51 @@ +/* + * Copyright 2019 Google + * + * 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 + +#import + +extern FIRLoggerService kFIRLoggerInstallations; + +// FIRInstallationsAPIService.m +extern NSString *const kFIRInstallationsMessageCodeSendAPIRequest; +extern NSString *const kFIRInstallationsMessageCodeAPIRequestNetworkError; +extern NSString *const kFIRInstallationsMessageCodeAPIRequestResponse; +extern NSString *const kFIRInstallationsMessageCodeUnexpectedAPIRequestResponse; +extern NSString *const kFIRInstallationsMessageCodeParsingAPIResponse; +extern NSString *const kFIRInstallationsMessageCodeAPIResponseParsingInstallationFailed; +extern NSString *const kFIRInstallationsMessageCodeAPIResponseParsingInstallationSucceed; +extern NSString *const kFIRInstallationsMessageCodeAPIResponseParsingAuthTokenFailed; +extern NSString *const kFIRInstallationsMessageCodeAPIResponseParsingAuthTokenSucceed; + +// FIRInstallationsIDController.m +extern NSString *const kFIRInstallationsMessageCodeNewGetInstallationOperationCreated; +extern NSString *const kFIRInstallationsMessageCodeNewGetAuthTokenOperationCreated; +extern NSString *const kFIRInstallationsMessageCodeNewDeleteInstallationOperationCreated; +extern NSString *const kFIRInstallationsMessageCodeInvalidFirebaseConfiguration; + +// FIRInstallationsStoredItem.m +extern NSString *const kFIRInstallationsMessageCodeInstallationCoderVersionMismatch; + +// FIRInstallationsStoredAuthToken.m +extern NSString *const kFIRInstallationsMessageCodeAuthTokenCoderVersionMismatch; + +// FIRInstallationsStoredIIDCheckin.m +extern NSString *const kFIRInstallationsMessageCodeIIDCheckinCoderVersionMismatch; +extern NSString *const kFIRInstallationsMessageCodeIIDCheckinFailedToDecode; + +// FIRInstallations.m +extern NSString *const kFIRInstallationsMessageCodeInvalidFirebaseAppOptions; diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.m new file mode 100644 index 000000000..c2bdf37f1 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.m @@ -0,0 +1,49 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsLogger.h" + +FIRLoggerService kFIRLoggerInstallations = @"[Firebase/Installations]"; + +// FIRInstallationsAPIService.m +NSString *const kFIRInstallationsMessageCodeSendAPIRequest = @"I-FIS001001"; +NSString *const kFIRInstallationsMessageCodeAPIRequestNetworkError = @"I-FIS001002"; +NSString *const kFIRInstallationsMessageCodeAPIRequestResponse = @"I-FIS001003"; +NSString *const kFIRInstallationsMessageCodeUnexpectedAPIRequestResponse = @"I-FIS001004"; +NSString *const kFIRInstallationsMessageCodeParsingAPIResponse = @"I-FIS001005"; +NSString *const kFIRInstallationsMessageCodeAPIResponseParsingInstallationFailed = @"I-FIS001006"; +NSString *const kFIRInstallationsMessageCodeAPIResponseParsingInstallationSucceed = @"I-FIS001007"; +NSString *const kFIRInstallationsMessageCodeAPIResponseParsingAuthTokenFailed = @"I-FIS001008"; +NSString *const kFIRInstallationsMessageCodeAPIResponseParsingAuthTokenSucceed = @"I-FIS001009"; + +// FIRInstallationsIDController.m +NSString *const kFIRInstallationsMessageCodeNewGetInstallationOperationCreated = @"I-FIS002000"; +NSString *const kFIRInstallationsMessageCodeNewGetAuthTokenOperationCreated = @"I-FIS002001"; +NSString *const kFIRInstallationsMessageCodeNewDeleteInstallationOperationCreated = @"I-FIS002002"; +NSString *const kFIRInstallationsMessageCodeInvalidFirebaseConfiguration = @"I-FIS002003"; + +// FIRInstallationsStoredItem.m +NSString *const kFIRInstallationsMessageCodeInstallationCoderVersionMismatch = @"I-FIS003000"; + +// FIRInstallationsStoredAuthToken.m +NSString *const kFIRInstallationsMessageCodeAuthTokenCoderVersionMismatch = @"I-FIS004000"; + +// FIRInstallationsStoredIIDCheckin.m +NSString *const kFIRInstallationsMessageCodeIIDCheckinCoderVersionMismatch = @"I-FIS007000"; +NSString *const kFIRInstallationsMessageCodeIIDCheckinFailedToDecode = @"I-FIS007001"; + +// FIRInstallations.m +NSString *const kFIRInstallationsMessageCodeInvalidFirebaseAppOptions = @"I-FIS008000"; diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsVersion.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsVersion.m new file mode 100644 index 000000000..a75e3f5be --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsVersion.m @@ -0,0 +1,23 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsVersion.h" + +// Convert the macro to a string +#define STR(x) STR_EXPAND(x) +#define STR_EXPAND(x) #x + +const char *const FIRInstallationsVersionStr = (const char *const)STR(FIRInstallations_LIB_VERSION); diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.h new file mode 100644 index 000000000..e2408caa7 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.h @@ -0,0 +1,48 @@ +/* + * Copyright 2019 Google + * + * 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 + +@class FBLPromise; + +NS_ASSUME_NONNULL_BEGIN + +/** The class encapsulates a port of a piece FirebaseInstanceID logic required to migrate IID. */ +@interface FIRInstallationsIIDStore : NSObject + +/** + * Retrieves existing IID if present. + * @return Returns a promise that is resolved with IID string if IID has been found or rejected with + * an error otherwise. + */ +- (FBLPromise *)existingIID; + +/** + * Deletes existing IID if present. + * @return Returns a promise that is resolved with `[NSNull null]` if the IID was successfully. + * deleted or was not found. The promise is rejected otherwise. + */ +- (FBLPromise *)deleteExistingIID; + +#if TARGET_OS_OSX +/// If not `nil`, then only this keychain will be used to save and read data (see +/// `kSecMatchSearchList` and `kSecUseKeychain`. It is mostly intended to be used by unit tests. +@property(nonatomic, nullable) SecKeychainRef keychainRef; +#endif // TARGET_OSX + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.m new file mode 100644 index 000000000..1f3a82afa --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.m @@ -0,0 +1,236 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsIIDStore.h" + +#if __has_include() +#import +#else +#import "FBLPromises.h" +#endif + +#import +#import "FIRInstallationsErrorUtil.h" + +static NSString *const kFIRInstallationsIIDKeyPairPublicTagPrefix = + @"com.google.iid.keypair.public-"; +static NSString *const kFIRInstallationsIIDKeyPairPrivateTagPrefix = + @"com.google.iid.keypair.private-"; +static NSString *const kFIRInstallationsIIDCreationTimePlistKey = @"|S|cre"; + +@implementation FIRInstallationsIIDStore + +- (FBLPromise *)existingIID { + return [FBLPromise onQueue:dispatch_get_global_queue(QOS_CLASS_UTILITY, 0) + do:^id _Nullable { + if (![self hasPlistIIDFlag]) { + return nil; + } + + NSData *IIDPublicKeyData = [self IIDPublicKeyData]; + return [self IIDWithPublicKeyData:IIDPublicKeyData]; + }] + .validate(^BOOL(NSString *_Nullable IID) { + return IID.length > 0; + }); +} + +- (FBLPromise *)deleteExistingIID { + return [FBLPromise onQueue:dispatch_get_global_queue(QOS_CLASS_UTILITY, 0) + do:^id _Nullable { + NSError *error; + if (![self deleteIIDFlagFromPlist:&error]) { + return error; + } + + if (![self deleteIID:&error]) { + return error; + } + + return [NSNull null]; + }]; +} + +#pragma mark - IID decoding + +- (NSString *)IIDWithPublicKeyData:(NSData *)publicKeyData { + NSData *publicKeySHA1 = [self sha1WithData:publicKeyData]; + + const uint8_t *bytes = publicKeySHA1.bytes; + NSMutableData *identityData = [NSMutableData dataWithData:publicKeySHA1]; + + uint8_t b0 = bytes[0]; + // Take the first byte and make the initial four 7 by initially making the initial 4 bits 0 + // and then adding 0x70 to it. + b0 = 0x70 + (0xF & b0); + // failsafe should give you back b0 itself + b0 = (b0 & 0xFF); + [identityData replaceBytesInRange:NSMakeRange(0, 1) withBytes:&b0]; + NSData *data = [identityData subdataWithRange:NSMakeRange(0, 8 * sizeof(Byte))]; + return [self base64URLEncodedStringWithData:data]; +} + +- (NSData *)sha1WithData:(NSData *)data { + unsigned char output[CC_SHA1_DIGEST_LENGTH]; + unsigned int length = (unsigned int)[data length]; + + CC_SHA1(data.bytes, length, output); + return [NSData dataWithBytes:output length:CC_SHA1_DIGEST_LENGTH]; +} + +- (NSString *)base64URLEncodedStringWithData:(NSData *)data { + NSString *string = [data base64EncodedStringWithOptions:0]; + string = [string stringByReplacingOccurrencesOfString:@"/" withString:@"_"]; + string = [string stringByReplacingOccurrencesOfString:@"+" withString:@"-"]; + string = [string stringByReplacingOccurrencesOfString:@"=" withString:@""]; + return string; +} + +#pragma mark - Keychain + +- (NSData *)IIDPublicKeyData { + NSString *tag = [self keychainKeyTagWithPrefix:kFIRInstallationsIIDKeyPairPublicTagPrefix]; + NSDictionary *query = [self keyPairQueryWithTag:tag returnData:YES]; + + CFTypeRef keyRef = NULL; + OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&keyRef); + + if (status != noErr) { + if (keyRef) { + CFRelease(keyRef); + } + return nil; + } + + return (__bridge NSData *)keyRef; +} + +- (BOOL)deleteIID:(NSError **)outError { + if (![self deleteKeychainKeyWithTagPrefix:kFIRInstallationsIIDKeyPairPublicTagPrefix + error:outError]) { + return NO; + } + + if (![self deleteKeychainKeyWithTagPrefix:kFIRInstallationsIIDKeyPairPrivateTagPrefix + error:outError]) { + return NO; + } + + return YES; +} + +- (BOOL)deleteKeychainKeyWithTagPrefix:(NSString *)tagPrefix error:(NSError **)outError { + NSString *keyTag = [self keychainKeyTagWithPrefix:kFIRInstallationsIIDKeyPairPublicTagPrefix]; + NSDictionary *keyQuery = [self keyPairQueryWithTag:keyTag returnData:NO]; + + OSStatus status = SecItemDelete((__bridge CFDictionaryRef)keyQuery); + + // When item is not found, it should NOT be considered as an error. The operation should + // continue. + if (status != noErr && status != errSecItemNotFound) { + FIRInstallationsItemSetErrorToPointer( + [FIRInstallationsErrorUtil keychainErrorWithFunction:@"SecItemDelete" status:status], + outError); + return NO; + } + + return YES; +} + +- (NSDictionary *)keyPairQueryWithTag:(NSString *)tag returnData:(BOOL)shouldReturnData { + NSMutableDictionary *query = [NSMutableDictionary dictionary]; + NSData *tagData = [tag dataUsingEncoding:NSUTF8StringEncoding]; + + query[(__bridge id)kSecClass] = (__bridge id)kSecClassKey; + query[(__bridge id)kSecAttrApplicationTag] = tagData; + query[(__bridge id)kSecAttrKeyType] = (__bridge id)kSecAttrKeyTypeRSA; + if (shouldReturnData) { + query[(__bridge id)kSecReturnData] = @(YES); + } + +#if TARGET_OS_OSX + if (self.keychainRef) { + query[(__bridge NSString *)kSecMatchSearchList] = @[ (__bridge id)(self.keychainRef) ]; + } +#endif // TARGET_OSX + + return query; +} + +- (NSString *)keychainKeyTagWithPrefix:(NSString *)prefix { + NSString *mainAppBundleID = [[NSBundle mainBundle] bundleIdentifier]; + if (mainAppBundleID.length == 0) { + return nil; + } + return [NSString stringWithFormat:@"%@%@", prefix, mainAppBundleID]; +} + +- (NSString *)mainbundleIdentifier { + NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier]; + if (!bundleIdentifier.length) { + return nil; + } + return bundleIdentifier; +} + +#pragma mark - Plist + +- (BOOL)deleteIIDFlagFromPlist:(NSError **)outError { + NSString *path = [self plistPath]; + if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { + return YES; + } + + NSMutableDictionary *plistContent = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; + plistContent[kFIRInstallationsIIDCreationTimePlistKey] = nil; + + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { + return [plistContent writeToURL:[NSURL fileURLWithPath:path] error:outError]; + } + + return [plistContent writeToFile:path atomically:YES]; +} + +- (BOOL)hasPlistIIDFlag { + NSString *path = [self plistPath]; + if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { + return NO; + } + + NSDictionary *plistContent = [[NSDictionary alloc] initWithContentsOfFile:path]; + return plistContent[kFIRInstallationsIIDCreationTimePlistKey] != nil; +} + +- (NSString *)plistPath { + NSString *plistNameWithExtension = @"com.google.iid-keypair.plist"; + NSString *_subDirectoryName = @"Google/FirebaseInstanceID"; + + NSArray *directoryPaths = + NSSearchPathForDirectoriesInDomains([self supportedDirectory], NSUserDomainMask, YES); + NSArray *components = @[ directoryPaths.lastObject, _subDirectoryName, plistNameWithExtension ]; + + return [NSString pathWithComponents:components]; +} + +- (NSSearchPathDirectory)supportedDirectory { +#if TARGET_OS_TV + return NSCachesDirectory; +#else + return NSApplicationSupportDirectory; +#endif +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.h new file mode 100644 index 000000000..ed98e3d70 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.h @@ -0,0 +1,36 @@ +/* + * Copyright 2019 Google + * + * 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 + +@class FBLPromise; + +NS_ASSUME_NONNULL_BEGIN + +/** + * The class reads a default IID token from IID store if available. + */ +@interface FIRInstallationsIIDTokenStore : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +- (instancetype)initWithGCMSenderID:(NSString *)GCMSenderID; + +- (FBLPromise *)existingIIDDefaultToken; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m new file mode 100644 index 000000000..1c9dbabeb --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m @@ -0,0 +1,157 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsIIDTokenStore.h" + +#if __has_include() +#import +#else +#import "FBLPromises.h" +#endif + +#import "FIRInstallationsErrorUtil.h" +#import "FIRInstallationsKeychainUtils.h" + +static NSString *const kFIRInstallationsIIDTokenKeychainId = @"com.google.iid-tokens"; + +@interface FIRInstallationsIIDTokenInfo : NSObject +@property(nonatomic, nullable, copy) NSString *token; +@end + +@implementation FIRInstallationsIIDTokenInfo + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (void)encodeWithCoder:(nonnull NSCoder *)coder { +} + +- (nullable instancetype)initWithCoder:(nonnull NSCoder *)coder { + self = [super init]; + if (self) { + _token = [coder decodeObjectOfClass:[NSString class] forKey:@"token"]; + } + return self; +} + +@end + +@interface FIRInstallationsIIDTokenStore () +@property(nonatomic, readonly) NSString *GCMSenderID; +@end + +@implementation FIRInstallationsIIDTokenStore + +- (instancetype)initWithGCMSenderID:(NSString *)GCMSenderID { + self = [super init]; + if (self) { + _GCMSenderID = GCMSenderID; + } + return self; +} + +- (FBLPromise *)existingIIDDefaultToken { + return [[FBLPromise onQueue:dispatch_get_global_queue(QOS_CLASS_UTILITY, 0) + do:^id _Nullable { + return [self IIDDefaultTokenData]; + }] onQueue:dispatch_get_global_queue(QOS_CLASS_UTILITY, 0) + then:^id _Nullable(NSData *_Nullable keychainData) { + return [self IIDCheckinWithData:keychainData]; + }]; +} + +- (FBLPromise *)IIDCheckinWithData:(NSData *)data { + FBLPromise *resultPromise = [FBLPromise pendingPromise]; + + NSError *archiverError; + NSKeyedUnarchiver *unarchiver; + if (@available(iOS 11.0, tvOS 11.0, macOS 10.13, *)) { + unarchiver = [[NSKeyedUnarchiver alloc] initForReadingFromData:data error:&archiverError]; + } else { + @try { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; +#pragma clang diagnostic pop + } @catch (NSException *exception) { + archiverError = [FIRInstallationsErrorUtil keyedArchiverErrorWithException:exception]; + } + } + + if (!unarchiver) { + NSError *error = archiverError ?: [FIRInstallationsErrorUtil corruptedIIDTokenData]; + [resultPromise reject:error]; + return resultPromise; + } + + [unarchiver setClass:[FIRInstallationsIIDTokenInfo class] forClassName:@"FIRInstanceIDTokenInfo"]; + FIRInstallationsIIDTokenInfo *IIDTokenInfo = + [unarchiver decodeObjectOfClass:[FIRInstallationsIIDTokenInfo class] + forKey:NSKeyedArchiveRootObjectKey]; + + if (IIDTokenInfo.token.length < 1) { + [resultPromise reject:[FIRInstallationsErrorUtil corruptedIIDTokenData]]; + return resultPromise; + } + + [resultPromise fulfill:IIDTokenInfo.token]; + + return resultPromise; +} + +- (FBLPromise *)IIDDefaultTokenData { + FBLPromise *resultPromise = [FBLPromise pendingPromise]; + + NSMutableDictionary *keychainQuery = [self IIDDefaultTokenDataKeychainQuery]; + NSError *error; + NSData *data = [FIRInstallationsKeychainUtils getItemWithQuery:keychainQuery error:&error]; + + if (data) { + [resultPromise fulfill:data]; + return resultPromise; + } else { + NSError *outError = error ?: [FIRInstallationsErrorUtil corruptedIIDTokenData]; + [resultPromise reject:outError]; + return resultPromise; + } +} + +- (NSMutableDictionary *)IIDDefaultTokenDataKeychainQuery { + NSDictionary *query = @{(__bridge id)kSecClass : (__bridge id)kSecClassGenericPassword}; + + NSMutableDictionary *finalQuery = [NSMutableDictionary dictionaryWithDictionary:query]; + finalQuery[(__bridge NSString *)kSecAttrGeneric] = kFIRInstallationsIIDTokenKeychainId; + + NSString *account = [self IIDAppIdentifier]; + if ([account length]) { + finalQuery[(__bridge NSString *)kSecAttrAccount] = account; + } + + finalQuery[(__bridge NSString *)kSecAttrService] = + [self serviceKeyForAuthorizedEntity:self.GCMSenderID scope:@"*"]; + return finalQuery; +} + +- (NSString *)IIDAppIdentifier { + return [[NSBundle mainBundle] bundleIdentifier] ?: @""; +} + +- (NSString *)serviceKeyForAuthorizedEntity:(NSString *)authorizedEntity scope:(NSString *)scope { + return [NSString stringWithFormat:@"%@:%@", authorizedEntity, scope]; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.h new file mode 100644 index 000000000..b45475d1a --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.h @@ -0,0 +1,62 @@ +/* + * Copyright 2019 Google + * + * 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 + +@class FBLPromise; +@class FIRInstallationsItem; + +NS_ASSUME_NONNULL_BEGIN + +FOUNDATION_EXPORT NSString *const kFIRInstallationsUserAgentKey; + +FOUNDATION_EXPORT NSString *const kFIRInstallationsHeartbeatKey; + +/** + * The class is responsible for interacting with HTTP REST API for Installations. + */ +@interface FIRInstallationsAPIService : NSObject + +/** + * The default initializer. + * @param APIKey The Firebase project API key (see `FIROptions.APIKey`). + * @param projectID The Firebase project ID (see `FIROptions.projectID`). + */ +- (instancetype)initWithAPIKey:(NSString *)APIKey projectID:(NSString *)projectID; + +/** + * Sends a request to register a new FID to get auth and refresh tokens. + * @param installation The `FIRInstallationsItem` instance with the FID to register. + * @return A promise that is resolved with a new `FIRInstallationsItem` instance with valid tokens. + * It is rejected with an error in case of a failure. + */ +- (FBLPromise *)registerInstallation:(FIRInstallationsItem *)installation; + +- (FBLPromise *)refreshAuthTokenForInstallation: + (FIRInstallationsItem *)installation; + +/** + * Sends a request to delete the installation, related auth tokens and all related data from the + * server. + * @param installation The installation to delete. + * @return Returns a promise that is resolved with the passed installation on successful deletion or + * is rejected with an error otherwise. + */ +- (FBLPromise *)deleteInstallation:(FIRInstallationsItem *)installation; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m new file mode 100644 index 000000000..5bd7e3b98 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m @@ -0,0 +1,346 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsAPIService.h" + +#import + +#if __has_include() +#import +#else +#import "FBLPromises.h" +#endif + +#import +#import +#import "FIRInstallationsErrorUtil.h" +#import "FIRInstallationsItem+RegisterInstallationAPI.h" +#import "FIRInstallationsLogger.h" + +NSString *const kFIRInstallationsAPIBaseURL = @"https://firebaseinstallations.googleapis.com"; +NSString *const kFIRInstallationsAPIKey = @"X-Goog-Api-Key"; +NSString *const kFIRInstallationsBundleId = @"X-Ios-Bundle-Identifier"; +NSString *const kFIRInstallationsIIDMigrationAuthHeader = @"x-goog-fis-ios-iid-migration-auth"; +NSString *const kFIRInstallationsHeartbeatKey = @"X-firebase-client-log-type"; +NSString *const kFIRInstallationsHeartbeatTag = @"fire-installations"; +NSString *const kFIRInstallationsUserAgentKey = @"X-firebase-client"; + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRInstallationsURLSessionResponse : NSObject +@property(nonatomic) NSHTTPURLResponse *HTTPResponse; +@property(nonatomic) NSData *data; + +- (instancetype)initWithResponse:(NSHTTPURLResponse *)response data:(nullable NSData *)data; +@end + +@implementation FIRInstallationsURLSessionResponse + +- (instancetype)initWithResponse:(NSHTTPURLResponse *)response data:(nullable NSData *)data { + self = [super init]; + if (self) { + _HTTPResponse = response; + _data = data ?: [NSData data]; + } + return self; +} + +@end + +@interface FIRInstallationsAPIService () +@property(nonatomic, readonly) NSURLSession *URLSession; +@property(nonatomic, readonly) NSString *APIKey; +@property(nonatomic, readonly) NSString *projectID; +@end + +NS_ASSUME_NONNULL_END + +@implementation FIRInstallationsAPIService + +- (instancetype)initWithAPIKey:(NSString *)APIKey projectID:(NSString *)projectID { + NSURLSession *URLSession = [NSURLSession + sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; + return [self initWithURLSession:URLSession APIKey:APIKey projectID:projectID]; +} + +/// The initializer for tests. +- (instancetype)initWithURLSession:(NSURLSession *)URLSession + APIKey:(NSString *)APIKey + projectID:(NSString *)projectID { + self = [super init]; + if (self) { + _URLSession = URLSession; + _APIKey = [APIKey copy]; + _projectID = [projectID copy]; + } + return self; +} + +#pragma mark - Public + +- (FBLPromise *)registerInstallation:(FIRInstallationsItem *)installation { + NSURLRequest *request = [self registerRequestWithInstallation:installation]; + return [self sendURLRequest:request].then( + ^id _Nullable(FIRInstallationsURLSessionResponse *response) { + return [self registeredInstallationWithInstallation:installation serverResponse:response]; + }); +} + +- (FBLPromise *)refreshAuthTokenForInstallation: + (FIRInstallationsItem *)installation { + NSURLRequest *request = [self authTokenRequestWithInstallation:installation]; + return [self sendURLRequest:request] + .then(^FBLPromise *( + FIRInstallationsURLSessionResponse *response) { + return [self authTokenWithServerResponse:response]; + }) + .then(^FIRInstallationsItem *(FIRInstallationsStoredAuthToken *authToken) { + FIRInstallationsItem *updatedInstallation = [installation copy]; + updatedInstallation.authToken = authToken; + return updatedInstallation; + }); +} + +- (FBLPromise *)deleteInstallation:(FIRInstallationsItem *)installation { + NSURLRequest *request = [self deleteInstallationRequestWithInstallation:installation]; + return [[self sendURLRequest:request] + then:^id _Nullable(FIRInstallationsURLSessionResponse *_Nullable value) { + // Return the original installation on success. + return installation; + }]; +} + +#pragma mark - Register Installation + +- (NSURLRequest *)registerRequestWithInstallation:(FIRInstallationsItem *)installation { + NSString *URLString = [NSString stringWithFormat:@"%@/v1/projects/%@/installations/", + kFIRInstallationsAPIBaseURL, self.projectID]; + NSURL *URL = [NSURL URLWithString:URLString]; + + NSDictionary *bodyDict = @{ + @"fid" : installation.firebaseInstallationID, + @"authVersion" : @"FIS_v2", + @"appId" : installation.appID, + @"sdkVersion" : [self SDKVersion] + }; + + NSDictionary *headers; + if (installation.IIDDefaultToken) { + headers = @{kFIRInstallationsIIDMigrationAuthHeader : installation.IIDDefaultToken}; + } + + return [self requestWithURL:URL + HTTPMethod:@"POST" + bodyDict:bodyDict + refreshToken:nil + additionalHeaders:headers]; +} + +- (FBLPromise *) + registeredInstallationWithInstallation:(FIRInstallationsItem *)installation + serverResponse:(FIRInstallationsURLSessionResponse *)response { + return [FBLPromise do:^id { + FIRLogDebug(kFIRLoggerInstallations, kFIRInstallationsMessageCodeParsingAPIResponse, + @"Parsing server response for %@.", response.HTTPResponse.URL); + NSError *error; + FIRInstallationsItem *registeredInstallation = + [installation registeredInstallationWithJSONData:response.data + date:[NSDate date] + error:&error]; + if (registeredInstallation == nil) { + FIRLogDebug(kFIRLoggerInstallations, + kFIRInstallationsMessageCodeAPIResponseParsingInstallationFailed, + @"Failed to parse FIRInstallationsItem: %@.", error); + return error; + } + + FIRLogDebug(kFIRLoggerInstallations, + kFIRInstallationsMessageCodeAPIResponseParsingInstallationSucceed, + @"FIRInstallationsItem parsed successfully."); + return registeredInstallation; + }]; +} + +#pragma mark - Auth token + +- (NSURLRequest *)authTokenRequestWithInstallation:(FIRInstallationsItem *)installation { + NSString *URLString = + [NSString stringWithFormat:@"%@/v1/projects/%@/installations/%@/authTokens:generate", + kFIRInstallationsAPIBaseURL, self.projectID, + installation.firebaseInstallationID]; + NSURL *URL = [NSURL URLWithString:URLString]; + + NSDictionary *bodyDict = @{@"installation" : @{@"sdkVersion" : [self SDKVersion]}}; + return [self requestWithURL:URL + HTTPMethod:@"POST" + bodyDict:bodyDict + refreshToken:installation.refreshToken]; +} + +- (FBLPromise *)authTokenWithServerResponse: + (FIRInstallationsURLSessionResponse *)response { + return [FBLPromise do:^id { + FIRLogDebug(kFIRLoggerInstallations, kFIRInstallationsMessageCodeParsingAPIResponse, + @"Parsing server response for %@.", response.HTTPResponse.URL); + NSError *error; + FIRInstallationsStoredAuthToken *token = + [FIRInstallationsItem authTokenWithGenerateTokenAPIJSONData:response.data + date:[NSDate date] + error:&error]; + if (token == nil) { + FIRLogDebug(kFIRLoggerInstallations, + kFIRInstallationsMessageCodeAPIResponseParsingAuthTokenFailed, + @"Failed to parse FIRInstallationsStoredAuthToken: %@.", error); + return error; + } + + FIRLogDebug(kFIRLoggerInstallations, + kFIRInstallationsMessageCodeAPIResponseParsingAuthTokenSucceed, + @"FIRInstallationsStoredAuthToken parsed successfully."); + return token; + }]; +} + +#pragma mark - Delete Installation + +- (NSURLRequest *)deleteInstallationRequestWithInstallation:(FIRInstallationsItem *)installation { + NSString *URLString = [NSString stringWithFormat:@"%@/v1/projects/%@/installations/%@/", + kFIRInstallationsAPIBaseURL, self.projectID, + installation.firebaseInstallationID]; + NSURL *URL = [NSURL URLWithString:URLString]; + + return [self requestWithURL:URL + HTTPMethod:@"DELETE" + bodyDict:@{} + refreshToken:installation.refreshToken]; +} + +#pragma mark - URL Request +- (NSURLRequest *)requestWithURL:(NSURL *)requestURL + HTTPMethod:(NSString *)HTTPMethod + bodyDict:(NSDictionary *)bodyDict + refreshToken:(nullable NSString *)refreshToken { + return [self requestWithURL:requestURL + HTTPMethod:HTTPMethod + bodyDict:bodyDict + refreshToken:refreshToken + additionalHeaders:nil]; +} + +- (NSURLRequest *)requestWithURL:(NSURL *)requestURL + HTTPMethod:(NSString *)HTTPMethod + bodyDict:(NSDictionary *)bodyDict + refreshToken:(nullable NSString *)refreshToken + additionalHeaders: + (nullable NSDictionary *)additionalHeaders { + __block NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:requestURL]; + request.HTTPMethod = HTTPMethod; + NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier]; + [request addValue:self.APIKey forHTTPHeaderField:kFIRInstallationsAPIKey]; + [request addValue:bundleIdentifier forHTTPHeaderField:kFIRInstallationsBundleId]; + [self setJSONHTTPBody:bodyDict forRequest:request]; + if (refreshToken) { + NSString *authHeader = [NSString stringWithFormat:@"FIS_v2 %@", refreshToken]; + [request setValue:authHeader forHTTPHeaderField:@"Authorization"]; + } + // User agent Header. + [request setValue:[FIRApp firebaseUserAgent] forHTTPHeaderField:kFIRInstallationsUserAgentKey]; + // Heartbeat Header. + [request setValue:@([FIRHeartbeatInfo heartbeatCodeForTag:kFIRInstallationsHeartbeatTag]) + .stringValue + forHTTPHeaderField:kFIRInstallationsHeartbeatKey]; + [additionalHeaders enumerateKeysAndObjectsUsingBlock:^( + NSString *_Nonnull key, NSString *_Nonnull obj, BOOL *_Nonnull stop) { + [request setValue:obj forHTTPHeaderField:key]; + }]; + + return [request copy]; +} + +- (FBLPromise *)URLRequestPromise:(NSURLRequest *)request { + return [[FBLPromise async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { + FIRLogDebug(kFIRLoggerInstallations, kFIRInstallationsMessageCodeSendAPIRequest, + @"Sending request: %@, body:%@, headers: %@.", request, + [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding], + request.allHTTPHeaderFields); + [[self.URLSession + dataTaskWithRequest:request + completionHandler:^(NSData *_Nullable data, NSURLResponse *_Nullable response, + NSError *_Nullable error) { + if (error) { + FIRLogDebug(kFIRLoggerInstallations, + kFIRInstallationsMessageCodeAPIRequestNetworkError, + @"Request failed: %@, error: %@.", request, error); + reject(error); + } else { + FIRLogDebug(kFIRLoggerInstallations, kFIRInstallationsMessageCodeAPIRequestResponse, + @"Request response received: %@, error: %@, body: %@.", request, error, + [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); + fulfill([[FIRInstallationsURLSessionResponse alloc] + initWithResponse:(NSHTTPURLResponse *)response + data:data]); + } + }] resume]; + }] then:^id _Nullable(FIRInstallationsURLSessionResponse *response) { + return [self validateHTTPResponseStatusCode:response]; + }]; +} + +- (FBLPromise *)validateHTTPResponseStatusCode: + (FIRInstallationsURLSessionResponse *)response { + NSInteger statusCode = response.HTTPResponse.statusCode; + return [FBLPromise do:^id _Nullable { + if (statusCode < 200 || statusCode >= 300) { + FIRLogDebug(kFIRLoggerInstallations, kFIRInstallationsMessageCodeUnexpectedAPIRequestResponse, + @"Unexpected API response: %@, body: %@.", response.HTTPResponse, + [[NSString alloc] initWithData:response.data encoding:NSUTF8StringEncoding]); + return [FIRInstallationsErrorUtil APIErrorWithHTTPResponse:response.HTTPResponse + data:response.data]; + } + return response; + }]; +} + +- (FBLPromise *)sendURLRequest:(NSURLRequest *)request { + return [FBLPromise attempts:1 + delay:1 + condition:^BOOL(NSInteger remainingAttempts, NSError *_Nonnull error) { + return [FIRInstallationsErrorUtil isAPIError:error withHTTPCode:500]; + } + retry:^id _Nullable { + return [self URLRequestPromise:request]; + }]; +} + +- (NSString *)SDKVersion { + return [NSString stringWithFormat:@"i:%s", FIRInstallationsVersionStr]; +} + +#pragma mark - JSON + +- (void)setJSONHTTPBody:(NSDictionary *)body + forRequest:(NSMutableURLRequest *)request { + [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; + + NSError *error; + NSData *JSONData = [NSJSONSerialization dataWithJSONObject:body options:0 error:&error]; + if (JSONData == nil) { + // TODO: Log or return an error. + } + request.HTTPBody = JSONData; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.h new file mode 100644 index 000000000..cc6b54320 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.h @@ -0,0 +1,53 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsItem.h" + +@class FIRInstallationsStoredAuthToken; + +NS_ASSUME_NONNULL_BEGIN + +@interface FIRInstallationsItem (RegisterInstallationAPI) + +/** + * Parses and validates the Register Installation API response and returns a corresponding + * `FIRInstallationsItem` instance on success. + * @param JSONData The data with JSON encoded API response. + * @param date The Auth Token expiration date will be calculated as `date` + + * `response.authToken.expiresIn`. For most of the cases `[NSDate date]` should be passed there. A + * different value may be passed e.g. for unit tests. + * @param outError A pointer to assign a specific `NSError` instance in case of failure. No error is + * assigned in case of success. + * @return Returns a new `FIRInstallationsItem` instance in the success case or `nil` otherwise. + */ +- (nullable FIRInstallationsItem *)registeredInstallationWithJSONData:(NSData *)JSONData + date:(NSDate *)date + error: + (NSError *_Nullable *)outError; + ++ (nullable FIRInstallationsStoredAuthToken *)authTokenWithGenerateTokenAPIJSONData:(NSData *)data + date:(NSDate *)date + error:(NSError **) + outError; + ++ (nullable FIRInstallationsStoredAuthToken *)authTokenWithJSONDict: + (NSDictionary *)dict + date:(NSDate *)date + error:(NSError **)outError; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.m new file mode 100644 index 000000000..569e35b99 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.m @@ -0,0 +1,142 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsItem+RegisterInstallationAPI.h" + +#import "FIRInstallationsErrorUtil.h" +#import "FIRInstallationsStoredAuthToken.h" + +@implementation FIRInstallationsItem (RegisterInstallationAPI) + +- (nullable FIRInstallationsItem *) + registeredInstallationWithJSONData:(NSData *)data + date:(NSDate *)date + error:(NSError *__autoreleasing _Nullable *_Nullable)outError { + NSDictionary *responseJSON = [FIRInstallationsItem dictionaryFromJSONData:data error:outError]; + if (!responseJSON) { + return nil; + } + + NSString *refreshToken = [FIRInstallationsItem validStringOrNilForKey:@"refreshToken" + fromDict:responseJSON]; + if (refreshToken == nil) { + FIRInstallationsItemSetErrorToPointer( + [FIRInstallationsErrorUtil FIDRegistrationErrorWithResponseMissingField:@"refreshToken"], + outError); + return nil; + } + + NSDictionary *authTokenDict = responseJSON[@"authToken"]; + if (![authTokenDict isKindOfClass:[NSDictionary class]]) { + FIRInstallationsItemSetErrorToPointer( + [FIRInstallationsErrorUtil FIDRegistrationErrorWithResponseMissingField:@"authToken"], + outError); + return nil; + } + + FIRInstallationsStoredAuthToken *authToken = + [FIRInstallationsItem authTokenWithJSONDict:authTokenDict date:date error:outError]; + if (authToken == nil) { + return nil; + } + + FIRInstallationsItem *installation = + [[FIRInstallationsItem alloc] initWithAppID:self.appID firebaseAppName:self.firebaseAppName]; + NSString *installationID = [FIRInstallationsItem validStringOrNilForKey:@"fid" + fromDict:responseJSON]; + installation.firebaseInstallationID = installationID ?: self.firebaseInstallationID; + installation.refreshToken = refreshToken; + installation.authToken = authToken; + installation.registrationStatus = FIRInstallationStatusRegistered; + + return installation; +} + +#pragma mark - Auth token + ++ (nullable FIRInstallationsStoredAuthToken *)authTokenWithGenerateTokenAPIJSONData:(NSData *)data + date:(NSDate *)date + error:(NSError **) + outError { + NSDictionary *dict = [self dictionaryFromJSONData:data error:outError]; + if (!dict) { + return nil; + } + + return [self authTokenWithJSONDict:dict date:date error:outError]; +} + ++ (nullable FIRInstallationsStoredAuthToken *)authTokenWithJSONDict: + (NSDictionary *)dict + date:(NSDate *)date + error:(NSError **)outError { + NSString *token = [self validStringOrNilForKey:@"token" fromDict:dict]; + if (token == nil) { + FIRInstallationsItemSetErrorToPointer( + [FIRInstallationsErrorUtil FIDRegistrationErrorWithResponseMissingField:@"authToken.token"], + outError); + return nil; + } + + NSString *expiresInString = [self validStringOrNilForKey:@"expiresIn" fromDict:dict]; + if (expiresInString == nil) { + FIRInstallationsItemSetErrorToPointer( + [FIRInstallationsErrorUtil + FIDRegistrationErrorWithResponseMissingField:@"authToken.expiresIn"], + outError); + return nil; + } + + // The response should contain the string in format like "604800s". + // The server should never response with anything else except seconds. + // Just drop the last character and parse a number from string. + NSString *expiresInSeconds = [expiresInString substringToIndex:expiresInString.length - 1]; + NSTimeInterval expiresIn = [expiresInSeconds doubleValue]; + NSDate *expirationDate = [date dateByAddingTimeInterval:expiresIn]; + + FIRInstallationsStoredAuthToken *authToken = [[FIRInstallationsStoredAuthToken alloc] init]; + authToken.status = FIRInstallationsAuthTokenStatusTokenReceived; + authToken.token = token; + authToken.expirationDate = expirationDate; + + return authToken; +} + +#pragma mark - JSON + ++ (nullable NSDictionary *)dictionaryFromJSONData:(NSData *)data + error:(NSError **)outError { + NSError *error; + NSDictionary *responseJSON = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; + + if (![responseJSON isKindOfClass:[NSDictionary class]]) { + FIRInstallationsItemSetErrorToPointer([FIRInstallationsErrorUtil JSONSerializationError:error], + outError); + return nil; + } + + return responseJSON; +} + ++ (NSString *)validStringOrNilForKey:(NSString *)key fromDict:(NSDictionary *)dict { + NSString *string = dict[key]; + if ([string isKindOfClass:[NSString class]] && string.length > 0) { + return string; + } + return nil; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.h new file mode 100644 index 000000000..ab2092d2b --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.h @@ -0,0 +1,44 @@ +/* + * Copyright 2019 Google + * + * 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 + +NS_ASSUME_NONNULL_BEGIN + +@class FBLPromise; +@class FIRInstallationsItem; + +/** + * The class is responsible for managing FID for a given `FIRApp`. + */ +@interface FIRInstallationsIDController : NSObject + +- (instancetype)initWithGoogleAppID:(NSString *)appID + appName:(NSString *)appName + APIKey:(NSString *)APIKey + projectID:(NSString *)projectID + GCMSenderID:(NSString *)GCMSenderID + accessGroup:(nullable NSString *)accessGroup; + +- (FBLPromise *)getInstallationItem; + +- (FBLPromise *)getAuthTokenForcingRefresh:(BOOL)forceRefresh; + +- (FBLPromise *)deleteInstallation; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m new file mode 100644 index 000000000..1982a5789 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m @@ -0,0 +1,458 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsIDController.h" + +#if __has_include() +#import +#else +#import "FBLPromises.h" +#endif + +#import + +#import "FIRInstallationsAPIService.h" +#import "FIRInstallationsErrorUtil.h" +#import "FIRInstallationsIIDStore.h" +#import "FIRInstallationsIIDTokenStore.h" +#import "FIRInstallationsItem.h" +#import "FIRInstallationsLogger.h" +#import "FIRInstallationsSingleOperationPromiseCache.h" +#import "FIRInstallationsStore.h" +#import "FIRSecureStorage.h" + +#import "FIRInstallationsHTTPError.h" +#import "FIRInstallationsStoredAuthToken.h" + +const NSNotificationName FIRInstallationIDDidChangeNotification = + @"FIRInstallationIDDidChangeNotification"; +NSString *const kFIRInstallationIDDidChangeNotificationAppNameKey = + @"FIRInstallationIDDidChangeNotification"; + +NSTimeInterval const kFIRInstallationsTokenExpirationThreshold = 60 * 60; // 1 hour. + +@interface FIRInstallationsIDController () +@property(nonatomic, readonly) NSString *appID; +@property(nonatomic, readonly) NSString *appName; + +@property(nonatomic, readonly) FIRInstallationsStore *installationsStore; +@property(nonatomic, readonly) FIRInstallationsIIDStore *IIDStore; +@property(nonatomic, readonly) FIRInstallationsIIDTokenStore *IIDTokenStore; + +@property(nonatomic, readonly) FIRInstallationsAPIService *APIService; + +@property(nonatomic, readonly) FIRInstallationsSingleOperationPromiseCache + *getInstallationPromiseCache; +@property(nonatomic, readonly) + FIRInstallationsSingleOperationPromiseCache *authTokenPromiseCache; +@property(nonatomic, readonly) FIRInstallationsSingleOperationPromiseCache + *authTokenForcingRefreshPromiseCache; +@property(nonatomic, readonly) + FIRInstallationsSingleOperationPromiseCache *deleteInstallationPromiseCache; +@end + +@implementation FIRInstallationsIDController + +- (instancetype)initWithGoogleAppID:(NSString *)appID + appName:(NSString *)appName + APIKey:(NSString *)APIKey + projectID:(NSString *)projectID + GCMSenderID:(NSString *)GCMSenderID + accessGroup:(NSString *)accessGroup { + FIRSecureStorage *secureStorage = [[FIRSecureStorage alloc] init]; + FIRInstallationsStore *installationsStore = + [[FIRInstallationsStore alloc] initWithSecureStorage:secureStorage accessGroup:accessGroup]; + + // Use `GCMSenderID` as project identifier when `projectID` is not available. + NSString *APIServiceProjectID = (projectID.length > 0) ? projectID : GCMSenderID; + FIRInstallationsAPIService *apiService = + [[FIRInstallationsAPIService alloc] initWithAPIKey:APIKey projectID:APIServiceProjectID]; + + FIRInstallationsIIDStore *IIDStore = [[FIRInstallationsIIDStore alloc] init]; + FIRInstallationsIIDTokenStore *IIDCheckingStore = + [[FIRInstallationsIIDTokenStore alloc] initWithGCMSenderID:GCMSenderID]; + + return [self initWithGoogleAppID:appID + appName:appName + installationsStore:installationsStore + APIService:apiService + IIDStore:IIDStore + IIDTokenStore:IIDCheckingStore]; +} + +/// The initializer is supposed to be used by tests to inject `installationsStore`. +- (instancetype)initWithGoogleAppID:(NSString *)appID + appName:(NSString *)appName + installationsStore:(FIRInstallationsStore *)installationsStore + APIService:(FIRInstallationsAPIService *)APIService + IIDStore:(FIRInstallationsIIDStore *)IIDStore + IIDTokenStore:(FIRInstallationsIIDTokenStore *)IIDTokenStore { + self = [super init]; + if (self) { + _appID = appID; + _appName = appName; + _installationsStore = installationsStore; + _APIService = APIService; + _IIDStore = IIDStore; + _IIDTokenStore = IIDTokenStore; + + __weak FIRInstallationsIDController *weakSelf = self; + + _getInstallationPromiseCache = [[FIRInstallationsSingleOperationPromiseCache alloc] + initWithNewOperationHandler:^FBLPromise *_Nonnull { + FIRInstallationsIDController *strongSelf = weakSelf; + return [strongSelf createGetInstallationItemPromise]; + }]; + + _authTokenPromiseCache = [[FIRInstallationsSingleOperationPromiseCache alloc] + initWithNewOperationHandler:^FBLPromise *_Nonnull { + FIRInstallationsIDController *strongSelf = weakSelf; + return [strongSelf installationWithValidAuthTokenForcingRefresh:NO]; + }]; + + _authTokenForcingRefreshPromiseCache = [[FIRInstallationsSingleOperationPromiseCache alloc] + initWithNewOperationHandler:^FBLPromise *_Nonnull { + FIRInstallationsIDController *strongSelf = weakSelf; + return [strongSelf installationWithValidAuthTokenForcingRefresh:YES]; + }]; + + _deleteInstallationPromiseCache = [[FIRInstallationsSingleOperationPromiseCache alloc] + initWithNewOperationHandler:^FBLPromise *_Nonnull { + FIRInstallationsIDController *strongSelf = weakSelf; + return [strongSelf createDeleteInstallationPromise]; + }]; + } + return self; +} + +#pragma mark - Get Installation. + +- (FBLPromise *)getInstallationItem { + return [self.getInstallationPromiseCache getExistingPendingOrCreateNewPromise]; +} + +- (FBLPromise *)createGetInstallationItemPromise { + FIRLogDebug(kFIRLoggerInstallations, + kFIRInstallationsMessageCodeNewGetInstallationOperationCreated, @"%s, appName: %@", + __PRETTY_FUNCTION__, self.appName); + + FBLPromise *installationItemPromise = + [self getStoredInstallation].recover(^id(NSError *error) { + return [self createAndSaveFID]; + }); + + // Initiate registration process on success if needed, but return the installation without waiting + // for it. + installationItemPromise.then(^id(FIRInstallationsItem *installation) { + [self getAuthTokenForcingRefresh:NO]; + return nil; + }); + + return installationItemPromise; +} + +- (FBLPromise *)getStoredInstallation { + return [self.installationsStore installationForAppID:self.appID appName:self.appName].validate( + ^BOOL(FIRInstallationsItem *installation) { + BOOL isValid = NO; + switch (installation.registrationStatus) { + case FIRInstallationStatusUnregistered: + case FIRInstallationStatusRegistered: + isValid = YES; + break; + + case FIRInstallationStatusUnknown: + isValid = NO; + break; + } + + return isValid; + }); +} + +- (FBLPromise *)createAndSaveFID { + return [self migrateOrGenerateInstallation] + .then(^FBLPromise *(FIRInstallationsItem *installation) { + return [self saveInstallation:installation]; + }) + .then(^FIRInstallationsItem *(FIRInstallationsItem *installation) { + [self postFIDDidChangeNotification]; + return installation; + }); +} + +- (FBLPromise *)saveInstallation:(FIRInstallationsItem *)installation { + return [self.installationsStore saveInstallation:installation].then( + ^FIRInstallationsItem *(NSNull *result) { + return installation; + }); +} + +/** + * Tries to migrate IID data stored by FirebaseInstanceID SDK or generates a new Installation ID if + * not found. + */ +- (FBLPromise *)migrateOrGenerateInstallation { + if (![self isDefaultApp]) { + // Existing IID should be used only for default FirebaseApp. + FIRInstallationsItem *installation = + [self createInstallationWithFID:[FIRInstallationsItem generateFID] IIDDefaultToken:nil]; + return [FBLPromise resolvedWith:installation]; + } + + return [[[FBLPromise + all:@[ [self.IIDStore existingIID], [self.IIDTokenStore existingIIDDefaultToken] ]] + then:^id _Nullable(NSArray *_Nullable results) { + NSString *existingIID = results[0]; + NSString *IIDDefaultToken = results[1]; + + return [self createInstallationWithFID:existingIID IIDDefaultToken:IIDDefaultToken]; + }] recover:^id _Nullable(NSError *_Nonnull error) { + return [self createInstallationWithFID:[FIRInstallationsItem generateFID] IIDDefaultToken:nil]; + }]; +} + +- (FIRInstallationsItem *)createInstallationWithFID:(NSString *)FID + IIDDefaultToken:(nullable NSString *)IIDDefaultToken { + FIRInstallationsItem *installation = [[FIRInstallationsItem alloc] initWithAppID:self.appID + firebaseAppName:self.appName]; + installation.firebaseInstallationID = FID; + installation.IIDDefaultToken = IIDDefaultToken; + installation.registrationStatus = FIRInstallationStatusUnregistered; + return installation; +} + +#pragma mark - FID registration + +- (FBLPromise *)registerInstallationIfNeeded: + (FIRInstallationsItem *)installation { + switch (installation.registrationStatus) { + case FIRInstallationStatusRegistered: + // Already registered. Do nothing. + return [FBLPromise resolvedWith:installation]; + + case FIRInstallationStatusUnknown: + case FIRInstallationStatusUnregistered: + // Registration required. Proceed. + break; + } + + return [self.APIService registerInstallation:installation] + .catch(^(NSError *_Nonnull error) { + if ([self doesRegistrationErrorRequireConfigChange:error]) { + FIRLogError(kFIRLoggerInstallations, + kFIRInstallationsMessageCodeInvalidFirebaseConfiguration, + @"Firebase Installation registration failed for app with name: %@, error: " + @"%@\nPlease make sure you use valid GoogleService-Info.plist", + self.appName, error); + } + }) + .then(^id(FIRInstallationsItem *registeredInstallation) { + return [self saveInstallation:registeredInstallation]; + }) + .then(^FIRInstallationsItem *(FIRInstallationsItem *registeredInstallation) { + // Server may respond with a different FID if the sent one cannot be accepted. + if (![registeredInstallation.firebaseInstallationID + isEqualToString:installation.firebaseInstallationID]) { + [self postFIDDidChangeNotification]; + } + return registeredInstallation; + }); +} + +- (BOOL)doesRegistrationErrorRequireConfigChange:(NSError *)error { + FIRInstallationsHTTPError *HTTPError = (FIRInstallationsHTTPError *)error; + if (![HTTPError isKindOfClass:[FIRInstallationsHTTPError class]]) { + return NO; + } + + switch (HTTPError.HTTPResponse.statusCode) { + // These are the errors that require Firebase configuration change. + case FIRInstallationsRegistrationHTTPCodeInvalidArgument: + case FIRInstallationsRegistrationHTTPCodeInvalidAPIKey: + case FIRInstallationsRegistrationHTTPCodeAPIKeyToProjectIDMismatch: + case FIRInstallationsRegistrationHTTPCodeProjectNotFound: + return YES; + + default: + return NO; + } +} + +#pragma mark - Auth Token + +- (FBLPromise *)getAuthTokenForcingRefresh:(BOOL)forceRefresh { + if (forceRefresh || [self.authTokenForcingRefreshPromiseCache getExistingPendingPromise] != nil) { + return [self.authTokenForcingRefreshPromiseCache getExistingPendingOrCreateNewPromise]; + } else { + return [self.authTokenPromiseCache getExistingPendingOrCreateNewPromise]; + } +} + +- (FBLPromise *)installationWithValidAuthTokenForcingRefresh: + (BOOL)forceRefresh { + FIRLogDebug(kFIRLoggerInstallations, kFIRInstallationsMessageCodeNewGetAuthTokenOperationCreated, + @"-[FIRInstallationsIDController installationWithValidAuthTokenForcingRefresh:%@], " + @"appName: %@", + @(forceRefresh), self.appName); + + return [self getInstallationItem] + .then(^FBLPromise *(FIRInstallationsItem *installation) { + return [self registerInstallationIfNeeded:installation]; + }) + .then(^id(FIRInstallationsItem *registeredInstallation) { + BOOL isTokenExpiredOrExpiresSoon = + [registeredInstallation.authToken.expirationDate timeIntervalSinceDate:[NSDate date]] < + kFIRInstallationsTokenExpirationThreshold; + if (forceRefresh || isTokenExpiredOrExpiresSoon) { + return [self refreshAuthTokenForInstallation:registeredInstallation]; + } else { + return registeredInstallation; + } + }) + .recover(^id(NSError *error) { + return [self regenerateFIDOnRefreshTokenErrorIfNeeded:error]; + }); +} + +- (FBLPromise *)refreshAuthTokenForInstallation: + (FIRInstallationsItem *)installation { + return [[self.APIService refreshAuthTokenForInstallation:installation] + then:^id _Nullable(FIRInstallationsItem *_Nullable refreshedInstallation) { + return [self saveInstallation:refreshedInstallation]; + }]; +} + +- (id)regenerateFIDOnRefreshTokenErrorIfNeeded:(NSError *)error { + if (![error isKindOfClass:[FIRInstallationsHTTPError class]]) { + // No recovery possible. Return the same error. + return error; + } + + FIRInstallationsHTTPError *HTTPError = (FIRInstallationsHTTPError *)error; + switch (HTTPError.HTTPResponse.statusCode) { + case FIRInstallationsAuthTokenHTTPCodeInvalidAuthentication: + case FIRInstallationsAuthTokenHTTPCodeFIDNotFound: + // The stored installation was damaged or blocked by the server. + // Delete the stored installation then generate and register a new one. + return [self getInstallationItem] + .then(^FBLPromise *(FIRInstallationsItem *installation) { + return [self deleteInstallationLocally:installation]; + }) + .then(^FBLPromise *(id result) { + return [self installationWithValidAuthTokenForcingRefresh:NO]; + }); + + default: + // No recovery possible. Return the same error. + return error; + } +} + +#pragma mark - Delete FID + +- (FBLPromise *)deleteInstallation { + return [self.deleteInstallationPromiseCache getExistingPendingOrCreateNewPromise]; +} + +- (FBLPromise *)createDeleteInstallationPromise { + FIRLogDebug(kFIRLoggerInstallations, + kFIRInstallationsMessageCodeNewDeleteInstallationOperationCreated, @"%s, appName: %@", + __PRETTY_FUNCTION__, self.appName); + + // Check for ongoing requests first, if there is no a request, then check local storage for + // existing installation. + FBLPromise *currentInstallationPromise = + [self mostRecentInstallationOperation] ?: [self getStoredInstallation]; + + return currentInstallationPromise + .then(^id(FIRInstallationsItem *installation) { + return [self sendDeleteInstallationRequestIfNeeded:installation]; + }) + .then(^id(FIRInstallationsItem *installation) { + // Remove the installation from the local storage. + return [self deleteInstallationLocally:installation]; + }); +} + +- (FBLPromise *)deleteInstallationLocally:(FIRInstallationsItem *)installation { + return [self.installationsStore removeInstallationForAppID:installation.appID + appName:installation.firebaseAppName] + .then(^FBLPromise *(NSNull *result) { + return [self deleteExistingIIDIfNeeded]; + }) + .then(^NSNull *(NSNull *result) { + [self postFIDDidChangeNotification]; + return result; + }); +} + +- (FBLPromise *)sendDeleteInstallationRequestIfNeeded: + (FIRInstallationsItem *)installation { + switch (installation.registrationStatus) { + case FIRInstallationStatusUnknown: + case FIRInstallationStatusUnregistered: + // The installation is not registered, so it is safe to be deleted as is, so return early. + return [FBLPromise resolvedWith:installation]; + break; + + case FIRInstallationStatusRegistered: + // Proceed to de-register the installation on the server. + break; + } + + return [self.APIService deleteInstallation:installation].recover(^id(NSError *APIError) { + if ([FIRInstallationsErrorUtil isAPIError:APIError withHTTPCode:404]) { + // The installation was not found on the server. + // Return success. + return installation; + } else { + // Re-throw the error otherwise. + return APIError; + } + }); +} + +- (FBLPromise *)deleteExistingIIDIfNeeded { + if ([self isDefaultApp]) { + return [self.IIDStore deleteExistingIID]; + } else { + return [FBLPromise resolvedWith:[NSNull null]]; + } +} + +- (nullable FBLPromise *)mostRecentInstallationOperation { + return [self.authTokenForcingRefreshPromiseCache getExistingPendingPromise] + ?: [self.authTokenPromiseCache getExistingPendingPromise] + ?: [self.getInstallationPromiseCache getExistingPendingPromise]; +} + +#pragma mark - Notifications + +- (void)postFIDDidChangeNotification { + [[NSNotificationCenter defaultCenter] + postNotificationName:FIRInstallationIDDidChangeNotification + object:nil + userInfo:@{kFIRInstallationIDDidChangeNotificationAppNameKey : self.appName}]; +} + +#pragma mark - Default App + +- (BOOL)isDefaultApp { + return [self.appName isEqualToString:kFIRDefaultAppName]; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.h new file mode 100644 index 000000000..aeb54e504 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.h @@ -0,0 +1,58 @@ +/* + * Copyright 2019 Google + * + * 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 + +@class FBLPromise; + +NS_ASSUME_NONNULL_BEGIN + +/** + * The class makes sure the a single operation (represented by a promise) is performed at a time. If + * there is an ongoing operation, then its existing corresponding promise will be returned instead + * of starting a new operation. + */ +@interface FIRInstallationsSingleOperationPromiseCache<__covariant ResultType> : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +/** + * The designated initializer. + * @param newOperationHandler The block that must return a new promise representing the + * single-at-a-time operation. The promise should be fulfilled when the operation is completed. The + * factory block will be used to create a new promise when needed. + */ +- (instancetype)initWithNewOperationHandler: + (FBLPromise *_Nonnull (^)(void))newOperationHandler NS_DESIGNATED_INITIALIZER; + +/** + * Creates a new promise or returns an existing pending one. + * @return Returns and existing pending promise if exists. If the pending promise does not exist + * then a new one will be created using the `factory` block passed in the initializer. Once the + * pending promise gets resolved, it is removed, so calling the method again will lead to creating + * and caching another promise. + */ +- (FBLPromise *)getExistingPendingOrCreateNewPromise; + +/** + * Returns an existing pending promise or `nil`. + * @return Returns an existing pending promise if there is one or `nil` otherwise. + */ +- (nullable FBLPromise *)getExistingPendingPromise; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.m new file mode 100644 index 000000000..dfccfe36d --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.m @@ -0,0 +1,75 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsSingleOperationPromiseCache.h" + +#if __has_include() +#import +#else +#import "FBLPromises.h" +#endif + +@interface FIRInstallationsSingleOperationPromiseCache () +@property(nonatomic, readonly) FBLPromise *_Nonnull (^newOperationHandler)(void); +@property(nonatomic, nullable) FBLPromise *pendingPromise; +@end + +@implementation FIRInstallationsSingleOperationPromiseCache + +- (instancetype)initWithNewOperationHandler: + (FBLPromise *_Nonnull (^)(void))newOperationHandler { + if (newOperationHandler == nil) { + [NSException raise:NSInvalidArgumentException + format:@"`newOperationHandler` must not be `nil`."]; + } + + self = [super init]; + if (self) { + _newOperationHandler = [newOperationHandler copy]; + } + return self; +} + +- (FBLPromise *)getExistingPendingOrCreateNewPromise { + @synchronized(self) { + if (!self.pendingPromise) { + self.pendingPromise = self.newOperationHandler(); + + self.pendingPromise + .then(^id(id result) { + @synchronized(self) { + self.pendingPromise = nil; + return nil; + } + }) + .catch(^void(NSError *error) { + @synchronized(self) { + self.pendingPromise = nil; + } + }); + } + + return self.pendingPromise; + } +} + +- (nullable FBLPromise *)getExistingPendingPromise { + @synchronized(self) { + return self.pendingPromise; + } +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsStatus.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsStatus.h new file mode 100644 index 000000000..3edc69201 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsStatus.h @@ -0,0 +1,35 @@ +/* + * Copyright 2019 Google + * + * 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 + +/** + * The enum represent possible states of the installation ID. + * + * WARNING: The enum is stored to Keychain as a part of `FIRInstallationsStoredItem`. Modification + * of it can lead to incompatibility with previous version. Any modification must be evaluated and, + * if it is really needed, the `storageVersion` must be bumped and proper migration code added. + */ +typedef NS_ENUM(NSInteger, FIRInstallationsStatus) { + /** Represents either an initial status when a FIRInstallationsItem instance was created but not + * stored to Keychain or an undefined status (e.g. when the status failed to deserialize). + */ + FIRInstallationStatusUnknown, + /// The Firebase Installation has not yet been registered with FIS. + FIRInstallationStatusUnregistered, + /// The Firebase Installation has successfully been registered with FIS. + FIRInstallationStatusRegistered, +}; diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h new file mode 100644 index 000000000..5334cc98b --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 Google + * + * 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 + +@class FBLPromise; +@class FIRInstallationsItem; +@class FIRSecureStorage; + +NS_ASSUME_NONNULL_BEGIN + +/// The user defaults suite name used to store data. +extern NSString *const kFIRInstallationsStoreUserDefaultsID; + +/// The class is responsible for storing and accessing the installations data. +@interface FIRInstallationsStore : NSObject + +/** + * The default initializer. + * @param storage The secure storage to save installations data. + * @param accessGroup The Keychain Access Group to store and request the installations data. + */ +- (instancetype)initWithSecureStorage:(FIRSecureStorage *)storage + accessGroup:(nullable NSString *)accessGroup; + +/** + * Retrieves existing installation ID if there is. + * @param appID The Firebase(Google) Application ID. + * @param appName The Firebase Application Name. + * + * @return Returns a `FBLPromise` instance. The promise is resolved with a FIRInstallationsItem + * instance if there is a valid installation stored for `appID` and `appName`. The promise is + * rejected with a specific error when the installation has not been found or with another possible + * error. + */ +- (FBLPromise *)installationForAppID:(NSString *)appID + appName:(NSString *)appName; + +/** + * Saves the given installation. + * + * @param installationItem The installation data. + * @return Returns a promise that is resolved with `[NSNull null]` on success. + */ +- (FBLPromise *)saveInstallation:(FIRInstallationsItem *)installationItem; + +/** + * Removes installation data for the given app parameters. + * @param appID The Firebase(Google) Application ID. + * @param appName The Firebase Application Name. + * + * @return Returns a promise that is resolved with `[NSNull null]` on success. + */ +- (FBLPromise *)removeInstallationForAppID:(NSString *)appID appName:(NSString *)appName; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m new file mode 100644 index 000000000..9fcfd7488 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m @@ -0,0 +1,125 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsStore.h" + +#import + +#if __has_include() +#import +#else +#import "FBLPromises.h" +#endif + +#import "FIRInstallationsErrorUtil.h" +#import "FIRInstallationsItem.h" +#import "FIRInstallationsStoredItem.h" +#import "FIRSecureStorage.h" + +NSString *const kFIRInstallationsStoreUserDefaultsID = @"com.firebase.FIRInstallations"; + +@interface FIRInstallationsStore () +@property(nonatomic, readonly) FIRSecureStorage *secureStorage; +@property(nonatomic, readonly, nullable) NSString *accessGroup; +@property(nonatomic, readonly) dispatch_queue_t queue; +@property(nonatomic, readonly) GULUserDefaults *userDefaults; +@end + +@implementation FIRInstallationsStore + +- (instancetype)initWithSecureStorage:(FIRSecureStorage *)storage + accessGroup:(NSString *)accessGroup { + self = [super init]; + if (self) { + _secureStorage = storage; + _accessGroup = [accessGroup copy]; + _queue = dispatch_queue_create("com.firebase.FIRInstallationsStore", DISPATCH_QUEUE_SERIAL); + + NSString *userDefaultsSuiteName = _accessGroup ?: kFIRInstallationsStoreUserDefaultsID; + _userDefaults = [[GULUserDefaults alloc] initWithSuiteName:userDefaultsSuiteName]; + } + return self; +} + +- (FBLPromise *)installationForAppID:(NSString *)appID + appName:(NSString *)appName { + NSString *itemID = [FIRInstallationsItem identifierWithAppID:appID appName:appName]; + return [self installationExistsForAppID:appID appName:appName] + .then(^id(id result) { + return [self.secureStorage getObjectForKey:itemID + objectClass:[FIRInstallationsStoredItem class] + accessGroup:self.accessGroup]; + }) + .then(^id(FIRInstallationsStoredItem *_Nullable storedItem) { + if (storedItem == nil) { + return [FIRInstallationsErrorUtil installationItemNotFoundForAppID:appID appName:appName]; + } + + FIRInstallationsItem *item = [[FIRInstallationsItem alloc] initWithAppID:appID + firebaseAppName:appName]; + [item updateWithStoredItem:storedItem]; + return item; + }); +} + +- (FBLPromise *)saveInstallation:(FIRInstallationsItem *)installationItem { + FIRInstallationsStoredItem *storedItem = [installationItem storedItem]; + NSString *identifier = [installationItem identifier]; + + return + [self.secureStorage setObject:storedItem forKey:identifier accessGroup:self.accessGroup].then( + ^id(id result) { + return [self setInstallationExists:YES forItemWithIdentifier:identifier]; + }); +} + +- (FBLPromise *)removeInstallationForAppID:(NSString *)appID appName:(NSString *)appName { + NSString *identifier = [FIRInstallationsItem identifierWithAppID:appID appName:appName]; + return [self.secureStorage removeObjectForKey:identifier accessGroup:self.accessGroup].then( + ^id(id result) { + return [self setInstallationExists:NO forItemWithIdentifier:identifier]; + }); +} + +#pragma mark - User defaults + +- (FBLPromise *)installationExistsForAppID:(NSString *)appID appName:(NSString *)appName { + NSString *identifier = [FIRInstallationsItem identifierWithAppID:appID appName:appName]; + return [FBLPromise onQueue:self.queue + do:^id _Nullable { + return [[self userDefaults] objectForKey:identifier] != nil + ? [NSNull null] + : [FIRInstallationsErrorUtil + installationItemNotFoundForAppID:appID + appName:appName]; + }]; +} + +- (FBLPromise *)setInstallationExists:(BOOL)exists + forItemWithIdentifier:(NSString *)identifier { + return [FBLPromise onQueue:self.queue + do:^id _Nullable { + if (exists) { + [[self userDefaults] setBool:YES forKey:identifier]; + } else { + [[self userDefaults] removeObjectForKey:identifier]; + } + + return [NSNull null]; + }]; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.h new file mode 100644 index 000000000..f6e428288 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.h @@ -0,0 +1,58 @@ +/* + * Copyright 2019 Google + * + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** + * The enum represent possible states of the installation auth token. + * + * WARNING: The enum is stored to Keychain as a part of `FIRInstallationsStoredAuthToken`. + * Modification of it can lead to incompatibility with previous version. Any modification must be + * evaluated and, if it is really needed, the `storageVersion` must be bumped and proper migration + * code added. + */ +typedef NS_ENUM(NSInteger, FIRInstallationsAuthTokenStatus) { + /// An initial status or an undefined value. + FIRInstallationsAuthTokenStatusUnknown, + /// The auth token has been received from the server. + FIRInstallationsAuthTokenStatusTokenReceived +}; + +/** + * This class serializes and deserializes the installation data into/from `NSData` to be stored in + * Keychain. This class is primarily used by `FIRInstallationsStore`. It is also used on the logic + * level as a data object (see `FIRInstallationsItem.authToken`). + * + * WARNING: Modification of the class properties can lead to incompatibility with the stored data + * encoded by the previous class versions. Any modification must be evaluated and, if it is really + * needed, the `storageVersion` must be bumped and proper migration code added. + */ +@interface FIRInstallationsStoredAuthToken : NSObject +@property FIRInstallationsAuthTokenStatus status; + +/// The token that can be used to authorize requests to Firebase backend. +@property(nullable, copy) NSString *token; +/// The date when the auth token expires. +@property(nullable, copy) NSDate *expirationDate; + +/// The version of local storage. +@property(nonatomic, readonly) NSInteger storageVersion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.m new file mode 100644 index 000000000..b21f6dd23 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.m @@ -0,0 +1,77 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsStoredAuthToken.h" + +#import "FIRInstallationsLogger.h" + +NSString *const kFIRInstallationsStoredAuthTokenStatusKey = @"status"; +NSString *const kFIRInstallationsStoredAuthTokenTokenKey = @"token"; +NSString *const kFIRInstallationsStoredAuthTokenExpirationDateKey = @"expirationDate"; +NSString *const kFIRInstallationsStoredAuthTokenStorageVersionKey = @"storageVersion"; + +NSInteger const kFIRInstallationsStoredAuthTokenStorageVersion = 1; + +@implementation FIRInstallationsStoredAuthToken + +- (NSInteger)storageVersion { + return kFIRInstallationsStoredAuthTokenStorageVersion; +} + +- (nonnull id)copyWithZone:(nullable NSZone *)zone { + FIRInstallationsStoredAuthToken *clone = [[FIRInstallationsStoredAuthToken alloc] init]; + clone.status = self.status; + clone.token = [self.token copy]; + clone.expirationDate = self.expirationDate; + return clone; +} + +- (void)encodeWithCoder:(nonnull NSCoder *)aCoder { + [aCoder encodeInteger:self.status forKey:kFIRInstallationsStoredAuthTokenStatusKey]; + [aCoder encodeObject:self.token forKey:kFIRInstallationsStoredAuthTokenTokenKey]; + [aCoder encodeObject:self.expirationDate + forKey:kFIRInstallationsStoredAuthTokenExpirationDateKey]; + [aCoder encodeInteger:self.storageVersion + forKey:kFIRInstallationsStoredAuthTokenStorageVersionKey]; +} + +- (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder { + NSInteger storageVersion = + [aDecoder decodeIntegerForKey:kFIRInstallationsStoredAuthTokenStorageVersionKey]; + if (storageVersion > kFIRInstallationsStoredAuthTokenStorageVersion) { + FIRLogWarning(kFIRLoggerInstallations, + kFIRInstallationsMessageCodeAuthTokenCoderVersionMismatch, + @"FIRInstallationsStoredAuthToken was encoded by a newer coder version %ld. " + @"Current coder version is %ld. Some auth token data may be lost.", + (long)storageVersion, (long)kFIRInstallationsStoredAuthTokenStorageVersion); + } + + FIRInstallationsStoredAuthToken *object = [[FIRInstallationsStoredAuthToken alloc] init]; + object.status = [aDecoder decodeIntegerForKey:kFIRInstallationsStoredAuthTokenStatusKey]; + object.token = [aDecoder decodeObjectOfClass:[NSString class] + forKey:kFIRInstallationsStoredAuthTokenTokenKey]; + object.expirationDate = + [aDecoder decodeObjectOfClass:[NSDate class] + forKey:kFIRInstallationsStoredAuthTokenExpirationDateKey]; + + return object; +} + ++ (BOOL)supportsSecureCoding { + return YES; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.h new file mode 100644 index 000000000..4926588c2 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.h @@ -0,0 +1,51 @@ +/* + * Copyright 2019 Google + * + * 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 + +#import "FIRInstallationsStatus.h" + +@class FIRInstallationsStoredAuthToken; +@class FIRInstallationsStoredIIDCheckin; + +NS_ASSUME_NONNULL_BEGIN + +/** + * The class is supposed to be used by `FIRInstallationsStore` only. It is required to + * serialize/deserialize the installation data into/from `NSData` to be stored in Keychain. + * + * WARNING: Modification of the class properties can lead to incompatibility with the stored data + * encoded by the previous class versions. Any modification must be evaluated and, if it is really + * needed, the `storageVersion` must be bumped and proper migration code added. + */ +@interface FIRInstallationsStoredItem : NSObject + +/// A stable identifier that uniquely identifies the app instance. +@property(nonatomic, copy, nullable) NSString *firebaseInstallationID; +/// The `refreshToken` is used to authorize the auth token requests. +@property(nonatomic, copy, nullable) NSString *refreshToken; + +@property(nonatomic, nullable) FIRInstallationsStoredAuthToken *authToken; +@property(nonatomic) FIRInstallationsStatus registrationStatus; + +/// Instance ID default auth token imported from IID store as a part of IID migration. +@property(nonatomic, nullable) NSString *IIDDefaultToken; + +/// The version of local storage. +@property(nonatomic, readonly) NSInteger storageVersion; +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.m new file mode 100644 index 000000000..0c7655c39 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.m @@ -0,0 +1,80 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsStoredItem.h" + +#import "FIRInstallationsLogger.h" +#import "FIRInstallationsStoredAuthToken.h" + +NSString *const kFIRInstallationsStoredItemFirebaseInstallationIDKey = @"firebaseInstallationID"; +NSString *const kFIRInstallationsStoredItemRefreshTokenKey = @"refreshToken"; +NSString *const kFIRInstallationsStoredItemAuthTokenKey = @"authToken"; +NSString *const kFIRInstallationsStoredItemRegistrationStatusKey = @"registrationStatus"; +NSString *const kFIRInstallationsStoredItemIIDDefaultTokenKey = @"IIDDefaultToken"; +NSString *const kFIRInstallationsStoredItemStorageVersionKey = @"storageVersion"; + +NSInteger const kFIRInstallationsStoredItemStorageVersion = 1; + +@implementation FIRInstallationsStoredItem + +- (NSInteger)storageVersion { + return kFIRInstallationsStoredItemStorageVersion; +} + +- (void)encodeWithCoder:(nonnull NSCoder *)aCoder { + [aCoder encodeObject:self.firebaseInstallationID + forKey:kFIRInstallationsStoredItemFirebaseInstallationIDKey]; + [aCoder encodeObject:self.refreshToken forKey:kFIRInstallationsStoredItemRefreshTokenKey]; + [aCoder encodeObject:self.authToken forKey:kFIRInstallationsStoredItemAuthTokenKey]; + [aCoder encodeInteger:self.registrationStatus + forKey:kFIRInstallationsStoredItemRegistrationStatusKey]; + [aCoder encodeObject:self.IIDDefaultToken forKey:kFIRInstallationsStoredItemIIDDefaultTokenKey]; + [aCoder encodeInteger:self.storageVersion forKey:kFIRInstallationsStoredItemStorageVersionKey]; +} + +- (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder { + NSInteger storageVersion = + [aDecoder decodeIntegerForKey:kFIRInstallationsStoredItemStorageVersionKey]; + if (storageVersion > self.storageVersion) { + FIRLogWarning(kFIRLoggerInstallations, + kFIRInstallationsMessageCodeInstallationCoderVersionMismatch, + @"FIRInstallationsStoredItem was encoded by a newer coder version %ld. Current " + @"coder version is %ld. Some installation data may be lost.", + (long)storageVersion, (long)kFIRInstallationsStoredItemStorageVersion); + } + + FIRInstallationsStoredItem *item = [[FIRInstallationsStoredItem alloc] init]; + item.firebaseInstallationID = + [aDecoder decodeObjectOfClass:[NSString class] + forKey:kFIRInstallationsStoredItemFirebaseInstallationIDKey]; + item.refreshToken = [aDecoder decodeObjectOfClass:[NSString class] + forKey:kFIRInstallationsStoredItemRefreshTokenKey]; + item.authToken = [aDecoder decodeObjectOfClass:[FIRInstallationsStoredAuthToken class] + forKey:kFIRInstallationsStoredItemAuthTokenKey]; + item.registrationStatus = + [aDecoder decodeIntegerForKey:kFIRInstallationsStoredItemRegistrationStatusKey]; + item.IIDDefaultToken = + [aDecoder decodeObjectOfClass:[NSString class] + forKey:kFIRInstallationsStoredItemIIDDefaultTokenKey]; + + return item; +} + ++ (BOOL)supportsSecureCoding { + return YES; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallations.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallations.h new file mode 100644 index 000000000..4839b4e03 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallations.h @@ -0,0 +1,120 @@ +/* + * Copyright 2019 Google + * + * 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 + +@class FIRApp; +@class FIRInstallationsAuthTokenResult; + +NS_ASSUME_NONNULL_BEGIN + +/** A notification with this name is sent each time an installation is created or deleted. */ +FOUNDATION_EXPORT const NSNotificationName FIRInstallationIDDidChangeNotification; +/** `userInfo` key for the `FirebaseApp.name` in `FIRInstallationIDDidChangeNotification`. */ +FOUNDATION_EXPORT NSString *const kFIRInstallationIDDidChangeNotificationAppNameKey; + +/** + * An installation ID handler block. + * @param identifier The installation ID string if exists or `nil` otherwise. + * @param error The error when `identifier == nil` or `nil` otherwise. + */ +typedef void (^FIRInstallationsIDHandler)(NSString *__nullable identifier, + NSError *__nullable error) + NS_SWIFT_NAME(InstallationsIDHandler); + +/** + * An authorization token handler block. + * @param tokenResult An instance of `InstallationsAuthTokenResult` in case of success or `nil` + * otherwise. + * @param error The error when `tokenResult == nil` or `nil` otherwise. + */ +typedef void (^FIRInstallationsTokenHandler)( + FIRInstallationsAuthTokenResult *__nullable tokenResult, NSError *__nullable error) + NS_SWIFT_NAME(InstallationsTokenHandler); + +/** + * The class provides API for Firebase Installations. + * Each configured `FirebaseApp` has a corresponding single instance of `Installations`. + * An instance of the class provides access to the installation info for the `FirebaseApp` as well + * as the ability to delete it. A Firebase Installation is unique by `FirebaseApp.name` and + * `FirebaseApp.options.googleAppID` . + */ +NS_SWIFT_NAME(Installations) +@interface FIRInstallations : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +/** + * Returns a default instance of `Installations`. + * @returns An instance of `Installations` for `FirebaseApp.defaultApp(). + * @throw Throws an exception if the default app is not configured yet or required `FirebaseApp` + * options are missing. + */ ++ (FIRInstallations *)installations NS_SWIFT_NAME(installations()); + +/** + * Returns an instance of `Installations` for an application. + * @param application A configured `FirebaseApp` instance. + * @returns An instance of `Installations` corresponding to the passed application. + * @throw Throws an exception if required `FirebaseApp` options are missing. + */ ++ (FIRInstallations *)installationsWithApp:(FIRApp *)application NS_SWIFT_NAME(installations(app:)); + +/** + * The method creates or retrieves an installation ID. The installation ID is a stable identifier + * that uniquely identifies the app instance. NOTE: If the application already has an existing + * FirebaseInstanceID then the InstanceID identifier will be used. + * @param completion A completion handler which is invoked when the operation completes. See + * `InstallationsIDHandler` for additional details. + */ +- (void)installationIDWithCompletion:(FIRInstallationsIDHandler)completion; + +/** + * Retrieves (locally if it exists or from the server) a valid authorization token. An existing + * token may be invalidated or expired, so it is recommended to fetch the auth token before each + * server request. The method does the same as `Installations.authTokenForcingRefresh(:, + * completion:)` with forcing refresh `NO`. + * @param completion A completion handler which is invoked when the operation completes. See + * `InstallationsTokenHandler` for additional details. + */ +- (void)authTokenWithCompletion:(FIRInstallationsTokenHandler)completion; + +/** + * Retrieves (locally or from the server depending on `forceRefresh` value) a valid authorization + * token. An existing token may be invalidated or expire, so it is recommended to fetch the auth + * token before each server request. This method should be used with `forceRefresh == YES` when e.g. + * a request with the previously fetched auth token failed with "Not Authorized" error. + * @param forceRefresh If `YES` then the locally cached auth token will be ignored and a new one + * will be requested from the server. If `NO`, then the locally cached auth token will be returned + * if exists and has not expired yet. + * @param completion A completion handler which is invoked when the operation completes. See + * `InstallationsTokenHandler` for additional details. + */ +- (void)authTokenForcingRefresh:(BOOL)forceRefresh + completion:(FIRInstallationsTokenHandler)completion; + +/** + * Deletes all the installation data including the unique identifier, auth tokens and + * all related data on the server side. A network connection is required for the method to + * succeed. If fails, the existing installation data remains untouched. + * @param completion A completion handler which is invoked when the operation completes. `error == + * nil` indicates success. + */ +- (void)deleteWithCompletion:(void (^)(NSError *__nullable error))completion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsAuthTokenResult.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsAuthTokenResult.h new file mode 100644 index 000000000..7753132d9 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsAuthTokenResult.h @@ -0,0 +1,33 @@ +/* + * Copyright 2019 Google + * + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** The class represents a result of the auth token request. */ +NS_SWIFT_NAME(InstallationsAuthTokenResult) +@interface FIRInstallationsAuthTokenResult : NSObject + +/** The authorization token string. */ +@property(nonatomic, readonly) NSString *authToken; + +/** The auth token expiration date. */ +@property(nonatomic, readonly) NSDate *expirationDate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsErrors.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsErrors.h new file mode 100644 index 000000000..d0c3b9961 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsErrors.h @@ -0,0 +1,34 @@ +/* + * Copyright 2019 Google + * + * 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 + +extern NSString *const kFirebaseInstallationsErrorDomain; + +typedef NS_ENUM(NSUInteger, FIRInstallationsErrorCode) { + /** Unknown error. See `userInfo` for details. */ + FIRInstallationsErrorCodeUnknown = 0, + + /** Keychain error. See `userInfo` for details. */ + FIRInstallationsErrorCodeKeychain = 1, + + /** Server unreachable. A network error or server is unavailable. See `userInfo` for details. */ + FIRInstallationsErrorCodeServerUnreachable = 2, + + /** FirebaseApp configuration issues e.g. invalid GMP-App-ID, etc. See `userInfo` for details. */ + FIRInstallationsErrorCodeInvalidConfiguration = 3, + +} NS_SWIFT_NAME(InstallationsErrorCode); diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsVersion.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsVersion.h new file mode 100644 index 000000000..8cdf6778b --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsVersion.h @@ -0,0 +1,19 @@ +/* + * Copyright 2019 Google + * + * 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_EXPORT const char *const FIRInstallationsVersionStr; diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations.h new file mode 100644 index 000000000..accc9ac6b --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations.h @@ -0,0 +1,20 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallations.h" +#import "FIRInstallationsAuthTokenResult.h" +#import "FIRInstallationsErrors.h" +#import "FIRInstallationsVersion.h" diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.h new file mode 100644 index 000000000..4d73ec00f --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.h @@ -0,0 +1,35 @@ +/* + * Copyright 2019 Google + * + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/// Helper functions to access Keychain. +@interface FIRInstallationsKeychainUtils : NSObject + ++ (nullable NSData *)getItemWithQuery:(NSDictionary *)query + error:(NSError *_Nullable *_Nullable)outError; + ++ (BOOL)setItem:(NSData *)item + withQuery:(NSDictionary *)query + error:(NSError *_Nullable *_Nullable)outError; + ++ (BOOL)removeItemWithQuery:(NSDictionary *)query error:(NSError *_Nullable *_Nullable)outError; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.m new file mode 100644 index 000000000..51da86a8a --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.m @@ -0,0 +1,107 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRInstallationsKeychainUtils.h" + +#import "FIRInstallationsErrorUtil.h" + +@implementation FIRInstallationsKeychainUtils + ++ (nullable NSData *)getItemWithQuery:(NSDictionary *)query + error:(NSError *_Nullable *_Nullable)outError { + NSMutableDictionary *mutableQuery = [query mutableCopy]; + + mutableQuery[(__bridge id)kSecReturnData] = @YES; + mutableQuery[(__bridge id)kSecMatchLimit] = (__bridge id)kSecMatchLimitOne; + + CFDataRef result = NULL; + OSStatus status = + SecItemCopyMatching((__bridge CFDictionaryRef)mutableQuery, (CFTypeRef *)&result); + + if (status == errSecSuccess && result != NULL) { + if (outError) { + *outError = nil; + } + + return (__bridge_transfer NSData *)result; + } + + if (status == errSecItemNotFound) { + if (outError) { + *outError = nil; + } + } else { + if (outError) { + *outError = [FIRInstallationsErrorUtil keychainErrorWithFunction:@"SecItemCopyMatching" + status:status]; + } + } + return nil; +} + ++ (BOOL)setItem:(NSData *)item + withQuery:(NSDictionary *)query + error:(NSError *_Nullable *_Nullable)outError { + NSData *existingItem = [self getItemWithQuery:query error:outError]; + if (outError && *outError) { + return NO; + } + + NSMutableDictionary *mutableQuery = [query mutableCopy]; + mutableQuery[(__bridge id)kSecAttrAccessible] = + (__bridge id)kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly; + + OSStatus status; + if (!existingItem) { + mutableQuery[(__bridge id)kSecValueData] = item; + status = SecItemAdd((__bridge CFDictionaryRef)mutableQuery, NULL); + } else { + NSDictionary *attributes = @{(__bridge id)kSecValueData : item}; + status = SecItemUpdate((__bridge CFDictionaryRef)query, (__bridge CFDictionaryRef)attributes); + } + + if (status == noErr) { + if (outError) { + *outError = nil; + } + return YES; + } + + NSString *function = existingItem ? @"SecItemUpdate" : @"SecItemAdd"; + if (outError) { + *outError = [FIRInstallationsErrorUtil keychainErrorWithFunction:function status:status]; + } + return NO; +} + ++ (BOOL)removeItemWithQuery:(NSDictionary *)query error:(NSError *_Nullable *_Nullable)outError { + OSStatus status = SecItemDelete((__bridge CFDictionaryRef)query); + + if (status == noErr || status == errSecItemNotFound) { + if (outError) { + *outError = nil; + } + return YES; + } + + if (outError) { + *outError = [FIRInstallationsErrorUtil keychainErrorWithFunction:@"SecItemDelete" + status:status]; + } + return NO; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.h b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.h new file mode 100644 index 000000000..5548e3e12 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 Google + * + * 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 + +@class FBLPromise; + +NS_ASSUME_NONNULL_BEGIN + +/// The class provides a convenient abstraction on top of the iOS Keychain API to save data. +@interface FIRSecureStorage : NSObject + +/** + * Get an object by key. + * @param key The key. + * @param objectClass The expected object class required by `NSSecureCoding`. + * @param accessGroup The Keychain Access Group. + * + * @return Returns a promise. It is resolved with an object stored by key if exists. It is resolved + * with `nil` when the object not found. It fails on a Keychain error. + */ +- (FBLPromise> *)getObjectForKey:(NSString *)key + objectClass:(Class)objectClass + accessGroup:(nullable NSString *)accessGroup; + +/** + * Saves the given object by the given key. + * @param object The object to store. + * @param key The key to store the object. If there is an existing object by the key, it will be + * overridden. + * @param accessGroup The Keychain Access Group. + * + * @return Returns which is resolved with `[NSNull null]` on success. + */ +- (FBLPromise *)setObject:(id)object + forKey:(NSString *)key + accessGroup:(nullable NSString *)accessGroup; + +/** + * Removes the object by the given key. + * @param key The key to store the object. If there is an existing object by the key, it will be + * overridden. + * @param accessGroup The Keychain Access Group. + * + * @return Returns which is resolved with `[NSNull null]` on success. + */ +- (FBLPromise *)removeObjectForKey:(NSString *)key + accessGroup:(nullable NSString *)accessGroup; + +#if TARGET_OS_OSX +/// If not `nil`, then only this keychain will be used to save and read data (see +/// `kSecMatchSearchList` and `kSecUseKeychain`. It is mostly intended to be used by unit tests. +@property(nonatomic, nullable) SecKeychainRef keychainRef; +#endif // TARGET_OSX + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.m b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.m new file mode 100644 index 000000000..543e84815 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.m @@ -0,0 +1,255 @@ +/* + * Copyright 2019 Google + * + * 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 "FIRSecureStorage.h" +#import + +#if __has_include() +#import +#else +#import "FBLPromises.h" +#endif + +#import "FIRInstallationsErrorUtil.h" +#import "FIRInstallationsKeychainUtils.h" + +@interface FIRSecureStorage () +@property(nonatomic, readonly) dispatch_queue_t keychainQueue; +@property(nonatomic, readonly) dispatch_queue_t inMemoryCacheQueue; +@property(nonatomic, readonly) NSString *service; +@property(nonatomic, readonly) NSCache> *inMemoryCache; +@end + +@implementation FIRSecureStorage + +- (instancetype)init { + NSCache *cache = [[NSCache alloc] init]; + // Cache up to 5 installations. + cache.countLimit = 5; + return [self initWithService:@"com.firebase.FIRInstallations.installations" cache:cache]; +} + +- (instancetype)initWithService:(NSString *)service cache:(NSCache *)cache { + self = [super init]; + if (self) { + _keychainQueue = dispatch_queue_create( + "com.firebase.FIRInstallations.FIRSecureStorage.Keychain", DISPATCH_QUEUE_SERIAL); + _inMemoryCacheQueue = dispatch_queue_create( + "com.firebase.FIRInstallations.FIRSecureStorage.InMemoryCache", DISPATCH_QUEUE_SERIAL); + _service = [service copy]; + _inMemoryCache = cache; + } + return self; +} + +#pragma mark - Public + +- (FBLPromise> *)getObjectForKey:(NSString *)key + objectClass:(Class)objectClass + accessGroup:(nullable NSString *)accessGroup { + return [FBLPromise onQueue:self.inMemoryCacheQueue + do:^id _Nullable { + // Return cached object or fail otherwise. + id object = [self.inMemoryCache objectForKey:key]; + return object + ?: [[NSError alloc] + initWithDomain:FBLPromiseErrorDomain + code:FBLPromiseErrorCodeValidationFailure + userInfo:nil]; + }] + .recover(^id _Nullable(NSError *error) { + // Look for the object in the keychain. + return [self getObjectFromKeychainForKey:key + objectClass:objectClass + accessGroup:accessGroup]; + }); +} + +- (FBLPromise *)setObject:(id)object + forKey:(NSString *)key + accessGroup:(nullable NSString *)accessGroup { + return [FBLPromise onQueue:self.inMemoryCacheQueue + do:^id _Nullable { + // Save to the in-memory cache first. + [self.inMemoryCache setObject:object forKey:[key copy]]; + return [NSNull null]; + }] + .thenOn(self.keychainQueue, ^id(id result) { + // Then store the object to the keychain. + NSDictionary *query = [self keychainQueryWithKey:key accessGroup:accessGroup]; + NSError *error; + NSData *encodedObject = [self archiveDataForObject:object error:&error]; + if (!encodedObject) { + return error; + } + + if (![FIRInstallationsKeychainUtils setItem:encodedObject withQuery:query error:&error]) { + return error; + } + + return [NSNull null]; + }); +} + +- (FBLPromise *)removeObjectForKey:(NSString *)key + accessGroup:(nullable NSString *)accessGroup { + return [FBLPromise onQueue:self.inMemoryCacheQueue + do:^id _Nullable { + [self.inMemoryCache removeObjectForKey:key]; + return nil; + }] + .thenOn(self.keychainQueue, ^id(id result) { + NSDictionary *query = [self keychainQueryWithKey:key accessGroup:accessGroup]; + + NSError *error; + if (![FIRInstallationsKeychainUtils removeItemWithQuery:query error:&error]) { + return error; + } + + return [NSNull null]; + }); +} + +#pragma mark - Private + +- (FBLPromise> *)getObjectFromKeychainForKey:(NSString *)key + objectClass:(Class)objectClass + accessGroup:(nullable NSString *)accessGroup { + // Look for the object in the keychain. + return [FBLPromise onQueue:self.keychainQueue + do:^id { + NSDictionary *query = [self keychainQueryWithKey:key + accessGroup:accessGroup]; + NSError *error; + NSData *encodedObject = + [FIRInstallationsKeychainUtils getItemWithQuery:query error:&error]; + + if (error) { + return error; + } + if (!encodedObject) { + return nil; + } + id object = [self unarchivedObjectOfClass:objectClass + fromData:encodedObject + error:&error]; + if (error) { + return error; + } + + return object; + }] + .thenOn(self.inMemoryCacheQueue, + ^id _Nullable(id _Nullable object) { + // Save object to the in-memory cache if exists and return the object. + if (object) { + [self.inMemoryCache setObject:object forKey:[key copy]]; + } + return object; + }); +} + +- (void)resetInMemoryCache { + [self.inMemoryCache removeAllObjects]; +} + +#pragma mark - Keychain + +- (NSMutableDictionary *)keychainQueryWithKey:(NSString *)key + accessGroup:(nullable NSString *)accessGroup { + NSMutableDictionary *query = [NSMutableDictionary dictionary]; + + query[(__bridge NSString *)kSecClass] = (__bridge NSString *)kSecClassGenericPassword; + query[(__bridge NSString *)kSecAttrService] = self.service; + query[(__bridge NSString *)kSecAttrAccount] = key; + + if (accessGroup) { + query[(__bridge NSString *)kSecAttrAccessGroup] = accessGroup; + } + +#if TARGET_OS_OSX + if (self.keychainRef) { + query[(__bridge NSString *)kSecUseKeychain] = (__bridge id)(self.keychainRef); + query[(__bridge NSString *)kSecMatchSearchList] = @[ (__bridge id)(self.keychainRef) ]; + } +#endif // TARGET_OSX + + return query; +} + +- (nullable NSData *)archiveDataForObject:(id)object error:(NSError **)outError { + NSData *archiveData; + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { + NSError *error; + archiveData = [NSKeyedArchiver archivedDataWithRootObject:object + requiringSecureCoding:YES + error:&error]; + if (error && outError) { + *outError = [FIRInstallationsErrorUtil keyedArchiverErrorWithError:error]; + } + } else { + @try { + NSMutableData *data = [NSMutableData data]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; +#pragma clang diagnostic pop + archiver.requiresSecureCoding = YES; + + [archiver encodeObject:object forKey:NSKeyedArchiveRootObjectKey]; + [archiver finishEncoding]; + + archiveData = [data copy]; + } @catch (NSException *exception) { + if (outError) { + *outError = [FIRInstallationsErrorUtil keyedArchiverErrorWithException:exception]; + } + } + } + + return archiveData; +} + +- (nullable id)unarchivedObjectOfClass:(Class)class + fromData:(NSData *)data + error:(NSError **)outError { + id object; + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { + NSError *error; + object = [NSKeyedUnarchiver unarchivedObjectOfClass:class fromData:data error:&error]; + if (error && outError) { + *outError = [FIRInstallationsErrorUtil keyedArchiverErrorWithError:error]; + } + } else { + @try { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; +#pragma clang diagnostic pop + unarchiver.requiresSecureCoding = YES; + + object = [unarchiver decodeObjectOfClass:class forKey:NSKeyedArchiveRootObjectKey]; + } @catch (NSException *exception) { + if (outError) { + *outError = [FIRInstallationsErrorUtil keyedArchiverErrorWithException:exception]; + } + } + } + + return object; +} + +@end diff --git a/ios/Pods/FirebaseInstallations/LICENSE b/ios/Pods/FirebaseInstallations/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/ios/Pods/FirebaseInstallations/README.md b/ios/Pods/FirebaseInstallations/README.md new file mode 100644 index 000000000..3ddc8fbd2 --- /dev/null +++ b/ios/Pods/FirebaseInstallations/README.md @@ -0,0 +1,251 @@ +# Firebase iOS Open Source Development [![Build Status](https://travis-ci.org/firebase/firebase-ios-sdk.svg?branch=master)](https://travis-ci.org/firebase/firebase-ios-sdk) + +This repository contains a subset of the Firebase iOS SDK source. It currently +includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, +FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, +FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and +FirebaseStorage. + +The repository also includes GoogleUtilities source. The +[GoogleUtilities](GoogleUtilities/README.md) pod is +a set of utilities used by Firebase and other Google products. + +Firebase is an app development platform with tools to help you build, grow and +monetize your app. More information about Firebase can be found at +[https://firebase.google.com](https://firebase.google.com). + +## Installation + +See the three subsections for details about three different installation methods. +1. [Standard pod install](README.md#standard-pod-install) +1. [Installing from the GitHub repo](README.md#installing-from-github) +1. [Experimental Carthage](README.md#carthage-ios-only) + +### Standard pod install + +Go to +[https://firebase.google.com/docs/ios/setup](https://firebase.google.com/docs/ios/setup). + +### Installing from GitHub + +For releases starting with 5.0.0, the source for each release is also deployed +to CocoaPods master and available via standard +[CocoaPods Podfile syntax](https://guides.cocoapods.org/syntax/podfile.html#pod). + +These instructions can be used to access the Firebase repo at other branches, +tags, or commits. + +#### Background + +See +[the Podfile Syntax Reference](https://guides.cocoapods.org/syntax/podfile.html#pod) +for instructions and options about overriding pod source locations. + +#### Accessing Firebase Source Snapshots + +All of the official releases are tagged in this repo and available via CocoaPods. To access a local +source snapshot or unreleased branch, use Podfile directives like the following: + +To access FirebaseFirestore via a branch: +``` +pod 'FirebaseCore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'master' +pod 'FirebaseFirestore', :git => 'https://github.com/firebase/firebase-ios-sdk.git', :branch => 'master' +``` + +To access FirebaseMessaging via a checked out version of the firebase-ios-sdk repo do: + +``` +pod 'FirebaseCore', :path => '/path/to/firebase-ios-sdk' +pod 'FirebaseMessaging', :path => '/path/to/firebase-ios-sdk' +``` + +### Carthage (iOS only) + +Instructions for the experimental Carthage distribution are at +[Carthage](Carthage.md). + +### Rome + +Instructions for installing binary frameworks via +[Rome](https://github.com/CocoaPods/Rome) are at [Rome](Rome.md). + +## Development + +To develop Firebase software in this repository, ensure that you have at least +the following software: + + * Xcode 10.1 (or later) + * CocoaPods 1.7.2 (or later) + * [CocoaPods generate](https://github.com/square/cocoapods-generate) + +For the pod that you want to develop: + +`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios` + +Note: If the CocoaPods cache is out of date, you may need to run +`pod repo update` before the `pod gen` command. + +Note: Set the `--platforms` option to `macos` or `tvos` to develop/test for +those platforms. Since 10.2, Xcode does not properly handle multi-platform +CocoaPods workspaces. + +Firestore has a self contained Xcode project. See +[Firestore/README.md](Firestore/README.md). + +### Development for Catalyst +* `pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios` +* Check the Mac box in the App-iOS Build Settings +* Sign the App in the Settings Signing & Capabilities tab +* Click Pods in the Project Manager +* Add Signing to the iOS host app and unit test targets +* Select the Unit-unit scheme +* Run it to build and test + +### Adding a New Firebase Pod + +See [AddNewPod.md](AddNewPod.md). + +### Code Formatting + +To ensure that the code is formatted consistently, run the script +[./scripts/style.sh](https://github.com/firebase/firebase-ios-sdk/blob/master/scripts/style.sh) +before creating a PR. + +Travis will verify that any code changes are done in a style compliant way. Install +`clang-format` and `swiftformat`. +These commands will get the right versions: + +``` +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb +``` + +Note: if you already have a newer version of these installed you may need to +`brew switch` to this version. + +To update this section, find the versions of clang-format and swiftformat.rb to +match the versions in the CI failure logs +[here](https://github.com/Homebrew/homebrew-core/tree/master/Formula). + +### Running Unit Tests + +Select a scheme and press Command-u to build a component and run its unit tests. + +#### Viewing Code Coverage + +First, make sure that [xcov](https://github.com/nakiostudio/xcov) is installed with `gem install xcov`. + +After running the `AllUnitTests_iOS` scheme in Xcode, execute +`xcov --workspace Firebase.xcworkspace --scheme AllUnitTests_iOS --output_directory xcov_output` +at Example/ in the terminal. This will aggregate the coverage, and you can run `open xcov_output/index.html` to see the results. + +### Running Sample Apps +In order to run the sample apps and integration tests, you'll need valid +`GoogleService-Info.plist` files for those samples. The Firebase Xcode project contains dummy plist +files without real values, but can be replaced with real plist files. To get your own +`GoogleService-Info.plist` files: + +1. Go to the [Firebase Console](https://console.firebase.google.com/) +2. Create a new Firebase project, if you don't already have one +3. For each sample app you want to test, create a new Firebase app with the sample app's bundle +identifier (e.g. `com.google.Database-Example`) +4. Download the resulting `GoogleService-Info.plist` and replace the appropriate dummy plist file +(e.g. in [Example/Database/App/](Example/Database/App/)); + +Some sample apps like Firebase Messaging ([Example/Messaging/App](Example/Messaging/App)) require +special Apple capabilities, and you will have to change the sample app to use a unique bundle +identifier that you can control in your own Apple Developer account. + +## Specific Component Instructions +See the sections below for any special instructions for those components. + +### Firebase Auth + +If you're doing specific Firebase Auth development, see +[the Auth Sample README](Example/Auth/README.md) for instructions about +building and running the FirebaseAuth pod along with various samples and tests. + +### Firebase Database + +To run the Database Integration tests, make your database authentication rules +[public](https://firebase.google.com/docs/database/security/quickstart). + +### Firebase Storage + +To run the Storage Integration tests, follow the instructions in +[FIRStorageIntegrationTests.m](Example/Storage/Tests/Integration/FIRStorageIntegrationTests.m). + +#### Push Notifications + +Push notifications can only be delivered to specially provisioned App IDs in the developer portal. +In order to actually test receiving push notifications, you will need to: + +1. Change the bundle identifier of the sample app to something you own in your Apple Developer +account, and enable that App ID for push notifications. +2. You'll also need to +[upload your APNs Provider Authentication Key or certificate to the Firebase Console](https://firebase.google.com/docs/cloud-messaging/ios/certs) +at **Project Settings > Cloud Messaging > [Your Firebase App]**. +3. Ensure your iOS device is added to your Apple Developer portal as a test device. + +#### iOS Simulator + +The iOS Simulator cannot register for remote notifications, and will not receive push notifications. +In order to receive push notifications, you'll have to follow the steps above and run the app on a +physical device. + +## Community Supported Efforts + +We've seen an amazing amount of interest and contributions to improve the Firebase SDKs, and we are +very grateful! We'd like to empower as many developers as we can to be able to use Firebase and +participate in the Firebase community. + +### tvOS, macOS, and Catalyst +Thanks to contributions from the community, FirebaseABTesting, FirebaseAuth, FirebaseCore, +FirebaseDatabase, FirebaseMessaging, FirebaseFirestore, +FirebaseFunctions, FirebaseRemoteConfig, and FirebaseStorage now compile, run unit tests, and work on +tvOS, macOS, and Catalyst. + +For tvOS, checkout the [Sample](Example/tvOSSample). + +Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +repository is actively developed primarily for iOS. While we can catch basic unit test issues with +Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). + +To install, add a subset of the following to the Podfile: + +``` +pod 'Firebase/ABTesting' +pod 'Firebase/Auth' +pod 'Firebase/Database' +pod 'Firebase/Firestore' +pod 'Firebase/Functions' +pod 'Firebase/Messaging' +pod 'Firebase/RemoteConfig' +pod 'Firebase/Storage' +``` + +#### Additional Catalyst Notes + +* FirebaseAuth and FirebaseMessaging require adding `Keychain Sharing Capability` +to Build Settings. +* FirebaseFirestore requires signing the +[gRPC Resource target](https://github.com/firebase/firebase-ios-sdk/issues/3500#issuecomment-518741681). + +## Roadmap + +See [Roadmap](ROADMAP.md) for more about the Firebase iOS SDK Open Source +plans and directions. + +## Contributing + +See [Contributing](CONTRIBUTING.md) for more information on contributing to the Firebase +iOS SDK. + +## License + +The contents of this repository is licensed under the +[Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0). + +Your use of Firebase is governed by the +[Terms of Service for Firebase Services](https://firebase.google.com/terms/). diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRIMessageCode.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRIMessageCode.h index 6d4b6cbb9..e3e36e9df 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRIMessageCode.h +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRIMessageCode.h @@ -55,10 +55,10 @@ typedef NS_ENUM(NSInteger, FIRInstanceIDMessageCode) { kFIRInstanceIDMessageCodeAuthServiceCheckinInProgress = 5004, // FIRInstanceIDBackupExcludedPlist.m + // Do NOT USE 6003 kFIRInstanceIDMessageCodeBackupExcludedPlist000 = 6000, kFIRInstanceIDMessageCodeBackupExcludedPlist001 = 6001, kFIRInstanceIDMessageCodeBackupExcludedPlist002 = 6002, - kFIRInstanceIDMessageCodeBackupExcludedPlistInvalidPlistEnum = 6003, // FIRInstanceIDCheckinService.m kFIRInstanceIDMessageCodeService000 = 7000, kFIRInstanceIDMessageCodeService001 = 7001, @@ -76,29 +76,12 @@ typedef NS_ENUM(NSInteger, FIRInstanceIDMessageCode) { kFIRInstanceIDMessageCodeCheckinStore003 = 8003, kFIRInstanceIDMessageCodeCheckinStoreCheckinPlistDeleted = 8009, kFIRInstanceIDMessageCodeCheckinStoreCheckinPlistSaved = 8010, - // FIRInstanceIDKeyPair.m - // DO NOT USE 9001, 9003 - kFIRInstanceIDMessageCodeKeyPair000 = 9000, - kFIRInstanceIDMessageCodeKeyPair002 = 9002, - kFIRInstanceIDMessageCodeKeyPairMigrationError = 9004, - kFIRInstanceIDMessageCodeKeyPairMigrationSuccess = 9005, - kFIRInstanceIDMessageCodeKeyPairNoLegacyKeyPair = 9006, - // FIRInstanceIDKeyPairStore.m - kFIRInstanceIDMessageCodeKeyPairStore000 = 10000, - kFIRInstanceIDMessageCodeKeyPairStore001 = 10001, - kFIRInstanceIDMessageCodeKeyPairStore002 = 10002, - kFIRInstanceIDMessageCodeKeyPairStore003 = 10003, - kFIRInstanceIDMessageCodeKeyPairStore004 = 10004, - kFIRInstanceIDMessageCodeKeyPairStore005 = 10005, - kFIRInstanceIDMessageCodeKeyPairStore006 = 10006, - kFIRInstanceIDMessageCodeKeyPairStore007 = 10007, - kFIRInstanceIDMessageCodeKeyPairStore008 = 10008, - kFIRInstanceIDMessageCodeKeyPairStoreCouldNotLoadKeyPair = 10009, - // FIRInstanceIDKeyPairUtilities.m - kFIRInstanceIDMessageCodeKeyPairUtilities000 = 11000, - kFIRInstanceIDMessageCodeKeyPairUtilities001 = 11001, - kFIRInstanceIDMessageCodeKeyPairUtilitiesFirstConcatenateParamNil = 11002, + // DO NOT USE 9000 - 9006 + + // DO NOT USE 10000 - 10009 + + // DO NOT USE 11000 - 11002 // DO NOT USE 12000 - 12014 diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceID+Private.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceID+Private.m index a078971dc..c5ffe7a0a 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceID+Private.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceID+Private.m @@ -16,14 +16,18 @@ #import "FIRInstanceID+Private.h" +#import + +#import #import "FIRInstanceIDAuthService.h" -#import "FIRInstanceIDKeyPairStore.h" +#import "FIRInstanceIDDefines.h" #import "FIRInstanceIDTokenManager.h" +@class FIRInstallations; + @interface FIRInstanceID () @property(nonatomic, readonly, strong) FIRInstanceIDTokenManager *tokenManager; -@property(nonatomic, readonly, strong) FIRInstanceIDKeyPairStore *keyPairStore; @end @@ -35,8 +39,18 @@ [self.tokenManager.authService fetchCheckinInfoWithHandler:handler]; } -- (NSString *)appInstanceID:(NSError **)error { - return [self.keyPairStore appIdentityWithError:error]; +// TODO(#4486): Delete the method, `self.firebaseInstallationsID` and related +// code for Firebase 7 release. +- (NSString *)appInstanceID:(NSError **)outError { + return self.firebaseInstallationsID; +} + +#pragma mark - Firebase Installations Compatibility + +/// Presence of this method indicates that this version of IID uses FirebaseInstallations under the +/// hood. It is checked by FirebaseInstallations SDK. ++ (BOOL)usesFIS { + return YES; } @end diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceID.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceID.m index f52016f97..f9cba4f39 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceID.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceID.m @@ -16,19 +16,21 @@ #import "FIRInstanceID.h" +#import + #import #import #import #import #import #import +#import #import "FIRInstanceID+Private.h" #import "FIRInstanceIDAuthService.h" #import "FIRInstanceIDCheckinPreferences.h" #import "FIRInstanceIDCombinedHandler.h" #import "FIRInstanceIDConstants.h" #import "FIRInstanceIDDefines.h" -#import "FIRInstanceIDKeyPairStore.h" #import "FIRInstanceIDLogger.h" #import "FIRInstanceIDStore.h" #import "FIRInstanceIDTokenInfo.h" @@ -58,17 +60,17 @@ int64_t const kMinRetryIntervalForDefaultTokenInSeconds = 10; // 10 second // change. NSInteger const kMaxRetryCountForDefaultToken = 5; -#if TARGET_OS_IOS || TARGET_OS_TV +#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH static NSString *const kEntitlementsAPSEnvironmentKey = @"Entitlements.aps-environment"; #else -static NSString *const kEntitlementsAPSEnvironmentKey = @"com.apple.developer.aps-environment"; +static NSString *const kEntitlementsAPSEnvironmentKey = + @"Entitlements.com.apple.developer.aps-environment"; #endif -static NSString *const kEntitlementsKeyForMac = @"Entitlements"; static NSString *const kAPSEnvironmentDevelopmentValue = @"development"; /// FIRMessaging selector that returns the current FIRMessaging auto init /// enabled flag. -static NSString *const kFIRInstanceIDFCMSelectorAutoInitEnabled = @"isAutoInitEnabled"; -static NSString *const kFIRInstanceIDFCMSelectorInstance = @"messaging"; +static NSString *const kFIRInstanceIDFCMSelectorAutoInitEnabled = + @"isAutoInitEnabledWithUserDefaults:"; static NSString *const kFIRInstanceIDAPNSTokenType = @"APNSTokenType"; static NSString *const kFIRIIDAppReadyToConfigureSDKNotification = @@ -77,10 +79,6 @@ static NSString *const kFIRIIDAppNameKey = @"FIRAppNameKey"; static NSString *const kFIRIIDErrorDomain = @"com.firebase.instanceid"; static NSString *const kFIRIIDServiceInstanceID = @"InstanceID"; -static NSInteger const kFIRIIDErrorCodeInstanceIDFailed = -121; - -typedef void (^FIRInstanceIDKeyPairHandler)(FIRInstanceIDKeyPair *keyPair, NSError *error); - /** * The APNS token type for the app. If the token type is set to `UNKNOWN` * InstanceID will implicitly try to figure out what the actual token type @@ -117,13 +115,16 @@ typedef NS_ENUM(NSInteger, FIRInstanceIDAPNSTokenType) { @property(nonatomic, readwrite, copy) NSString *defaultFCMToken; @property(nonatomic, readwrite, strong) FIRInstanceIDTokenManager *tokenManager; -@property(nonatomic, readwrite, strong) FIRInstanceIDKeyPairStore *keyPairStore; +@property(nonatomic, readwrite, strong) FIRInstallations *installations; // backoff and retry for default token @property(nonatomic, readwrite, assign) NSInteger retryCountForDefaultToken; @property(atomic, strong, nullable) FIRInstanceIDCombinedHandler *defaultTokenFetchHandler; +/// A cached value of FID. Should be used only for `-[FIRInstanceID appInstanceID:]`. +@property(atomic, copy, nullable) NSString *firebaseInstallationsID; + @end // InstanceID doesn't provide any functionality to other components, @@ -269,6 +270,7 @@ static FIRInstanceID *gInstanceID; return; } + // Add internal options NSMutableDictionary *tokenOptions = [NSMutableDictionary dictionary]; if (options.count) { [tokenOptions addEntriesFromDictionary:options]; @@ -276,13 +278,15 @@ static FIRInstanceID *gInstanceID; NSString *APNSKey = kFIRInstanceIDTokenOptionsAPNSKey; NSString *serverTypeKey = kFIRInstanceIDTokenOptionsAPNSIsSandboxKey; - if (tokenOptions[APNSKey] != nil && tokenOptions[serverTypeKey] == nil) { // APNS key was given, but server type is missing. Supply the server type with automatic // checking. This can happen when the token is requested from FCM, which does not include a // server type during its request. tokenOptions[serverTypeKey] = @([self isSandboxApp]); } + if (self.firebaseAppID) { + tokenOptions[kFIRInstanceIDTokenOptionsFirebaseAppIDKey] = self.firebaseAppID; + } // comparing enums to ints directly throws a warning FIRInstanceIDErrorCode noError = INT_MAX; @@ -296,7 +300,7 @@ static FIRInstanceID *gInstanceID; errorCode = kFIRInstanceIDErrorCodeInvalidAuthorizedEntity; } else if (![scope length]) { errorCode = kFIRInstanceIDErrorCodeInvalidScope; - } else if (!self.keyPairStore) { + } else if (!self.installations) { errorCode = kFIRInstanceIDErrorCodeInvalidStart; } @@ -311,60 +315,50 @@ static FIRInstanceID *gInstanceID; return; } - // TODO(chliangGoogle): Add some validation logic that the APNs token data and sandbox value are - // supplied in the valid format (NSData and BOOL, respectively). - - // Add internal options - if (self.firebaseAppID) { - tokenOptions[kFIRInstanceIDTokenOptionsFirebaseAppIDKey] = self.firebaseAppID; - } - FIRInstanceID_WEAKIFY(self); FIRInstanceIDAuthService *authService = self.tokenManager.authService; - [authService - fetchCheckinInfoWithHandler:^(FIRInstanceIDCheckinPreferences *preferences, NSError *error) { - FIRInstanceID_STRONGIFY(self); - if (error) { - newHandler(nil, error); - return; - } + [authService fetchCheckinInfoWithHandler:^(FIRInstanceIDCheckinPreferences *preferences, + NSError *error) { + FIRInstanceID_STRONGIFY(self); + if (error) { + newHandler(nil, error); + return; + } - // Only use the token in the cache if the APNSInfo matches what the request's options has. - // It's possible for the request to be with a newer APNs device token, which should be - // honored. + FIRInstanceID_WEAKIFY(self); + [self.installations installationIDWithCompletion:^(NSString *_Nullable identifier, + NSError *_Nullable error) { + FIRInstanceID_STRONGIFY(self); + + if (error) { + NSError *newError = + [NSError errorWithFIRInstanceIDErrorCode:kFIRInstanceIDErrorCodeInvalidKeyPair]; + newHandler(nil, newError); + + } else { FIRInstanceIDTokenInfo *cachedTokenInfo = [self.tokenManager cachedTokenInfoWithAuthorizedEntity:authorizedEntity scope:scope]; if (cachedTokenInfo) { - // Ensure that the cached token matches APNs data before returning it. FIRInstanceIDAPNSInfo *optionsAPNSInfo = [[FIRInstanceIDAPNSInfo alloc] initWithTokenOptionsDictionary:tokenOptions]; - // If either the APNs info is missing in both, or if they are an exact match, then we can - // use this cached token. + // Check if APNS Info is changed if ((!cachedTokenInfo.APNSInfo && !optionsAPNSInfo) || [cachedTokenInfo.APNSInfo isEqualToAPNSInfo:optionsAPNSInfo]) { - newHandler(cachedTokenInfo.token, nil); - return; + // check if token is fresh + if ([cachedTokenInfo isFreshWithIID:identifier]) { + newHandler(cachedTokenInfo.token, nil); + return; + } } } - - FIRInstanceID_WEAKIFY(self); - [self asyncLoadKeyPairWithHandler:^(FIRInstanceIDKeyPair *keyPair, NSError *error) { - FIRInstanceID_STRONGIFY(self); - - if (error) { - NSError *newError = - [NSError errorWithFIRInstanceIDErrorCode:kFIRInstanceIDErrorCodeInvalidKeyPair]; - newHandler(nil, newError); - - } else { - [self.tokenManager fetchNewTokenWithAuthorizedEntity:[authorizedEntity copy] - scope:[scope copy] - keyPair:keyPair - options:tokenOptions - handler:newHandler]; - } - }]; - }]; + [self.tokenManager fetchNewTokenWithAuthorizedEntity:[authorizedEntity copy] + scope:[scope copy] + instanceID:identifier + options:tokenOptions + handler:newHandler]; + } + }]; + }]; } - (void)deleteTokenWithAuthorizedEntity:(NSString *)authorizedEntity @@ -383,7 +377,7 @@ static FIRInstanceID *gInstanceID; errorCode = kFIRInstanceIDErrorCodeInvalidAuthorizedEntity; } else if (![scope length]) { errorCode = kFIRInstanceIDErrorCodeInvalidScope; - } else if (!self.keyPairStore) { + } else if (!self.installations) { errorCode = kFIRInstanceIDErrorCodeInvalidStart; } @@ -414,7 +408,8 @@ static FIRInstanceID *gInstanceID; } FIRInstanceID_WEAKIFY(self); - [self asyncLoadKeyPairWithHandler:^(FIRInstanceIDKeyPair *keyPair, NSError *error) { + [self.installations installationIDWithCompletion:^(NSString *_Nullable identifier, + NSError *_Nullable error) { FIRInstanceID_STRONGIFY(self); if (error) { NSError *newError = @@ -424,41 +419,13 @@ static FIRInstanceID *gInstanceID; } else { [self.tokenManager deleteTokenWithAuthorizedEntity:authorizedEntity scope:scope - keyPair:keyPair + instanceID:identifier handler:newHandler]; } }]; }]; } -- (void)asyncLoadKeyPairWithHandler:(FIRInstanceIDKeyPairHandler)handler { - FIRInstanceID_WEAKIFY(self); - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - FIRInstanceID_STRONGIFY(self); - - NSError *error = nil; - FIRInstanceIDKeyPair *keyPair = [self.keyPairStore loadKeyPairWithError:&error]; - dispatch_async(dispatch_get_main_queue(), ^{ - if (error) { - FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeInstanceID002, - @"Failed to retreieve keyPair %@", error); - if (handler) { - handler(nil, error); - } - } else if (!keyPair && !error) { - if (handler) { - handler(nil, - [NSError errorWithFIRInstanceIDErrorCode:kFIRInstanceIDErrorCodeInvalidKeyPair]); - } - } else { - if (handler) { - handler(keyPair, nil); - } - } - }); - }); -} - #pragma mark - Identity - (void)getIDWithHandler:(FIRInstanceIDHandler)handler { @@ -468,30 +435,17 @@ static FIRInstanceID *gInstanceID; return; } - void (^callHandlerOnMainThread)(NSString *, NSError *) = ^(NSString *identity, NSError *error) { - dispatch_async(dispatch_get_main_queue(), ^{ - handler(identity, error); - }); - }; - - if (!self.keyPairStore) { - NSError *error = [NSError errorWithFIRInstanceIDErrorCode:kFIRInstanceIDErrorCodeInvalidStart]; - callHandlerOnMainThread(nil, error); - return; - } - FIRInstanceID_WEAKIFY(self); - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - FIRInstanceID_STRONGIFY(self); - NSError *error; - NSString *appIdentity = [self.keyPairStore appIdentityWithError:&error]; - // When getID is explicitly called, trigger getToken to make sure token always exists. - // This is to avoid ID conflict (ID is not checked for conflict until we generate a token) - if (appIdentity) { - [self token]; - } - callHandlerOnMainThread(appIdentity, error); - }); + [self.installations + installationIDWithCompletion:^(NSString *_Nullable identifier, NSError *_Nullable error) { + FIRInstanceID_STRONGIFY(self); + // When getID is explicitly called, trigger getToken to make sure token always exists. + // This is to avoid ID conflict (ID is not checked for conflict until we generate a token) + if (identifier) { + [self token]; + } + handler(identifier, error); + }]; } - (void)deleteIDWithHandler:(FIRInstanceIDDeleteHandler)handler { @@ -511,7 +465,7 @@ static FIRInstanceID *gInstanceID; }); }; - if (!self.keyPairStore) { + if (!self.installations) { FIRInstanceIDErrorCode error = kFIRInstanceIDErrorCodeInvalidStart; callHandlerOnMainThread([NSError errorWithFIRInstanceIDErrorCode:error]); return; @@ -529,16 +483,17 @@ static FIRInstanceID *gInstanceID; }]; }; - [self asyncLoadKeyPairWithHandler:^(FIRInstanceIDKeyPair *keyPair, NSError *error) { - FIRInstanceID_STRONGIFY(self); - if (error) { - NSError *newError = - [NSError errorWithFIRInstanceIDErrorCode:kFIRInstanceIDErrorCodeInvalidKeyPair]; - callHandlerOnMainThread(newError); - } else { - [self.tokenManager deleteAllTokensWithKeyPair:keyPair handler:deleteTokensHandler]; - } - }]; + [self.installations + installationIDWithCompletion:^(NSString *_Nullable identifier, NSError *_Nullable error) { + FIRInstanceID_STRONGIFY(self); + if (error) { + NSError *newError = + [NSError errorWithFIRInstanceIDErrorCode:kFIRInstanceIDErrorCodeInvalidKeyPair]; + callHandlerOnMainThread(newError); + } else { + [self.tokenManager deleteAllTokensWithInstanceID:identifier handler:deleteTokensHandler]; + } + }]; } - (void)notifyIdentityReset { @@ -559,52 +514,36 @@ static FIRInstanceID *gInstanceID; } // Delete Instance ID. - [self.keyPairStore - deleteSavedKeyPairWithSubtype:kFIRInstanceIDKeyPairSubType - handler:^(NSError *error) { - NSError *deletePlistError; - [self.keyPairStore - removeKeyPairCreationTimePlistWithError:&deletePlistError]; - if (error || deletePlistError) { - if (handler) { - // Prefer to use the delete Instance ID error. - error = [NSError - errorWithFIRInstanceIDErrorCode: - kFIRInstanceIDErrorCodeUnknown - userInfo:@{ - NSUnderlyingErrorKey : error - ? error - : deletePlistError - }]; - handler(error); - } - return; - } - // Delete checkin. - [self.tokenManager.authService - resetCheckinWithHandler:^(NSError *error) { - if (error) { - if (handler) { - handler(error); - } - return; - } - // Only request new token if FCM auto initialization is - // enabled. - if ([self isFCMAutoInitEnabled]) { - // Deletion succeeds! Requesting new checkin, IID and token. - // TODO(chliangGoogle) see if dispatch_after is necessary - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, - (int64_t)(0.5 * NSEC_PER_SEC)), - dispatch_get_main_queue(), ^{ - [self defaultTokenWithHandler:nil]; - }); - } - if (handler) { - handler(nil); - } - }]; - }]; + [self.installations deleteWithCompletion:^(NSError *_Nullable error) { + if (error) { + if (handler) { + handler(error); + } + return; + } + + [self.tokenManager.authService resetCheckinWithHandler:^(NSError *error) { + if (error) { + if (handler) { + handler(error); + } + return; + } + // Only request new token if FCM auto initialization is + // enabled. + if ([self isFCMAutoInitEnabled]) { + // Deletion succeeds! Requesting new checkin, IID and token. + // TODO(chliangGoogle) see if dispatch_after is necessary + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), + dispatch_get_main_queue(), ^{ + [self defaultTokenWithHandler:nil]; + }); + } + if (handler) { + handler(nil); + } + }]; + }]; }]; } @@ -639,67 +578,53 @@ static FIRInstanceID *gInstanceID; + (nonnull NSArray *)componentsToRegister { FIRComponentCreationBlock creationBlock = ^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) { + // InstanceID only works with the default app. + if (!container.app.isDefaultApp) { + // Only configure for the default FIRApp. + FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeFIRApp002, + @"Firebase Instance ID only works with the default app."); + return nil; + } + // Ensure it's cached so it returns the same instance every time instanceID is called. *isCacheable = YES; FIRInstanceID *instanceID = [[FIRInstanceID alloc] initPrivately]; [instanceID start]; + [instanceID configureInstanceIDWithOptions:container.app.options]; return instanceID; }; FIRComponent *instanceIDProvider = [FIRComponent componentWithProtocol:@protocol(FIRInstanceIDInstanceProvider) - instantiationTiming:FIRInstantiationTimingLazy + instantiationTiming:FIRInstantiationTimingEagerInDefaultApp dependencies:@[] creationBlock:creationBlock]; return @[ instanceIDProvider ]; } -+ (void)configureWithApp:(FIRApp *)app { - if (!app.isDefaultApp) { - // Only configure for the default FIRApp. - FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeFIRApp002, - @"Firebase Instance ID only works with the default app."); - return; - } - [[FIRInstanceID instanceID] configureInstanceIDWithOptions:app.options app:app]; -} - -- (void)configureInstanceIDWithOptions:(FIROptions *)options app:(FIRApp *)firApp { +- (void)configureInstanceIDWithOptions:(FIROptions *)options { NSString *GCMSenderID = options.GCMSenderID; if (!GCMSenderID.length) { FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeFIRApp000, @"Firebase not set up correctly, nil or empty senderID."); - [FIRInstanceID exitWithReason:@"GCM_SENDER_ID must not be nil or empty." forFirebaseApp:firApp]; - return; + [NSException raise:kFIRIIDErrorDomain + format:@"Could not configure Firebase InstanceID. GCMSenderID must not be nil or " + @"empty."]; } self.fcmSenderID = GCMSenderID; - self.firebaseAppID = firApp.options.googleAppID; + self.firebaseAppID = options.googleAppID; + + [self updateFirebaseInstallationID]; // FCM generates a FCM token during app start for sending push notification to device. - // This is not needed for app extension. + // This is not needed for app extension except for watch. +#if TARGET_OS_WATCH + [self didCompleteConfigure]; +#else if (![GULAppEnvironmentUtil isAppExtension]) { [self didCompleteConfigure]; } -} - -+ (NSError *)configureErrorWithReason:(nonnull NSString *)reason { - NSString *description = - [NSString stringWithFormat:@"Configuration failed for service %@.", kFIRIIDServiceInstanceID]; - if (!reason.length) { - reason = @"Unknown reason"; - } - - NSDictionary *userInfo = - @{NSLocalizedDescriptionKey : description, NSLocalizedFailureReasonErrorKey : reason}; - - return [NSError errorWithDomain:kFIRIIDErrorDomain - code:kFIRIIDErrorCodeInstanceIDFailed - userInfo:userInfo]; -} - -+ (void)exitWithReason:(nonnull NSString *)reason forFirebaseApp:(FIRApp *)firebaseApp { - [NSException raise:kFIRIIDErrorDomain - format:@"Could not configure Firebase InstanceID. %@", reason]; +#endif } // This is used to start any operations when we receive FirebaseSDK setup notification @@ -709,12 +634,15 @@ static FIRInstanceID *gInstanceID; // When there is a cached token, do the token refresh. if (cachedToken) { // Clean up expired tokens by checking the token refresh policy. - if ([self.tokenManager checkForTokenRefreshPolicy]) { - // Default token is expired, fetch default token from server. - [self defaultTokenWithHandler:nil]; - } - // Notify FCM with the default token. - self.defaultFCMToken = [self token]; + [self.installations + installationIDWithCompletion:^(NSString *_Nullable identifier, NSError *_Nullable error) { + if ([self.tokenManager checkTokenRefreshPolicyWithIID:identifier]) { + // Default token is expired, fetch default token from server. + [self defaultTokenWithHandler:nil]; + } + // Notify FCM with the default token. + self.defaultFCMToken = [self token]; + }]; } else if ([self isFCMAutoInitEnabled]) { // When there is no cached token, must check auto init is enabled. // If it's disabled, don't initiate token generation/refresh. @@ -736,29 +664,20 @@ static FIRInstanceID *gInstanceID; return NO; } - // Messaging doesn't have the singleton method, auto init should be enabled since FCM exists. - SEL instanceSelector = NSSelectorFromString(kFIRInstanceIDFCMSelectorInstance); - if (![messagingClass respondsToSelector:instanceSelector]) { - return YES; - } - - // Get FIRMessaging shared instance. - IMP messagingInstanceIMP = [messagingClass methodForSelector:instanceSelector]; - id (*getMessagingInstance)(id, SEL) = (void *)messagingInstanceIMP; - id messagingInstance = getMessagingInstance(messagingClass, instanceSelector); - - // Messaging doesn't have the property, auto init should be enabled since FCM exists. + // Messaging doesn't have the class method, auto init should be enabled since FCM exists. SEL autoInitSelector = NSSelectorFromString(kFIRInstanceIDFCMSelectorAutoInitEnabled); - if (![messagingInstance respondsToSelector:autoInitSelector]) { + if (![messagingClass respondsToSelector:autoInitSelector]) { return YES; } - // Get autoInitEnabled method. - IMP isAutoInitEnabledIMP = [messagingInstance methodForSelector:autoInitSelector]; - BOOL (*isAutoInitEnabled)(id, SEL) = (BOOL(*)(id, SEL))isAutoInitEnabledIMP; + // Get the autoInitEnabled class method. + IMP isAutoInitEnabledIMP = [messagingClass methodForSelector:autoInitSelector]; + BOOL(*isAutoInitEnabled) + (Class, SEL, GULUserDefaults *) = (BOOL(*)(id, SEL, GULUserDefaults *))isAutoInitEnabledIMP; // Check FCM's isAutoInitEnabled property. - return isAutoInitEnabled(messagingInstance, autoInitSelector); + return isAutoInitEnabled(messagingClass, autoInitSelector, + [GULUserDefaults standardUserDefaults]); } // Actually makes InstanceID instantiate both the IID and Token-related subsystems. @@ -768,7 +687,7 @@ static FIRInstanceID *gInstanceID; } [self setupTokenManager]; - [self setupKeyPairManager]; + self.installations = [FIRInstallations installations]; [self setupNotificationListeners]; } @@ -777,20 +696,6 @@ static FIRInstanceID *gInstanceID; self.tokenManager = [[FIRInstanceIDTokenManager alloc] init]; } -// Creates a key pair manager, which stores the public/private keys needed to generate an -// application instance ID. -- (void)setupKeyPairManager { - self.keyPairStore = [[FIRInstanceIDKeyPairStore alloc] init]; - if ([self.keyPairStore invalidateKeyPairsIfNeeded]) { - // Reset tokens right away when keypair is deleted, otherwise async call can make first query - // of token happens before reset old tokens during app start. - // TODO(chliangGoogle): Delete all tokens on server too, using - // deleteAllTokensWithKeyPair:handler:. This requires actually retrieving the invalid keypair - // from Keychain, which is something that the key pair store does not currently do. - [self.tokenManager deleteAllTokensLocallyWithHandler:nil]; - } -} - - (void)setupNotificationListeners { // To prevent double notifications remove observer from all events during setup. NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; @@ -803,6 +708,7 @@ static FIRInstanceID *gInstanceID; selector:@selector(notifyAPNSTokenIsSet:) name:kFIRInstanceIDAPNSTokenNotification object:nil]; + [self observeFirebaseInstallationIDChanges]; } #pragma mark - Private Helpers @@ -1010,44 +916,46 @@ static FIRInstanceID *gInstanceID; // they are up-to-date. if (invalidatedTokens.count > 0) { FIRInstanceID_WEAKIFY(self); - [self asyncLoadKeyPairWithHandler:^(FIRInstanceIDKeyPair *keyPair, NSError *error) { - FIRInstanceID_STRONGIFY(self); - if (self == nil) { - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeInstanceID017, - @"Instance ID shut down during token reset. Aborting"); - return; - } - if (self.apnsTokenData == nil) { - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeInstanceID018, - @"apnsTokenData was set to nil during token reset. Aborting"); - return; - } - NSMutableDictionary *tokenOptions = [@{ - kFIRInstanceIDTokenOptionsAPNSKey : self.apnsTokenData, - kFIRInstanceIDTokenOptionsAPNSIsSandboxKey : @(isSandboxApp) - } mutableCopy]; - if (self.firebaseAppID) { - tokenOptions[kFIRInstanceIDTokenOptionsFirebaseAppIDKey] = self.firebaseAppID; - } + [self.installations + installationIDWithCompletion:^(NSString *_Nullable identifier, NSError *_Nullable error) { + FIRInstanceID_STRONGIFY(self); + if (self == nil) { + FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeInstanceID017, + @"Instance ID shut down during token reset. Aborting"); + return; + } + if (self.apnsTokenData == nil) { + FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeInstanceID018, + @"apnsTokenData was set to nil during token reset. Aborting"); + return; + } - for (FIRInstanceIDTokenInfo *tokenInfo in invalidatedTokens) { - if ([tokenInfo.token isEqualToString:self.defaultFCMToken]) { - // We will perform a special fetch for the default FCM token, so that the delegate methods - // are called. For all others, we will do an internal re-fetch. - [self defaultTokenWithHandler:nil]; - } else { - [self.tokenManager fetchNewTokenWithAuthorizedEntity:tokenInfo.authorizedEntity - scope:tokenInfo.scope - keyPair:keyPair - options:tokenOptions - handler:^(NSString *_Nullable token, - NSError *_Nullable error){ + NSMutableDictionary *tokenOptions = [@{ + kFIRInstanceIDTokenOptionsAPNSKey : self.apnsTokenData, + kFIRInstanceIDTokenOptionsAPNSIsSandboxKey : @(isSandboxApp) + } mutableCopy]; + if (self.firebaseAppID) { + tokenOptions[kFIRInstanceIDTokenOptionsFirebaseAppIDKey] = self.firebaseAppID; + } - }]; - } - } - }]; + for (FIRInstanceIDTokenInfo *tokenInfo in invalidatedTokens) { + if ([tokenInfo.token isEqualToString:self.defaultFCMToken]) { + // We will perform a special fetch for the default FCM token, so that the delegate + // methods are called. For all others, we will do an internal re-fetch. + [self defaultTokenWithHandler:nil]; + } else { + [self.tokenManager fetchNewTokenWithAuthorizedEntity:tokenInfo.authorizedEntity + scope:tokenInfo.scope + instanceID:identifier + options:tokenOptions + handler:^(NSString *_Nullable token, + NSError *_Nullable error){ + + }]; + } + } + }]; } } @@ -1074,7 +982,7 @@ static FIRInstanceID *gInstanceID; // Apps distributed via AppStore or TestFlight use the Production APNS certificates. return defaultAppTypeProd; } -#if TARGET_OS_IOS || TARGET_OS_TV +#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH NSString *path = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"embedded.mobileprovision"]; #elif TARGET_OS_OSX @@ -1157,13 +1065,7 @@ static FIRInstanceID *gInstanceID; @"most likely a Dev profile."); } -#if TARGET_OS_IOS || TARGET_OS_TV NSString *apsEnvironment = [plistMap valueForKeyPath:kEntitlementsAPSEnvironmentKey]; -#elif TARGET_OS_OSX - NSDictionary *entitlements = [plistMap valueForKey:kEntitlementsKeyForMac]; - NSString *apsEnvironment = [entitlements valueForKey:kEntitlementsAPSEnvironmentKey]; -#endif - NSString *debugString __unused = [NSString stringWithFormat:@"APNS Environment in profile: %@", apsEnvironment]; FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeInstanceID013, @"%@", debugString); @@ -1194,4 +1096,35 @@ static FIRInstanceID *gInstanceID; } } +#pragma mark - Sync InstanceID + +- (void)updateFirebaseInstallationID { + FIRInstanceID_WEAKIFY(self); + [self.installations + installationIDWithCompletion:^(NSString *_Nullable installationID, NSError *_Nullable error) { + FIRInstanceID_STRONGIFY(self); + self.firebaseInstallationsID = installationID; + }]; +} + +- (void)installationIDDidChangeNotificationReceived:(NSNotification *)notification { + NSString *installationAppID = + notification.userInfo[kFIRInstallationIDDidChangeNotificationAppNameKey]; + if ([installationAppID isKindOfClass:[NSString class]] && + [installationAppID isEqual:self.firebaseAppID]) { + [self updateFirebaseInstallationID]; + } +} + +- (void)observeFirebaseInstallationIDChanges { + [[NSNotificationCenter defaultCenter] removeObserver:self + name:FIRInstallationIDDidChangeNotification + object:nil]; + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector(installationIDDidChangeNotificationReceived:) + name:FIRInstallationIDDidChangeNotification + object:nil]; +} + @end diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDAuthKeyChain.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDAuthKeyChain.h index 347dddac1..8d453b8b4 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDAuthKeyChain.h +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDAuthKeyChain.h @@ -73,25 +73,22 @@ NS_ASSUME_NONNULL_BEGIN handler:(nullable void (^)(NSError *error))handler; /** - * Set the data for a given service and account with a specific accessibility. If - * accessibility is NULL we use `kSecAttrAccessibleAlwaysThisDeviceOnly` which + * Set the data for a given service and account. + * We use `kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly` which * prevents backup and restore to iCloud, and works for app extension that can * execute right after a device is restarted (and not unlocked). * * @param data The data to save. * @param service The `kSecAttrService` used to save the password. - * @param accessibility The `kSecAttrAccessibility` used to save the password. If NULL - * set this to `kSecAttrAccessibleAlwaysThisDeviceOnly`. * @param account The `kSecAttrAccount` used to save the password. * @param handler The callback handler which is invoked when the add operation is complete, * with an error if there is any. * */ - (void)setData:(NSData *)data - forService:(NSString *)service - accessibility:(nullable CFTypeRef)accessibility - account:(NSString *)account - handler:(nullable void (^)(NSError *))handler; + forService:(NSString *)service + account:(NSString *)account + handler:(nullable void (^)(NSError *))handler; @end diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDAuthKeyChain.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDAuthKeyChain.m index 348a915e8..dfce2f75b 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDAuthKeyChain.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDAuthKeyChain.m @@ -91,7 +91,7 @@ NSString *const kFIRInstanceIDKeychainWildcardIdentifier = @"*"; // FIRInstanceIDKeychain should only take a query and return a result, will handle the query here. NSArray *passwordInfos = CFBridgingRelease([[FIRInstanceIDKeychain sharedInstance] itemWithQuery:keychainQuery]); -#elif TARGET_OS_OSX +#elif TARGET_OS_OSX || TARGET_OS_WATCH keychainQuery[(__bridge id)kSecMatchLimit] = (__bridge id)kSecMatchLimitOne; NSData *passwordInfos = CFBridgingRelease([[FIRInstanceIDKeychain sharedInstance] itemWithQuery:keychainQuery]); @@ -120,7 +120,7 @@ NSString *const kFIRInstanceIDKeychainWildcardIdentifier = @"*"; [results addObject:passwordInfo[(__bridge id)kSecValueData]]; } } -#elif TARGET_OS_OSX +#elif TARGET_OS_OSX || TARGET_OS_WATCH [results addObject:passwordInfos]; #endif // We query the keychain because it didn't exist in cache, now query is done, update the result in @@ -167,10 +167,9 @@ NSString *const kFIRInstanceIDKeychainWildcardIdentifier = @"*"; } - (void)setData:(NSData *)data - forService:(NSString *)service - accessibility:(CFTypeRef)accessibility - account:(NSString *)account - handler:(void (^)(NSError *))handler { + forService:(NSString *)service + account:(NSString *)account + handler:(void (^)(NSError *))handler { if ([service isEqualToString:kFIRInstanceIDKeychainWildcardIdentifier] || [account isEqualToString:kFIRInstanceIDKeychainWildcardIdentifier]) { if (handler) { @@ -194,14 +193,8 @@ NSString *const kFIRInstanceIDKeychainWildcardIdentifier = @"*"; [self keychainQueryForService:service account:account]; keychainQuery[(__bridge id)kSecValueData] = data; - if (accessibility != NULL) { - keychainQuery[(__bridge id)kSecAttrAccessible] = - (__bridge id)accessibility; - } else { - // Defaults to No backup - keychainQuery[(__bridge id)kSecAttrAccessible] = - (__bridge id)kSecAttrAccessibleAlwaysThisDeviceOnly; - } + keychainQuery[(__bridge id)kSecAttrAccessible] = + (__bridge id)kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly; [[FIRInstanceIDKeychain sharedInstance] addItemWithQuery:keychainQuery handler:handler]; diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.m index ca930e689..c1085caef 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.m @@ -18,18 +18,10 @@ #import "FIRInstanceIDLogger.h" -typedef enum : NSUInteger { - FIRInstanceIDPlistDirectoryUnknown, - FIRInstanceIDPlistDirectoryDocuments, - FIRInstanceIDPlistDirectoryApplicationSupport, -} FIRInstanceIDPlistDirectory; - @interface FIRInstanceIDBackupExcludedPlist () @property(nonatomic, readwrite, copy) NSString *fileName; @property(nonatomic, readwrite, copy) NSString *subDirectoryName; -@property(nonatomic, readwrite, assign) BOOL fileInStandardDirectory; - @property(nonatomic, readwrite, strong) NSDictionary *cachedPlistContents; @end @@ -41,19 +33,12 @@ typedef enum : NSUInteger { if (self) { _fileName = [fileName copy]; _subDirectoryName = [subDirectory copy]; -#if TARGET_OS_IOS - _fileInStandardDirectory = [self moveToApplicationSupportSubDirectory:subDirectory]; -#else - // For tvOS and macOS, we never store the content in document folder, so - // the migration is unnecessary. - _fileInStandardDirectory = YES; -#endif } return self; } - (BOOL)writeDictionary:(NSDictionary *)dict error:(NSError **)error { - NSString *path = [self plistPathInDirectory:[self plistDirectory]]; + NSString *path = [self plistPathInDirectory]; if (![dict writeToFile:path atomically:YES]) { FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeBackupExcludedPlist000, @"Failed to write to %@.plist", self.fileName); @@ -85,7 +70,7 @@ typedef enum : NSUInteger { - (BOOL)deleteFile:(NSError **)error { BOOL success = YES; - NSString *path = [self plistPathInDirectory:[self plistDirectory]]; + NSString *path = [self plistPathInDirectory]; if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { success = [[NSFileManager defaultManager] removeItemAtPath:path error:error]; } @@ -96,7 +81,7 @@ typedef enum : NSUInteger { - (NSDictionary *)contentAsDictionary { if (!self.cachedPlistContents) { - NSString *path = [self plistPathInDirectory:[self plistDirectory]]; + NSString *path = [self plistPathInDirectory]; if ([[NSFileManager defaultManager] fileExistsAtPath:path]) { self.cachedPlistContents = [[NSDictionary alloc] initWithContentsOfFile:path]; } @@ -104,93 +89,23 @@ typedef enum : NSUInteger { return self.cachedPlistContents; } -- (BOOL)moveToApplicationSupportSubDirectory:(NSString *)subDirectoryName { - NSArray *directoryPaths = - NSSearchPathForDirectoriesInDomains([self supportedDirectory], NSUserDomainMask, YES); - // This only going to happen inside iOS so it is an applicationSupportDirectory. - NSString *applicationSupportDirPath = directoryPaths.lastObject; - NSArray *components = @[ applicationSupportDirPath, subDirectoryName ]; - NSString *subDirectoryPath = [NSString pathWithComponents:components]; - BOOL hasSubDirectory; - if (![[NSFileManager defaultManager] fileExistsAtPath:subDirectoryPath - isDirectory:&hasSubDirectory]) { - // Cannot move to non-existent directory - return NO; - } - - if ([self doesFileExistInDirectory:FIRInstanceIDPlistDirectoryDocuments]) { - NSString *oldPlistPath = [self plistPathInDirectory:FIRInstanceIDPlistDirectoryDocuments]; - NSString *newPlistPath = - [self plistPathInDirectory:FIRInstanceIDPlistDirectoryApplicationSupport]; - if ([self doesFileExistInDirectory:FIRInstanceIDPlistDirectoryApplicationSupport]) { - // File exists in both Documents and ApplicationSupport - return NO; - } - NSError *moveError; - if (![[NSFileManager defaultManager] moveItemAtPath:oldPlistPath - toPath:newPlistPath - error:&moveError]) { - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeBackupExcludedPlist002, - @"Failed to move file %@ from %@ to %@. Error: %@", self.fileName, - oldPlistPath, newPlistPath, moveError); - return NO; - } - } - // We moved the file if it existed, otherwise we didn't need to do anything - return YES; -} - - (BOOL)doesFileExist { - return [self doesFileExistInDirectory:[self plistDirectory]]; + NSString *path = [self plistPathInDirectory]; + return [[NSFileManager defaultManager] fileExistsAtPath:path]; } #pragma mark - Private -- (FIRInstanceIDPlistDirectory)plistDirectory { - if (_fileInStandardDirectory) { - return FIRInstanceIDPlistDirectoryApplicationSupport; - } else { - return FIRInstanceIDPlistDirectoryDocuments; - }; -} - -- (NSString *)plistPathInDirectory:(FIRInstanceIDPlistDirectory)directory { - return [self pathWithName:self.fileName inDirectory:directory]; -} - -- (NSString *)pathWithName:(NSString *)plistName - inDirectory:(FIRInstanceIDPlistDirectory)directory { +- (NSString *)plistPathInDirectory { NSArray *directoryPaths; - NSArray *components = @[]; - NSString *plistNameWithExtension = [NSString stringWithFormat:@"%@.plist", plistName]; - switch (directory) { - case FIRInstanceIDPlistDirectoryDocuments: - directoryPaths = - NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - components = @[ directoryPaths.lastObject, plistNameWithExtension ]; - break; - - case FIRInstanceIDPlistDirectoryApplicationSupport: - directoryPaths = - NSSearchPathForDirectoriesInDomains([self supportedDirectory], NSUserDomainMask, YES); - components = @[ directoryPaths.lastObject, _subDirectoryName, plistNameWithExtension ]; - break; - - default: - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeBackupExcludedPlistInvalidPlistEnum, - @"Invalid plist directory type: %lu", (unsigned long)directory); - NSAssert(NO, @"Invalid plist directory type: %lu", (unsigned long)directory); - break; - } + NSString *plistNameWithExtension = [NSString stringWithFormat:@"%@.plist", self.fileName]; + directoryPaths = + NSSearchPathForDirectoriesInDomains([self supportedDirectory], NSUserDomainMask, YES); + NSArray *components = @[ directoryPaths.lastObject, _subDirectoryName, plistNameWithExtension ]; return [NSString pathWithComponents:components]; } -- (BOOL)doesFileExistInDirectory:(FIRInstanceIDPlistDirectory)directory { - NSString *path = [self plistPathInDirectory:directory]; - return [[NSFileManager defaultManager] fileExistsAtPath:path]; -} - - (NSSearchPathDirectory)supportedDirectory { #if TARGET_OS_TV return NSCachesDirectory; diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinService.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinService.m index 6d2b5ff9a..8b3357967 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinService.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinService.m @@ -210,6 +210,9 @@ static FIRInstanceIDURLRequestTestBlock testBlock; NSInteger userNumber = 0; // Multi Profile may change this. NSInteger userSerialNumber = 0; // Multi Profile may change this + // This ID is generated for logging purpose and it is only logged for performance + // information for backend, not secure information. + // TODO(chliang): Talk to backend team to see if this ID is still needed. uint32_t loggingID = arc4random(); NSString *timeZone = [NSTimeZone localTimeZone].name; int64_t lastCheckingTimestampMillis = checkinPreferences.lastCheckinTimestampMillis; diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinStore.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinStore.m index 99715a5b8..114277862 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinStore.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDCheckinStore.m @@ -130,7 +130,6 @@ static const NSInteger kOldCheckinPlistCount = 6; NSData *data = [checkinKeychainContent dataUsingEncoding:NSUTF8StringEncoding]; [self.keychain setData:data forService:kFIRInstanceIDCheckinKeychainService - accessibility:nil account:self.bundleIdentifierForKeychainAccount handler:^(NSError *error) { if (error) { @@ -225,7 +224,6 @@ static const NSInteger kOldCheckinPlistCount = 6; // Save to new location [self.keychain setData:dataInOldLocation forService:kFIRInstanceIDCheckinKeychainService - accessibility:NULL account:self.bundleIdentifierForKeychainAccount handler:nil]; // Remove from old location diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPair.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPair.h deleted file mode 100644 index a1aa5e1ad..000000000 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPair.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2019 Google - * - * 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 - -@interface FIRInstanceIDKeyPair : NSObject - -- (instancetype)init __attribute__(( - unavailable("Use -initWithPrivateKey:publicKey:publicKeyData:privateKeyData: instead."))); -; - -/** - * Initialize a new 2048 bit RSA keypair. This also stores the keypair in the Keychain - * Preferences. - * - * @param publicKey The publicKey stored in Keychain. - * @param privateKey The privateKey stored in Keychain. - * @param publicKeyData The publicKey in NSData format. - * @param privateKeyData The privateKey in NSData format. - * - * @return A new KeyPair instance with the generated public and private key. - */ -- (instancetype)initWithPrivateKey:(SecKeyRef)privateKey - publicKey:(SecKeyRef)publicKey - publicKeyData:(NSData *)publicKeyData - privateKeyData:(NSData *)privateKeyData NS_DESIGNATED_INITIALIZER; - -/** - * The public key in the RSA 20148 bit generated KeyPair. - * - * @return The 2048 bit RSA KeyPair's public key. - */ -@property(nonatomic, readonly, strong) NSData *publicKeyData; - -/** - * The private key in the RSA 20148 bit generated KeyPair. - * - * @return The 2048 bit RSA KeyPair's private key. - */ -@property(nonatomic, readonly, strong) NSData *privateKeyData; - -#pragma mark - Info - -/** - * Checks if the private and public keyPair are valid or not. - * - * @return YES if keypair is valid else NO. - */ -- (BOOL)isValid; - -/** - * The public key in the RSA 2048 bit generated KeyPair. - * - * @return The 2048 bit RSA KeyPair's public key. - */ -- (SecKeyRef)publicKey; - -/** - * The private key in the RSA 2048 bit generated KeyPair. - * - * @return The 2048 bit RSA KeyPair's private key. - */ -- (SecKeyRef)privateKey; - -@end diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPair.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPair.m deleted file mode 100644 index 52b27c2ef..000000000 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPair.m +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2019 Google - * - * 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 "FIRInstanceIDKeyPair.h" - -#import - -#import "FIRInstanceIDKeyPairUtilities.h" -#import "FIRInstanceIDKeychain.h" -#import "FIRInstanceIDLogger.h" -#import "NSError+FIRInstanceID.h" - -@interface FIRInstanceIDKeyPair () { - SecKeyRef _privateKey; - SecKeyRef _publicKey; -} - -@property(nonatomic, readwrite, strong) NSData *publicKeyData; -@property(nonatomic, readwrite, strong) NSData *privateKeyData; -@end - -@implementation FIRInstanceIDKeyPair -- (instancetype)initWithPrivateKey:(SecKeyRef)privateKey - publicKey:(SecKeyRef)publicKey - publicKeyData:(NSData *)publicKeyData - privateKeyData:(NSData *)privateKeyData { - self = [super init]; - if (self) { - _privateKey = privateKey; - _publicKey = publicKey; - _publicKeyData = publicKeyData; - _privateKeyData = privateKeyData; - } - return self; -} - -- (void)dealloc { - if (_privateKey) { - CFRelease(_privateKey); - } - if (_publicKey) { - CFRelease(_publicKey); - } -} - -#pragma mark - Info - -- (BOOL)isValid { - return _privateKey != NULL && _publicKey != NULL; -} - -- (SecKeyRef)publicKey { - return _publicKey; -} - -- (SecKeyRef)privateKey { - return _privateKey; -} - -@end diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairStore.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairStore.h deleted file mode 100644 index 02c2896bb..000000000 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairStore.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2019 Google - * - * 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 - -@class FIRInstanceIDKeyPair; - -extern NSString *const kFIRInstanceIDKeyPairSubType; - -@class FIRInstanceIDKeyPairStore; - -@interface FIRInstanceIDKeyPairStore : NSObject - -/** - * Invalidates the cached keypairs in the Keychain, if needed. The keypair metadata plist is - * checked for existence. If the plist file does not exist, it is a signal of a new installation, - * and therefore the key pairs are not valid. - * - * Returns YES if keypair has been invalidated. - */ -- (BOOL)invalidateKeyPairsIfNeeded; - -/** - * Delete the cached RSA keypair from Keychain with the given subtype. - * - * @param subtype The subtype used to cache the RSA keypair in Keychain. - * @param handler The callback handler which is invoked when the keypair deletion is - * complete, with an error if there is any. - */ -- (void)deleteSavedKeyPairWithSubtype:(NSString *)subtype handler:(void (^)(NSError *))handler; - -/** - * Delete the plist that caches KeyPair generation timestamps. - * - * @param error The error if any while deleting the plist else nil. - * - * @return YES if the delete was successful else NO. - */ -- (BOOL)removeKeyPairCreationTimePlistWithError:(NSError **)error; - -/** - * Loads a cached KeyPair if it exists in the Keychain else generate a new - * one. If a keyPair already exists in memory this will just return that. This should - * not be called from the main thread since it could potentially lead to creating a new - * RSA-2048 bit keyPair which is an expensive operation. - * - * @param error The error, if any, while accessing the Keychain. - * - * @return A valid 2048 bit RSA key pair. - */ -- (FIRInstanceIDKeyPair *)loadKeyPairWithError:(NSError **)error; - -/** - * Check if the Keychain has any cached keypairs or not. - * - * @return YES if the Keychain has cached RSA KeyPairs else NO. - */ -- (BOOL)hasCachedKeyPairs; - -/** - * Return an identifier for the app instance. The result is a short identifier that can - * be used as a key when storing information about the app. This method will return the same - * ID as long as the application identity remains active. If the identity has been revoked or - * expired the method will generate and return a new identifier. - * - * @param error The error if any while loading the RSA KeyPair. - * - * @return The identifier, as url safe string. - */ -- (NSString *)appIdentityWithError:(NSError *__autoreleasing *)error; - -@end diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairStore.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairStore.m deleted file mode 100644 index 48a0d7c53..000000000 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairStore.m +++ /dev/null @@ -1,525 +0,0 @@ -/* - * Copyright 2019 Google - * - * 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 "FIRInstanceIDKeyPairStore.h" - -#import "FIRInstanceIDBackupExcludedPlist.h" -#import "FIRInstanceIDConstants.h" -#import "FIRInstanceIDKeyPair.h" -#import "FIRInstanceIDKeyPairUtilities.h" -#import "FIRInstanceIDKeychain.h" -#import "FIRInstanceIDLogger.h" -#import "FIRInstanceIDUtilities.h" -#import "NSError+FIRInstanceID.h" - -// NOTE: These values should be in sync with what InstanceID saves in as. -static NSString *const kFIRInstanceIDKeyPairStoreFileName = @"com.google.iid-keypair"; - -static NSString *const kFIRInstanceIDStoreKeyGenerationTime = @"cre"; - -static NSString *const kFIRInstanceIDStoreKeyPrefix = @"com.google.iid-"; -static NSString *const kFIRInstanceIDStoreKeyPublic = @"|P|"; -static NSString *const kFIRInstanceIDStoreKeyPrivate = @"|K|"; -static NSString *const kFIRInstanceIDStoreKeySubtype = @"|S|"; - -static NSString *const kFIRInstanceIDKeyPairPublicTagPrefix = @"com.google.iid.keypair.public-"; -static NSString *const kFIRInstanceIDKeyPairPrivateTagPrefix = @"com.google.iid.keypair.private-"; - -static const int kMaxMissingEntitlementErrorCount = 3; - -NSString *const kFIRInstanceIDKeyPairSubType = @""; - -// Query the key with NSData format -NSData *FIRInstanceIDKeyDataWithTag(NSString *tag) { - if (![tag length]) { - return NULL; - } - NSDictionary *queryKey = FIRInstanceIDKeyPairQuery(tag, YES, YES); - CFTypeRef result = [[FIRInstanceIDKeychain sharedInstance] itemWithQuery:queryKey]; - if (!result) { - return NULL; - } - return (__bridge NSData *)result; -} - -// Query the key given a tag -SecKeyRef FIRInstanceIDCachedKeyRefWithTag(NSString *tag) { - if (!tag.length) { - return NULL; - } - NSDictionary *queryKey = FIRInstanceIDKeyPairQuery(tag, YES, NO); - CFTypeRef result = [[FIRInstanceIDKeychain sharedInstance] itemWithQuery:queryKey]; - return (SecKeyRef)result; -} - -// Check if keypair has been migrated from the legacy to the new version -BOOL FIRInstanceIDHasMigratedKeyPair(NSString *legacyPublicKeyTag, NSString *newPublicKeyTag) { - NSData *oldPublicKeyData = FIRInstanceIDKeyDataWithTag(legacyPublicKeyTag); - NSData *newPublicKeyData = FIRInstanceIDKeyDataWithTag(newPublicKeyTag); - return [oldPublicKeyData isEqualToData:newPublicKeyData]; -} - -// The legacy value is hardcoded to be the same key. This is a potential problem in shared keychain -// environments. -NSString *FIRInstanceIDLegacyPublicTagWithSubtype(NSString *subtype) { - NSString *prefix = kFIRInstanceIDStoreKeyPrefix; - return [NSString stringWithFormat:@"%@%@%@", prefix, subtype, kFIRInstanceIDStoreKeyPublic]; -} - -// The legacy value is hardcoded to be the same key. This is a potential problem in shared keychain -// environments. -NSString *FIRInstanceIDLegacyPrivateTagWithSubtype(NSString *subtype) { - NSString *prefix = kFIRInstanceIDStoreKeyPrefix; - return [NSString stringWithFormat:@"%@%@%@", prefix, subtype, kFIRInstanceIDStoreKeyPrivate]; -} - -NSString *FIRInstanceIDPublicTagWithSubtype(NSString *subtype) { - static NSString *publicTag; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - NSString *mainAppBundleID = FIRInstanceIDAppIdentifier(); - publicTag = - [NSString stringWithFormat:@"%@%@", kFIRInstanceIDKeyPairPublicTagPrefix, mainAppBundleID]; - }); - return publicTag; -} - -NSString *FIRInstanceIDPrivateTagWithSubtype(NSString *subtype) { - static NSString *privateTag; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - NSString *mainAppBundleID = FIRInstanceIDAppIdentifier(); - privateTag = - [NSString stringWithFormat:@"%@%@", kFIRInstanceIDKeyPairPrivateTagPrefix, mainAppBundleID]; - }); - return privateTag; -} - -NSString *FIRInstanceIDCreationTimeKeyWithSubtype(NSString *subtype) { - return [NSString stringWithFormat:@"%@%@%@", subtype, kFIRInstanceIDStoreKeySubtype, - kFIRInstanceIDStoreKeyGenerationTime]; -} - -@interface FIRInstanceIDKeyPairStore () - -@property(nonatomic, readwrite, strong) FIRInstanceIDBackupExcludedPlist *plist; -@property(atomic, readwrite, strong) FIRInstanceIDKeyPair *keyPair; -@property(nonatomic, readwrite, assign) NSInteger keychainEntitlementsErrorCount; - -@end - -@implementation FIRInstanceIDKeyPairStore - -- (instancetype)init { - self = [super init]; - if (self) { - NSString *fileName = [[self class] keyStoreFileName]; - _plist = - [[FIRInstanceIDBackupExcludedPlist alloc] initWithFileName:fileName - subDirectory:kFIRInstanceIDSubDirectoryName]; - } - return self; -} - -- (BOOL)invalidateKeyPairsIfNeeded { - // Currently keypairs are always invalidated if self.plist is missing. This normally indicates - // a fresh install (or an uninstall/reinstall). In those situations the key pairs should be - // deleted. - // NOTE: Although this class refers to multiple key pairs, with different subtypes, in practice - // only a single subtype is currently supported. (b/64906549) - if (![self.plist doesFileExist]) { - // A fresh install, clear all the key pairs in the key chain. Do not perform migration as all - // key pairs are gone. - [self deleteSavedKeyPairWithSubtype:kFIRInstanceIDKeyPairSubType handler:nil]; - return YES; - } - // Not a fresh install, perform migration at early state. - [self migrateKeyPairCacheIfNeededWithHandler:nil]; - return NO; -} - -- (BOOL)hasCachedKeyPairs { - NSError *error; - if ([self cachedKeyPairWithSubtype:kFIRInstanceIDKeyPairSubType error:&error] == nil) { - if (error) { - FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeKeyPairStore000, - @"Failed to get the cached keyPair %@", error); - } - error = nil; - [self removeKeyPairCreationTimePlistWithError:&error]; - if (error) { - FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeKeyPairStore001, - @"Failed to remove keyPair creationTime plist %@", error); - } - return NO; - } - return YES; -} - -- (NSString *)appIdentityWithError:(NSError *__autoreleasing *)error { - // Load the keyPair from Keychain (or generate a key pair, if this is the first run of the app). - FIRInstanceIDKeyPair *keyPair = [self loadKeyPairWithError:error]; - if (!keyPair) { - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeKeyPairStoreCouldNotLoadKeyPair, - @"Keypair could not be loaded from Keychain. Error: %@", (*error)); - return nil; - } - - if (error) { - *error = nil; - } - NSString *appIdentity = FIRInstanceIDAppIdentity(keyPair); - if (!appIdentity.length) { - if (error) { - *error = [NSError errorWithFIRInstanceIDErrorCode:kFIRInstanceIDErrorCodeUnknown]; - } - } - return appIdentity; -} - -- (FIRInstanceIDKeyPair *)loadKeyPairWithError:(NSError **)error { - // In case we call this from different threads we don't want to generate or fetch the - // keyPair multiple times. Once we have a keyPair in the cache it would mostly be used - // from there. - @synchronized(self) { - if ([self.keyPair isValid]) { - return self.keyPair; - } - - if (self.keychainEntitlementsErrorCount >= kMaxMissingEntitlementErrorCount) { - FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeKeyPairStore002, - @"Keychain not accessible, Entitlements missing error (-34018). " - @"Will not check token in cache."); - return nil; - } - - if (!self.keyPair) { - self.keyPair = [self validCachedKeyPairWithSubtype:kFIRInstanceIDKeyPairSubType error:error]; - } - - if ((*error).code == kFIRInstanceIDSecMissingEntitlementErrorCode) { - self.keychainEntitlementsErrorCount++; - } - - if (!self.keyPair) { - self.keyPair = [self generateAndSaveKeyWithSubtype:kFIRInstanceIDKeyPairSubType - creationTime:FIRInstanceIDCurrentTimestampInSeconds() - error:error]; - } - } - return self.keyPair; -} - -// TODO(chliangGoogle: Remove subtype support, as it's not being used. -- (FIRInstanceIDKeyPair *)generateAndSaveKeyWithSubtype:(NSString *)subtype - creationTime:(int64_t)creationTime - error:(NSError **)error { - NSString *publicKeyTag = FIRInstanceIDPublicTagWithSubtype(subtype); - NSString *privateKeyTag = FIRInstanceIDPrivateTagWithSubtype(subtype); - FIRInstanceIDKeyPair *keyPair = - [[FIRInstanceIDKeychain sharedInstance] generateKeyPairWithPrivateTag:privateKeyTag - publicTag:publicKeyTag]; - - if (![keyPair isValid]) { - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeKeyPairStore003, - @"Unable to generate keypair."); - return nil; - } - - NSString *creationTimeKey = FIRInstanceIDCreationTimeKeyWithSubtype(subtype); - NSDictionary *keyPairData = @{creationTimeKey : @(creationTime)}; - - if (error) { - *error = nil; - } - NSMutableDictionary *allKeyPairs = [[self.plist contentAsDictionary] mutableCopy]; - if (allKeyPairs.count) { - [allKeyPairs addEntriesFromDictionary:keyPairData]; - } else { - allKeyPairs = [keyPairData mutableCopy]; - } - if (![self.plist writeDictionary:allKeyPairs error:error]) { - [FIRInstanceIDKeyPairStore deleteKeyPairWithPrivateTag:privateKeyTag - publicTag:publicKeyTag - handler:nil]; - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeKeyPairStore004, - @"Failed to save keypair data to plist %@", error ? *error : @""); - return nil; - } - - return keyPair; -} - -- (FIRInstanceIDKeyPair *)validCachedKeyPairWithSubtype:(NSString *)subtype - error:(NSError **)error { - // On a new install (or if the ID was deleted), the plist will be missing, which should trigger - // a reset of the key pairs in Keychain (if they exist). - NSDictionary *allKeyPairs = [self.plist contentAsDictionary]; - NSString *creationTimeKey = FIRInstanceIDCreationTimeKeyWithSubtype(subtype); - - if (allKeyPairs[creationTimeKey] > 0) { - return [self cachedKeyPairWithSubtype:subtype error:error]; - } else { - // There is no need to reset keypair again here as FIRInstanceID init call is always - // going to be ahead of this call, which already trigger keypair reset if it's new install - FIRInstanceIDErrorCode code = kFIRInstanceIDErrorCodeInvalidKeyPairCreationTime; - if (error) { - *error = [NSError errorWithFIRInstanceIDErrorCode:code]; - } - return nil; - } -} - -- (FIRInstanceIDKeyPair *)cachedKeyPairWithSubtype:(NSString *)subtype - error:(NSError *__autoreleasing *)error { - // base64 encoded keys - NSString *publicKeyTag = FIRInstanceIDPublicTagWithSubtype(subtype); - NSString *privateKeyTag = FIRInstanceIDPrivateTagWithSubtype(subtype); - return [FIRInstanceIDKeyPairStore keyPairForPrivateKeyTag:privateKeyTag - publicKeyTag:publicKeyTag - error:error]; -} - -+ (FIRInstanceIDKeyPair *)keyPairForPrivateKeyTag:(NSString *)privateKeyTag - publicKeyTag:(NSString *)publicKeyTag - error:(NSError *__autoreleasing *)error { - if (![privateKeyTag length] || ![publicKeyTag length]) { - if (error) { - *error = [NSError errorWithFIRInstanceIDErrorCode:kFIRInstanceIDErrorCodeInvalidKeyPairTags]; - } - return nil; - } - - SecKeyRef privateKeyRef = FIRInstanceIDCachedKeyRefWithTag(privateKeyTag); - SecKeyRef publicKeyRef = FIRInstanceIDCachedKeyRefWithTag(publicKeyTag); - - if (!privateKeyRef || !publicKeyRef) { - if (error) { - *error = [NSError errorWithFIRInstanceIDErrorCode:kFIRInstanceIDErrorCodeMissingKeyPair]; - } - FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeKeyPair000, - @"No keypair info is found with tag %@", privateKeyTag); - return nil; - } - - NSData *publicKeyData = FIRInstanceIDKeyDataWithTag(publicKeyTag); - NSData *privateKeyData = FIRInstanceIDKeyDataWithTag(privateKeyTag); - - FIRInstanceIDKeyPair *keyPair = [[FIRInstanceIDKeyPair alloc] initWithPrivateKey:privateKeyRef - publicKey:publicKeyRef - publicKeyData:publicKeyData - privateKeyData:privateKeyData]; - return keyPair; -} - -// Migrates from keypair saved under legacy keys (hardcoded value) to dynamic keys (stable, but -// unique for the app's bundle id -- (void)migrateKeyPairCacheIfNeededWithHandler:(void (^)(NSError *error))handler { - // Attempt to load keypair using legacy keys - NSString *legacyPublicKeyTag = - FIRInstanceIDLegacyPublicTagWithSubtype(kFIRInstanceIDKeyPairSubType); - NSString *legacyPrivateKeyTag = - FIRInstanceIDLegacyPrivateTagWithSubtype(kFIRInstanceIDKeyPairSubType); - NSError *error; - FIRInstanceIDKeyPair *keyPair = - [FIRInstanceIDKeyPairStore keyPairForPrivateKeyTag:legacyPrivateKeyTag - publicKeyTag:legacyPublicKeyTag - error:&error]; - if (![keyPair isValid]) { - FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeKeyPairNoLegacyKeyPair, - @"There's no legacy keypair so no need to do migration."); - if (handler) { - handler(nil); - } - return; - } - - // Check whether migration already done. - NSString *publicKeyTag = FIRInstanceIDPublicTagWithSubtype(kFIRInstanceIDKeyPairSubType); - if (FIRInstanceIDHasMigratedKeyPair(legacyPublicKeyTag, publicKeyTag)) { - if (handler) { - handler(nil); - } - return; - } - - // Also cache locally since we are sure to use the migrated key pair. - self.keyPair = keyPair; - - // Either new key pair doesn't exist or it's different than legacy key pair, start the migration. - __block NSError *updateKeyRefError; - - NSString *privateKeyTag = FIRInstanceIDPrivateTagWithSubtype(kFIRInstanceIDKeyPairSubType); - [self updateKeyRef:keyPair.publicKey - withTag:publicKeyTag - handler:^(NSError *error) { - if (error) { - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeKeyPairMigrationError, - @"Unable to migrate key pair from legacy ones."); - updateKeyRefError = error; - } - }]; - - [self updateKeyRef:keyPair.privateKey - withTag:privateKeyTag - handler:^(NSError *error) { - if (error) { - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeKeyPairMigrationError, - @"Unable to migrate key pair from legacy ones."); - updateKeyRefError = error; - } - - if (handler) { - handler(updateKeyRefError); - } - }]; -} - -// Used for migrating from legacy tags to updated tags. The legacy keychain is not deleted for -// backward compatibility. -// TODO(chliangGoogle) Delete the legacy keychain when GCM is fully deprecated. -- (void)updateKeyRef:(SecKeyRef)keyRef - withTag:(NSString *)tag - handler:(void (^)(NSError *error))handler { - NSData *updatedTagData = [tag dataUsingEncoding:NSUTF8StringEncoding]; - - __block NSError *keychainError; - - // Always delete the old keychain before adding a new one to avoid conflicts. - NSDictionary *deleteQuery = @{ - (__bridge id)kSecAttrApplicationTag : updatedTagData, - (__bridge id)kSecClass : (__bridge id)kSecClassKey, - (__bridge id)kSecAttrKeyType : (__bridge id)kSecAttrKeyTypeRSA, - (__bridge id)kSecReturnRef : @(YES), - }; - [[FIRInstanceIDKeychain sharedInstance] removeItemWithQuery:deleteQuery - handler:^(NSError *error) { - if (error) { - keychainError = error; - } - }]; - - NSDictionary *addQuery = @{ - (__bridge id)kSecAttrApplicationTag : updatedTagData, - (__bridge id)kSecClass : (__bridge id)kSecClassKey, - (__bridge id)kSecValueRef : (__bridge id)keyRef, - (__bridge id)kSecAttrAccessible : (__bridge id)kSecAttrAccessibleAlwaysThisDeviceOnly, - }; - [[FIRInstanceIDKeychain sharedInstance] addItemWithQuery:addQuery - handler:^(NSError *addError) { - if (addError) { - keychainError = addError; - } - - if (handler) { - handler(keychainError); - } - }]; -} - -- (void)deleteSavedKeyPairWithSubtype:(NSString *)subtype - handler:(void (^)(NSError *error))handler { - NSDictionary *allKeyPairs = [self.plist contentAsDictionary]; - - NSString *publicKeyTag = FIRInstanceIDPublicTagWithSubtype(subtype); - NSString *privateKeyTag = FIRInstanceIDPrivateTagWithSubtype(subtype); - NSString *creationTimeKey = FIRInstanceIDCreationTimeKeyWithSubtype(subtype); - - // remove the creation time - if (allKeyPairs[creationTimeKey] > 0) { - NSMutableDictionary *newKeyPairs = [NSMutableDictionary dictionaryWithDictionary:allKeyPairs]; - [newKeyPairs removeObjectForKey:creationTimeKey]; - - NSError *plistError; - if (![self.plist writeDictionary:newKeyPairs error:&plistError]) { - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeKeyPairStore006, - @"Unable to remove keypair creation time from plist %@", plistError); - } - } - - self.keyPair = nil; - - [FIRInstanceIDKeyPairStore - deleteKeyPairWithPrivateTag:privateKeyTag - publicTag:publicKeyTag - handler:^(NSError *error) { - // Delete legacy key pairs from GCM/FCM If they exist. All key pairs - // should be deleted when app is newly installed. - NSString *legacyPublicKeyTag = - FIRInstanceIDLegacyPublicTagWithSubtype(subtype); - NSString *legacyPrivateKeyTag = - FIRInstanceIDLegacyPrivateTagWithSubtype(subtype); - [FIRInstanceIDKeyPairStore - deleteKeyPairWithPrivateTag:legacyPrivateKeyTag - publicTag:legacyPublicKeyTag - handler:nil]; - if (error) { - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeKeyPairStore007, - @"Unable to remove RSA keypair, error: %@", - error); - if (handler) { - handler(error); - } - } else { - if (handler) { - handler(nil); - } - } - }]; -} - -+ (void)deleteKeyPairWithPrivateTag:(NSString *)privateTag - publicTag:(NSString *)publicTag - handler:(void (^)(NSError *))handler { - NSDictionary *queryPublicKey = FIRInstanceIDKeyPairQuery(publicTag, NO, NO); - NSDictionary *queryPrivateKey = FIRInstanceIDKeyPairQuery(privateTag, NO, NO); - - __block NSError *keychainError; - - // Always remove public key first because it is the key we generate IID. - [[FIRInstanceIDKeychain sharedInstance] removeItemWithQuery:queryPublicKey - handler:^(NSError *error) { - if (error) { - keychainError = error; - } - }]; - - [[FIRInstanceIDKeychain sharedInstance] removeItemWithQuery:queryPrivateKey - handler:^(NSError *error) { - if (error) { - keychainError = error; - } - - if (handler) { - handler(keychainError); - } - }]; -} - -- (BOOL)removeKeyPairCreationTimePlistWithError:(NSError *__autoreleasing *)error { - if (![self.plist deleteFile:error]) { - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeKeyPairStore008, - @"Unable to delete keypair creation times plist"); - return NO; - } - return YES; -} - -+ (NSString *)keyStoreFileName { - return kFIRInstanceIDKeyPairStoreFileName; -} - -@end diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.h deleted file mode 100644 index b8baa6af2..000000000 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2019 Google - * - * 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 - -@class FIRInstanceIDKeyPair; - -/** - * A web-safe base64 encoded string with no padding. - * - * @param data The data to encode. - * - * @return A web-safe base 64 encoded string with no padding. - */ -FOUNDATION_EXPORT NSString *FIRInstanceIDWebSafeBase64(NSData *data); - -FOUNDATION_EXPORT NSData *FIRInstanceIDSHA1(NSData *data); - -FOUNDATION_EXPORT NSDictionary *FIRInstanceIDKeyPairQuery(NSString *tag, - BOOL addReturnAttr, - BOOL returnData); - -FOUNDATION_EXPORT NSString *FIRInstanceIDAppIdentity(FIRInstanceIDKeyPair *keyPair); diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.m deleted file mode 100644 index 021d94b68..000000000 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.m +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2019 Google - * - * 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 "FIRInstanceIDKeyPairUtilities.h" - -#import - -#import "FIRInstanceIDKeyPair.h" -#import "FIRInstanceIDLogger.h" -#import "FIRInstanceIDStringEncoding.h" - -NSString *FIRInstanceIDWebSafeBase64(NSData *data) { - // Websafe encoding with no padding. - FIRInstanceIDStringEncoding *encoding = - [FIRInstanceIDStringEncoding rfc4648Base64WebsafeStringEncoding]; - [encoding setDoPad:NO]; - return [encoding encode:data]; -} - -NSData *FIRInstanceIDSHA1(NSData *data) { - unsigned int outputLength = CC_SHA1_DIGEST_LENGTH; - unsigned char output[outputLength]; - unsigned int length = (unsigned int)[data length]; - - CC_SHA1(data.bytes, length, output); - return [NSMutableData dataWithBytes:output length:outputLength]; -} - -NSDictionary *FIRInstanceIDKeyPairQuery(NSString *tag, BOOL addReturnAttr, BOOL returnData) { - NSMutableDictionary *queryKey = [NSMutableDictionary dictionary]; - NSData *tagData = [tag dataUsingEncoding:NSUTF8StringEncoding]; - - queryKey[(__bridge id)kSecClass] = (__bridge id)kSecClassKey; - queryKey[(__bridge id)kSecAttrApplicationTag] = tagData; - queryKey[(__bridge id)kSecAttrKeyType] = (__bridge id)kSecAttrKeyTypeRSA; - if (addReturnAttr) { - if (returnData) { - queryKey[(__bridge id)kSecReturnData] = @(YES); - } else { - queryKey[(__bridge id)kSecReturnRef] = @(YES); - } - } - return queryKey; -} - -NSString *FIRInstanceIDAppIdentity(FIRInstanceIDKeyPair *keyPair) { - // An Instance-ID is a 64 bit (8 byte) integer with a fixed 4-bit header of 0111 (=^ 0x7). - // The variable 60 bits are obtained by truncating the SHA1 of the app-instance's public key. - SecKeyRef publicKeyRef = [keyPair publicKey]; - if (!publicKeyRef) { - FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeKeyPair002, - @"Unable to create a valid asymmetric crypto key"); - return nil; - } - NSData *publicKeyData = keyPair.publicKeyData; - NSData *publicKeySHA1 = FIRInstanceIDSHA1(publicKeyData); - - const uint8_t *bytes = publicKeySHA1.bytes; - NSMutableData *identityData = [NSMutableData dataWithData:publicKeySHA1]; - - uint8_t b0 = bytes[0]; - // Take the first byte and make the initial four 7 by initially making the initial 4 bits 0 - // and then adding 0x70 to it. - b0 = 0x70 + (0xF & b0); - // failsafe should give you back b0 itself - b0 = (b0 & 0xFF); - [identityData replaceBytesInRange:NSMakeRange(0, 1) withBytes:&b0]; - NSData *data = [identityData subdataWithRange:NSMakeRange(0, 8 * sizeof(Byte))]; - return FIRInstanceIDWebSafeBase64(data); -} diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeychain.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeychain.h index 0bd2a4933..1c80d8e34 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeychain.h +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeychain.h @@ -19,8 +19,6 @@ /* The Keychain error domain */ extern NSString *const kFIRInstanceIDKeychainErrorDomain; -@class FIRInstanceIDKeyPair; - /* * Wrapping the keychain operations in a serialize queue. This is to avoid keychain operation * blocking main queue. @@ -61,16 +59,4 @@ extern NSString *const kFIRInstanceIDKeychainErrorDomain; */ - (void)addItemWithQuery:(NSDictionary *)keychainQuery handler:(void (^)(NSError *))handler; -#pragma mark - Keypair -/** - * Generate a public/private key pair given their tags. - * - * @param privateTag The private tag associated with the private key. - * @param publicTag The public tag associated with the public key. - * - * @return A new FIRInstanceIDKeyPair object. - */ -- (FIRInstanceIDKeyPair *)generateKeyPairWithPrivateTag:(NSString *)privateTag - publicTag:(NSString *)publicTag; - @end diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeychain.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeychain.m index 81c73727e..df1b4f763 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeychain.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeychain.m @@ -16,14 +16,10 @@ #import "FIRInstanceIDKeychain.h" -#import "FIRInstanceIDKeyPair.h" -#import "FIRInstanceIDKeyPairUtilities.h" #import "FIRInstanceIDLogger.h" NSString *const kFIRInstanceIDKeychainErrorDomain = @"com.google.iid"; -static const NSUInteger kRSA2048KeyPairSize = 2048; - @interface FIRInstanceIDKeychain () { dispatch_queue_t _keychainOperationQueue; } @@ -115,60 +111,4 @@ static const NSUInteger kRSA2048KeyPairSize = 2048; }); } -- (FIRInstanceIDKeyPair *)generateKeyPairWithPrivateTag:(NSString *)privateTag - publicTag:(NSString *)publicTag { - // TODO(chliangGoogle) this is called by appInstanceID, which is an internal API used by other - // Firebase teams, will see if we can make it async. - NSData *publicTagData = [publicTag dataUsingEncoding:NSUTF8StringEncoding]; - NSData *privateTagData = [privateTag dataUsingEncoding:NSUTF8StringEncoding]; - - NSDictionary *privateKeyAttr = @{ - (__bridge id)kSecAttrIsPermanent : @YES, - (__bridge id)kSecAttrApplicationTag : privateTagData, - (__bridge id)kSecAttrLabel : @"Firebase InstanceID Key Pair Private Key", - (__bridge id)kSecAttrAccessible : (__bridge id)kSecAttrAccessibleAlwaysThisDeviceOnly, - }; - - NSDictionary *publicKeyAttr = @{ - (__bridge id)kSecAttrIsPermanent : @YES, - (__bridge id)kSecAttrApplicationTag : publicTagData, - (__bridge id)kSecAttrLabel : @"Firebase InstanceID Key Pair Public Key", - (__bridge id)kSecAttrAccessible : (__bridge id)kSecAttrAccessibleAlwaysThisDeviceOnly, - }; - - NSDictionary *keyPairAttributes = @{ - (__bridge id)kSecAttrKeyType : (__bridge id)kSecAttrKeyTypeRSA, - (__bridge id)kSecAttrLabel : @"Firebase InstanceID Key Pair", - (__bridge id)kSecAttrKeySizeInBits : @(kRSA2048KeyPairSize), - (__bridge id)kSecPrivateKeyAttrs : privateKeyAttr, - (__bridge id)kSecPublicKeyAttrs : publicKeyAttr, - }; - - __block SecKeyRef privateKey = NULL; - __block SecKeyRef publicKey = NULL; - dispatch_sync(_keychainOperationQueue, ^{ - // SecKeyGeneratePair does not allow you to set kSetAttrAccessible on the keys. We need the keys - // to be accessible even when the device is locked (i.e. app is woken up during a push - // notification, or some background refresh). - OSStatus status = - SecKeyGeneratePair((__bridge CFDictionaryRef)keyPairAttributes, &publicKey, &privateKey); - if (status != noErr || publicKey == NULL || privateKey == NULL) { - FIRInstanceIDLoggerWarning(kFIRInstanceIDKeychainCreateKeyPairError, - @"Couldn't create keypair from Keychain OSStatus: %d", - (int)status); - } - }); - // Extract the actual public and private key data from the Keychain - NSDictionary *publicKeyDataQuery = FIRInstanceIDKeyPairQuery(publicTag, YES, YES); - NSDictionary *privateKeyDataQuery = FIRInstanceIDKeyPairQuery(privateTag, YES, YES); - - NSData *publicKeyData = (__bridge NSData *)[self itemWithQuery:publicKeyDataQuery]; - NSData *privateKeyData = (__bridge NSData *)[self itemWithQuery:privateKeyDataQuery]; - - return [[FIRInstanceIDKeyPair alloc] initWithPrivateKey:privateKey - publicKey:publicKey - publicKeyData:publicKeyData - privateKeyData:privateKeyData]; -} - @end diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.h index 58368d041..b6723fda0 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.h +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.h @@ -23,7 +23,7 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithAuthorizedEntity:(nullable NSString *)authorizedEntity scope:(nullable NSString *)scope checkinPreferences:(FIRInstanceIDCheckinPreferences *)checkinPreferences - keyPair:(nullable FIRInstanceIDKeyPair *)keyPair + instanceID:(nullable NSString *)instanceID action:(FIRInstanceIDTokenAction)action; @end diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m index 365f321bd..34511c434 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m @@ -29,23 +29,21 @@ - (instancetype)initWithAuthorizedEntity:(NSString *)authorizedEntity scope:(NSString *)scope checkinPreferences:(FIRInstanceIDCheckinPreferences *)checkinPreferences - keyPair:(FIRInstanceIDKeyPair *)keyPair + instanceID:(NSString *)instanceID action:(FIRInstanceIDTokenAction)action { self = [super initWithAction:action forAuthorizedEntity:authorizedEntity scope:scope options:nil checkinPreferences:checkinPreferences - keyPair:keyPair]; + instanceID:instanceID]; if (self) { } return self; } - (void)performTokenOperation { - NSString *authHeader = - [FIRInstanceIDTokenOperation HTTPAuthHeaderFromCheckin:self.checkinPreferences]; - NSMutableURLRequest *request = [FIRInstanceIDTokenOperation requestWithAuthHeader:authHeader]; + NSMutableURLRequest *request = [self tokenRequest]; // Build form-encoded body NSString *deviceAuthID = self.checkinPreferences.deviceID; @@ -62,8 +60,8 @@ } // Typically we include our public key-signed url items, but in some cases (like deleting all FCM // tokens), we don't. - if (self.keyPair != nil) { - [queryItems addObjectsFromArray:[self queryItemsWithKeyPair:self.keyPair]]; + if (self.instanceID.length > 0) { + [queryItems addObjectsFromArray:[self queryItemsWithInstanceID:self.instanceID]]; } NSString *content = FIRInstanceIDQueryFromQueryItems(queryItems); diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h index 87be60fc0..6fa800eff 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h @@ -20,13 +20,15 @@ NS_ASSUME_NONNULL_BEGIN FOUNDATION_EXPORT NSString *const kFIRInstanceIDFirebaseUserAgentKey; +FOUNDATION_EXPORT NSString *const kFIRInstanceIDFirebaseHeartbeatKey; + @interface FIRInstanceIDTokenFetchOperation : FIRInstanceIDTokenOperation - (instancetype)initWithAuthorizedEntity:(NSString *)authorizedEntity scope:(NSString *)scope options:(nullable NSDictionary *)options checkinPreferences:(FIRInstanceIDCheckinPreferences *)checkinPreferences - keyPair:(FIRInstanceIDKeyPair *)keyPair; + instanceID:(NSString *)instanceID; @end NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m index 0689b3fba..bdc87014f 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m @@ -26,6 +26,7 @@ #import "NSError+FIRInstanceID.h" #import +#import // We can have a static int since this error should theoretically only // happen once (for the first time). If it repeats there is something @@ -33,6 +34,8 @@ static int phoneRegistrationErrorRetryCount = 0; static const int kMaxPhoneRegistrationErrorRetryCount = 10; NSString *const kFIRInstanceIDFirebaseUserAgentKey = @"X-firebase-client"; +NSString *const kFIRInstanceIDFirebaseHeartbeatKey = @"X-firebase-client-log-type"; +NSString *const kFIRInstanceIDHeartbeatTag = @"fire-iid"; @implementation FIRInstanceIDTokenFetchOperation @@ -40,26 +43,26 @@ NSString *const kFIRInstanceIDFirebaseUserAgentKey = @"X-firebase-client"; scope:(NSString *)scope options:(nullable NSDictionary *)options checkinPreferences:(FIRInstanceIDCheckinPreferences *)checkinPreferences - keyPair:(FIRInstanceIDKeyPair *)keyPair { + instanceID:(NSString *)instanceID { self = [super initWithAction:FIRInstanceIDTokenActionFetch forAuthorizedEntity:authorizedEntity scope:scope options:options checkinPreferences:checkinPreferences - keyPair:keyPair]; + instanceID:instanceID]; if (self) { } return self; } - (void)performTokenOperation { - NSString *authHeader = - [FIRInstanceIDTokenOperation HTTPAuthHeaderFromCheckin:self.checkinPreferences]; - NSMutableURLRequest *request = [[self class] requestWithAuthHeader:authHeader]; + NSMutableURLRequest *request = [self tokenRequest]; NSString *checkinVersionInfo = self.checkinPreferences.versionInfo; [request setValue:checkinVersionInfo forHTTPHeaderField:@"info"]; [request setValue:[FIRApp firebaseUserAgent] forHTTPHeaderField:kFIRInstanceIDFirebaseUserAgentKey]; + [request setValue:@([FIRHeartbeatInfo heartbeatCodeForTag:kFIRInstanceIDHeartbeatTag]).stringValue + forHTTPHeaderField:kFIRInstanceIDFirebaseHeartbeatKey]; // Build form-encoded body NSString *deviceAuthID = self.checkinPreferences.deviceID; @@ -70,7 +73,7 @@ NSString *const kFIRInstanceIDFirebaseUserAgentKey = @"X-firebase-client"; [queryItems addObject:[FIRInstanceIDURLQueryItem queryItemWithName:@"X-subtype" value:self.authorizedEntity]]; - [queryItems addObjectsFromArray:[self queryItemsWithKeyPair:self.keyPair]]; + [queryItems addObjectsFromArray:[self queryItemsWithInstanceID:self.instanceID]]; // Create query items from passed-in options id apnsTokenData = self.options[kFIRInstanceIDTokenOptionsAPNSKey]; diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenInfo.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenInfo.h index 34ad71662..3b752a3aa 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenInfo.h +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenInfo.h @@ -74,8 +74,18 @@ NS_ASSUME_NONNULL_BEGIN * 2. Language setting is not changed. * 3. App version is current. * 4. GMP App ID is current. + * 5. token is consistent with the current IID. + * 6. APNS info has changed. + * @param IID The app identifiier that is used to check if token is prefixed with. + * @return If token is fresh. + * */ -- (BOOL)isFresh; +- (BOOL)isFreshWithIID:(NSString *)IID; + +/* + * Check whether the token is default token. + */ +- (BOOL)isDefaultToken; @end diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenInfo.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenInfo.m index 5bb0017d8..59b0e9240 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenInfo.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenInfo.m @@ -16,6 +16,7 @@ #import "FIRInstanceIDTokenInfo.h" +#import "FIRInstanceIDConstants.h" #import "FIRInstanceIDLogger.h" #import "FIRInstanceIDUtilities.h" @@ -65,13 +66,21 @@ const NSTimeInterval kDefaultFetchTokenInterval = 7 * 24 * 60 * 60; // 7 days. return self; } -- (BOOL)isFresh { +- (BOOL)isFreshWithIID:(NSString *)IID { // Last fetch token cache time could be null if token is from legacy storage format. Then token is // considered not fresh and should be refreshed and overwrite with the latest storage format. + if (!IID) { + return NO; + } if (!_cacheTime) { return NO; } + // Check if it's consistent with IID + if (![self.token hasPrefix:IID]) { + return NO; + } + // Check if app has just been updated to a new version. NSString *currentAppVersion = FIRInstanceIDCurrentAppVersion(); if (!_appVersion || ![_appVersion isEqualToString:currentAppVersion]) { @@ -105,6 +114,11 @@ const NSTimeInterval kDefaultFetchTokenInterval = 7 * 24 * 60 * 60; // 7 days. NSTimeInterval timeSinceLastFetchToken = currentTimestamp - lastFetchTokenTimestamp; return (timeSinceLastFetchToken < kDefaultFetchTokenInterval); } + +- (BOOL)isDefaultToken { + return [self.scope isEqualToString:kFIRInstanceIDDefaultTokenScope]; +} + #pragma mark - NSCoding - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenManager.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenManager.h index 491b99c4a..46e1ac887 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenManager.h +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenManager.h @@ -18,7 +18,6 @@ @class FIRInstanceIDAuthService; @class FIRInstanceIDCheckinPreferences; -@class FIRInstanceIDKeyPair; @class FIRInstanceIDTokenInfo; @class FIRInstanceIDStore; @@ -46,7 +45,7 @@ typedef NS_OPTIONS(NSUInteger, FIRInstanceIDInvalidTokenReason) { * * @param authorizedEntity The authorized entity for the token, should not be nil. * @param scope The scope for the token, should not be nil. - * @param keyPair The keyPair that represents the app identity. + * @param instanceID The unique string identifying the app instance. * @param options The options to be added to the fetch request. * @param handler The handler to be invoked once we have the token or the * fetch request to InstanceID backend results in an error. Also @@ -55,7 +54,7 @@ typedef NS_OPTIONS(NSUInteger, FIRInstanceIDInvalidTokenReason) { */ - (void)fetchNewTokenWithAuthorizedEntity:(NSString *)authorizedEntity scope:(NSString *)scope - keyPair:(FIRInstanceIDKeyPair *)keyPair + instanceID:(NSString *)instanceID options:(NSDictionary *)options handler:(FIRInstanceIDTokenHandler)handler; @@ -77,7 +76,7 @@ typedef NS_OPTIONS(NSUInteger, FIRInstanceIDInvalidTokenReason) { * * @param authorizedEntity The authorized entity for the token, should not be nil. * @param scope The scope for the token, should not be nil. - * @param keyPair The keyPair that represents the app identity. + * @param instanceID The unique string identifying the app instance. * @param handler The handler to be invoked once the delete request to * InstanceID backend has returned. If the request was * successful we invoke the handler with a nil error; @@ -87,21 +86,21 @@ typedef NS_OPTIONS(NSUInteger, FIRInstanceIDInvalidTokenReason) { */ - (void)deleteTokenWithAuthorizedEntity:(NSString *)authorizedEntity scope:(NSString *)scope - keyPair:(FIRInstanceIDKeyPair *)keyPair + instanceID:(NSString *)instanceID handler:(FIRInstanceIDDeleteTokenHandler)handler; /** * Deletes all cached tokens from the persistent store. This method should only be triggered * when InstanceID is deleted * - * @param keyPair The keyPair for the given app. - * @param handler The handler to be invoked once the delete request to InstanceID backend - * has returned. If the request was successful we invoke the handler with - * a nil error; else we pass in an appropriate error. This should be non-nil - * and be called asynchronously. + * @param instanceID The unique string identifying the app instance. + * @param handler The handler to be invoked once the delete request to InstanceID backend + * has returned. If the request was successful we invoke the handler with + * a nil error; else we pass in an appropriate error. This should be non-nil + * and be called asynchronously. */ -- (void)deleteAllTokensWithKeyPair:(FIRInstanceIDKeyPair *)keyPair - handler:(FIRInstanceIDDeleteHandler)handler; +- (void)deleteAllTokensWithInstanceID:(NSString *)instanceID + handler:(FIRInstanceIDDeleteHandler)handler; /** * Deletes all cached tokens from the persistent store. @@ -121,13 +120,14 @@ typedef NS_OPTIONS(NSUInteger, FIRInstanceIDInvalidTokenReason) { /** * Invalidate any cached tokens, if the app version has changed since last launch or if the token * is cached for more than 7 days. + * @param IID The cached instanceID, check if token is prefixed by such IID. * * @return Whether we should fetch default token from server. * * @discussion This should safely be called prior to any tokens being retrieved from * the cache or being fetched from the network. */ -- (BOOL)checkForTokenRefreshPolicy; +- (BOOL)checkTokenRefreshPolicyWithIID:(NSString *)IID; /** * Upon being provided with different APNs or sandbox, any locally cached tokens diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenManager.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenManager.m index 0c4f644f3..0ebcfc889 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenManager.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenManager.m @@ -71,7 +71,7 @@ - (void)fetchNewTokenWithAuthorizedEntity:(NSString *)authorizedEntity scope:(NSString *)scope - keyPair:(FIRInstanceIDKeyPair *)keyPair + instanceID:(NSString *)instanceID options:(NSDictionary *)options handler:(FIRInstanceIDTokenHandler)handler { FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeTokenManager000, @@ -81,7 +81,7 @@ [self createFetchOperationWithAuthorizedEntity:authorizedEntity scope:scope options:options - keyPair:keyPair]; + instanceID:instanceID]; FIRInstanceID_WEAKIFY(self); FIRInstanceIDTokenOperationCompletion completion = ^(FIRInstanceIDTokenOperationResult result, NSString *_Nullable token, @@ -143,7 +143,7 @@ - (void)deleteTokenWithAuthorizedEntity:(NSString *)authorizedEntity scope:(NSString *)scope - keyPair:(FIRInstanceIDKeyPair *)keyPair + instanceID:(NSString *)instanceID handler:(FIRInstanceIDDeleteTokenHandler)handler { if ([self.instanceIDStore tokenInfoWithAuthorizedEntity:authorizedEntity scope:scope]) { [self.instanceIDStore removeCachedTokenWithAuthorizedEntity:authorizedEntity scope:scope]; @@ -155,7 +155,7 @@ [self createDeleteOperationWithAuthorizedEntity:authorizedEntity scope:scope checkinPreferences:checkinPreferences - keyPair:keyPair + instanceID:instanceID action:FIRInstanceIDTokenActionDeleteToken]; if (handler) { @@ -169,8 +169,8 @@ [self.tokenOperations addOperation:operation]; } -- (void)deleteAllTokensWithKeyPair:(FIRInstanceIDKeyPair *)keyPair - handler:(FIRInstanceIDDeleteHandler)handler { +- (void)deleteAllTokensWithInstanceID:(NSString *)instanceID + handler:(FIRInstanceIDDeleteHandler)handler { // delete all tokens FIRInstanceIDCheckinPreferences *checkinPreferences = self.authService.checkinPreferences; if (!checkinPreferences) { @@ -185,7 +185,7 @@ [self createDeleteOperationWithAuthorizedEntity:kFIRInstanceIDKeychainWildcardIdentifier scope:kFIRInstanceIDKeychainWildcardIdentifier checkinPreferences:checkinPreferences - keyPair:keyPair + instanceID:instanceID action:FIRInstanceIDTokenActionDeleteTokenAndIID]; if (handler) { [operation addCompletionHandler:^(FIRInstanceIDTokenOperationResult result, @@ -222,7 +222,7 @@ [self createDeleteOperationWithAuthorizedEntity:nil scope:nil checkinPreferences:checkin - keyPair:nil + instanceID:nil action:FIRInstanceIDTokenActionDeleteToken]; [operation addCompletionHandler:^(FIRInstanceIDTokenOperationResult result, NSString *_Nullable token, NSError *_Nullable error) { @@ -245,14 +245,14 @@ createFetchOperationWithAuthorizedEntity:(NSString *)authorizedEntity scope:(NSString *)scope options:(NSDictionary *)options - keyPair:(FIRInstanceIDKeyPair *)keyPair { + instanceID:(NSString *)instanceID { FIRInstanceIDCheckinPreferences *checkinPreferences = self.authService.checkinPreferences; FIRInstanceIDTokenFetchOperation *operation = [[FIRInstanceIDTokenFetchOperation alloc] initWithAuthorizedEntity:authorizedEntity scope:scope options:options checkinPreferences:checkinPreferences - keyPair:keyPair]; + instanceID:instanceID]; return operation; } @@ -261,19 +261,19 @@ createDeleteOperationWithAuthorizedEntity:(NSString *)authorizedEntity scope:(NSString *)scope checkinPreferences:(FIRInstanceIDCheckinPreferences *)checkinPreferences - keyPair:(FIRInstanceIDKeyPair *)keyPair + instanceID:(NSString *)instanceID action:(FIRInstanceIDTokenAction)action { FIRInstanceIDTokenDeleteOperation *operation = [[FIRInstanceIDTokenDeleteOperation alloc] initWithAuthorizedEntity:authorizedEntity scope:scope checkinPreferences:checkinPreferences - keyPair:keyPair + instanceID:instanceID action:action]; return operation; } #pragma mark - Invalidating Cached Tokens -- (BOOL)checkForTokenRefreshPolicy { +- (BOOL)checkTokenRefreshPolicyWithIID:(NSString *)IID { // We know at least one cached token exists. BOOL shouldFetchDefaultToken = NO; NSArray *tokenInfos = [self.instanceIDStore cachedTokenInfos]; @@ -281,12 +281,11 @@ NSMutableArray *tokenInfosToDelete = [NSMutableArray arrayWithCapacity:tokenInfos.count]; for (FIRInstanceIDTokenInfo *tokenInfo in tokenInfos) { - BOOL isTokenFresh = [tokenInfo isFresh]; - if (isTokenFresh) { - // Token is fresh, do nothing. + if ([tokenInfo isFreshWithIID:IID]) { + // Token is fresh and in right format, do nothing continue; } - if ([tokenInfo.scope isEqualToString:kFIRInstanceIDDefaultTokenScope]) { + if ([tokenInfo isDefaultToken]) { // Default token is expired, do not mark for deletion. Fetch directly from server to // replace the current one. shouldFetchDefaultToken = YES; diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenOperation+Private.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenOperation+Private.h index 68d9db183..338387577 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenOperation+Private.h +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenOperation+Private.h @@ -18,7 +18,6 @@ #import "FIRInstanceIDUtilities.h" -@class FIRInstanceIDKeyPair; @class FIRInstanceIDURLQueryItem; NS_ASSUME_NONNULL_BEGIN @@ -40,13 +39,13 @@ NS_ASSUME_NONNULL_BEGIN scope:(NSString *)scope options:(nullable NSDictionary *)options checkinPreferences:(FIRInstanceIDCheckinPreferences *)checkinPreferences - keyPair:(FIRInstanceIDKeyPair *)keyPair; + instanceID:(NSString *)instanceID; #pragma mark - Request Construction -+ (NSMutableURLRequest *)requestWithAuthHeader:(NSString *)authHeaderString; + (NSMutableArray *)standardQueryItemsWithDeviceID:(NSString *)deviceID scope:(NSString *)scope; -- (NSArray *)queryItemsWithKeyPair:(FIRInstanceIDKeyPair *)keyPair; +- (NSMutableURLRequest *)tokenRequest; +- (NSArray *)queryItemsWithInstanceID:(NSString *)instanceID; #pragma mark - HTTP Headers /** @@ -62,6 +61,9 @@ NS_ASSUME_NONNULL_BEGIN token:(nullable NSString *)token error:(nullable NSError *)error; +#pragma mark - Methods to override +- (void)performTokenOperation; + @end NS_ASSUME_NONNULL_END diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenOperation.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenOperation.h index 1a1842cf2..fa8ad085b 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenOperation.h +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenOperation.h @@ -16,7 +16,6 @@ #import -@class FIRInstanceIDKeyPair; @class FIRInstanceIDCheckinPreferences; NS_ASSUME_NONNULL_BEGIN @@ -60,7 +59,7 @@ typedef void (^FIRInstanceIDTokenOperationCompletion)(FIRInstanceIDTokenOperatio @property(nonatomic, readonly, nullable) NSString *scope; @property(nonatomic, readonly, nullable) NSDictionary *options; @property(nonatomic, readonly, strong) FIRInstanceIDCheckinPreferences *checkinPreferences; -@property(nonatomic, readonly, strong) FIRInstanceIDKeyPair *keyPair; +@property(nonatomic, readonly, strong) NSString *instanceID; @property(nonatomic, readonly) FIRInstanceIDTokenOperationResult result; diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenOperation.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenOperation.m index 5c20f3cec..aa0f75e07 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenOperation.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenOperation.m @@ -16,9 +16,9 @@ #import "FIRInstanceIDTokenOperation.h" +#import + #import "FIRInstanceIDCheckinPreferences.h" -#import "FIRInstanceIDKeyPair.h" -#import "FIRInstanceIDKeyPairUtilities.h" #import "FIRInstanceIDLogger.h" #import "FIRInstanceIDURLQueryItem.h" #import "FIRInstanceIDUtilities.h" @@ -38,12 +38,14 @@ static NSString *const kFIRInstanceIDParamFCMLibVersion = @"X-cliv"; } @property(nonatomic, readwrite, strong) FIRInstanceIDCheckinPreferences *checkinPreferences; -@property(nonatomic, readwrite, strong) FIRInstanceIDKeyPair *keyPair; +@property(nonatomic, readwrite, strong) NSString *instanceID; @property(atomic, strong) NSURLSessionDataTask *dataTask; @property(readonly, strong) NSMutableArray *completionHandlers; +@property(atomic, strong, nullable) NSString *FISAuthToken; + // For testing only @property(nonatomic, readwrite, copy) FIRInstanceIDURLRequestTestBlock testBlock; @@ -68,7 +70,7 @@ static NSString *const kFIRInstanceIDParamFCMLibVersion = @"X-cliv"; scope:(NSString *)scope options:(NSDictionary *)options checkinPreferences:(FIRInstanceIDCheckinPreferences *)checkinPreferences - keyPair:(FIRInstanceIDKeyPair *)keyPair { + instanceID:(NSString *)instanceID { self = [super init]; if (self) { _action = action; @@ -76,7 +78,7 @@ static NSString *const kFIRInstanceIDParamFCMLibVersion = @"X-cliv"; _scope = [scope copy]; _options = [options copy]; _checkinPreferences = checkinPreferences; - _keyPair = keyPair; + _instanceID = instanceID; _completionHandlers = [NSMutableArray array]; _isExecuting = NO; @@ -91,7 +93,7 @@ static NSString *const kFIRInstanceIDParamFCMLibVersion = @"X-cliv"; _scope = nil; _options = nil; _checkinPreferences = nil; - _keyPair = nil; + _instanceID = nil; [_completionHandlers removeAllObjects]; _completionHandlers = nil; } @@ -142,7 +144,16 @@ static NSString *const kFIRInstanceIDParamFCMLibVersion = @"X-cliv"; [self setExecuting:YES]; - [self performTokenOperation]; + [[FIRInstallations installations] + authTokenWithCompletion:^(FIRInstallationsAuthTokenResult *_Nullable tokenResult, + NSError *_Nullable error) { + if (tokenResult.authToken.length > 0) { + self.FISAuthToken = tokenResult.authToken; + [self performTokenOperation]; + } else { + [self finishWithResult:FIRInstanceIDTokenOperationError token:nil error:error]; + } + }]; } - (void)finishWithResult:(FIRInstanceIDTokenOperationResult)result @@ -172,14 +183,24 @@ static NSString *const kFIRInstanceIDParamFCMLibVersion = @"X-cliv"; - (void)performTokenOperation { } +- (NSMutableURLRequest *)tokenRequest { + NSString *authHeader = + [FIRInstanceIDTokenOperation HTTPAuthHeaderFromCheckin:self.checkinPreferences]; + return [[self class] requestWithAuthHeader:authHeader FISAuthToken:self.FISAuthToken]; +} + #pragma mark - Request Construction -+ (NSMutableURLRequest *)requestWithAuthHeader:(NSString *)authHeaderString { ++ (NSMutableURLRequest *)requestWithAuthHeader:(NSString *)authHeaderString + FISAuthToken:(NSString *)FISAuthToken { NSURL *url = [NSURL URLWithString:FIRInstanceIDRegisterServer()]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // Add HTTP headers [request setValue:authHeaderString forHTTPHeaderField:@"Authorization"]; [request setValue:FIRInstanceIDAppIdentifier() forHTTPHeaderField:@"app"]; + if (FISAuthToken) { + [request setValue:FISAuthToken forHTTPHeaderField:@"x-goog-firebase-installations-auth"]; + } request.HTTPMethod = @"POST"; return request; } @@ -222,13 +243,9 @@ static NSString *const kFIRInstanceIDParamFCMLibVersion = @"X-cliv"; return queryItems; } -- (NSArray *)queryItemsWithKeyPair:(FIRInstanceIDKeyPair *)keyPair { - NSMutableArray *items = [NSMutableArray arrayWithCapacity:3]; - // appid= - NSString *instanceID = FIRInstanceIDAppIdentity(keyPair); - [items addObject:[FIRInstanceIDURLQueryItem queryItemWithName:kFIRInstanceIDParamInstanceID - value:instanceID]]; - return items; +- (NSArray *)queryItemsWithInstanceID:(NSString *)instanceID { + return @[ [FIRInstanceIDURLQueryItem queryItemWithName:kFIRInstanceIDParamInstanceID + value:instanceID] ]; } #pragma mark - HTTP Header diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenStore.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenStore.m index 37656455d..f97f9321e 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenStore.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDTokenStore.m @@ -121,11 +121,7 @@ static NSString *const kFIRInstanceIDTokenKeychainId = @"com.google.iid-tokens"; NSString *account = FIRInstanceIDAppIdentifier(); NSString *service = [[self class] serviceKeyForAuthorizedEntity:tokenInfo.authorizedEntity scope:tokenInfo.scope]; - [self.keychain setData:tokenInfoData - forService:service - accessibility:NULL - account:account - handler:handler]; + [self.keychain setData:tokenInfoData forService:service account:account handler:handler]; } #pragma mark - Delete diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDUtilities.m b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDUtilities.m index 1289c7ad8..9eaafa710 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDUtilities.m +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDUtilities.m @@ -78,16 +78,29 @@ NSString *FIRInstanceIDCurrentAppVersion() { return version; } +NSString *FIRInstanceIDBundleIDByRemovingLastPartFrom(NSString *bundleID) { + NSString *bundleIDComponentsSeparator = @"."; + + NSMutableArray *bundleIDComponents = + [[bundleID componentsSeparatedByString:bundleIDComponentsSeparator] mutableCopy]; + [bundleIDComponents removeLastObject]; + + return [bundleIDComponents componentsJoinedByString:bundleIDComponentsSeparator]; +} + NSString *FIRInstanceIDAppIdentifier() { - NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier]; - if (!bundleIdentifier.length) { + NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier]; + if (!bundleID.length) { FIRInstanceIDLoggerError(kFIRInstanceIDMessageCodeUtilitiesMissingBundleIdentifier, @"The mainBundle's bundleIdentifier returned '%@'. Bundle identifier " @"expected to be non-empty.", - bundleIdentifier); + bundleID); return @""; } - return bundleIdentifier; +#if TARGET_OS_WATCH + return FIRInstanceIDBundleIDByRemovingLastPartFrom(bundleID); +#endif + return bundleID; } NSString *FIRInstanceIDFirebaseAppID() { @@ -111,7 +124,7 @@ NSString *FIRInstanceIDDeviceModel() { NSString *FIRInstanceIDOperatingSystemVersion() { #if TARGET_OS_IOS || TARGET_OS_TV return [UIDevice currentDevice].systemVersion; -#elif TARGET_OS_OSX +#elif TARGET_OS_OSX || TARGET_OS_WATCH return [NSProcessInfo processInfo].operatingSystemVersionString; #endif } diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/Private/FIRInstanceID+Private.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/Private/FIRInstanceID+Private.h index 31d412305..632e21bc2 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/Private/FIRInstanceID+Private.h +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/Private/FIRInstanceID+Private.h @@ -56,6 +56,8 @@ typedef void (^FIRInstanceIDDeviceCheckinCompletion)( * * @return The InstanceID for the app. */ -- (nullable NSString *)appInstanceID:(NSError *_Nullable *_Nullable)error; +- (nullable NSString *)appInstanceID:(NSError *_Nullable *_Nullable)error + DEPRECATED_MSG_ATTRIBUTE("Please use getID(handler:) for Swift or " + "getIDWithHandler: for Objective-C instead."); @end diff --git a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/Private/FIRInstanceID_Private.h b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/Private/FIRInstanceID_Private.h index d17177ee2..c343f88d5 100644 --- a/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/Private/FIRInstanceID_Private.h +++ b/ios/Pods/FirebaseInstanceID/Firebase/InstanceID/Private/FIRInstanceID_Private.h @@ -19,6 +19,8 @@ NS_ASSUME_NONNULL_BEGIN @class FIRInstanceIDCheckinPreferences; +@class FIRInstallations; + /** * Private API used by other Firebase SDKs. */ @@ -28,6 +30,11 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, readonly, strong) NSString *secretToken; @property(nonatomic, readonly, strong) NSString *versionInfo; +@property(nonatomic, readonly, strong) FIRInstallations *installations; + +/// A cached value of FID. Should be used only for `-[FIRInstanceID appInstanceID:]`. +@property(atomic, readonly, copy, nullable) NSString *firebaseInstallationsID; + /** * Private initializer. */ diff --git a/ios/Pods/FirebaseInstanceID/README.md b/ios/Pods/FirebaseInstanceID/README.md index d75ae8cb1..3ddc8fbd2 100644 --- a/ios/Pods/FirebaseInstanceID/README.md +++ b/ios/Pods/FirebaseInstanceID/README.md @@ -3,7 +3,8 @@ This repository contains a subset of the Firebase iOS SDK source. It currently includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, -FirebaseInAppMessagingDisplay, FirebaseMessaging and FirebaseStorage. +FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and +FirebaseStorage. The repository also includes GoogleUtilities source. The [GoogleUtilities](GoogleUtilities/README.md) pod is @@ -75,14 +76,31 @@ the following software: * Xcode 10.1 (or later) * CocoaPods 1.7.2 (or later) + * [CocoaPods generate](https://github.com/square/cocoapods-generate) For the pod that you want to develop: -`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open` +`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios` + +Note: If the CocoaPods cache is out of date, you may need to run +`pod repo update` before the `pod gen` command. + +Note: Set the `--platforms` option to `macos` or `tvos` to develop/test for +those platforms. Since 10.2, Xcode does not properly handle multi-platform +CocoaPods workspaces. Firestore has a self contained Xcode project. See [Firestore/README.md](Firestore/README.md). +### Development for Catalyst +* `pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios` +* Check the Mac box in the App-iOS Build Settings +* Sign the App in the Settings Signing & Capabilities tab +* Click Pods in the Project Manager +* Add Signing to the iOS host app and unit test targets +* Select the Unit-unit scheme +* Run it to build and test + ### Adding a New Firebase Pod See [AddNewPod.md](AddNewPod.md). @@ -98,13 +116,17 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/773cb75d360b58f32048f5964038d09825a507c8/Formula/clang-format.rb -brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/3dfea1004e0736754bbf49673cca8aaed8a94089/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to `brew switch` to this version. +To update this section, find the versions of clang-format and swiftformat.rb to +match the versions in the CI failure logs +[here](https://github.com/Homebrew/homebrew-core/tree/master/Formula). + ### Running Unit Tests Select a scheme and press Command-u to build a component and run its unit tests. @@ -177,34 +199,39 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### macOS and tvOS +### tvOS, macOS, and Catalyst Thanks to contributions from the community, FirebaseABTesting, FirebaseAuth, FirebaseCore, -FirebaseDatabase, FirebaseMessaging, -FirebaseFirestore, FirebaseFunctions and FirebaseStorage now compile, run unit tests, and work on -macOS and tvOS. +FirebaseDatabase, FirebaseMessaging, FirebaseFirestore, +FirebaseFunctions, FirebaseRemoteConfig, and FirebaseStorage now compile, run unit tests, and work on +tvOS, macOS, and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). -Keep in mind that macOS and tvOS are not officially supported by Firebase, and this repository is -actively developed primarily for iOS. While we can catch basic unit test issues with Travis, there -may be some changes where the SDK no longer works as expected on macOS or tvOS. If you encounter -this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). - -Note that the Firebase pod is not available for macOS and tvOS. +Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +repository is actively developed primarily for iOS. While we can catch basic unit test issues with +Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). To install, add a subset of the following to the Podfile: ``` -pod 'FirebaseABTesting' -pod 'FirebaseAuth' -pod 'FirebaseCore' -pod 'FirebaseDatabase' -pod 'FirebaseFirestore' -pod 'FirebaseFunctions' -pod 'FirebaseMessaging' -pod 'FirebaseStorage' +pod 'Firebase/ABTesting' +pod 'Firebase/Auth' +pod 'Firebase/Database' +pod 'Firebase/Firestore' +pod 'Firebase/Functions' +pod 'Firebase/Messaging' +pod 'Firebase/RemoteConfig' +pod 'Firebase/Storage' ``` +#### Additional Catalyst Notes + +* FirebaseAuth and FirebaseMessaging require adding `Keychain Sharing Capability` +to Build Settings. +* FirebaseFirestore requires signing the +[gRPC Resource target](https://github.com/firebase/firebase-ios-sdk/issues/3500#issuecomment-518741681). + ## Roadmap See [Roadmap](ROADMAP.md) for more about the Firebase iOS SDK Open Source diff --git a/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement b/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement index f9543a98e..de27b250c 100755 Binary files a/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement and b/ios/Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement differ diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTAssert.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORAssert.m similarity index 66% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTAssert.m rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORAssert.m index 106fce3a9..3e5f57b57 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTAssert.m +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORAssert.m @@ -14,18 +14,18 @@ * limitations under the License. */ -#import "GDTLibrary/Public/GDTAssert.h" +#import "GDTCORLibrary/Public/GDTCORAssert.h" -GDTAssertionBlock GDTAssertionBlockToRunInstead(void) { +GDTCORAssertionBlock GDTCORAssertionBlockToRunInstead(void) { // This class is only compiled in by unit tests, and this should fail quickly in optimized builds. - Class GDTAssertClass = NSClassFromString(@"GDTAssertHelper"); - if (__builtin_expect(!!GDTAssertClass, 0)) { + Class GDTCORAssertClass = NSClassFromString(@"GDTCORAssertHelper"); + if (__builtin_expect(!!GDTCORAssertClass, 0)) { SEL assertionBlockSEL = NSSelectorFromString(@"assertionBlock"); if (assertionBlockSEL) { - IMP assertionBlockIMP = [GDTAssertClass methodForSelector:assertionBlockSEL]; + IMP assertionBlockIMP = [GDTCORAssertClass methodForSelector:assertionBlockSEL]; if (assertionBlockIMP) { - GDTAssertionBlock assertionBlock = - ((GDTAssertionBlock(*)(id, SEL))assertionBlockIMP)(GDTAssertClass, assertionBlockSEL); + GDTCORAssertionBlock assertionBlock = ((GDTCORAssertionBlock(*)(id, SEL))assertionBlockIMP)( + GDTCORAssertClass, assertionBlockSEL); if (assertionBlock) { return assertionBlock; } diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTClock.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORClock.m similarity index 81% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTClock.m rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORClock.m index 2cc3d1c7f..f0ea8ab60 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTClock.m +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORClock.m @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "GDTLibrary/Public/GDTClock.h" +#import "GDTCORLibrary/Public/GDTCORClock.h" #import @@ -74,7 +74,7 @@ static int64_t UptimeInNanoseconds() { } // TODO: Consider adding a 'trustedTime' property that can be populated by the response from a BE. -@implementation GDTClock +@implementation GDTCORClock - (instancetype)init { self = [super init]; @@ -90,17 +90,17 @@ static int64_t UptimeInNanoseconds() { return self; } -+ (GDTClock *)snapshot { - return [[GDTClock alloc] init]; ++ (GDTCORClock *)snapshot { + return [[GDTCORClock alloc] init]; } + (instancetype)clockSnapshotInTheFuture:(uint64_t)millisInTheFuture { - GDTClock *snapshot = [self snapshot]; + GDTCORClock *snapshot = [self snapshot]; snapshot->_timeMillis += millisInTheFuture; return snapshot; } -- (BOOL)isAfter:(GDTClock *)otherClock { +- (BOOL)isAfter:(GDTCORClock *)otherClock { // These clocks are trivially comparable when they share a kernel boot time. if (_kernelBootTime == otherClock->_kernelBootTime) { int64_t timeDiff = (_timeMillis + _timezoneOffsetSeconds) - @@ -126,16 +126,16 @@ static int64_t UptimeInNanoseconds() { #pragma mark - NSSecureCoding /** NSKeyedCoder key for timeMillis property. */ -static NSString *const kGDTClockTimeMillisKey = @"GDTClockTimeMillis"; +static NSString *const kGDTCORClockTimeMillisKey = @"GDTCORClockTimeMillis"; /** NSKeyedCoder key for timezoneOffsetMillis property. */ -static NSString *const kGDTClockTimezoneOffsetSeconds = @"GDTClockTimezoneOffsetSeconds"; +static NSString *const kGDTCORClockTimezoneOffsetSeconds = @"GDTCORClockTimezoneOffsetSeconds"; /** NSKeyedCoder key for _kernelBootTime ivar. */ -static NSString *const kGDTClockKernelBootTime = @"GDTClockKernelBootTime"; +static NSString *const kGDTCORClockKernelBootTime = @"GDTCORClockKernelBootTime"; /** NSKeyedCoder key for _uptime ivar. */ -static NSString *const kGDTClockUptime = @"GDTClockUptime"; +static NSString *const kGDTCORClockUptime = @"GDTCORClockUptime"; + (BOOL)supportsSecureCoding { return YES; @@ -146,19 +146,19 @@ static NSString *const kGDTClockUptime = @"GDTClockUptime"; if (self) { // TODO: If the kernelBootTime is more recent, we need to change the kernel boot time and // uptimeMillis ivars - _timeMillis = [aDecoder decodeInt64ForKey:kGDTClockTimeMillisKey]; - _timezoneOffsetSeconds = [aDecoder decodeInt64ForKey:kGDTClockTimezoneOffsetSeconds]; - _kernelBootTime = [aDecoder decodeInt64ForKey:kGDTClockKernelBootTime]; - _uptime = [aDecoder decodeInt64ForKey:kGDTClockUptime]; + _timeMillis = [aDecoder decodeInt64ForKey:kGDTCORClockTimeMillisKey]; + _timezoneOffsetSeconds = [aDecoder decodeInt64ForKey:kGDTCORClockTimezoneOffsetSeconds]; + _kernelBootTime = [aDecoder decodeInt64ForKey:kGDTCORClockKernelBootTime]; + _uptime = [aDecoder decodeInt64ForKey:kGDTCORClockUptime]; } return self; } - (void)encodeWithCoder:(NSCoder *)aCoder { - [aCoder encodeInt64:_timeMillis forKey:kGDTClockTimeMillisKey]; - [aCoder encodeInt64:_timezoneOffsetSeconds forKey:kGDTClockTimezoneOffsetSeconds]; - [aCoder encodeInt64:_kernelBootTime forKey:kGDTClockKernelBootTime]; - [aCoder encodeInt64:_uptime forKey:kGDTClockUptime]; + [aCoder encodeInt64:_timeMillis forKey:kGDTCORClockTimeMillisKey]; + [aCoder encodeInt64:_timezoneOffsetSeconds forKey:kGDTCORClockTimezoneOffsetSeconds]; + [aCoder encodeInt64:_kernelBootTime forKey:kGDTCORClockKernelBootTime]; + [aCoder encodeInt64:_uptime forKey:kGDTCORClockUptime]; } @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTConsoleLogger.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m similarity index 61% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTConsoleLogger.m rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m index 2c391dcf1..6df92a5ab 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTConsoleLogger.m +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m @@ -14,23 +14,23 @@ * limitations under the License. */ -#import "GDTLibrary/Public/GDTConsoleLogger.h" +#import "GDTCORLibrary/Public/GDTCORConsoleLogger.h" /** The console logger prefix. */ -static NSString *kGDTConsoleLogger = @"[GoogleDataTransport]"; +static NSString *kGDTCORConsoleLogger = @"[GoogleDataTransport]"; -NSString *GDTMessageCodeEnumToString(GDTMessageCode code) { - return [[NSString alloc] initWithFormat:@"I-GDT%06ld", (long)code]; +NSString *GDTCORMessageCodeEnumToString(GDTCORMessageCode code) { + return [[NSString alloc] initWithFormat:@"I-GDTCOR%06ld", (long)code]; } -void GDTLog(GDTMessageCode code, NSString *format, ...) { +void GDTCORLog(GDTCORMessageCode code, NSString *format, ...) { // Don't log anything in not debug builds. -#ifndef NDEBUG - NSString *logFormat = [NSString - stringWithFormat:@"%@[%@] %@", kGDTConsoleLogger, GDTMessageCodeEnumToString(code), format]; +#if !NDEBUG + NSString *logFormat = [NSString stringWithFormat:@"%@[%@] %@", kGDTCORConsoleLogger, + GDTCORMessageCodeEnumToString(code), format]; va_list args; va_start(args, format); NSLogv(logFormat, args); va_end(args); -#endif // NDEBUG +#endif // !NDEBUG } diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTDataFuture.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORDataFuture.m similarity index 76% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTDataFuture.m rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORDataFuture.m index 61dda60b6..33c3f1521 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTDataFuture.m +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORDataFuture.m @@ -14,9 +14,9 @@ * limitations under the License. */ -#import +#import -@implementation GDTDataFuture +@implementation GDTCORDataFuture - (instancetype)initWithFileURL:(NSURL *)fileURL { self = [super init]; @@ -38,25 +38,25 @@ #pragma mark - NSSecureCoding /** Coding key for _fileURL ivar. */ -static NSString *kGDTDataFutureFileURLKey = @"GDTDataFutureFileURLKey"; +static NSString *kGDTCORDataFutureFileURLKey = @"GDTCORDataFutureFileURLKey"; /** Coding key for _data ivar. */ -static NSString *kGDTDataFutureDataKey = @"GDTDataFutureDataKey"; +static NSString *kGDTCORDataFutureDataKey = @"GDTCORDataFutureDataKey"; + (BOOL)supportsSecureCoding { return YES; } - (void)encodeWithCoder:(nonnull NSCoder *)aCoder { - [aCoder encodeObject:_fileURL forKey:kGDTDataFutureFileURLKey]; - [aCoder encodeObject:_originalData forKey:kGDTDataFutureDataKey]; + [aCoder encodeObject:_fileURL forKey:kGDTCORDataFutureFileURLKey]; + [aCoder encodeObject:_originalData forKey:kGDTCORDataFutureDataKey]; } - (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder { self = [self init]; if (self) { - _fileURL = [aDecoder decodeObjectOfClass:[NSURL class] forKey:kGDTDataFutureFileURLKey]; - _originalData = [aDecoder decodeObjectOfClass:[NSData class] forKey:kGDTDataFutureDataKey]; + _fileURL = [aDecoder decodeObjectOfClass:[NSURL class] forKey:kGDTCORDataFutureFileURLKey]; + _originalData = [aDecoder decodeObjectOfClass:[NSData class] forKey:kGDTCORDataFutureDataKey]; } return self; } diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTEvent.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m similarity index 74% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTEvent.m rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m index 3d31ea5ae..ed0c8e833 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTEvent.m +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m @@ -14,18 +14,19 @@ * limitations under the License. */ -#import +#import -#import -#import +#import +#import +#import -#import "GDTLibrary/Private/GDTEvent_Private.h" +#import "GDTCORLibrary/Private/GDTCOREvent_Private.h" -@implementation GDTEvent +@implementation GDTCOREvent -- (instancetype)initWithMappingID:(NSString *)mappingID target:(NSInteger)target { - GDTAssert(mappingID.length > 0, @"Please give a valid mapping ID"); - GDTAssert(target > 0, @"A target cannot be negative or 0"); +- (nullable instancetype)initWithMappingID:(NSString *)mappingID target:(NSInteger)target { + GDTCORAssert(mappingID.length > 0, @"Please give a valid mapping ID"); + GDTCORAssert(target > 0, @"A target cannot be negative or 0"); if (mappingID == nil || mappingID.length == 0 || target <= 0) { return nil; } @@ -33,18 +34,21 @@ if (self) { _mappingID = mappingID; _target = target; - _qosTier = GDTEventQosDefault; + _qosTier = GDTCOREventQosDefault; } + GDTCORLogDebug("Event %@ created. mappingID: %@ target:%ld qos:%ld", self, _mappingID, + (long)_target, (long)_qosTier); return self; } - (instancetype)copy { - GDTEvent *copy = [[GDTEvent alloc] initWithMappingID:_mappingID target:_target]; + GDTCOREvent *copy = [[GDTCOREvent alloc] initWithMappingID:_mappingID target:_target]; copy.dataObject = _dataObject; copy.dataObjectTransportBytes = _dataObjectTransportBytes; copy.qosTier = _qosTier; copy.clockSnapshot = _clockSnapshot; copy.customPrioritizationParams = _customPrioritizationParams; + GDTCORLogDebug("Copying event %@ to event %@", self, copy); return copy; } @@ -60,7 +64,7 @@ return [self hash] == [object hash]; } -- (void)setDataObject:(id)dataObject { +- (void)setDataObject:(id)dataObject { // If you're looking here because of a performance issue in -transportBytes slowing the assignment // of -dataObject, one way to address this is to add a queue to this class, // dispatch_(barrier_ if concurrent)async here, and implement the getter with a dispatch_sync. @@ -70,8 +74,8 @@ } } -- (GDTStoredEvent *)storedEventWithDataFuture:(GDTDataFuture *)dataFuture { - return [[GDTStoredEvent alloc] initWithEvent:self dataFuture:dataFuture]; +- (GDTCORStoredEvent *)storedEventWithDataFuture:(GDTCORDataFuture *)dataFuture { + return [[GDTCORStoredEvent alloc] initWithEvent:self dataFuture:dataFuture]; } #pragma mark - NSSecureCoding and NSCoding Protocols @@ -103,7 +107,7 @@ static NSString *clockSnapshotKey = @"_clockSnapshot"; _dataObjectTransportBytes = [aDecoder decodeObjectOfClass:[NSData class] forKey:dataObjectTransportBytesKey]; _qosTier = [aDecoder decodeIntegerForKey:qosTierKey]; - _clockSnapshot = [aDecoder decodeObjectOfClass:[GDTClock class] forKey:clockSnapshotKey]; + _clockSnapshot = [aDecoder decodeObjectOfClass:[GDTCORClock class] forKey:clockSnapshotKey]; } return self; } diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m new file mode 100644 index 000000000..cd554ad6c --- /dev/null +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m @@ -0,0 +1,132 @@ +/* + * Copyright 2019 Google + * + * 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 "GDTCORLibrary/Public/GDTCORLifecycle.h" + +#import +#import + +#import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" +#import "GDTCORLibrary/Private/GDTCORStorage_Private.h" +#import "GDTCORLibrary/Private/GDTCORTransformer_Private.h" +#import "GDTCORLibrary/Private/GDTCORUploadCoordinator.h" + +@implementation GDTCORLifecycle + ++ (void)load { + [self sharedInstance]; +} + +/** Creates/returns the singleton instance of this class. + * + * @return The singleton instance of this class. + */ ++ (instancetype)sharedInstance { + static GDTCORLifecycle *sharedInstance; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sharedInstance = [[GDTCORLifecycle alloc] init]; + }); + return sharedInstance; +} + +- (instancetype)init { + self = [super init]; + if (self) { + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + [notificationCenter addObserver:self + selector:@selector(applicationDidEnterBackground:) + name:kGDTCORApplicationDidEnterBackgroundNotification + object:nil]; + [notificationCenter addObserver:self + selector:@selector(applicationWillEnterForeground:) + name:kGDTCORApplicationWillEnterForegroundNotification + object:nil]; + + NSString *name = kGDTCORApplicationWillTerminateNotification; + [notificationCenter addObserver:self + selector:@selector(applicationWillTerminate:) + name:name + object:nil]; + } + return self; +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (void)applicationDidEnterBackground:(NSNotification *)notification { + GDTCORApplication *application = [GDTCORApplication sharedApplication]; + if ([[GDTCORTransformer sharedInstance] respondsToSelector:@selector(appWillBackground:)]) { + GDTCORLogDebug("%@", @"Signaling GDTCORTransformer that the app is backgrounding."); + [[GDTCORTransformer sharedInstance] appWillBackground:application]; + } + if ([[GDTCORStorage sharedInstance] respondsToSelector:@selector(appWillBackground:)]) { + GDTCORLogDebug("%@", @"Signaling GDTCORStorage that the app is backgrounding."); + [[GDTCORStorage sharedInstance] appWillBackground:application]; + } + if ([[GDTCORUploadCoordinator sharedInstance] respondsToSelector:@selector(appWillBackground:)]) { + GDTCORLogDebug("%@", @"Signaling GDTCORUploadCoordinator that the app is backgrounding."); + [[GDTCORUploadCoordinator sharedInstance] appWillBackground:application]; + } + if ([[GDTCORRegistrar sharedInstance] respondsToSelector:@selector(appWillBackground:)]) { + GDTCORLogDebug("%@", @"Signaling GDTCORRegistrar that the app is backgrounding."); + [[GDTCORRegistrar sharedInstance] appWillBackground:application]; + } +} + +- (void)applicationWillEnterForeground:(NSNotification *)notification { + GDTCORApplication *application = [GDTCORApplication sharedApplication]; + if ([[GDTCORTransformer sharedInstance] respondsToSelector:@selector(appWillForeground:)]) { + GDTCORLogDebug("%@", @"Signaling GDTCORTransformer that the app is foregrounding."); + [[GDTCORTransformer sharedInstance] appWillForeground:application]; + } + if ([[GDTCORStorage sharedInstance] respondsToSelector:@selector(appWillForeground:)]) { + GDTCORLogDebug("%@", @"Signaling GDTCORStorage that the app is foregrounding."); + [[GDTCORStorage sharedInstance] appWillForeground:application]; + } + if ([[GDTCORUploadCoordinator sharedInstance] respondsToSelector:@selector(appWillForeground:)]) { + GDTCORLogDebug("%@", @"Signaling GDTCORUploadCoordinator that the app is foregrounding."); + [[GDTCORUploadCoordinator sharedInstance] appWillForeground:application]; + } + if ([[GDTCORRegistrar sharedInstance] respondsToSelector:@selector(appWillForeground:)]) { + GDTCORLogDebug("%@", @"Signaling GDTCORRegistrar that the app is foregrounding."); + [[GDTCORRegistrar sharedInstance] appWillForeground:application]; + } +} + +- (void)applicationWillTerminate:(NSNotification *)notification { + GDTCORApplication *application = [GDTCORApplication sharedApplication]; + if ([[GDTCORTransformer sharedInstance] respondsToSelector:@selector(appWillTerminate:)]) { + GDTCORLogDebug("%@", @"Signaling GDTCORTransformer that the app is terminating."); + [[GDTCORTransformer sharedInstance] appWillTerminate:application]; + } + if ([[GDTCORStorage sharedInstance] respondsToSelector:@selector(appWillTerminate:)]) { + GDTCORLogDebug("%@", @"Signaling GDTCORStorage that the app is terminating."); + [[GDTCORStorage sharedInstance] appWillTerminate:application]; + } + if ([[GDTCORUploadCoordinator sharedInstance] respondsToSelector:@selector(appWillTerminate:)]) { + GDTCORLogDebug("%@", @"Signaling GDTCORUploadCoordinator that the app is terminating."); + [[GDTCORUploadCoordinator sharedInstance] appWillTerminate:application]; + } + if ([[GDTCORRegistrar sharedInstance] respondsToSelector:@selector(appWillTerminate:)]) { + GDTCORLogDebug("%@", @"Signaling GDTCORRegistrar that the app is terminating."); + [[GDTCORRegistrar sharedInstance] appWillTerminate:application]; + } +} + +@end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTPlatform.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m similarity index 58% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTPlatform.m rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m index 122517db9..778ced9c0 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTPlatform.m +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m @@ -14,45 +14,71 @@ * limitations under the License. */ -#import +#import -#import +#import +#import -const GDTBackgroundIdentifier GDTBackgroundIdentifierInvalid = 0; +#import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" -NSString *const kGDTApplicationDidEnterBackgroundNotification = - @"GDTApplicationDidEnterBackgroundNotification"; +#ifdef GDTCOR_VERSION +#define STR(x) STR_EXPAND(x) +#define STR_EXPAND(x) #x +NSString *const kGDTCORVersion = @STR(GDTCOR_VERSION); +#else +NSString *const kGDTCORVersion = @"Unknown"; +#endif // GDTCOR_VERSION -NSString *const kGDTApplicationWillEnterForegroundNotification = - @"GDTApplicationWillEnterForegroundNotification"; +const GDTCORBackgroundIdentifier GDTCORBackgroundIdentifierInvalid = 0; -NSString *const kGDTApplicationWillTerminateNotification = - @"GDTApplicationWillTerminateNotification"; +NSString *const kGDTCORApplicationDidEnterBackgroundNotification = + @"GDTCORApplicationDidEnterBackgroundNotification"; -BOOL GDTReachabilityFlagsContainWWAN(SCNetworkReachabilityFlags flags) { +NSString *const kGDTCORApplicationWillEnterForegroundNotification = + @"GDTCORApplicationWillEnterForegroundNotification"; + +NSString *const kGDTCORApplicationWillTerminateNotification = + @"GDTCORApplicationWillTerminateNotification"; +#if !TARGET_OS_WATCH +BOOL GDTCORReachabilityFlagsContainWWAN(SCNetworkReachabilityFlags flags) { #if TARGET_OS_IOS return (flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN; #else return NO; #endif // TARGET_OS_IOS } +#endif // !TARGET_OS_WATCH -@implementation GDTApplication +@interface GDTCORApplication () +/** + Private flag to match the existing `readonly` public flag. This will be accurate for all platforms, + since we handle each platform's lifecycle notifications separately. + */ +@property(atomic, readwrite) BOOL isRunningInBackground; + +@end + +@implementation GDTCORApplication + (void)load { + GDTCORLogDebug( + "%@", @"GDT is initializing. Please note that if you quit the app via the " + "debugger and not through a lifecycle event, event data will remain on disk but " + "storage won't have a reference to them since the singleton wasn't saved to disk."); #if TARGET_OS_IOS || TARGET_OS_TV // If this asserts, please file a bug at https://github.com/firebase/firebase-ios-sdk/issues. - GDTFatalAssert(GDTBackgroundIdentifierInvalid == UIBackgroundTaskInvalid, - @"GDTBackgroundIdentifierInvalid and UIBackgroundTaskInvalid should be the same."); + GDTCORFatalAssert( + GDTCORBackgroundIdentifierInvalid == UIBackgroundTaskInvalid, + @"GDTCORBackgroundIdentifierInvalid and UIBackgroundTaskInvalid should be the same."); #endif [self sharedApplication]; } -+ (nullable GDTApplication *)sharedApplication { - static GDTApplication *application; ++ (nullable GDTCORApplication *)sharedApplication { + static GDTCORApplication *application; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - application = [[GDTApplication alloc] init]; + application = [[GDTCORApplication alloc] init]; }); return application; } @@ -60,6 +86,9 @@ BOOL GDTReachabilityFlagsContainWWAN(SCNetworkReachabilityFlags flags) { - (instancetype)init { self = [super init]; if (self) { + // This class will be instantiated in the foreground. + _isRunningInBackground = NO; + #if TARGET_OS_IOS || TARGET_OS_TV NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; [notificationCenter addObserver:self @@ -101,21 +130,31 @@ BOOL GDTReachabilityFlagsContainWWAN(SCNetworkReachabilityFlags flags) { return self; } -- (GDTBackgroundIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handler { - return - [[self sharedApplicationForBackgroundTask] beginBackgroundTaskWithExpirationHandler:handler]; +- (GDTCORBackgroundIdentifier)beginBackgroundTaskWithName:(NSString *)name + expirationHandler:(void (^)(void))handler { + GDTCORBackgroundIdentifier bgID = + [[self sharedApplicationForBackgroundTask] beginBackgroundTaskWithName:name + expirationHandler:handler]; +#if !NDEBUG + if (bgID != GDTCORBackgroundIdentifierInvalid) { + GDTCORLogDebug("Creating background task with name:%@ bgID:%ld", name, (long)bgID); + } +#endif // !NDEBUG + return bgID; } -- (void)endBackgroundTask:(GDTBackgroundIdentifier)bgID { - if (bgID != GDTBackgroundIdentifierInvalid) { +- (void)endBackgroundTask:(GDTCORBackgroundIdentifier)bgID { + if (bgID != GDTCORBackgroundIdentifierInvalid) { + GDTCORLogDebug("Ending background task with ID:%ld was successful", (long)bgID); [[self sharedApplicationForBackgroundTask] endBackgroundTask:bgID]; + return; } } #pragma mark - App environment helpers - (BOOL)isAppExtension { -#if TARGET_OS_IOS || TARGET_OS_TV +#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH BOOL appExtension = [[[NSBundle mainBundle] bundlePath] hasSuffix:@".appex"]; return appExtension; #elif TARGET_OS_OSX @@ -148,18 +187,25 @@ BOOL GDTReachabilityFlagsContainWWAN(SCNetworkReachabilityFlags flags) { #if TARGET_OS_IOS || TARGET_OS_TV - (void)iOSApplicationDidEnterBackground:(NSNotification *)notif { + _isRunningInBackground = YES; + NSNotificationCenter *notifCenter = [NSNotificationCenter defaultCenter]; - [notifCenter postNotificationName:kGDTApplicationDidEnterBackgroundNotification object:nil]; + GDTCORLogDebug("%@", @"GDTCORPlatform is sending a notif that the app is backgrounding."); + [notifCenter postNotificationName:kGDTCORApplicationDidEnterBackgroundNotification object:nil]; } - (void)iOSApplicationWillEnterForeground:(NSNotification *)notif { + _isRunningInBackground = NO; + NSNotificationCenter *notifCenter = [NSNotificationCenter defaultCenter]; - [notifCenter postNotificationName:kGDTApplicationWillEnterForegroundNotification object:nil]; + GDTCORLogDebug("%@", @"GDTCORPlatform is sending a notif that the app is foregrounding."); + [notifCenter postNotificationName:kGDTCORApplicationWillEnterForegroundNotification object:nil]; } - (void)iOSApplicationWillTerminate:(NSNotification *)notif { NSNotificationCenter *notifCenter = [NSNotificationCenter defaultCenter]; - [notifCenter postNotificationName:kGDTApplicationWillTerminateNotification object:nil]; + GDTCORLogDebug("%@", @"GDTCORPlatform is sending a notif that the app is terminating."); + [notifCenter postNotificationName:kGDTCORApplicationWillTerminateNotification object:nil]; } #endif // TARGET_OS_IOS || TARGET_OS_TV @@ -168,7 +214,8 @@ BOOL GDTReachabilityFlagsContainWWAN(SCNetworkReachabilityFlags flags) { #if TARGET_OS_OSX - (void)macOSApplicationWillTerminate:(NSNotification *)notif { NSNotificationCenter *notifCenter = [NSNotificationCenter defaultCenter]; - [notifCenter postNotificationName:kGDTApplicationWillTerminateNotification object:nil]; + GDTCORLogDebug("%@", @"GDTCORPlatform is sending a notif that the app is terminating."); + [notifCenter postNotificationName:kGDTCORApplicationWillTerminateNotification object:nil]; } #endif // TARGET_OS_OSX diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTReachability.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m similarity index 61% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTReachability.m rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m index 2da6bbd7d..1c6555a1b 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTReachability.m +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m @@ -14,10 +14,11 @@ * limitations under the License. */ -#import "GDTLibrary/Private/GDTReachability.h" -#import "GDTLibrary/Private/GDTReachability_Private.h" +#import "GDTCORLibrary/Private/GDTCORReachability.h" +#import "GDTCORLibrary/Private/GDTCORReachability_Private.h" +#if !TARGET_OS_WATCH -#import +#import #import @@ -27,11 +28,11 @@ * @param flags The new flag values. * @param info Any data that might be passed in by the callback. */ -static void GDTReachabilityCallback(SCNetworkReachabilityRef reachability, - SCNetworkReachabilityFlags flags, - void *info); +static void GDTCORReachabilityCallback(SCNetworkReachabilityRef reachability, + SCNetworkReachabilityFlags flags, + void *info); -@implementation GDTReachability { +@implementation GDTCORReachability { /** The reachability object. */ SCNetworkReachabilityRef _reachabilityRef; @@ -47,19 +48,20 @@ static void GDTReachabilityCallback(SCNetworkReachabilityRef reachability, } + (instancetype)sharedInstance { - static GDTReachability *sharedInstance; + static GDTCORReachability *sharedInstance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - sharedInstance = [[GDTReachability alloc] init]; + sharedInstance = [[GDTCORReachability alloc] init]; }); return sharedInstance; } + (SCNetworkReachabilityFlags)currentFlags { __block SCNetworkReachabilityFlags currentFlags; - dispatch_sync([GDTReachability sharedInstance] -> _reachabilityQueue, ^{ - GDTReachability *reachability = [GDTReachability sharedInstance]; + dispatch_sync([GDTCORReachability sharedInstance] -> _reachabilityQueue, ^{ + GDTCORReachability *reachability = [GDTCORReachability sharedInstance]; currentFlags = reachability->_flags ? reachability->_flags : reachability->_callbackFlags; + GDTCORLogDebug("Initial reachability flags determined: %d", currentFlags); }); return currentFlags; } @@ -72,22 +74,25 @@ static void GDTReachabilityCallback(SCNetworkReachabilityRef reachability, zeroAddress.sin_len = sizeof(zeroAddress); zeroAddress.sin_family = AF_INET; - _reachabilityQueue = dispatch_queue_create("com.google.GDTReachability", DISPATCH_QUEUE_SERIAL); + _reachabilityQueue = + dispatch_queue_create("com.google.GDTCORReachability", DISPATCH_QUEUE_SERIAL); _reachabilityRef = SCNetworkReachabilityCreateWithAddress( kCFAllocatorDefault, (const struct sockaddr *)&zeroAddress); Boolean success = SCNetworkReachabilitySetDispatchQueue(_reachabilityRef, _reachabilityQueue); if (!success) { - GDTLogWarning(GDTMCWReachabilityFailed, @"%@", @"The reachability queue wasn't set."); + GDTCORLogWarning(GDTCORMCWReachabilityFailed, @"%@", @"The reachability queue wasn't set."); } - success = SCNetworkReachabilitySetCallback(_reachabilityRef, GDTReachabilityCallback, NULL); + success = SCNetworkReachabilitySetCallback(_reachabilityRef, GDTCORReachabilityCallback, NULL); if (!success) { - GDTLogWarning(GDTMCWReachabilityFailed, @"%@", @"The reachability callback wasn't set."); + GDTCORLogWarning(GDTCORMCWReachabilityFailed, @"%@", + @"The reachability callback wasn't set."); } // Get the initial set of flags. dispatch_async(_reachabilityQueue, ^{ Boolean valid = SCNetworkReachabilityGetFlags(self->_reachabilityRef, &self->_flags); if (!valid) { + GDTCORLogDebug("%@", @"Determining reachability failed."); self->_flags = 0; } }); @@ -103,8 +108,11 @@ static void GDTReachabilityCallback(SCNetworkReachabilityRef reachability, @end -static void GDTReachabilityCallback(SCNetworkReachabilityRef reachability, - SCNetworkReachabilityFlags flags, - void *info) { - [[GDTReachability sharedInstance] setCallbackFlags:flags]; +static void GDTCORReachabilityCallback(SCNetworkReachabilityRef reachability, + SCNetworkReachabilityFlags flags, + void *info) { + GDTCORLogDebug("Reachability changed, new flags: %d", flags); + [[GDTCORReachability sharedInstance] setCallbackFlags:flags]; } + +#endif diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTRegistrar.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m similarity index 51% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTRegistrar.m rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m index 500f9cc68..1440376f1 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTRegistrar.m +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m @@ -14,23 +14,24 @@ * limitations under the License. */ -#import "GDTLibrary/Public/GDTRegistrar.h" +#import "GDTCORLibrary/Public/GDTCORRegistrar.h" +#import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" -#import "GDTLibrary/Private/GDTRegistrar_Private.h" +#import -@implementation GDTRegistrar { +@implementation GDTCORRegistrar { /** Backing ivar for targetToUploader property. */ - NSMutableDictionary> *_targetToUploader; + NSMutableDictionary> *_targetToUploader; /** Backing ivar for targetToPrioritizer property. */ - NSMutableDictionary> *_targetToPrioritizer; + NSMutableDictionary> *_targetToPrioritizer; } + (instancetype)sharedInstance { - static GDTRegistrar *sharedInstance; + static GDTCORRegistrar *sharedInstance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - sharedInstance = [[GDTRegistrar alloc] init]; + sharedInstance = [[GDTCORRegistrar alloc] init]; }); return sharedInstance; } @@ -38,38 +39,40 @@ - (instancetype)init { self = [super init]; if (self) { - _registrarQueue = dispatch_queue_create("com.google.GDTRegistrar", DISPATCH_QUEUE_CONCURRENT); + _registrarQueue = dispatch_queue_create("com.google.GDTCORRegistrar", DISPATCH_QUEUE_SERIAL); _targetToPrioritizer = [[NSMutableDictionary alloc] init]; _targetToUploader = [[NSMutableDictionary alloc] init]; } return self; } -- (void)registerUploader:(id)backend target:(GDTTarget)target { - __weak GDTRegistrar *weakSelf = self; - dispatch_barrier_async(_registrarQueue, ^{ - GDTRegistrar *strongSelf = weakSelf; +- (void)registerUploader:(id)backend target:(GDTCORTarget)target { + __weak GDTCORRegistrar *weakSelf = self; + dispatch_async(_registrarQueue, ^{ + GDTCORRegistrar *strongSelf = weakSelf; if (strongSelf) { + GDTCORLogDebug("Registered an uploader: %@ for target:%ld", backend, (long)target); strongSelf->_targetToUploader[@(target)] = backend; } }); } -- (void)registerPrioritizer:(id)prioritizer target:(GDTTarget)target { - __weak GDTRegistrar *weakSelf = self; - dispatch_barrier_async(_registrarQueue, ^{ - GDTRegistrar *strongSelf = weakSelf; +- (void)registerPrioritizer:(id)prioritizer target:(GDTCORTarget)target { + __weak GDTCORRegistrar *weakSelf = self; + dispatch_async(_registrarQueue, ^{ + GDTCORRegistrar *strongSelf = weakSelf; if (strongSelf) { + GDTCORLogDebug("Registered a prioritizer: %@ for target:%ld", prioritizer, (long)target); strongSelf->_targetToPrioritizer[@(target)] = prioritizer; } }); } -- (NSMutableDictionary> *)targetToUploader { - __block NSMutableDictionary> *targetToUploader; - __weak GDTRegistrar *weakSelf = self; +- (NSMutableDictionary> *)targetToUploader { + __block NSMutableDictionary> *targetToUploader; + __weak GDTCORRegistrar *weakSelf = self; dispatch_sync(_registrarQueue, ^{ - GDTRegistrar *strongSelf = weakSelf; + GDTCORRegistrar *strongSelf = weakSelf; if (strongSelf) { targetToUploader = strongSelf->_targetToUploader; } @@ -77,11 +80,11 @@ return targetToUploader; } -- (NSMutableDictionary> *)targetToPrioritizer { - __block NSMutableDictionary> *targetToPrioritizer; - __weak GDTRegistrar *weakSelf = self; +- (NSMutableDictionary> *)targetToPrioritizer { + __block NSMutableDictionary> *targetToPrioritizer; + __weak GDTCORRegistrar *weakSelf = self; dispatch_sync(_registrarQueue, ^{ - GDTRegistrar *strongSelf = weakSelf; + GDTCORRegistrar *strongSelf = weakSelf; if (strongSelf) { targetToPrioritizer = strongSelf->_targetToPrioritizer; } @@ -89,16 +92,16 @@ return targetToPrioritizer; } -#pragma mark - GDTLifecycleProtocol +#pragma mark - GDTCORLifecycleProtocol -- (void)appWillBackground:(nonnull GDTApplication *)app { +- (void)appWillBackground:(nonnull GDTCORApplication *)app { dispatch_async(_registrarQueue, ^{ - for (id uploader in [self->_targetToUploader allValues]) { + for (id uploader in [self->_targetToUploader allValues]) { if ([uploader respondsToSelector:@selector(appWillBackground:)]) { [uploader appWillBackground:app]; } } - for (id prioritizer in [self->_targetToPrioritizer allValues]) { + for (id prioritizer in [self->_targetToPrioritizer allValues]) { if ([prioritizer respondsToSelector:@selector(appWillBackground:)]) { [prioritizer appWillBackground:app]; } @@ -106,14 +109,14 @@ }); } -- (void)appWillForeground:(nonnull GDTApplication *)app { +- (void)appWillForeground:(nonnull GDTCORApplication *)app { dispatch_async(_registrarQueue, ^{ - for (id uploader in [self->_targetToUploader allValues]) { + for (id uploader in [self->_targetToUploader allValues]) { if ([uploader respondsToSelector:@selector(appWillForeground:)]) { [uploader appWillForeground:app]; } } - for (id prioritizer in [self->_targetToPrioritizer allValues]) { + for (id prioritizer in [self->_targetToPrioritizer allValues]) { if ([prioritizer respondsToSelector:@selector(appWillForeground:)]) { [prioritizer appWillForeground:app]; } @@ -121,14 +124,14 @@ }); } -- (void)appWillTerminate:(nonnull GDTApplication *)app { +- (void)appWillTerminate:(nonnull GDTCORApplication *)app { dispatch_sync(_registrarQueue, ^{ - for (id uploader in [self->_targetToUploader allValues]) { + for (id uploader in [self->_targetToUploader allValues]) { if ([uploader respondsToSelector:@selector(appWillTerminate:)]) { [uploader appWillTerminate:app]; } } - for (id prioritizer in [self->_targetToPrioritizer allValues]) { + for (id prioritizer in [self->_targetToPrioritizer allValues]) { if ([prioritizer respondsToSelector:@selector(appWillTerminate:)]) { [prioritizer appWillTerminate:app]; } diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStorage.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStorage.m new file mode 100644 index 000000000..23a5ee7ae --- /dev/null +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStorage.m @@ -0,0 +1,333 @@ +/* + * Copyright 2018 Google + * + * 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 "GDTCORLibrary/Private/GDTCORStorage.h" +#import "GDTCORLibrary/Private/GDTCORStorage_Private.h" + +#import +#import +#import +#import +#import + +#import "GDTCORLibrary/Private/GDTCOREvent_Private.h" +#import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" +#import "GDTCORLibrary/Private/GDTCORUploadCoordinator.h" + +/** Creates and/or returns a singleton NSString that is the shared storage path. + * + * @return The SDK event storage path. + */ +static NSString *GDTCORStoragePath() { + static NSString *storagePath; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSString *cachePath = + NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; + storagePath = [NSString stringWithFormat:@"%@/google-sdks-events", cachePath]; + GDTCORLogDebug("Events will be saved to %@", storagePath); + }); + return storagePath; +} + +@implementation GDTCORStorage + ++ (NSString *)archivePath { + static NSString *archivePath; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + archivePath = [GDTCORStoragePath() stringByAppendingPathComponent:@"GDTCORStorageArchive"]; + }); + return archivePath; +} + ++ (instancetype)sharedInstance { + static GDTCORStorage *sharedStorage; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sharedStorage = [[GDTCORStorage alloc] init]; + }); + return sharedStorage; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _storageQueue = dispatch_queue_create("com.google.GDTCORStorage", DISPATCH_QUEUE_SERIAL); + _targetToEventSet = [[NSMutableDictionary alloc] init]; + _storedEvents = [[NSMutableOrderedSet alloc] init]; + _uploadCoordinator = [GDTCORUploadCoordinator sharedInstance]; + } + return self; +} + +- (void)storeEvent:(GDTCOREvent *)event { + GDTCORLogDebug("Saving event: %@", event); + if (event == nil) { + GDTCORLogDebug("%@", @"The event was nil, so it was not saved."); + return; + } + + [self createEventDirectoryIfNotExists]; + + __block GDTCORBackgroundIdentifier bgID = GDTCORBackgroundIdentifierInvalid; + bgID = [[GDTCORApplication sharedApplication] + beginBackgroundTaskWithName:@"GDTStorage" + expirationHandler:^{ + // End the background task if it's still valid. + [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + }]; + + dispatch_async(_storageQueue, ^{ + // Check that a backend implementation is available for this target. + NSInteger target = event.target; + + // Check that a prioritizer is available for this target. + id prioritizer = + [GDTCORRegistrar sharedInstance].targetToPrioritizer[@(target)]; + GDTCORAssert(prioritizer, @"There's no prioritizer registered for the given target. Are you " + @"sure you've added the support library for the backend you need?"); + + // Write the transport bytes to disk, get a filename. + GDTCORAssert(event.dataObjectTransportBytes, @"The event should have been serialized to bytes"); + NSURL *eventFile = [self saveEventBytesToDisk:event.dataObjectTransportBytes + eventHash:event.hash]; + GDTCORLogDebug("Event saved to disk: %@", eventFile); + GDTCORDataFuture *dataFuture = [[GDTCORDataFuture alloc] initWithFileURL:eventFile]; + GDTCORStoredEvent *storedEvent = [event storedEventWithDataFuture:dataFuture]; + + // Add event to tracking collections. + [self addEventToTrackingCollections:storedEvent]; + + // Have the prioritizer prioritize the event. + [prioritizer prioritizeEvent:storedEvent]; + + // Check the QoS, if it's high priority, notify the target that it has a high priority event. + if (event.qosTier == GDTCOREventQoSFast) { + [self.uploadCoordinator forceUploadForTarget:target]; + } + + // Write state to disk if we're in the background. + if ([[GDTCORApplication sharedApplication] isRunningInBackground]) { + GDTCORLogDebug("%@", @"Saving storage state because the app is running in the background"); + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { + NSError *error; + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self + requiringSecureCoding:YES + error:&error]; + [data writeToFile:[GDTCORStorage archivePath] atomically:YES]; + } else { +#if !TARGET_OS_MACCATALYST && !TARGET_OS_WATCH + [NSKeyedArchiver archiveRootObject:self toFile:[GDTCORStorage archivePath]]; +#endif + } + } + + // Cancel or end the associated background task if it's still valid. + [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + GDTCORLogDebug("Event %@ is stored. There are %ld events stored on disk", event, + (unsigned long)self->_storedEvents.count); + }); +} + +- (void)removeEvents:(NSSet *)events { + NSSet *eventsToRemove = [events copy]; + dispatch_async(_storageQueue, ^{ + for (GDTCORStoredEvent *event in eventsToRemove) { + // Remove from disk, first and foremost. + NSError *error; + if (event.dataFuture.fileURL) { + NSURL *fileURL = event.dataFuture.fileURL; + [[NSFileManager defaultManager] removeItemAtURL:fileURL error:&error]; + GDTCORAssert(error == nil, @"There was an error removing an event file: %@", error); + GDTCORLogDebug("Removed event from disk: %@", fileURL); + } + + // Remove from the tracking collections. + [self.storedEvents removeObject:event]; + [self.targetToEventSet[event.target] removeObject:event]; + } + }); +} + +#pragma mark - Private helper methods + +/** Creates the storage directory if it does not exist. */ +- (void)createEventDirectoryIfNotExists { + NSError *error; + BOOL result = [[NSFileManager defaultManager] createDirectoryAtPath:GDTCORStoragePath() + withIntermediateDirectories:YES + attributes:0 + error:&error]; + if (!result || error) { + GDTCORLogError(GDTCORMCEDirectoryCreationError, @"Error creating the directory: %@", error); + } +} + +/** Saves the event's dataObjectTransportBytes to a file using NSData mechanisms. + * + * @note This method should only be called from a method within a block on _storageQueue to maintain + * thread safety. + * + * @param transportBytes The transport bytes of the event. + * @param eventHash The hash value of the event. + * @return The filename + */ +- (NSURL *)saveEventBytesToDisk:(NSData *)transportBytes eventHash:(NSUInteger)eventHash { + NSString *storagePath = GDTCORStoragePath(); + NSString *event = [NSString stringWithFormat:@"event-%lu", (unsigned long)eventHash]; + NSURL *eventFilePath = [NSURL fileURLWithPath:[storagePath stringByAppendingPathComponent:event]]; + + GDTCORAssert(![[NSFileManager defaultManager] fileExistsAtPath:eventFilePath.path], + @"An event shouldn't already exist at this path: %@", eventFilePath.path); + + BOOL writingSuccess = [transportBytes writeToURL:eventFilePath atomically:YES]; + if (!writingSuccess) { + GDTCORLogError(GDTCORMCEFileWriteError, @"An event file could not be written: %@", + eventFilePath); + } + + return eventFilePath; +} + +/** Adds the event to internal tracking collections. + * + * @note This method should only be called from a method within a block on _storageQueue to maintain + * thread safety. + * + * @param event The event to track. + */ +- (void)addEventToTrackingCollections:(GDTCORStoredEvent *)event { + [_storedEvents addObject:event]; + NSMutableSet *events = self.targetToEventSet[event.target]; + events = events ? events : [[NSMutableSet alloc] init]; + [events addObject:event]; + _targetToEventSet[event.target] = events; +} + +#pragma mark - GDTCORLifecycleProtocol + +- (void)appWillForeground:(GDTCORApplication *)app { + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { + NSError *error; + NSData *data = [NSData dataWithContentsOfFile:[GDTCORStorage archivePath]]; + if (data) { + [NSKeyedUnarchiver unarchivedObjectOfClass:[GDTCORStorage class] fromData:data error:&error]; + } + } else { +#if !TARGET_OS_MACCATALYST && !TARGET_OS_WATCH + [NSKeyedUnarchiver unarchiveObjectWithFile:[GDTCORStorage archivePath]]; +#endif + } +} + +- (void)appWillBackground:(GDTCORApplication *)app { + dispatch_async(_storageQueue, ^{ + // Immediately request a background task to run until the end of the current queue of work, and + // cancel it once the work is done. + __block GDTCORBackgroundIdentifier bgID = + [app beginBackgroundTaskWithName:@"GDTStorage" + expirationHandler:^{ + [app endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + }]; + + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { + NSError *error; + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self + requiringSecureCoding:YES + error:&error]; + [data writeToFile:[GDTCORStorage archivePath] atomically:YES]; + } else { +#if !TARGET_OS_MACCATALYST && !TARGET_OS_WATCH + [NSKeyedArchiver archiveRootObject:self toFile:[GDTCORStorage archivePath]]; +#endif + } + + // End the background task if it's still valid. + [app endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + }); +} + +- (void)appWillTerminate:(GDTCORApplication *)application { + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { + NSError *error; + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self + requiringSecureCoding:YES + error:&error]; + [data writeToFile:[GDTCORStorage archivePath] atomically:YES]; + } else { +#if !TARGET_OS_MACCATALYST && !TARGET_OS_WATCH + [NSKeyedArchiver archiveRootObject:self toFile:[GDTCORStorage archivePath]]; +#endif + } +} + +#pragma mark - NSSecureCoding + +/** The NSKeyedCoder key for the storedEvents property. */ +static NSString *const kGDTCORStorageStoredEventsKey = @"GDTCORStorageStoredEventsKey"; + +/** The NSKeyedCoder key for the targetToEventSet property. */ +static NSString *const kGDTCORStorageTargetToEventSetKey = @"GDTCORStorageTargetToEventSetKey"; + +/** The NSKeyedCoder key for the uploadCoordinator property. */ +static NSString *const kGDTCORStorageUploadCoordinatorKey = @"GDTCORStorageUploadCoordinatorKey"; + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder { + // Create the singleton and populate its ivars. + GDTCORStorage *sharedInstance = [self.class sharedInstance]; + dispatch_sync(sharedInstance.storageQueue, ^{ + NSSet *classes = + [NSSet setWithObjects:[NSMutableOrderedSet class], [GDTCORStoredEvent class], nil]; + sharedInstance->_storedEvents = [aDecoder decodeObjectOfClasses:classes + forKey:kGDTCORStorageStoredEventsKey]; + classes = [NSSet setWithObjects:[NSMutableDictionary class], [NSMutableSet class], + [GDTCORStoredEvent class], nil]; + sharedInstance->_targetToEventSet = + [aDecoder decodeObjectOfClasses:classes forKey:kGDTCORStorageTargetToEventSetKey]; + sharedInstance->_uploadCoordinator = + [aDecoder decodeObjectOfClass:[GDTCORUploadCoordinator class] + forKey:kGDTCORStorageUploadCoordinatorKey]; + }); + return sharedInstance; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + GDTCORStorage *sharedInstance = [self.class sharedInstance]; + NSMutableOrderedSet *storedEvents = sharedInstance->_storedEvents; + if (storedEvents) { + [aCoder encodeObject:storedEvents forKey:kGDTCORStorageStoredEventsKey]; + } + NSMutableDictionary *> *targetToEventSet = + sharedInstance->_targetToEventSet; + if (targetToEventSet) { + [aCoder encodeObject:targetToEventSet forKey:kGDTCORStorageTargetToEventSetKey]; + } + GDTCORUploadCoordinator *uploadCoordinator = sharedInstance->_uploadCoordinator; + if (uploadCoordinator) { + [aCoder encodeObject:uploadCoordinator forKey:kGDTCORStorageUploadCoordinatorKey]; + } +} + +@end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTStoredEvent.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStoredEvent.m similarity index 71% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTStoredEvent.m rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStoredEvent.m index 6217f139a..a24339472 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTStoredEvent.m +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORStoredEvent.m @@ -14,15 +14,16 @@ * limitations under the License. */ -#import +#import -#import +#import -#import "GDTLibrary/Private/GDTStorage_Private.h" +#import "GDTCORLibrary/Private/GDTCORStorage_Private.h" -@implementation GDTStoredEvent +@implementation GDTCORStoredEvent -- (instancetype)initWithEvent:(GDTEvent *)event dataFuture:(nonnull GDTDataFuture *)dataFuture { +- (instancetype)initWithEvent:(GDTCOREvent *)event + dataFuture:(nonnull GDTCORDataFuture *)dataFuture { self = [super init]; if (self) { _dataFuture = dataFuture; @@ -38,22 +39,22 @@ #pragma mark - NSSecureCoding /** Coding key for the dataFuture ivar. */ -static NSString *kDataFutureKey = @"GDTStoredEventDataFutureKey"; +static NSString *kDataFutureKey = @"GDTCORStoredEventDataFutureKey"; /** Coding key for mappingID ivar. */ -static NSString *kMappingIDKey = @"GDTStoredEventMappingIDKey"; +static NSString *kMappingIDKey = @"GDTCORStoredEventMappingIDKey"; /** Coding key for target ivar. */ -static NSString *kTargetKey = @"GDTStoredEventTargetKey"; +static NSString *kTargetKey = @"GDTCORStoredEventTargetKey"; /** Coding key for qosTier ivar. */ -static NSString *kQosTierKey = @"GDTStoredEventQosTierKey"; +static NSString *kQosTierKey = @"GDTCORStoredEventQosTierKey"; /** Coding key for clockSnapshot ivar. */ -static NSString *kClockSnapshotKey = @"GDTStoredEventClockSnapshotKey"; +static NSString *kClockSnapshotKey = @"GDTCORStoredEventClockSnapshotKey"; /** Coding key for customPrioritizationParams ivar. */ -static NSString *kCustomPrioritizationParamsKey = @"GDTStoredEventcustomPrioritizationParamsKey"; +static NSString *kCustomPrioritizationParamsKey = @"GDTCORStoredEventcustomPrioritizationParamsKey"; + (BOOL)supportsSecureCoding { return YES; @@ -71,19 +72,19 @@ static NSString *kCustomPrioritizationParamsKey = @"GDTStoredEventcustomPrioriti - (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder { self = [self init]; if (self) { - _dataFuture = [aDecoder decodeObjectOfClass:[GDTDataFuture class] forKey:kDataFutureKey]; + _dataFuture = [aDecoder decodeObjectOfClass:[GDTCORDataFuture class] forKey:kDataFutureKey]; _mappingID = [aDecoder decodeObjectOfClass:[NSString class] forKey:kMappingIDKey]; _target = [aDecoder decodeObjectOfClass:[NSNumber class] forKey:kTargetKey]; NSNumber *qosTier = [aDecoder decodeObjectOfClass:[NSNumber class] forKey:kQosTierKey]; _qosTier = [qosTier intValue]; - _clockSnapshot = [aDecoder decodeObjectOfClass:[GDTClock class] forKey:kClockSnapshotKey]; + _clockSnapshot = [aDecoder decodeObjectOfClass:[GDTCORClock class] forKey:kClockSnapshotKey]; _customPrioritizationParams = [aDecoder decodeObjectOfClass:[NSDictionary class] forKey:kCustomPrioritizationParamsKey]; } return self; } -- (BOOL)isEqual:(GDTStoredEvent *)other { +- (BOOL)isEqual:(GDTCORStoredEvent *)other { return [self hash] == [other hash]; } diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m new file mode 100644 index 000000000..f89204014 --- /dev/null +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m @@ -0,0 +1,91 @@ +/* + * Copyright 2018 Google + * + * 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 "GDTCORLibrary/Private/GDTCORTransformer.h" +#import "GDTCORLibrary/Private/GDTCORTransformer_Private.h" + +#import +#import +#import +#import +#import + +#import "GDTCORLibrary/Private/GDTCORStorage.h" + +@implementation GDTCORTransformer + ++ (instancetype)sharedInstance { + static GDTCORTransformer *eventTransformer; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + eventTransformer = [[self alloc] init]; + }); + return eventTransformer; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _eventWritingQueue = + dispatch_queue_create("com.google.GDTCORTransformer", DISPATCH_QUEUE_SERIAL); + _storageInstance = [GDTCORStorage sharedInstance]; + } + return self; +} + +- (void)transformEvent:(GDTCOREvent *)event + withTransformers:(NSArray> *)transformers { + GDTCORAssert(event, @"You can't write a nil event"); + + __block GDTCORBackgroundIdentifier bgID = GDTCORBackgroundIdentifierInvalid; + bgID = [[GDTCORApplication sharedApplication] + beginBackgroundTaskWithName:@"GDTTransformer" + expirationHandler:^{ + [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + }]; + dispatch_async(_eventWritingQueue, ^{ + GDTCOREvent *transformedEvent = event; + for (id transformer in transformers) { + if ([transformer respondsToSelector:@selector(transform:)]) { + GDTCORLogDebug("Applying a transformer to event %@", event); + transformedEvent = [transformer transform:transformedEvent]; + if (!transformedEvent) { + return; + } + } else { + GDTCORLogError(GDTCORMCETransformerDoesntImplementTransform, + @"Transformer doesn't implement transform: %@", transformer); + return; + } + } + [self.storageInstance storeEvent:transformedEvent]; + + // The work is done, cancel the background task if it's valid. + [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + }); +} + +#pragma mark - GDTCORLifecycleProtocol + +- (void)appWillTerminate:(GDTCORApplication *)application { + // Flush the queue immediately. + dispatch_sync(_eventWritingQueue, ^{ + }); +} + +@end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m new file mode 100644 index 000000000..b095c8593 --- /dev/null +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m @@ -0,0 +1,73 @@ +/* + * Copyright 2018 Google + * + * 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 +#import "GDTCORLibrary/Private/GDTCORTransport_Private.h" + +#import +#import +#import + +#import "GDTCORLibrary/Private/GDTCORTransformer.h" + +@implementation GDTCORTransport + +- (nullable instancetype)initWithMappingID:(NSString *)mappingID + transformers: + (nullable NSArray> *)transformers + target:(NSInteger)target { + GDTCORAssert(mappingID.length > 0, @"A mapping ID cannot be nil or empty"); + GDTCORAssert(target > 0, @"A target cannot be negative or 0"); + if (mappingID == nil || mappingID.length == 0 || target <= 0) { + return nil; + } + self = [super init]; + if (self) { + _mappingID = mappingID; + _transformers = transformers; + _target = target; + _transformerInstance = [GDTCORTransformer sharedInstance]; + } + GDTCORLogDebug("Transport object created. mappingID:%@ transformers:%@ target:%ld", _mappingID, + _transformers, (long)_target); + return self; +} + +- (void)sendTelemetryEvent:(GDTCOREvent *)event { + // TODO: Determine if sending an event before registration is allowed. + GDTCORAssert(event, @"You can't send a nil event"); + GDTCOREvent *copiedEvent = [event copy]; + copiedEvent.qosTier = GDTCOREventQoSTelemetry; + copiedEvent.clockSnapshot = [GDTCORClock snapshot]; + [self.transformerInstance transformEvent:copiedEvent withTransformers:_transformers]; + GDTCORLogDebug("Telemetry event sent: %@", event); +} + +- (void)sendDataEvent:(GDTCOREvent *)event { + // TODO: Determine if sending an event before registration is allowed. + GDTCORAssert(event, @"You can't send a nil event"); + GDTCORAssert(event.qosTier != GDTCOREventQoSTelemetry, @"Use -sendTelemetryEvent, please."); + GDTCOREvent *copiedEvent = [event copy]; + copiedEvent.clockSnapshot = [GDTCORClock snapshot]; + [self.transformerInstance transformEvent:copiedEvent withTransformers:_transformers]; + GDTCORLogDebug("Data event sent: %@", event); +} + +- (GDTCOREvent *)eventForTransport { + return [[GDTCOREvent alloc] initWithMappingID:_mappingID target:_target]; +} + +@end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTUploadCoordinator.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m similarity index 54% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTUploadCoordinator.m rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m index e384c5dec..0dbc1b48f 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTUploadCoordinator.m +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m @@ -14,23 +14,23 @@ * limitations under the License. */ -#import "GDTLibrary/Private/GDTUploadCoordinator.h" +#import "GDTCORLibrary/Private/GDTCORUploadCoordinator.h" -#import -#import -#import +#import +#import +#import -#import "GDTLibrary/Private/GDTReachability.h" -#import "GDTLibrary/Private/GDTRegistrar_Private.h" -#import "GDTLibrary/Private/GDTStorage.h" +#import "GDTCORLibrary/Private/GDTCORReachability.h" +#import "GDTCORLibrary/Private/GDTCORRegistrar_Private.h" +#import "GDTCORLibrary/Private/GDTCORStorage.h" -@implementation GDTUploadCoordinator +@implementation GDTCORUploadCoordinator + (instancetype)sharedInstance { - static GDTUploadCoordinator *sharedUploader; + static GDTCORUploadCoordinator *sharedUploader; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - sharedUploader = [[GDTUploadCoordinator alloc] init]; + sharedUploader = [[GDTCORUploadCoordinator alloc] init]; [sharedUploader startTimer]; }); return sharedUploader; @@ -40,8 +40,8 @@ self = [super init]; if (self) { _coordinationQueue = - dispatch_queue_create("com.google.GDTUploadCoordinator", DISPATCH_QUEUE_SERIAL); - _registrar = [GDTRegistrar sharedInstance]; + dispatch_queue_create("com.google.GDTCORUploadCoordinator", DISPATCH_QUEUE_SERIAL); + _registrar = [GDTCORRegistrar sharedInstance]; _timerInterval = 30 * NSEC_PER_SEC; _timerLeeway = 5 * NSEC_PER_SEC; _targetToInFlightPackages = [[NSMutableDictionary alloc] init]; @@ -49,21 +49,22 @@ return self; } -- (void)forceUploadForTarget:(GDTTarget)target { +- (void)forceUploadForTarget:(GDTCORTarget)target { dispatch_async(_coordinationQueue, ^{ - GDTUploadConditions conditions = [self uploadConditions]; - conditions |= GDTUploadConditionHighPriority; + GDTCORLogDebug("Forcing an upload of target %ld", (long)target); + GDTCORUploadConditions conditions = [self uploadConditions]; + conditions |= GDTCORUploadConditionHighPriority; [self uploadTargets:@[ @(target) ] conditions:conditions]; }); } #pragma mark - Property overrides -// GDTStorage and GDTUploadCoordinator +sharedInstance methods call each other, so this breaks +// GDTCORStorage and GDTCORUploadCoordinator +sharedInstance methods call each other, so this breaks // the loop. -- (GDTStorage *)storage { +- (GDTCORStorage *)storage { if (!_storage) { - _storage = [GDTStorage sharedInstance]; + _storage = [GDTCORStorage sharedInstance]; } return _storage; } @@ -80,11 +81,13 @@ dispatch_source_set_timer(self->_timer, DISPATCH_TIME_NOW, self->_timerInterval, self->_timerLeeway); dispatch_source_set_event_handler(self->_timer, ^{ - if (!self->_runningInBackground) { - GDTUploadConditions conditions = [self uploadConditions]; + if (![[GDTCORApplication sharedApplication] isRunningInBackground]) { + GDTCORUploadConditions conditions = [self uploadConditions]; + GDTCORLogDebug("%@", @"Upload timer fired"); [self uploadTargets:[self.registrar.targetToUploader allKeys] conditions:conditions]; } }); + GDTCORLogDebug("%@", @"Upload timer started"); dispatch_resume(self->_timer); }); } @@ -101,28 +104,32 @@ * @param targets An array of targets to trigger. * @param conditions The set of upload conditions. */ -- (void)uploadTargets:(NSArray *)targets conditions:(GDTUploadConditions)conditions { +- (void)uploadTargets:(NSArray *)targets conditions:(GDTCORUploadConditions)conditions { dispatch_async(_coordinationQueue, ^{ - if ((conditions & GDTUploadConditionNoNetwork) == GDTUploadConditionNoNetwork) { + if ((conditions & GDTCORUploadConditionNoNetwork) == GDTCORUploadConditionNoNetwork) { return; } for (NSNumber *target in targets) { // Don't trigger uploads for targets that have an in-flight package already. if (self->_targetToInFlightPackages[target]) { + GDTCORLogDebug("Target %@ will not upload, there's an upload in flight", target); continue; } // Ask the uploader if they can upload and do so, if it can. - id uploader = self.registrar.targetToUploader[target]; + id uploader = self.registrar.targetToUploader[target]; if ([uploader readyToUploadWithConditions:conditions]) { - id prioritizer = self.registrar.targetToPrioritizer[target]; - GDTUploadPackage *package = [prioritizer uploadPackageWithConditions:conditions]; + id prioritizer = self.registrar.targetToPrioritizer[target]; + GDTCORUploadPackage *package = [prioritizer uploadPackageWithConditions:conditions]; if (package.events.count) { self->_targetToInFlightPackages[target] = package; + GDTCORLogDebug("Package of %ld events is being handed over to an uploader", + (long)package.events.count); [uploader uploadPackage:package]; } else { [package completeDelivery]; } } + GDTCORLogDebug("Target %@ is not ready to upload", target); } }); } @@ -131,8 +138,11 @@ * * @return The current upload conditions. */ -- (GDTUploadConditions)uploadConditions { - SCNetworkReachabilityFlags currentFlags = [GDTReachability currentFlags]; +- (GDTCORUploadConditions)uploadConditions { +#if TARGET_OS_WATCH + return GDTCORUploadConditionNoNetwork; +#else + SCNetworkReachabilityFlags currentFlags = [GDTCORReachability currentFlags]; BOOL reachable = (currentFlags & kSCNetworkReachabilityFlagsReachable) == kSCNetworkReachabilityFlagsReachable; BOOL connectionRequired = (currentFlags & kSCNetworkReachabilityFlagsConnectionRequired) == @@ -140,127 +150,116 @@ BOOL networkConnected = reachable && !connectionRequired; if (!networkConnected) { - return GDTUploadConditionNoNetwork; + return GDTCORUploadConditionNoNetwork; } - BOOL isWWAN = GDTReachabilityFlagsContainWWAN(currentFlags); + BOOL isWWAN = GDTCORReachabilityFlagsContainWWAN(currentFlags); if (isWWAN) { - return GDTUploadConditionMobileData; + return GDTCORUploadConditionMobileData; } else { - return GDTUploadConditionWifiData; + return GDTCORUploadConditionWifiData; } +#endif } #pragma mark - NSSecureCoding support /** The NSKeyedCoder key for the targetToInFlightPackages property. */ static NSString *const ktargetToInFlightPackagesKey = - @"GDTUploadCoordinatortargetToInFlightPackages"; + @"GDTCORUploadCoordinatortargetToInFlightPackages"; + (BOOL)supportsSecureCoding { return YES; } - (instancetype)initWithCoder:(NSCoder *)aDecoder { - GDTUploadCoordinator *sharedCoordinator = [GDTUploadCoordinator sharedInstance]; - @try { - sharedCoordinator->_targetToInFlightPackages = - [aDecoder decodeObjectOfClass:[NSMutableDictionary class] - forKey:ktargetToInFlightPackagesKey]; + GDTCORUploadCoordinator *sharedCoordinator = [GDTCORUploadCoordinator sharedInstance]; + dispatch_sync(sharedCoordinator->_coordinationQueue, ^{ + @try { + sharedCoordinator->_targetToInFlightPackages = + [aDecoder decodeObjectOfClass:[NSMutableDictionary class] + forKey:ktargetToInFlightPackagesKey]; - } @catch (NSException *exception) { - sharedCoordinator->_targetToInFlightPackages = [NSMutableDictionary dictionary]; - } + } @catch (NSException *exception) { + sharedCoordinator->_targetToInFlightPackages = [NSMutableDictionary dictionary]; + } + }); return sharedCoordinator; } - (void)encodeWithCoder:(NSCoder *)aCoder { - // All packages that have been given to uploaders need to be tracked so that their expiration - // timers can be called. - if (_targetToInFlightPackages.count > 0) { - [aCoder encodeObject:_targetToInFlightPackages forKey:ktargetToInFlightPackagesKey]; - } -} - -#pragma mark - GDTLifecycleProtocol - -- (void)appWillForeground:(GDTApplication *)app { - // Not entirely thread-safe, but it should be fine. - self->_runningInBackground = NO; - [self startTimer]; -} - -- (void)appWillBackground:(GDTApplication *)app { - // Not entirely thread-safe, but it should be fine. - self->_runningInBackground = YES; - - // Should be thread-safe. If it ends up not being, put this in a dispatch_sync. - [self stopTimer]; - - // Create an immediate background task to run until the end of the current queue of work. - __block GDTBackgroundIdentifier bgID = [app beginBackgroundTaskWithExpirationHandler:^{ - if (bgID != GDTBackgroundIdentifierInvalid) { - [app endBackgroundTask:bgID]; - bgID = GDTBackgroundIdentifierInvalid; - } - }]; - dispatch_async(_coordinationQueue, ^{ - if (bgID != GDTBackgroundIdentifierInvalid) { - [app endBackgroundTask:bgID]; - bgID = GDTBackgroundIdentifierInvalid; + dispatch_sync(_coordinationQueue, ^{ + // All packages that have been given to uploaders need to be tracked so that their expiration + // timers can be called. + if (self->_targetToInFlightPackages.count > 0) { + [aCoder encodeObject:self->_targetToInFlightPackages forKey:ktargetToInFlightPackagesKey]; } }); } -- (void)appWillTerminate:(GDTApplication *)application { +#pragma mark - GDTCORLifecycleProtocol + +- (void)appWillForeground:(GDTCORApplication *)app { + // Not entirely thread-safe, but it should be fine. + [self startTimer]; +} + +- (void)appWillBackground:(GDTCORApplication *)app { + // Should be thread-safe. If it ends up not being, put this in a dispatch_sync. + [self stopTimer]; +} + +- (void)appWillTerminate:(GDTCORApplication *)application { dispatch_sync(_coordinationQueue, ^{ [self stopTimer]; }); } -#pragma mark - GDTUploadPackageProtocol +#pragma mark - GDTCORUploadPackageProtocol -- (void)packageDelivered:(GDTUploadPackage *)package successful:(BOOL)successful { +- (void)packageDelivered:(GDTCORUploadPackage *)package successful:(BOOL)successful { if (!_coordinationQueue) { return; } dispatch_async(_coordinationQueue, ^{ NSNumber *targetNumber = @(package.target); - NSMutableDictionary *targetToInFlightPackages = + NSMutableDictionary *targetToInFlightPackages = self->_targetToInFlightPackages; - GDTRegistrar *registrar = self->_registrar; + GDTCORRegistrar *registrar = self->_registrar; if (targetToInFlightPackages) { [targetToInFlightPackages removeObjectForKey:targetNumber]; } if (registrar) { - id prioritizer = registrar.targetToPrioritizer[targetNumber]; + id prioritizer = registrar.targetToPrioritizer[targetNumber]; if (!prioritizer) { - GDTLogError(GDTMCEPrioritizerError, - @"A prioritizer should be registered for this target: %@", targetNumber); + GDTCORLogError(GDTCORMCEPrioritizerError, + @"A prioritizer should be registered for this target: %@", targetNumber); } if ([prioritizer respondsToSelector:@selector(packageDelivered:successful:)]) { [prioritizer packageDelivered:package successful:successful]; } } - [self.storage removeEvents:package.events]; + if (package.events != nil) { + [self.storage removeEvents:package.events]; + } }); } -- (void)packageExpired:(GDTUploadPackage *)package { +- (void)packageExpired:(GDTCORUploadPackage *)package { if (!_coordinationQueue) { return; } dispatch_async(_coordinationQueue, ^{ NSNumber *targetNumber = @(package.target); - NSMutableDictionary *targetToInFlightPackages = + NSMutableDictionary *targetToInFlightPackages = self->_targetToInFlightPackages; - GDTRegistrar *registrar = self->_registrar; + GDTCORRegistrar *registrar = self->_registrar; if (targetToInFlightPackages) { [targetToInFlightPackages removeObjectForKey:targetNumber]; } if (registrar) { - id prioritizer = registrar.targetToPrioritizer[targetNumber]; - id uploader = registrar.targetToUploader[targetNumber]; + id prioritizer = registrar.targetToPrioritizer[targetNumber]; + id uploader = registrar.targetToUploader[targetNumber]; if ([prioritizer respondsToSelector:@selector(packageExpired:)]) { [prioritizer packageExpired:package]; } diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTUploadPackage.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadPackage.m similarity index 65% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTUploadPackage.m rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadPackage.m index 24d3b6e54..6ac5f4f47 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTUploadPackage.m +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/GDTCORUploadPackage.m @@ -14,17 +14,17 @@ * limitations under the License. */ -#import +#import -#import -#import -#import +#import +#import +#import -#import "GDTLibrary/Private/GDTStorage_Private.h" -#import "GDTLibrary/Private/GDTUploadCoordinator.h" -#import "GDTLibrary/Private/GDTUploadPackage_Private.h" +#import "GDTCORLibrary/Private/GDTCORStorage_Private.h" +#import "GDTCORLibrary/Private/GDTCORUploadCoordinator.h" +#import "GDTCORLibrary/Private/GDTCORUploadPackage_Private.h" -@implementation GDTUploadPackage { +@implementation GDTCORUploadPackage { /** If YES, the package's -completeDelivery method has been called. */ BOOL _isDelivered; @@ -35,25 +35,27 @@ NSTimer *_expirationTimer; } -- (instancetype)initWithTarget:(GDTTarget)target { +- (instancetype)initWithTarget:(GDTCORTarget)target { self = [super init]; if (self) { _target = target; - _storage = [GDTStorage sharedInstance]; - _deliverByTime = [GDTClock clockSnapshotInTheFuture:180000]; - _handler = [GDTUploadCoordinator sharedInstance]; + _storage = [GDTCORStorage sharedInstance]; + _deliverByTime = [GDTCORClock clockSnapshotInTheFuture:180000]; + _handler = [GDTCORUploadCoordinator sharedInstance]; _expirationTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(checkIfPackageIsExpired:) userInfo:nil repeats:YES]; } + GDTCORLogDebug("Upload package created %@", self); return self; } - (instancetype)copy { - GDTUploadPackage *newPackage = [[GDTUploadPackage alloc] initWithTarget:_target]; + GDTCORUploadPackage *newPackage = [[GDTCORUploadPackage alloc] initWithTarget:_target]; newPackage->_events = [_events copy]; + GDTCORLogDebug("Copying UploadPackage %@ to %@", self, newPackage); return newPackage; } @@ -69,7 +71,7 @@ [_expirationTimer invalidate]; } -- (void)setStorage:(GDTStorage *)storage { +- (void)setStorage:(GDTCORStorage *)storage { if (storage != _storage) { _storage = storage; } @@ -77,8 +79,8 @@ - (void)completeDelivery { if (_isDelivered) { - GDTLogError(GDTMCEDeliverTwice, @"%@", - @"It's an API violation to call -completeDelivery twice."); + GDTCORLogError(GDTCORMCEDeliverTwice, @"%@", + @"It's an API violation to call -completeDelivery twice."); } _isDelivered = YES; if (!_isHandled && _handler && @@ -87,6 +89,7 @@ _isHandled = YES; [_handler packageDelivered:self successful:YES]; } + GDTCORLogDebug("Upload package delivered: %@", self); } - (void)retryDeliveryInTheFuture { @@ -96,13 +99,15 @@ _isHandled = YES; [_handler packageDelivered:self successful:NO]; } + GDTCORLogDebug("Upload package will retry in the future: %@", self); } - (void)checkIfPackageIsExpired:(NSTimer *)timer { - if ([[GDTClock snapshot] isAfter:_deliverByTime]) { + if ([[GDTCORClock snapshot] isAfter:_deliverByTime]) { if (_handler && [_handler respondsToSelector:@selector(packageExpired:)]) { _isHandled = YES; [_expirationTimer invalidate]; + GDTCORLogDebug("Upload package expired: %@", self); [_handler packageExpired:self]; } } @@ -111,19 +116,19 @@ #pragma mark - NSSecureCoding /** The keyed archiver key for the events property. */ -static NSString *const kEventsKey = @"GDTUploadPackageEventsKey"; +static NSString *const kEventsKey = @"GDTCORUploadPackageEventsKey"; /** The keyed archiver key for the _isHandled property. */ -static NSString *const kDeliverByTimeKey = @"GDTUploadPackageDeliveryByTimeKey"; +static NSString *const kDeliverByTimeKey = @"GDTCORUploadPackageDeliveryByTimeKey"; /** The keyed archiver key for the _isHandled ivar. */ -static NSString *const kIsHandledKey = @"GDTUploadPackageIsHandledKey"; +static NSString *const kIsHandledKey = @"GDTCORUploadPackageIsHandledKey"; /** The keyed archiver key for the handler property. */ -static NSString *const kHandlerKey = @"GDTUploadPackageHandlerKey"; +static NSString *const kHandlerKey = @"GDTCORUploadPackageHandlerKey"; /** The keyed archiver key for the target property. */ -static NSString *const kTargetKey = @"GDTUploadPackageTargetKey"; +static NSString *const kTargetKey = @"GDTCORUploadPackageTargetKey"; + (BOOL)supportsSecureCoding { return YES; @@ -138,12 +143,12 @@ static NSString *const kTargetKey = @"GDTUploadPackageTargetKey"; } - (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder { - GDTTarget target = [aDecoder decodeIntegerForKey:kTargetKey]; + GDTCORTarget target = [aDecoder decodeIntegerForKey:kTargetKey]; self = [self initWithTarget:target]; if (self) { - NSSet *classes = [NSSet setWithObjects:[NSSet class], [GDTStoredEvent class], nil]; + NSSet *classes = [NSSet setWithObjects:[NSSet class], [GDTCORStoredEvent class], nil]; _events = [aDecoder decodeObjectOfClasses:classes forKey:kEventsKey]; - _deliverByTime = [aDecoder decodeObjectOfClass:[GDTClock class] forKey:kDeliverByTimeKey]; + _deliverByTime = [aDecoder decodeObjectOfClass:[GDTCORClock class] forKey:kDeliverByTimeKey]; _isHandled = [aDecoder decodeBoolForKey:kIsHandledKey]; // _handler isn't technically NSSecureCoding, because we don't know the class of this object. // but it gets decoded anyway. diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTEvent_Private.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h similarity index 86% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTEvent_Private.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h index a7be1ff5b..f7f8a28b7 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTEvent_Private.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h @@ -14,13 +14,13 @@ * limitations under the License. */ -#import +#import -#import +#import NS_ASSUME_NONNULL_BEGIN -@interface GDTEvent () +@interface GDTCOREvent () /** The serialized bytes of the event data object. */ @property(nonatomic) NSData *dataObjectTransportBytes; diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTReachability.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability.h similarity index 90% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTReachability.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability.h index 27f0feb80..7879b5983 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTReachability.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability.h @@ -16,15 +16,18 @@ #import +#if !TARGET_OS_WATCH #import +#endif NS_ASSUME_NONNULL_BEGIN /** This class helps determine upload conditions by determining connectivity. */ -@interface GDTReachability : NSObject - +@interface GDTCORReachability : NSObject +#if !TARGET_OS_WATCH /** The current set flags indicating network conditions */ + (SCNetworkReachabilityFlags)currentFlags; +#endif @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTReachability_Private.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h similarity index 88% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTReachability_Private.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h index 1842949ac..5d3ddaf18 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTReachability_Private.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h @@ -14,12 +14,14 @@ * limitations under the License. */ -#import "GDTLibrary/Private/GDTReachability.h" +#import "GDTCORLibrary/Private/GDTCORReachability.h" -@interface GDTReachability () +@interface GDTCORReachability () +#if !TARGET_OS_WATCH /** Allows manually setting the flags for testing purposes. */ @property(nonatomic, readwrite) SCNetworkReachabilityFlags flags; +#endif /** Creates/returns the singleton instance of this class. * diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTRegistrar_Private.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h similarity index 83% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTRegistrar_Private.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h index 90bdcea17..074fc1148 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTRegistrar_Private.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h @@ -14,9 +14,9 @@ * limitations under the License. */ -#import +#import -@interface GDTRegistrar () +@interface GDTCORRegistrar () NS_ASSUME_NONNULL_BEGIN @@ -24,11 +24,11 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, readonly) dispatch_queue_t registrarQueue; /** A map of targets to backend implementations. */ -@property(atomic, readonly) NSMutableDictionary> *targetToUploader; +@property(atomic, readonly) NSMutableDictionary> *targetToUploader; /** A map of targets to prioritizer implementations. */ @property(atomic, readonly) - NSMutableDictionary> *targetToPrioritizer; + NSMutableDictionary> *targetToPrioritizer; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTStorage.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage.h similarity index 78% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTStorage.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage.h index 6e3b98b64..008b1d93c 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTStorage.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage.h @@ -16,15 +16,15 @@ #import -#import +#import -@class GDTEvent; -@class GDTStoredEvent; +@class GDTCOREvent; +@class GDTCORStoredEvent; NS_ASSUME_NONNULL_BEGIN /** Manages the storage of events. This class is thread-safe. */ -@interface GDTStorage : NSObject +@interface GDTCORStorage : NSObject /** Creates and/or returns the storage singleton. * @@ -33,17 +33,17 @@ NS_ASSUME_NONNULL_BEGIN + (instancetype)sharedInstance; /** Stores event.dataObjectTransportBytes into a shared on-device folder and tracks the event via - * a GDTStoredEvent instance. + * a GDTCORStoredEvent instance. * * @param event The event to store. */ -- (void)storeEvent:(GDTEvent *)event; +- (void)storeEvent:(GDTCOREvent *)event; /** Removes a set of events from storage specified by their hash. * * @param events The set of stored events to remove. */ -- (void)removeEvents:(NSSet *)events; +- (void)removeEvents:(NSSet *)events; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTStorage_Private.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage_Private.h similarity index 70% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTStorage_Private.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage_Private.h index ffed0abed..24569fd46 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTStorage_Private.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage_Private.h @@ -14,30 +14,26 @@ * limitations under the License. */ -#import "GDTLibrary/Private/GDTStorage.h" +#import "GDTCORLibrary/Private/GDTCORStorage.h" -@class GDTUploadCoordinator; +@class GDTCORUploadCoordinator; NS_ASSUME_NONNULL_BEGIN -@interface GDTStorage () +@interface GDTCORStorage () /** The queue on which all storage work will occur. */ @property(nonatomic) dispatch_queue_t storageQueue; /** A map of targets to a set of stored events. */ @property(nonatomic) - NSMutableDictionary *> *targetToEventSet; + NSMutableDictionary *> *targetToEventSet; /** All the events that have been stored. */ -@property(readonly, nonatomic) NSMutableOrderedSet *storedEvents; +@property(readonly, nonatomic) NSMutableOrderedSet *storedEvents; /** The upload coordinator instance used by this storage instance. */ -@property(nonatomic) GDTUploadCoordinator *uploadCoordinator; - -/** If YES, every call to -storeLog results in background task and serializes the singleton to disk. - */ -@property(nonatomic) BOOL runningInBackground; +@property(nonatomic) GDTCORUploadCoordinator *uploadCoordinator; /** Returns the path to the keyed archive of the singleton. This is where the singleton is saved * to disk during certain app lifecycle events. diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTTransformer.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h similarity index 84% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTTransformer.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h index 9b1ba3e70..9f4ec39ca 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTTransformer.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h @@ -16,11 +16,11 @@ #import -#import +#import -@class GDTEvent; +@class GDTCOREvent; -@protocol GDTEventTransformer; +@protocol GDTCOREventTransformer; NS_ASSUME_NONNULL_BEGIN @@ -30,7 +30,7 @@ NS_ASSUME_NONNULL_BEGIN * maintain state (or at least, there's nothing to stop them from doing that) and the same instances * may be used across multiple instances. */ -@interface GDTTransformer : NSObject +@interface GDTCORTransformer : NSObject /** Instantiates or returns the event transformer singleton. * @@ -46,8 +46,8 @@ NS_ASSUME_NONNULL_BEGIN * @param event The event to apply transformers on. * @param transformers The list of transformers to apply. */ -- (void)transformEvent:(GDTEvent *)event - withTransformers:(nullable NSArray> *)transformers; +- (void)transformEvent:(GDTCOREvent *)event + withTransformers:(nullable NSArray> *)transformers; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTTransformer_Private.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h similarity index 75% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTTransformer_Private.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h index 5ebfee271..fcdae34dd 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTTransformer_Private.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h @@ -14,22 +14,19 @@ * limitations under the License. */ -#import "GDTLibrary/Private/GDTTransformer.h" +#import "GDTCORLibrary/Private/GDTCORTransformer.h" -@class GDTStorage; +@class GDTCORStorage; NS_ASSUME_NONNULL_BEGIN -@interface GDTTransformer () +@interface GDTCORTransformer () /** The queue on which all work will occur. */ @property(nonatomic) dispatch_queue_t eventWritingQueue; /** The storage instance used to store events. Should only be used to inject a testing fake. */ -@property(nonatomic) GDTStorage *storageInstance; - -/** If YES, every call to -transformEvent will result in a background task. */ -@property(nonatomic, readonly) BOOL runningInBackground; +@property(nonatomic) GDTCORStorage *storageInstance; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTTransport_Private.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransport_Private.h similarity index 81% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTTransport_Private.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransport_Private.h index c9e4c907b..71f73a6f4 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTTransport_Private.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransport_Private.h @@ -14,25 +14,25 @@ * limitations under the License. */ -#import +#import -@class GDTTransformer; +@class GDTCORTransformer; NS_ASSUME_NONNULL_BEGIN -@interface GDTTransport () +@interface GDTCORTransport () /** The mapping identifier that the target backend will use to map the transport bytes to proto. */ @property(nonatomic) NSString *mappingID; /** The transformers that will operate on events sent by this transport. */ -@property(nonatomic) NSArray> *transformers; +@property(nonatomic) NSArray> *transformers; /** The target backend of this transport. */ @property(nonatomic) NSInteger target; /** The transformer instance to used to transform events. Allows injecting a fake during testing. */ -@property(nonatomic) GDTTransformer *transformerInstance; +@property(nonatomic) GDTCORTransformer *transformerInstance; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTUploadCoordinator.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h similarity index 75% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTUploadCoordinator.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h index 30f3c2dc7..b1d708cc4 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTUploadCoordinator.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h @@ -16,21 +16,21 @@ #import -#import -#import +#import +#import -#import "GDTLibrary/Private/GDTUploadPackage_Private.h" +#import "GDTCORLibrary/Private/GDTCORUploadPackage_Private.h" -@class GDTClock; -@class GDTStorage; +@class GDTCORClock; +@class GDTCORStorage; NS_ASSUME_NONNULL_BEGIN /** This class connects storage and uploader implementations, providing events to an uploader * and informing the storage what events were successfully uploaded or not. */ -@interface GDTUploadCoordinator - : NSObject +@interface GDTCORUploadCoordinator + : NSObject /** The queue on which all upload coordination will occur. Also used by a dispatch timer. */ /** Creates and/or returrns the singleton. @@ -51,23 +51,20 @@ NS_ASSUME_NONNULL_BEGIN /** The map of targets to in-flight packages. */ @property(nonatomic, readonly) - NSMutableDictionary *targetToInFlightPackages; + NSMutableDictionary *targetToInFlightPackages; /** The storage object the coordinator will use. Generally used for testing. */ -@property(nonatomic) GDTStorage *storage; +@property(nonatomic) GDTCORStorage *storage; /** The registrar object the coordinator will use. Generally used for testing. */ -@property(nonatomic) GDTRegistrar *registrar; - -/** If YES, completion and other operations will result in serializing the singleton to disk. */ -@property(nonatomic, readonly) BOOL runningInBackground; +@property(nonatomic) GDTCORRegistrar *registrar; /** Forces the backend specified by the target to upload the provided set of events. This should * only ever happen when the QoS tier of an event requires it. * * @param target The target that should force an upload. */ -- (void)forceUploadForTarget:(GDTTarget)target; +- (void)forceUploadForTarget:(GDTCORTarget)target; /** Starts the upload timer. */ - (void)startTimer; diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTUploadPackage_Private.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadPackage_Private.h similarity index 76% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTUploadPackage_Private.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadPackage_Private.h index ae174f3f2..1eb58d4c7 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTUploadPackage_Private.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadPackage_Private.h @@ -14,16 +14,16 @@ * limitations under the License. */ -#import +#import -@class GDTStorage; +@class GDTCORStorage; -@interface GDTUploadPackage () +@interface GDTCORUploadPackage () /** The storage object this upload package will use to resolve event hashes to files. */ -@property(nonatomic) GDTStorage *storage; +@property(nonatomic) GDTCORStorage *storage; /** A handler that will receive callbacks for certain events. */ -@property(nonatomic) id handler; +@property(nonatomic) id handler; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTAssert.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORAssert.h similarity index 68% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTAssert.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORAssert.h index a00428d45..941e412e2 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTAssert.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORAssert.h @@ -16,11 +16,11 @@ #import -#import +#import /** A block type that could be run instead of normal assertion logging. No return type, no params. */ -typedef void (^GDTAssertionBlock)(void); +typedef void (^GDTCORAssertionBlock)(void); /** Returns the result of executing a soft-linked method present in unit tests that allows a block * to be run instead of normal assertion logging. This helps ameliorate issues with catching @@ -28,16 +28,16 @@ typedef void (^GDTAssertionBlock)(void); * * @return A block that can be run instead of normal assert printing. */ -FOUNDATION_EXPORT GDTAssertionBlock _Nullable GDTAssertionBlockToRunInstead(void); +FOUNDATION_EXPORT GDTCORAssertionBlock _Nullable GDTCORAssertionBlockToRunInstead(void); #if defined(NS_BLOCK_ASSERTIONS) -#define GDTAssert(condition, ...) \ - do { \ +#define GDTCORAssert(condition, ...) \ + do { \ } while (0); -#define GDTFatalAssert(condition, ...) \ - do { \ +#define GDTCORFatalAssert(condition, ...) \ + do { \ } while (0); #else // defined(NS_BLOCK_ASSERTIONS) @@ -46,21 +46,21 @@ FOUNDATION_EXPORT GDTAssertionBlock _Nullable GDTAssertionBlockToRunInstead(void * * @param condition The condition you'd expect to be YES. */ -#define GDTAssert(condition, ...) \ - do { \ - if (__builtin_expect(!(condition), 0)) { \ - GDTAssertionBlock assertionBlock = GDTAssertionBlockToRunInstead(); \ - if (assertionBlock) { \ - assertionBlock(); \ - } else { \ - __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS \ - NSString *__assert_file__ = [NSString stringWithUTF8String:__FILE__]; \ - __assert_file__ = __assert_file__ ? __assert_file__ : @""; \ - GDTLogError(GDTMCEGeneralError, @"Assertion failed (%@:%d): %s,", __assert_file__, \ - __LINE__, ##__VA_ARGS__); \ - __PRAGMA_POP_NO_EXTRA_ARG_WARNINGS \ - } \ - } \ +#define GDTCORAssert(condition, ...) \ + do { \ + if (__builtin_expect(!(condition), 0)) { \ + GDTCORAssertionBlock assertionBlock = GDTCORAssertionBlockToRunInstead(); \ + if (assertionBlock) { \ + assertionBlock(); \ + } else { \ + __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS \ + NSString *__assert_file__ = [NSString stringWithUTF8String:__FILE__]; \ + __assert_file__ = __assert_file__ ? __assert_file__ : @""; \ + GDTCORLogError(GDTCORMCEGeneralError, @"Assertion failed (%@:%d): %s,", __assert_file__, \ + __LINE__, ##__VA_ARGS__); \ + __PRAGMA_POP_NO_EXTRA_ARG_WARNINGS \ + } \ + } \ } while (0); /** Asserts by logging to the console and throwing an exception if NS_BLOCK_ASSERTIONS is not @@ -68,17 +68,17 @@ FOUNDATION_EXPORT GDTAssertionBlock _Nullable GDTAssertionBlockToRunInstead(void * * @param condition The condition you'd expect to be YES. */ -#define GDTFatalAssert(condition, ...) \ +#define GDTCORFatalAssert(condition, ...) \ do { \ __PRAGMA_PUSH_NO_EXTRA_ARG_WARNINGS \ if (__builtin_expect(!(condition), 0)) { \ NSString *__assert_file__ = [NSString stringWithUTF8String:__FILE__]; \ __assert_file__ = __assert_file__ ? __assert_file__ : @""; \ - GDTLogError(GDTMCEFatalAssertion, \ - @"Fatal assertion encountered, please open an issue at " \ - "https://github.com/firebase/firebase-ios-sdk/issues " \ - "(%@:%d): %s,", \ - __assert_file__, __LINE__, ##__VA_ARGS__); \ + GDTCORLogError(GDTCORMCEFatalAssertion, \ + @"Fatal assertion encountered, please open an issue at " \ + "https://github.com/firebase/firebase-ios-sdk/issues " \ + "(%@:%d): %s,", \ + __assert_file__, __LINE__, ##__VA_ARGS__); \ [[NSAssertionHandler currentHandler] handleFailureInMethod:_cmd \ object:self \ file:__assert_file__ \ diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTClock.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORClock.h similarity index 83% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTClock.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORClock.h index 4c6666e06..01de21ae0 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTClock.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORClock.h @@ -19,7 +19,7 @@ NS_ASSUME_NONNULL_BEGIN /** This class manages the device clock and produces snapshots of the current time. */ -@interface GDTClock : NSObject +@interface GDTCORClock : NSObject /** The wallclock time, UTC, in milliseconds. */ @property(nonatomic, readonly) int64_t timeMillis; @@ -33,13 +33,13 @@ NS_ASSUME_NONNULL_BEGIN /** The device uptime when this clock was created. */ @property(nonatomic, readonly) int64_t uptime; -/** Creates a GDTClock object using the current time and offsets. +/** Creates a GDTCORClock object using the current time and offsets. * - * @return A new GDTClock object representing the current time state. + * @return A new GDTCORClock object representing the current time state. */ + (instancetype)snapshot; -/** Creates a GDTClock object representing a time in the future, relative to now. +/** Creates a GDTCORClock object representing a time in the future, relative to now. * * @param millisInTheFuture The millis in the future from now this clock should represent. * @return An instance representing a future time. @@ -50,7 +50,7 @@ NS_ASSUME_NONNULL_BEGIN * * @return YES if the calling clock's time is after the given clock's time. */ -- (BOOL)isAfter:(GDTClock *)otherClock; +- (BOOL)isAfter:(GDTCORClock *)otherClock; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTConsoleLogger.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORConsoleLogger.h similarity index 63% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTConsoleLogger.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORConsoleLogger.h index 0988d345e..c70706bf1 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTConsoleLogger.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORConsoleLogger.h @@ -16,6 +16,9 @@ #import +// Set this to 1 to have the library print out as much as possible about what GDT is doing. +#define GDT_VERBOSE_LOGGING 0 + /** A list of message codes to print in the logger that help to correspond printed messages with * code locations. * @@ -23,62 +26,69 @@ * - MCW => MessageCodeWarning * - MCE => MessageCodeError */ -typedef NS_ENUM(NSInteger, GDTMessageCode) { +typedef NS_ENUM(NSInteger, GDTCORMessageCode) { /** For warning messages concerning transportBytes: not being implemented by a data object. */ - GDTMCWDataObjectMissingBytesImpl = 1, + GDTCORMCWDataObjectMissingBytesImpl = 1, /** For warning messages concerning a failed event upload. */ - GDTMCWUploadFailed = 2, + GDTCORMCWUploadFailed = 2, /** For warning messages concerning a forced event upload. */ - GDTMCWForcedUpload = 3, + GDTCORMCWForcedUpload = 3, /** For warning messages concerning a failed reachability call. */ - GDTMCWReachabilityFailed = 4, + GDTCORMCWReachabilityFailed = 4, /** For error messages concerning transform: not being implemented by an event transformer. */ - GDTMCETransformerDoesntImplementTransform = 1000, + GDTCORMCETransformerDoesntImplementTransform = 1000, /** For error messages concerning the creation of a directory failing. */ - GDTMCEDirectoryCreationError = 1001, + GDTCORMCEDirectoryCreationError = 1001, /** For error messages concerning the writing of a event file. */ - GDTMCEFileWriteError = 1002, + GDTCORMCEFileWriteError = 1002, /** For error messages concerning the lack of a prioritizer for a given backend. */ - GDTMCEPrioritizerError = 1003, + GDTCORMCEPrioritizerError = 1003, /** For error messages concerning a package delivery API violation. */ - GDTMCEDeliverTwice = 1004, + GDTCORMCEDeliverTwice = 1004, /** For error messages concerning an error in an implementation of -transportBytes. */ - GDTMCETransportBytesError = 1005, + GDTCORMCETransportBytesError = 1005, /** For general purpose error messages in a dependency. */ - GDTMCEGeneralError = 1006, + GDTCORMCEGeneralError = 1006, /** For fatal errors. Please go to https://github.com/firebase/firebase-ios-sdk/issues and open * an issue if you encounter an error with this code. */ - GDTMCEFatalAssertion = 1007 + GDTCORMCEFatalAssertion = 1007 }; /** */ FOUNDATION_EXPORT -void GDTLog(GDTMessageCode code, NSString *_Nonnull format, ...); +void GDTCORLog(GDTCORMessageCode code, NSString *_Nonnull format, ...); /** Returns the string that represents some message code. * * @param code The code to convert to a string. * @return The string representing the message code. */ -FOUNDATION_EXPORT NSString *_Nonnull GDTMessageCodeEnumToString(GDTMessageCode code); +FOUNDATION_EXPORT NSString *_Nonnull GDTCORMessageCodeEnumToString(GDTCORMessageCode code); // A define to wrap GULLogWarning with slightly more convenient usage. -#define GDTLogWarning(MESSAGE_CODE, MESSAGE_FORMAT, ...) \ - GDTLog(MESSAGE_CODE, MESSAGE_FORMAT, __VA_ARGS__); +#define GDTCORLogWarning(MESSAGE_CODE, MESSAGE_FORMAT, ...) \ + GDTCORLog(MESSAGE_CODE, MESSAGE_FORMAT, __VA_ARGS__); // A define to wrap GULLogError with slightly more convenient usage and a failing assert. -#define GDTLogError(MESSAGE_CODE, MESSAGE_FORMAT, ...) \ - GDTLog(MESSAGE_CODE, MESSAGE_FORMAT, __VA_ARGS__); +#define GDTCORLogError(MESSAGE_CODE, MESSAGE_FORMAT, ...) \ + GDTCORLog(MESSAGE_CODE, MESSAGE_FORMAT, __VA_ARGS__); + +// A define to wrap NSLog for verbose console logs only useful for local debugging. +#if GDT_VERBOSE_LOGGING == 1 +#define GDTCORLogDebug(FORMAT, ...) NSLog(@"GDT: " FORMAT, __VA_ARGS__); +#else +#define GDTCORLogDebug(...) +#endif // GDT_VERBOSE_LOGGING == 1 diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTDataFuture.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORDataFuture.h similarity index 96% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTDataFuture.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORDataFuture.h index 114db4e0a..07f428fc9 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTDataFuture.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORDataFuture.h @@ -19,7 +19,7 @@ NS_ASSUME_NONNULL_BEGIN /** This class represents a future data object, determined at instantiation time. */ -@interface GDTDataFuture : NSObject +@interface GDTCORDataFuture : NSObject /** The data, computed on-demand, depending on the initializer. */ @property(nullable, readonly, nonatomic) NSData *data; diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEvent.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREvent.h similarity index 72% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEvent.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREvent.h index ebe4d8a5a..1ab55de8f 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEvent.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREvent.h @@ -16,36 +16,36 @@ #import -#import +#import -@class GDTClock; -@class GDTDataFuture; -@class GDTStoredEvent; +@class GDTCORClock; +@class GDTCORDataFuture; +@class GDTCORStoredEvent; NS_ASSUME_NONNULL_BEGIN /** The different possible quality of service specifiers. High values indicate high priority. */ -typedef NS_ENUM(NSInteger, GDTEventQoS) { +typedef NS_ENUM(NSInteger, GDTCOREventQoS) { /** The QoS tier wasn't set, and won't ever be sent. */ - GDTEventQoSUnknown = 0, + GDTCOREventQoSUnknown = 0, /** This event is internal telemetry data that should not be sent on its own if possible. */ - GDTEventQoSTelemetry = 1, + GDTCOREventQoSTelemetry = 1, /** This event should be sent, but in a batch only roughly once per day. */ - GDTEventQoSDaily = 2, + GDTCOREventQoSDaily = 2, /** This event should be sent when requested by the uploader. */ - GDTEventQosDefault = 3, + GDTCOREventQosDefault = 3, /** This event should be sent immediately along with any other data that can be batched. */ - GDTEventQoSFast = 4, + GDTCOREventQoSFast = 4, /** This event should only be uploaded on wifi. */ - GDTEventQoSWifiOnly = 5, + GDTCOREventQoSWifiOnly = 5, }; -@interface GDTEvent : NSObject +@interface GDTCOREvent : NSObject /** The mapping identifier, to allow backends to map the transport bytes to a proto. */ @property(readonly, nonatomic) NSString *mappingID; @@ -54,14 +54,14 @@ typedef NS_ENUM(NSInteger, GDTEventQoS) { @property(readonly, nonatomic) NSInteger target; /** The data object encapsulated in the transport of your choice, as long as it implements - * the GDTEventDataObject protocol. */ -@property(nullable, nonatomic) id dataObject; + * the GDTCOREventDataObject protocol. */ +@property(nullable, nonatomic) id dataObject; /** The quality of service tier this event belongs to. */ -@property(nonatomic) GDTEventQoS qosTier; +@property(nonatomic) GDTCOREventQoS qosTier; /** The clock snapshot at the time of the event. */ -@property(nonatomic) GDTClock *clockSnapshot; +@property(nonatomic) GDTCORClock *clockSnapshot; /** A dictionary provided to aid prioritizers by allowing the passing of arbitrary data. It will be * retained by a copy in -copy, but not used for -hash. @@ -79,15 +79,15 @@ typedef NS_ENUM(NSInteger, GDTEventQoS) { * @param target The event's target identifier. * @return An instance of this class. */ -- (instancetype)initWithMappingID:(NSString *)mappingID - target:(NSInteger)target NS_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithMappingID:(NSString *)mappingID + target:(NSInteger)target NS_DESIGNATED_INITIALIZER; -/** Returns the GDTStoredEvent equivalent of self. +/** Returns the GDTCORStoredEvent equivalent of self. * * @param dataFuture The data future representing the transport bytes of the original event. - * @return An equivalent GDTStoredEvent. + * @return An equivalent GDTCORStoredEvent. */ -- (GDTStoredEvent *)storedEventWithDataFuture:(GDTDataFuture *)dataFuture; +- (GDTCORStoredEvent *)storedEventWithDataFuture:(GDTCORDataFuture *)dataFuture; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEventDataObject.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventDataObject.h similarity index 96% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEventDataObject.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventDataObject.h index f9031cbe8..34ef62424 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEventDataObject.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventDataObject.h @@ -21,7 +21,7 @@ NS_ASSUME_NONNULL_BEGIN /** This protocol defines the common interface that event protos should implement regardless of the * underlying transport technology (protobuf, nanopb, etc). */ -@protocol GDTEventDataObject +@protocol GDTCOREventDataObject @required diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEventTransformer.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventTransformer.h similarity index 89% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEventTransformer.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventTransformer.h index d7ba9341a..29f95924f 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEventTransformer.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventTransformer.h @@ -16,12 +16,12 @@ #import -@class GDTEvent; +@class GDTCOREvent; NS_ASSUME_NONNULL_BEGIN /** Defines the API that event transformers must adopt. */ -@protocol GDTEventTransformer +@protocol GDTCOREventTransformer @required @@ -31,7 +31,7 @@ NS_ASSUME_NONNULL_BEGIN * @param event The event to transform. * @return A transformed event, or nil if the transformation dropped the event. */ -- (GDTEvent *)transform:(GDTEvent *)event; +- (nullable GDTCOREvent *)transform:(GDTCOREvent *)event; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTLifecycle.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORLifecycle.h similarity index 69% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTLifecycle.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORLifecycle.h index 088d81d90..4d61a2131 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTLifecycle.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORLifecycle.h @@ -16,36 +16,36 @@ #import -#import +#import -@class GDTEvent; +@class GDTCOREvent; NS_ASSUME_NONNULL_BEGIN /** A protocol defining the lifecycle events objects in the library must respond to immediately. */ -@protocol GDTLifecycleProtocol +@protocol GDTCORLifecycleProtocol @optional /** Indicates an imminent app termination in the rare occurrence when -applicationWillTerminate: has * been called. * - * @param app The GDTApplication instance. + * @param app The GDTCORApplication instance. */ -- (void)appWillTerminate:(GDTApplication *)app; +- (void)appWillTerminate:(GDTCORApplication *)app; /** Indicates that the app is moving to background and eventual suspension or the current UIScene is * deactivating. * - * @param app The GDTApplication instance. + * @param app The GDTCORApplication instance. */ -- (void)appWillBackground:(GDTApplication *)app; +- (void)appWillBackground:(GDTCORApplication *)app; /** Indicates that the app is resuming operation or a UIScene is activating. * - * @param app The GDTApplication instance. + * @param app The GDTCORApplication instance. */ -- (void)appWillForeground:(GDTApplication *)app; +- (void)appWillForeground:(GDTCORApplication *)app; @end @@ -53,10 +53,10 @@ NS_ASSUME_NONNULL_BEGIN * * When backgrounding, the library doesn't stop processing events, it's just that several background * tasks will end up being created for every event that's sent, and the stateful objects of the - * library (GDTStorage and GDTUploadCoordinator singletons) will deserialize themselves from and to - * disk before and after every operation, respectively. + * library (GDTCORStorage and GDTCORUploadCoordinator singletons) will deserialize themselves from + * and to disk before and after every operation, respectively. */ -@interface GDTLifecycle : NSObject +@interface GDTCORLifecycle : NSObject @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTPlatform.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPlatform.h similarity index 57% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTPlatform.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPlatform.h index d37bd62ee..d72c2c90b 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTPlatform.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPlatform.h @@ -15,8 +15,10 @@ */ #import -#import +#if !TARGET_OS_WATCH +#import +#endif #if TARGET_OS_IOS || TARGET_OS_TV #import #elif TARGET_OS_OSX @@ -25,62 +27,71 @@ NS_ASSUME_NONNULL_BEGIN +/** The GoogleDataTransport library version. */ +FOUNDATION_EXPORT NSString *const kGDTCORVersion; + /** A notification sent out if the app is backgrounding. */ -FOUNDATION_EXPORT NSString *const kGDTApplicationDidEnterBackgroundNotification; +FOUNDATION_EXPORT NSString *const kGDTCORApplicationDidEnterBackgroundNotification; /** A notification sent out if the app is foregrounding. */ -FOUNDATION_EXPORT NSString *const kGDTApplicationWillEnterForegroundNotification; +FOUNDATION_EXPORT NSString *const kGDTCORApplicationWillEnterForegroundNotification; /** A notification sent out if the app is terminating. */ -FOUNDATION_EXPORT NSString *const kGDTApplicationWillTerminateNotification; +FOUNDATION_EXPORT NSString *const kGDTCORApplicationWillTerminateNotification; +#if !TARGET_OS_WATCH /** Compares flags with the WWAN reachability flag, if available, and returns YES if present. * * @param flags The set of reachability flags. * @return YES if the WWAN flag is set, NO otherwise. */ -BOOL GDTReachabilityFlagsContainWWAN(SCNetworkReachabilityFlags flags); +BOOL GDTCORReachabilityFlagsContainWWAN(SCNetworkReachabilityFlags flags); +#endif /** A typedef identify background identifiers. */ -typedef volatile NSUInteger GDTBackgroundIdentifier; +typedef volatile NSUInteger GDTCORBackgroundIdentifier; /** A background task's invalid sentinel value. */ -FOUNDATION_EXPORT const GDTBackgroundIdentifier GDTBackgroundIdentifierInvalid; +FOUNDATION_EXPORT const GDTCORBackgroundIdentifier GDTCORBackgroundIdentifierInvalid; #if TARGET_OS_IOS || TARGET_OS_TV /** A protocol that wraps UIApplicationDelegate or NSObject protocol, depending on the platform. */ -@protocol GDTApplicationDelegate +@protocol GDTCORApplicationDelegate #elif TARGET_OS_OSX -@protocol GDTApplicationDelegate +@protocol GDTCORApplicationDelegate #else -@protocol GDTApplicationDelegate +@protocol GDTCORApplicationDelegate #endif // TARGET_OS_IOS || TARGET_OS_TV @end /** A cross-platform application class. */ -@interface GDTApplication : NSObject +@interface GDTCORApplication : NSObject + +/** Flag to determine if the application is running in the background. */ +@property(atomic, readonly) BOOL isRunningInBackground; /** Creates and/or returns the shared application instance. * * @return The shared application instance. */ -+ (nullable GDTApplication *)sharedApplication; ++ (nullable GDTCORApplication *)sharedApplication; /** Creates a background task with the returned identifier if on a suitable platform. * + * @name name The name of the task, useful for debugging which background tasks are running. * @param handler The handler block that is called if the background task expires. - * @return An identifier for the background task, or GDTBackgroundIdentifierInvalid if one couldn't - * be created. + * @return An identifier for the background task, or GDTCORBackgroundIdentifierInvalid if one + * couldn't be created. */ -- (GDTBackgroundIdentifier)beginBackgroundTaskWithExpirationHandler: - (void (^__nullable)(void))handler; +- (GDTCORBackgroundIdentifier)beginBackgroundTaskWithName:(NSString *)name + expirationHandler:(void (^__nullable)(void))handler; /** Ends the background task if the identifier is valid. * * @param bgID The background task to end. */ -- (void)endBackgroundTask:(GDTBackgroundIdentifier)bgID; +- (void)endBackgroundTask:(GDTCORBackgroundIdentifier)bgID; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTPrioritizer.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPrioritizer.h similarity index 74% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTPrioritizer.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPrioritizer.h index 85ed70b42..3c0c3c63d 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTPrioritizer.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPrioritizer.h @@ -16,39 +16,39 @@ #import -#import -#import +#import +#import -@class GDTStoredEvent; +@class GDTCORStoredEvent; NS_ASSUME_NONNULL_BEGIN /** Options that define a set of upload conditions. This is used to help minimize end user data * consumption impact. */ -typedef NS_OPTIONS(NSInteger, GDTUploadConditions) { +typedef NS_OPTIONS(NSInteger, GDTCORUploadConditions) { /** An upload shouldn't be attempted, because there's no network. */ - GDTUploadConditionNoNetwork = 1 << 0, + GDTCORUploadConditionNoNetwork = 1 << 0, /** An upload would likely use mobile data. */ - GDTUploadConditionMobileData = 1 << 1, + GDTCORUploadConditionMobileData = 1 << 1, /** An upload would likely use wifi data. */ - GDTUploadConditionWifiData = 1 << 2, + GDTCORUploadConditionWifiData = 1 << 2, /** An upload uses some sort of network connection, but it's unclear which. */ - GDTUploadConditionUnclearConnection = 1 << 3, + GDTCORUploadConditionUnclearConnection = 1 << 3, /** A high priority event has occurred. */ - GDTUploadConditionHighPriority = 1 << 4, + GDTCORUploadConditionHighPriority = 1 << 4, }; /** This protocol defines the common interface of event prioritization. Prioritizers are * stateful objects that prioritize events upon insertion into storage and remain prepared to return * a set of filenames to the storage system. */ -@protocol GDTPrioritizer +@protocol GDTCORPrioritizer @required @@ -58,7 +58,7 @@ typedef NS_OPTIONS(NSInteger, GDTUploadConditions) { * * @param event The event to prioritize. */ -- (void)prioritizeEvent:(GDTStoredEvent *)event; +- (void)prioritizeEvent:(GDTCORStoredEvent *)event; /** Returns a set of events to upload given a set of conditions. * @@ -66,7 +66,7 @@ typedef NS_OPTIONS(NSInteger, GDTUploadConditions) { * @return An object to be used by the uploader to determine file URLs to upload with respect to the * current conditions. */ -- (GDTUploadPackage *)uploadPackageWithConditions:(GDTUploadConditions)conditions; +- (GDTCORUploadPackage *)uploadPackageWithConditions:(GDTCORUploadConditions)conditions; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTRegistrar.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORRegistrar.h similarity index 77% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTRegistrar.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORRegistrar.h index 8d532b3ee..0a8fbb0a9 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTRegistrar.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORRegistrar.h @@ -16,14 +16,14 @@ #import -#import -#import -#import +#import +#import +#import NS_ASSUME_NONNULL_BEGIN /** Manages the registration of targets with the transport SDK. */ -@interface GDTRegistrar : NSObject +@interface GDTCORRegistrar : NSObject /** Creates and/or returns the singleton instance. * @@ -36,14 +36,14 @@ NS_ASSUME_NONNULL_BEGIN * @param backend The backend object to register. * @param target The target this backend object will be responsible for. */ -- (void)registerUploader:(id)backend target:(GDTTarget)target; +- (void)registerUploader:(id)backend target:(GDTCORTarget)target; /** Registers a event prioritizer implementation with the GoogleDataTransport infrastructure. * * @param prioritizer The prioritizer object to register. * @param target The target this prioritizer object will be responsible for. */ -- (void)registerPrioritizer:(id)prioritizer target:(GDTTarget)target; +- (void)registerPrioritizer:(id)prioritizer target:(GDTCORTarget)target; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTStoredEvent.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORStoredEvent.h similarity index 78% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTStoredEvent.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORStoredEvent.h index 09f480c55..647b22088 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTStoredEvent.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORStoredEvent.h @@ -15,17 +15,17 @@ */ #import -#import -#import +#import +#import -@class GDTEvent; +@class GDTCOREvent; NS_ASSUME_NONNULL_BEGIN -@interface GDTStoredEvent : NSObject +@interface GDTCORStoredEvent : NSObject /** The data future representing the original event's transport bytes. */ -@property(readonly, nonatomic) GDTDataFuture *dataFuture; +@property(readonly, nonatomic) GDTCORDataFuture *dataFuture; /** The mapping identifier, to allow backends to map the transport bytes to a proto. */ @property(readonly, nonatomic) NSString *mappingID; @@ -34,10 +34,10 @@ NS_ASSUME_NONNULL_BEGIN @property(readonly, nonatomic) NSNumber *target; /** The quality of service tier this event belongs to. */ -@property(readonly, nonatomic) GDTEventQoS qosTier; +@property(readonly, nonatomic) GDTCOREventQoS qosTier; /** The clock snapshot at the time of the event. */ -@property(readonly, nonatomic) GDTClock *clockSnapshot; +@property(readonly, nonatomic) GDTCORClock *clockSnapshot; /** A dictionary provided to aid prioritizers by allowing the passing of arbitrary data. * @@ -51,7 +51,7 @@ NS_ASSUME_NONNULL_BEGIN * @param dataFuture The dataFuture this event represents. * @return An instance of this class. */ -- (instancetype)initWithEvent:(GDTEvent *)event dataFuture:(GDTDataFuture *)dataFuture; +- (instancetype)initWithEvent:(GDTCOREvent *)event dataFuture:(GDTCORDataFuture *)dataFuture; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTTargets.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTargets.h similarity index 84% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTTargets.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTargets.h index fc79da500..ebd36d11b 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTTargets.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTargets.h @@ -19,11 +19,14 @@ /** The list of targets supported by the shared transport infrastructure. If adding a new target, * please use the previous value +1. */ -typedef NS_ENUM(NSInteger, GDTTarget) { +typedef NS_ENUM(NSInteger, GDTCORTarget) { /** A target only used in testing. */ - kGDTTargetTest = 999, + kGDTCORTargetTest = 999, /** The CCT target. */ - kGDTTargetCCT = 1000, + kGDTCORTargetCCT = 1000, + + /** The FLL target. */ + kGDTCORTargetFLL = 1001, }; diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTTransport.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTransport.h similarity index 77% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTTransport.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTransport.h index caf3c679c..a95224036 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTTransport.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTransport.h @@ -16,13 +16,13 @@ #import -#import +#import -@class GDTEvent; +@class GDTCOREvent; NS_ASSUME_NONNULL_BEGIN -@interface GDTTransport : NSObject +@interface GDTCORTransport : NSObject // Please use the designated initializer. - (instancetype)init NS_UNAVAILABLE; @@ -35,9 +35,10 @@ NS_ASSUME_NONNULL_BEGIN * @param target The target backend of this transport. * @return A transport that will send events. */ -- (instancetype)initWithMappingID:(NSString *)mappingID - transformers:(nullable NSArray> *)transformers - target:(NSInteger)target NS_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithMappingID:(NSString *)mappingID + transformers: + (nullable NSArray> *)transformers + target:(NSInteger)target NS_DESIGNATED_INITIALIZER; /** Copies and sends an internal telemetry event. Events sent using this API are lower in priority, * and sometimes won't be sent on their own. @@ -46,7 +47,7 @@ NS_ASSUME_NONNULL_BEGIN * * @param event The event to send. */ -- (void)sendTelemetryEvent:(GDTEvent *)event; +- (void)sendTelemetryEvent:(GDTCOREvent *)event; /** Copies and sends an SDK service data event. Events send using this API are higher in priority, * and will cause a network request at some point in the relative near future. @@ -55,13 +56,13 @@ NS_ASSUME_NONNULL_BEGIN * * @param event The event to send. */ -- (void)sendDataEvent:(GDTEvent *)event; +- (void)sendDataEvent:(GDTCOREvent *)event; /** Creates an event for use by this transport. * * @return An event that is suited for use by this transport. */ -- (GDTEvent *)eventForTransport; +- (GDTCOREvent *)eventForTransport; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTUploadPackage.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploadPackage.h similarity index 71% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTUploadPackage.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploadPackage.h index f9e1584da..46a676b9d 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTUploadPackage.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploadPackage.h @@ -16,14 +16,14 @@ #import -#import +#import -@class GDTClock; -@class GDTStoredEvent; -@class GDTUploadPackage; +@class GDTCORClock; +@class GDTCORStoredEvent; +@class GDTCORUploadPackage; /** A protocol that allows a handler to respond to package lifecycle events. */ -@protocol GDTUploadPackageProtocol +@protocol GDTCORUploadPackageProtocol @optional @@ -33,37 +33,37 @@ * * @param package The package that has expired. */ -- (void)packageExpired:(GDTUploadPackage *)package; +- (void)packageExpired:(GDTCORUploadPackage *)package; /** Indicates that the package was successfully delivered. * * @param package The package that was delivered. */ -- (void)packageDelivered:(GDTUploadPackage *)package successful:(BOOL)successful; +- (void)packageDelivered:(GDTCORUploadPackage *)package successful:(BOOL)successful; @end /** This class is a container that's handed off to uploaders. */ -@interface GDTUploadPackage : NSObject +@interface GDTCORUploadPackage : NSObject /** The set of stored events in this upload package. */ -@property(nonatomic) NSSet *events; +@property(nonatomic) NSSet *events; -/** The expiration time. If [[GDTClock snapshot] isAfter:deliverByTime] this package has expired. +/** The expiration time. If [[GDTCORClock snapshot] isAfter:deliverByTime] this package has expired. * * @note By default, the expiration time will be 3 minutes from creation. */ -@property(nonatomic) GDTClock *deliverByTime; +@property(nonatomic) GDTCORClock *deliverByTime; /** The target of this package. */ -@property(nonatomic, readonly) GDTTarget target; +@property(nonatomic, readonly) GDTCORTarget target; /** Initializes a package instance. * * @param target The target/destination of this package. * @return An instance of this class. */ -- (instancetype)initWithTarget:(GDTTarget)target NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithTarget:(GDTCORTarget)target NS_DESIGNATED_INITIALIZER; // Please use the designated initializer. - (instancetype)init NS_UNAVAILABLE; diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTUploader.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploader.h similarity index 72% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTUploader.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploader.h index 9461a874d..a34f8b2ac 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTUploader.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploader.h @@ -16,16 +16,16 @@ #import -#import -#import -#import -#import -#import +#import +#import +#import +#import +#import NS_ASSUME_NONNULL_BEGIN /** This protocol defines the common interface for uploader implementations. */ -@protocol GDTUploader +@protocol GDTCORUploader @required @@ -34,13 +34,13 @@ NS_ASSUME_NONNULL_BEGIN * @param conditions The conditions that the upload attempt is likely to occur under. * @return YES if the uploader can make an upload attempt, NO otherwise. */ -- (BOOL)readyToUploadWithConditions:(GDTUploadConditions)conditions; +- (BOOL)readyToUploadWithConditions:(GDTCORUploadConditions)conditions; /** Uploads events to the backend using this specific backend's chosen format. * * @param package The event package to upload. Make sure to call -completeDelivery. */ -- (void)uploadPackage:(GDTUploadPackage *)package; +- (void)uploadPackage:(GDTCORUploadPackage *)package; @end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GoogleDataTransport.h b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport.h similarity index 59% rename from ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GoogleDataTransport.h rename to ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport.h index c9eb22b01..e46a385bf 100644 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GoogleDataTransport.h +++ b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport.h @@ -14,17 +14,17 @@ * limitations under the License. */ -#import "GDTClock.h" -#import "GDTConsoleLogger.h" -#import "GDTDataFuture.h" -#import "GDTEvent.h" -#import "GDTEventDataObject.h" -#import "GDTEventTransformer.h" -#import "GDTLifecycle.h" -#import "GDTPrioritizer.h" -#import "GDTRegistrar.h" -#import "GDTStoredEvent.h" -#import "GDTTargets.h" -#import "GDTTransport.h" -#import "GDTUploadPackage.h" -#import "GDTUploader.h" +#import "GDTCORClock.h" +#import "GDTCORConsoleLogger.h" +#import "GDTCORDataFuture.h" +#import "GDTCOREvent.h" +#import "GDTCOREventDataObject.h" +#import "GDTCOREventTransformer.h" +#import "GDTCORLifecycle.h" +#import "GDTCORPrioritizer.h" +#import "GDTCORRegistrar.h" +#import "GDTCORStoredEvent.h" +#import "GDTCORTargets.h" +#import "GDTCORTransport.h" +#import "GDTCORUploadPackage.h" +#import "GDTCORUploader.h" diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTLifecycle.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTLifecycle.m deleted file mode 100644 index a49dcff00..000000000 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTLifecycle.m +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright 2019 Google - * - * 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 "GDTLibrary/Public/GDTLifecycle.h" - -#import - -#import "GDTLibrary/Private/GDTRegistrar_Private.h" -#import "GDTLibrary/Private/GDTStorage_Private.h" -#import "GDTLibrary/Private/GDTTransformer_Private.h" -#import "GDTLibrary/Private/GDTUploadCoordinator.h" - -@implementation GDTLifecycle - -+ (void)load { - [self sharedInstance]; -} - -/** Creates/returns the singleton instance of this class. - * - * @return The singleton instance of this class. - */ -+ (instancetype)sharedInstance { - static GDTLifecycle *sharedInstance; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - sharedInstance = [[GDTLifecycle alloc] init]; - }); - return sharedInstance; -} - -- (instancetype)init { - self = [super init]; - if (self) { - NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; - [notificationCenter addObserver:self - selector:@selector(applicationDidEnterBackground:) - name:kGDTApplicationDidEnterBackgroundNotification - object:nil]; - [notificationCenter addObserver:self - selector:@selector(applicationWillEnterForeground:) - name:kGDTApplicationWillEnterForegroundNotification - object:nil]; - - NSString *name = kGDTApplicationWillTerminateNotification; - [notificationCenter addObserver:self - selector:@selector(applicationWillTerminate:) - name:name - object:nil]; - } - return self; -} - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (void)applicationDidEnterBackground:(NSNotification *)notification { - GDTApplication *application = [GDTApplication sharedApplication]; - if ([[GDTTransformer sharedInstance] respondsToSelector:@selector(appWillBackground:)]) { - [[GDTTransformer sharedInstance] appWillBackground:application]; - } - if ([[GDTStorage sharedInstance] respondsToSelector:@selector(appWillBackground:)]) { - [[GDTStorage sharedInstance] appWillBackground:application]; - } - if ([[GDTUploadCoordinator sharedInstance] respondsToSelector:@selector(appWillBackground:)]) { - [[GDTUploadCoordinator sharedInstance] appWillBackground:application]; - } - if ([[GDTRegistrar sharedInstance] respondsToSelector:@selector(appWillBackground:)]) { - [[GDTRegistrar sharedInstance] appWillBackground:application]; - } -} - -- (void)applicationWillEnterForeground:(NSNotification *)notification { - GDTApplication *application = [GDTApplication sharedApplication]; - if ([[GDTTransformer sharedInstance] respondsToSelector:@selector(appWillForeground:)]) { - [[GDTTransformer sharedInstance] appWillForeground:application]; - } - if ([[GDTStorage sharedInstance] respondsToSelector:@selector(appWillForeground:)]) { - [[GDTStorage sharedInstance] appWillForeground:application]; - } - if ([[GDTUploadCoordinator sharedInstance] respondsToSelector:@selector(appWillForeground:)]) { - [[GDTUploadCoordinator sharedInstance] appWillForeground:application]; - } - if ([[GDTRegistrar sharedInstance] respondsToSelector:@selector(appWillForeground:)]) { - [[GDTRegistrar sharedInstance] appWillForeground:application]; - } -} - -- (void)applicationWillTerminate:(NSNotification *)notification { - GDTApplication *application = [GDTApplication sharedApplication]; - if ([[GDTTransformer sharedInstance] respondsToSelector:@selector(appWillTerminate:)]) { - [[GDTTransformer sharedInstance] appWillTerminate:application]; - } - if ([[GDTStorage sharedInstance] respondsToSelector:@selector(appWillTerminate:)]) { - [[GDTStorage sharedInstance] appWillTerminate:application]; - } - if ([[GDTUploadCoordinator sharedInstance] respondsToSelector:@selector(appWillTerminate:)]) { - [[GDTUploadCoordinator sharedInstance] appWillTerminate:application]; - } - if ([[GDTRegistrar sharedInstance] respondsToSelector:@selector(appWillTerminate:)]) { - [[GDTRegistrar sharedInstance] appWillTerminate:application]; - } -} - -@end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTStorage.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTStorage.m deleted file mode 100644 index 853bbb615..000000000 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTStorage.m +++ /dev/null @@ -1,321 +0,0 @@ -/* - * Copyright 2018 Google - * - * 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 "GDTLibrary/Private/GDTStorage.h" -#import "GDTLibrary/Private/GDTStorage_Private.h" - -#import -#import -#import -#import -#import - -#import "GDTLibrary/Private/GDTEvent_Private.h" -#import "GDTLibrary/Private/GDTRegistrar_Private.h" -#import "GDTLibrary/Private/GDTUploadCoordinator.h" - -/** Creates and/or returns a singleton NSString that is the shared storage path. - * - * @return The SDK event storage path. - */ -static NSString *GDTStoragePath() { - static NSString *storagePath; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - NSString *cachePath = - NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]; - storagePath = [NSString stringWithFormat:@"%@/google-sdks-events", cachePath]; - }); - return storagePath; -} - -@implementation GDTStorage - -+ (NSString *)archivePath { - static NSString *archivePath; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - archivePath = [GDTStoragePath() stringByAppendingPathComponent:@"GDTStorageArchive"]; - }); - return archivePath; -} - -+ (instancetype)sharedInstance { - static GDTStorage *sharedStorage; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - sharedStorage = [[GDTStorage alloc] init]; - }); - return sharedStorage; -} - -- (instancetype)init { - self = [super init]; - if (self) { - _storageQueue = dispatch_queue_create("com.google.GDTStorage", DISPATCH_QUEUE_SERIAL); - _targetToEventSet = [[NSMutableDictionary alloc] init]; - _storedEvents = [[NSMutableOrderedSet alloc] init]; - _uploadCoordinator = [GDTUploadCoordinator sharedInstance]; - } - return self; -} - -- (void)storeEvent:(GDTEvent *)event { - if (event == nil) { - return; - } - - [self createEventDirectoryIfNotExists]; - - __block GDTBackgroundIdentifier bgID = GDTBackgroundIdentifierInvalid; - if (_runningInBackground) { - bgID = [[GDTApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ - if (bgID != GDTBackgroundIdentifierInvalid) { - [[GDTApplication sharedApplication] endBackgroundTask:bgID]; - bgID = GDTBackgroundIdentifierInvalid; - } - }]; - } - - dispatch_async(_storageQueue, ^{ - // Check that a backend implementation is available for this target. - NSInteger target = event.target; - - // Check that a prioritizer is available for this target. - id prioritizer = [GDTRegistrar sharedInstance].targetToPrioritizer[@(target)]; - GDTAssert(prioritizer, @"There's no prioritizer registered for the given target."); - - // Write the transport bytes to disk, get a filename. - GDTAssert(event.dataObjectTransportBytes, @"The event should have been serialized to bytes"); - NSURL *eventFile = [self saveEventBytesToDisk:event.dataObjectTransportBytes - eventHash:event.hash]; - GDTDataFuture *dataFuture = [[GDTDataFuture alloc] initWithFileURL:eventFile]; - GDTStoredEvent *storedEvent = [event storedEventWithDataFuture:dataFuture]; - - // Add event to tracking collections. - [self addEventToTrackingCollections:storedEvent]; - - // Have the prioritizer prioritize the event. - [prioritizer prioritizeEvent:storedEvent]; - - // Check the QoS, if it's high priority, notify the target that it has a high priority event. - if (event.qosTier == GDTEventQoSFast) { - [self.uploadCoordinator forceUploadForTarget:target]; - } - - // Write state to disk. - if (self->_runningInBackground) { - if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { - NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self - requiringSecureCoding:YES - error:nil]; - [data writeToFile:[GDTStorage archivePath] atomically:YES]; - } else { -#if !defined(TARGET_OS_MACCATALYST) - [NSKeyedArchiver archiveRootObject:self toFile:[GDTStorage archivePath]]; -#endif - } - } - - // If running in the background, save state to disk and end the associated background task. - if (bgID != GDTBackgroundIdentifierInvalid) { - [[GDTApplication sharedApplication] endBackgroundTask:bgID]; - bgID = GDTBackgroundIdentifierInvalid; - } - }); -} - -- (void)removeEvents:(NSSet *)events { - NSSet *eventsToRemove = [events copy]; - dispatch_async(_storageQueue, ^{ - for (GDTStoredEvent *event in eventsToRemove) { - // Remove from disk, first and foremost. - NSError *error; - if (event.dataFuture.fileURL) { - NSURL *fileURL = event.dataFuture.fileURL; - [[NSFileManager defaultManager] removeItemAtURL:fileURL error:&error]; - GDTAssert(error == nil, @"There was an error removing an event file: %@", error); - } - - // Remove from the tracking collections. - [self.storedEvents removeObject:event]; - [self.targetToEventSet[event.target] removeObject:event]; - } - }); -} - -#pragma mark - Private helper methods - -/** Creates the storage directory if it does not exist. */ -- (void)createEventDirectoryIfNotExists { - NSError *error; - BOOL result = [[NSFileManager defaultManager] createDirectoryAtPath:GDTStoragePath() - withIntermediateDirectories:YES - attributes:0 - error:&error]; - if (!result || error) { - GDTLogError(GDTMCEDirectoryCreationError, @"Error creating the directory: %@", error); - } -} - -/** Saves the event's dataObjectTransportBytes to a file using NSData mechanisms. - * - * @note This method should only be called from a method within a block on _storageQueue to maintain - * thread safety. - * - * @param transportBytes The transport bytes of the event. - * @param eventHash The hash value of the event. - * @return The filename - */ -- (NSURL *)saveEventBytesToDisk:(NSData *)transportBytes eventHash:(NSUInteger)eventHash { - NSString *storagePath = GDTStoragePath(); - NSString *event = [NSString stringWithFormat:@"event-%lu", (unsigned long)eventHash]; - NSURL *eventFilePath = [NSURL fileURLWithPath:[storagePath stringByAppendingPathComponent:event]]; - - GDTAssert(![[NSFileManager defaultManager] fileExistsAtPath:eventFilePath.path], - @"An event shouldn't already exist at this path: %@", eventFilePath.path); - - BOOL writingSuccess = [transportBytes writeToURL:eventFilePath atomically:YES]; - if (!writingSuccess) { - GDTLogError(GDTMCEFileWriteError, @"An event file could not be written: %@", eventFilePath); - } - - return eventFilePath; -} - -/** Adds the event to internal tracking collections. - * - * @note This method should only be called from a method within a block on _storageQueue to maintain - * thread safety. - * - * @param event The event to track. - */ -- (void)addEventToTrackingCollections:(GDTStoredEvent *)event { - [_storedEvents addObject:event]; - NSMutableSet *events = self.targetToEventSet[event.target]; - events = events ? events : [[NSMutableSet alloc] init]; - [events addObject:event]; - _targetToEventSet[event.target] = events; -} - -#pragma mark - GDTLifecycleProtocol - -- (void)appWillForeground:(GDTApplication *)app { - if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { - NSData *data = [NSData dataWithContentsOfFile:[GDTStorage archivePath]]; - [NSKeyedUnarchiver unarchivedObjectOfClass:[GDTStorage class] fromData:data error:nil]; - } else { -#if !defined(TARGET_OS_MACCATALYST) - [NSKeyedUnarchiver unarchiveObjectWithFile:[GDTStorage archivePath]]; -#endif - } -} - -- (void)appWillBackground:(GDTApplication *)app { - self->_runningInBackground = YES; - dispatch_async(_storageQueue, ^{ - if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { - NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self - requiringSecureCoding:YES - error:nil]; - [data writeToFile:[GDTStorage archivePath] atomically:YES]; - } else { -#if !defined(TARGET_OS_MACCATALYST) - [NSKeyedArchiver archiveRootObject:self toFile:[GDTStorage archivePath]]; -#endif - } - }); - - // Create an immediate background task to run until the end of the current queue of work. - __block GDTBackgroundIdentifier bgID = [app beginBackgroundTaskWithExpirationHandler:^{ - if (bgID != GDTBackgroundIdentifierInvalid) { - [app endBackgroundTask:bgID]; - bgID = GDTBackgroundIdentifierInvalid; - } - }]; - dispatch_async(_storageQueue, ^{ - if (bgID != GDTBackgroundIdentifierInvalid) { - [app endBackgroundTask:bgID]; - bgID = GDTBackgroundIdentifierInvalid; - } - }); -} - -- (void)appWillTerminate:(GDTApplication *)application { - if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { - NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self - requiringSecureCoding:YES - error:nil]; - [data writeToFile:[GDTStorage archivePath] atomically:YES]; - } else { -#if !defined(TARGET_OS_MACCATALYST) - [NSKeyedArchiver archiveRootObject:self toFile:[GDTStorage archivePath]]; -#endif - } -} - -#pragma mark - NSSecureCoding - -/** The NSKeyedCoder key for the storedEvents property. */ -static NSString *const kGDTStorageStoredEventsKey = @"GDTStorageStoredEventsKey"; - -/** The NSKeyedCoder key for the targetToEventSet property. */ -static NSString *const kGDTStorageTargetToEventSetKey = @"GDTStorageTargetToEventSetKey"; - -/** The NSKeyedCoder key for the uploadCoordinator property. */ -static NSString *const kGDTStorageUploadCoordinatorKey = @"GDTStorageUploadCoordinatorKey"; - -+ (BOOL)supportsSecureCoding { - return YES; -} - -- (instancetype)initWithCoder:(NSCoder *)aDecoder { - // Create the singleton and populate its ivars. - GDTStorage *sharedInstance = [self.class sharedInstance]; - dispatch_sync(sharedInstance.storageQueue, ^{ - NSSet *classes = - [NSSet setWithObjects:[NSMutableOrderedSet class], [GDTStoredEvent class], nil]; - sharedInstance->_storedEvents = [aDecoder decodeObjectOfClasses:classes - forKey:kGDTStorageStoredEventsKey]; - classes = [NSSet setWithObjects:[NSMutableDictionary class], [NSMutableSet class], - [GDTStoredEvent class], nil]; - sharedInstance->_targetToEventSet = - [aDecoder decodeObjectOfClasses:classes forKey:kGDTStorageTargetToEventSetKey]; - sharedInstance->_uploadCoordinator = - [aDecoder decodeObjectOfClass:[GDTUploadCoordinator class] - forKey:kGDTStorageUploadCoordinatorKey]; - }); - return sharedInstance; -} - -- (void)encodeWithCoder:(NSCoder *)aCoder { - GDTStorage *sharedInstance = [self.class sharedInstance]; - NSMutableOrderedSet *storedEvents = sharedInstance->_storedEvents; - if (storedEvents) { - [aCoder encodeObject:storedEvents forKey:kGDTStorageStoredEventsKey]; - } - NSMutableDictionary *> *targetToEventSet = - sharedInstance->_targetToEventSet; - if (targetToEventSet) { - [aCoder encodeObject:targetToEventSet forKey:kGDTStorageTargetToEventSetKey]; - } - GDTUploadCoordinator *uploadCoordinator = sharedInstance->_uploadCoordinator; - if (uploadCoordinator) { - [aCoder encodeObject:uploadCoordinator forKey:kGDTStorageUploadCoordinatorKey]; - } -} - -@end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTTransformer.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTTransformer.m deleted file mode 100644 index ffed57ecf..000000000 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTTransformer.m +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright 2018 Google - * - * 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 "GDTLibrary/Private/GDTTransformer.h" -#import "GDTLibrary/Private/GDTTransformer_Private.h" - -#import -#import -#import -#import - -#import "GDTLibrary/Private/GDTStorage.h" - -@implementation GDTTransformer - -+ (instancetype)sharedInstance { - static GDTTransformer *eventTransformer; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - eventTransformer = [[self alloc] init]; - }); - return eventTransformer; -} - -- (instancetype)init { - self = [super init]; - if (self) { - _eventWritingQueue = dispatch_queue_create("com.google.GDTTransformer", DISPATCH_QUEUE_SERIAL); - _storageInstance = [GDTStorage sharedInstance]; - } - return self; -} - -- (void)transformEvent:(GDTEvent *)event - withTransformers:(NSArray> *)transformers { - GDTAssert(event, @"You can't write a nil event"); - - __block GDTBackgroundIdentifier bgID = GDTBackgroundIdentifierInvalid; - if (_runningInBackground) { - bgID = [[GDTApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ - if (bgID != GDTBackgroundIdentifierInvalid) { - [[GDTApplication sharedApplication] endBackgroundTask:bgID]; - bgID = GDTBackgroundIdentifierInvalid; - } - }]; - } - dispatch_async(_eventWritingQueue, ^{ - GDTEvent *transformedEvent = event; - for (id transformer in transformers) { - if ([transformer respondsToSelector:@selector(transform:)]) { - transformedEvent = [transformer transform:transformedEvent]; - if (!transformedEvent) { - return; - } - } else { - GDTLogError(GDTMCETransformerDoesntImplementTransform, - @"Transformer doesn't implement transform: %@", transformer); - return; - } - } - [self.storageInstance storeEvent:transformedEvent]; - if (self->_runningInBackground) { - [[GDTApplication sharedApplication] endBackgroundTask:bgID]; - bgID = GDTBackgroundIdentifierInvalid; - } - }); -} - -#pragma mark - GDTLifecycleProtocol - -- (void)appWillForeground:(GDTApplication *)app { - dispatch_async(_eventWritingQueue, ^{ - self->_runningInBackground = NO; - }); -} - -- (void)appWillBackground:(GDTApplication *)app { - // Create an immediate background task to run until the end of the current queue of work. - __block GDTBackgroundIdentifier bgID = [app beginBackgroundTaskWithExpirationHandler:^{ - if (bgID != GDTBackgroundIdentifierInvalid) { - [app endBackgroundTask:bgID]; - bgID = GDTBackgroundIdentifierInvalid; - } - }]; - dispatch_async(_eventWritingQueue, ^{ - if (bgID != GDTBackgroundIdentifierInvalid) { - [app endBackgroundTask:bgID]; - bgID = GDTBackgroundIdentifierInvalid; - } - }); -} - -- (void)appWillTerminate:(GDTApplication *)application { - // Flush the queue immediately. - dispatch_sync(_eventWritingQueue, ^{ - }); -} - -@end diff --git a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTTransport.m b/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTTransport.m deleted file mode 100644 index a34f15a3c..000000000 --- a/ios/Pods/GoogleDataTransport/GoogleDataTransport/GDTLibrary/GDTTransport.m +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2018 Google - * - * 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 -#import "GDTLibrary/Private/GDTTransport_Private.h" - -#import -#import -#import - -#import "GDTLibrary/Private/GDTTransformer.h" - -@implementation GDTTransport - -- (instancetype)initWithMappingID:(NSString *)mappingID - transformers:(nullable NSArray> *)transformers - target:(NSInteger)target { - GDTAssert(mappingID.length > 0, @"A mapping ID cannot be nil or empty"); - GDTAssert(target > 0, @"A target cannot be negative or 0"); - if (mappingID == nil || mappingID.length == 0 || target <= 0) { - return nil; - } - self = [super init]; - if (self) { - _mappingID = mappingID; - _transformers = transformers; - _target = target; - _transformerInstance = [GDTTransformer sharedInstance]; - } - return self; -} - -- (void)sendTelemetryEvent:(GDTEvent *)event { - // TODO: Determine if sending an event before registration is allowed. - GDTAssert(event, @"You can't send a nil event"); - GDTEvent *copiedEvent = [event copy]; - copiedEvent.qosTier = GDTEventQoSTelemetry; - copiedEvent.clockSnapshot = [GDTClock snapshot]; - [self.transformerInstance transformEvent:copiedEvent withTransformers:_transformers]; -} - -- (void)sendDataEvent:(GDTEvent *)event { - // TODO: Determine if sending an event before registration is allowed. - GDTAssert(event, @"You can't send a nil event"); - GDTAssert(event.qosTier != GDTEventQoSTelemetry, @"Use -sendTelemetryEvent, please."); - GDTEvent *copiedEvent = [event copy]; - copiedEvent.clockSnapshot = [GDTClock snapshot]; - [self.transformerInstance transformEvent:copiedEvent withTransformers:_transformers]; -} - -- (GDTEvent *)eventForTransport { - return [[GDTEvent alloc] initWithMappingID:_mappingID target:_target]; -} - -@end diff --git a/ios/Pods/GoogleDataTransport/README.md b/ios/Pods/GoogleDataTransport/README.md index d75ae8cb1..5097a89ae 100644 --- a/ios/Pods/GoogleDataTransport/README.md +++ b/ios/Pods/GoogleDataTransport/README.md @@ -3,7 +3,8 @@ This repository contains a subset of the Firebase iOS SDK source. It currently includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, -FirebaseInAppMessagingDisplay, FirebaseMessaging and FirebaseStorage. +FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and +FirebaseStorage. The repository also includes GoogleUtilities source. The [GoogleUtilities](GoogleUtilities/README.md) pod is @@ -75,14 +76,31 @@ the following software: * Xcode 10.1 (or later) * CocoaPods 1.7.2 (or later) + * [CocoaPods generate](https://github.com/square/cocoapods-generate) For the pod that you want to develop: -`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open` +`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios` + +Note: If the CocoaPods cache is out of date, you may need to run +`pod repo update` before the `pod gen` command. + +Note: Set the `--platforms` option to `macos` or `tvos` to develop/test for +those platforms. Since 10.2, Xcode does not properly handle multi-platform +CocoaPods workspaces. Firestore has a self contained Xcode project. See [Firestore/README.md](Firestore/README.md). +### Development for Catalyst +* `pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios` +* Check the Mac box in the App-iOS Build Settings +* Sign the App in the Settings Signing & Capabilities tab +* Click Pods in the Project Manager +* Add Signing to the iOS host app and unit test targets +* Select the Unit-unit scheme +* Run it to build and test + ### Adding a New Firebase Pod See [AddNewPod.md](AddNewPod.md). @@ -98,13 +116,17 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/773cb75d360b58f32048f5964038d09825a507c8/Formula/clang-format.rb -brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/3dfea1004e0736754bbf49673cca8aaed8a94089/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to `brew switch` to this version. +To update this section, find the versions of clang-format and swiftformat.rb to +match the versions in the CI failure logs +[here](https://github.com/Homebrew/homebrew-core/tree/master/Formula). + ### Running Unit Tests Select a scheme and press Command-u to build a component and run its unit tests. @@ -177,34 +199,42 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### macOS and tvOS -Thanks to contributions from the community, FirebaseABTesting, FirebaseAuth, FirebaseCore, -FirebaseDatabase, FirebaseMessaging, -FirebaseFirestore, FirebaseFunctions and FirebaseStorage now compile, run unit tests, and work on -macOS and tvOS. +### tvOS, macOS, and Catalyst +Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on +tvOS, macOS, and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). -Keep in mind that macOS and tvOS are not officially supported by Firebase, and this repository is -actively developed primarily for iOS. While we can catch basic unit test issues with Travis, there -may be some changes where the SDK no longer works as expected on macOS or tvOS. If you encounter -this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). +Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +repository is actively developed primarily for iOS. While we can catch basic unit test issues with +Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). -Note that the Firebase pod is not available for macOS and tvOS. +During app setup in the console, you may get to a step that mentions something like "Checking if the app +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +**It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. To install, add a subset of the following to the Podfile: ``` -pod 'FirebaseABTesting' -pod 'FirebaseAuth' -pod 'FirebaseCore' -pod 'FirebaseDatabase' -pod 'FirebaseFirestore' -pod 'FirebaseFunctions' -pod 'FirebaseMessaging' -pod 'FirebaseStorage' +pod 'Firebase/ABTesting' +pod 'Firebase/Auth' +pod 'Firebase/Crashlytics' +pod 'Firebase/Database' +pod 'Firebase/Firestore' +pod 'Firebase/Functions' +pod 'Firebase/Messaging' +pod 'Firebase/RemoteConfig' +pod 'Firebase/Storage' ``` +#### Additional Catalyst Notes + +* FirebaseAuth and FirebaseMessaging require adding `Keychain Sharing Capability` +to Build Settings. +* FirebaseFirestore requires signing the +[gRPC Resource target](https://github.com/firebase/firebase-ios-sdk/issues/3500#issuecomment-518741681). + ## Roadmap See [Roadmap](ROADMAP.md) for more about the Firebase iOS SDK Open Source diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTCompressionHelper.m b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTCompressionHelper.m new file mode 100644 index 000000000..6ae115d3c --- /dev/null +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTCompressionHelper.m @@ -0,0 +1,96 @@ +/* + * Copyright 2020 Google + * + * 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 "GDTCCTLibrary/Private/GDTCCTCompressionHelper.h" + +#import + +@implementation GDTCCTCompressionHelper + ++ (nullable NSData *)gzippedData:(NSData *)data { +#if defined(__LP64__) && __LP64__ + // Don't support > 32bit length for 64 bit, see note in header. + if (data.length > UINT_MAX) { + return nil; + } +#endif + + const uint kChunkSize = 1024; + + const void *bytes = [data bytes]; + NSUInteger length = [data length]; + + int level = Z_DEFAULT_COMPRESSION; + if (!bytes || !length) { + return nil; + } + + z_stream strm; + bzero(&strm, sizeof(z_stream)); + + int memLevel = 8; // Default. + int windowBits = 15 + 16; // Enable gzip header instead of zlib header. + + int retCode; + if ((retCode = deflateInit2(&strm, level, Z_DEFLATED, windowBits, memLevel, + Z_DEFAULT_STRATEGY)) != Z_OK) { + return nil; + } + + // Hint the size at 1/4 the input size. + NSMutableData *result = [NSMutableData dataWithCapacity:(length / 4)]; + unsigned char output[kChunkSize]; + + // Setup the input. + strm.avail_in = (unsigned int)length; + strm.next_in = (unsigned char *)bytes; + + // Collect the data. + do { + // update what we're passing in + strm.avail_out = kChunkSize; + strm.next_out = output; + retCode = deflate(&strm, Z_FINISH); + if ((retCode != Z_OK) && (retCode != Z_STREAM_END)) { + deflateEnd(&strm); + return nil; + } + // Collect what we got. + unsigned gotBack = kChunkSize - strm.avail_out; + if (gotBack > 0) { + [result appendBytes:output length:gotBack]; + } + + } while (retCode == Z_OK); + + // If the loop exits, it used all input and the stream ended. + NSAssert(strm.avail_in == 0, + @"Should have finished deflating without using all input, %u bytes left", strm.avail_in); + NSAssert(retCode == Z_STREAM_END, + @"thought we finished deflate w/o getting a result of stream end, code %d", retCode); + + // Clean up. + deflateEnd(&strm); + + return result; +} + ++ (BOOL)isGzipped:(NSData *)data { + const UInt8 *bytes = (const UInt8 *)data.bytes; + return (data.length >= 2 && bytes[0] == 0x1f && bytes[1] == 0x8b); +} + +@end diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTNanopbHelpers.m b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTNanopbHelpers.m index e723304d2..2afb823fb 100644 --- a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTNanopbHelpers.m +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTNanopbHelpers.m @@ -22,7 +22,7 @@ #import #endif // TARGET_OS_IOS || TARGET_OS_TV -#import +#import #import #import @@ -50,8 +50,8 @@ NSData *_Nullable GDTCCTEncodeBatchedLogRequest(gdt_cct_BatchedLogRequest *batch pb_ostream_t sizestream = PB_OSTREAM_SIZING; // Encode 1 time to determine the size. if (!pb_encode(&sizestream, gdt_cct_BatchedLogRequest_fields, batchedLogRequest)) { - GDTLogError(GDTMCEGeneralError, @"Error in nanopb encoding for size: %s", - PB_GET_ERROR(&sizestream)); + GDTCORLogError(GDTCORMCEGeneralError, @"Error in nanopb encoding for size: %s", + PB_GET_ERROR(&sizestream)); } // Encode a 2nd time to actually get the bytes from it. @@ -59,8 +59,8 @@ NSData *_Nullable GDTCCTEncodeBatchedLogRequest(gdt_cct_BatchedLogRequest *batch CFMutableDataRef dataRef = CFDataCreateMutable(CFAllocatorGetDefault(), bufferSize); pb_ostream_t ostream = pb_ostream_from_buffer((void *)CFDataGetBytePtr(dataRef), bufferSize); if (!pb_encode(&ostream, gdt_cct_BatchedLogRequest_fields, batchedLogRequest)) { - GDTLogError(GDTMCEGeneralError, @"Error in nanopb encoding for bytes: %s", - PB_GET_ERROR(&ostream)); + GDTCORLogError(GDTCORMCEGeneralError, @"Error in nanopb encoding for bytes: %s", + PB_GET_ERROR(&ostream)); } CFDataSetLength(dataRef, ostream.bytes_written); @@ -68,7 +68,7 @@ NSData *_Nullable GDTCCTEncodeBatchedLogRequest(gdt_cct_BatchedLogRequest *batch } gdt_cct_BatchedLogRequest GDTCCTConstructBatchedLogRequest( - NSDictionary *> *logMappingIDToLogSet) { + NSDictionary *> *logMappingIDToLogSet) { gdt_cct_BatchedLogRequest batchedLogRequest = gdt_cct_BatchedLogRequest_init_default; NSUInteger numberOfLogRequests = logMappingIDToLogSet.count; gdt_cct_LogRequest *logRequests = malloc(sizeof(gdt_cct_LogRequest) * numberOfLogRequests); @@ -76,7 +76,7 @@ gdt_cct_BatchedLogRequest GDTCCTConstructBatchedLogRequest( __block int i = 0; [logMappingIDToLogSet enumerateKeysAndObjectsUsingBlock:^( NSString *_Nonnull logMappingID, - NSSet *_Nonnull logSet, BOOL *_Nonnull stop) { + NSSet *_Nonnull logSet, BOOL *_Nonnull stop) { int32_t logSource = [logMappingID intValue]; gdt_cct_LogRequest logRequest = GDTCCTConstructLogRequest(logSource, logSet); logRequests[i] = logRequest; @@ -89,9 +89,10 @@ gdt_cct_BatchedLogRequest GDTCCTConstructBatchedLogRequest( } gdt_cct_LogRequest GDTCCTConstructLogRequest(int32_t logSource, - NSSet *_Nonnull logSet) { + NSSet *_Nonnull logSet) { if (logSet.count == 0) { - GDTLogError(GDTMCEGeneralError, @"%@", @"An empty event set can't be serialized to proto."); + GDTCORLogError(GDTCORMCEGeneralError, @"%@", + @"An empty event set can't be serialized to proto."); gdt_cct_LogRequest logRequest = gdt_cct_LogRequest_init_default; return logRequest; } @@ -102,17 +103,23 @@ gdt_cct_LogRequest GDTCCTConstructLogRequest(int32_t logSource, logRequest.has_client_info = 1; logRequest.log_event = malloc(sizeof(gdt_cct_LogEvent) * logSet.count); int i = 0; - for (GDTStoredEvent *log in logSet) { + for (GDTCORStoredEvent *log in logSet) { gdt_cct_LogEvent logEvent = GDTCCTConstructLogEvent(log); logRequest.log_event[i] = logEvent; i++; } logRequest.log_event_count = (pb_size_t)logSet.count; + GDTCORClock *currentTime = [GDTCORClock snapshot]; + logRequest.request_time_ms = currentTime.timeMillis; + logRequest.has_request_time_ms = 1; + logRequest.request_uptime_ms = currentTime.uptime; + logRequest.has_request_uptime_ms = 1; + return logRequest; } -gdt_cct_LogEvent GDTCCTConstructLogEvent(GDTStoredEvent *event) { +gdt_cct_LogEvent GDTCCTConstructLogEvent(GDTCORStoredEvent *event) { gdt_cct_LogEvent logEvent = gdt_cct_LogEvent_init_default; logEvent.event_time_ms = event.clockSnapshot.timeMillis; logEvent.has_event_time_ms = 1; @@ -127,8 +134,8 @@ gdt_cct_LogEvent GDTCCTConstructLogEvent(GDTStoredEvent *event) { options:0 error:&error]; if (error) { - GDTLogError(GDTMCEGeneralError, @"There was an error reading extension bytes from disk: %@", - error); + GDTCORLogError(GDTCORMCEGeneralError, + @"There was an error reading extension bytes from disk: %@", error); return logEvent; } logEvent.source_extension = GDTCCTEncodeData(extensionBytes); // read bytes from the file. @@ -161,7 +168,10 @@ gdt_cct_IosClientInfo GDTCCTConstructiOSClientInfo() { if (version) { iOSClientInfo.application_build = GDTCCTEncodeString(version); } - iOSClientInfo.country = GDTCCTEncodeString([locale objectForKey:NSLocaleCountryCode]); + NSString *countryCode = [locale objectForKey:NSLocaleCountryCode]; + if (countryCode) { + iOSClientInfo.country = GDTCCTEncodeString([locale objectForKey:NSLocaleCountryCode]); + } iOSClientInfo.model = GDTCCTEncodeString(device.model); NSString *languageCode = bundle.preferredLocalizations.firstObject; iOSClientInfo.language_code = diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTPrioritizer.m b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTPrioritizer.m index 414cc7315..0c6e879ba 100644 --- a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTPrioritizer.m +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTPrioritizer.m @@ -16,10 +16,11 @@ #import "GDTCCTLibrary/Private/GDTCCTPrioritizer.h" -#import -#import -#import -#import +#import +#import +#import +#import +#import const static int64_t kMillisPerDay = 8.64e+7; @@ -27,7 +28,7 @@ const static int64_t kMillisPerDay = 8.64e+7; + (void)load { GDTCCTPrioritizer *prioritizer = [GDTCCTPrioritizer sharedInstance]; - [[GDTRegistrar sharedInstance] registerPrioritizer:prioritizer target:kGDTTargetCCT]; + [[GDTCORRegistrar sharedInstance] registerPrioritizer:prioritizer target:kGDTCORTargetCCT]; } + (instancetype)sharedInstance { @@ -48,46 +49,56 @@ const static int64_t kMillisPerDay = 8.64e+7; return self; } -#pragma mark - GDTPrioritizer Protocol +#pragma mark - GDTCORPrioritizer Protocol -- (void)prioritizeEvent:(GDTStoredEvent *)event { +- (void)prioritizeEvent:(GDTCORStoredEvent *)event { dispatch_async(_queue, ^{ [self.events addObject:event]; }); } -- (GDTUploadPackage *)uploadPackageWithConditions:(GDTUploadConditions)conditions { - GDTUploadPackage *package = [[GDTUploadPackage alloc] initWithTarget:kGDTTargetCCT]; +- (GDTCORUploadPackage *)uploadPackageWithConditions:(GDTCORUploadConditions)conditions { + GDTCORUploadPackage *package = [[GDTCORUploadPackage alloc] initWithTarget:kGDTCORTargetCCT]; dispatch_sync(_queue, ^{ - NSSet *logEventsThatWillBeSent; + NSSet *logEventsThatWillBeSent; // A high priority event effectively flushes all events to be sent. - if ((conditions & GDTUploadConditionHighPriority) == GDTUploadConditionHighPriority) { + if ((conditions & GDTCORUploadConditionHighPriority) == GDTCORUploadConditionHighPriority) { + GDTCORLogDebug("%@", @"CCT: A high priority event is flushing all events."); package.events = self.events; + GDTCORLogDebug("CCT: %lu events are in the upload package", + (unsigned long)package.events.count); return; } // If on wifi, upload logs that are ok to send on wifi. - if ((conditions & GDTUploadConditionWifiData) == GDTUploadConditionWifiData) { + if ((conditions & GDTCORUploadConditionWifiData) == GDTCORUploadConditionWifiData) { logEventsThatWillBeSent = [self logEventsOkToSendOnWifi]; + GDTCORLogDebug("%@", @"CCT: events ok to send on wifi are being added to the upload package"); } else { logEventsThatWillBeSent = [self logEventsOkToSendOnMobileData]; + GDTCORLogDebug("%@", + @"CCT: events ok to send on mobile are being added to the upload package"); } // If it's been > 24h since the last daily upload, upload logs with the daily QoS. if (self.timeOfLastDailyUpload) { int64_t millisSinceLastUpload = - [GDTClock snapshot].timeMillis - self.timeOfLastDailyUpload.timeMillis; + [GDTCORClock snapshot].timeMillis - self.timeOfLastDailyUpload.timeMillis; if (millisSinceLastUpload > kMillisPerDay) { logEventsThatWillBeSent = [logEventsThatWillBeSent setByAddingObjectsFromSet:[self logEventsOkToSendDaily]]; + GDTCORLogDebug("%@", @"CCT: events ok to send daily are being added to the upload package"); } } else { - self.timeOfLastDailyUpload = [GDTClock snapshot]; + self.timeOfLastDailyUpload = [GDTCORClock snapshot]; logEventsThatWillBeSent = [logEventsThatWillBeSent setByAddingObjectsFromSet:[self logEventsOkToSendDaily]]; + GDTCORLogDebug("%@", @"CCT: events ok to send daily are being added to the upload package"); } package.events = logEventsThatWillBeSent; }); + GDTCORLogDebug("CCT: created an upload package with %ld events", + (unsigned long)package.events.count); return package; } @@ -108,21 +119,21 @@ typedef NS_ENUM(NSInteger, GDTCCTQoSTier) { GDTCCTQoSWifiOnly = 5, }; -/** Converts a GDTEventQoS to a GDTCCTQoS tier. +/** Converts a GDTCOREventQoS to a GDTCCTQoS tier. * - * @param qosTier The GDTEventQoS value. + * @param qosTier The GDTCOREventQoS value. * @return A static NSNumber that represents the CCT QoS tier. */ FOUNDATION_STATIC_INLINE -NSNumber *GDTCCTQosTierFromGDTEventQosTier(GDTEventQoS qosTier) { +NSNumber *GDTCCTQosTierFromGDTCOREventQosTier(GDTCOREventQoS qosTier) { switch (qosTier) { - case GDTEventQoSWifiOnly: + case GDTCOREventQoSWifiOnly: return @(GDTCCTQoSWifiOnly); break; - case GDTEventQoSTelemetry: + case GDTCOREventQoSTelemetry: // falls through. - case GDTEventQoSDaily: + case GDTCOREventQoSDaily: return @(GDTCCTQoSDaily); break; @@ -137,10 +148,10 @@ NSNumber *GDTCCTQosTierFromGDTEventQosTier(GDTEventQoS qosTier) { * @note This should be called from a thread safe method. * @return A set of logs that are ok to upload whilst on mobile data. */ -- (NSSet *)logEventsOkToSendOnMobileData { - return - [self.events objectsPassingTest:^BOOL(GDTStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { - return [GDTCCTQosTierFromGDTEventQosTier(event.qosTier) isEqual:@(GDTCCTQoSDefault)]; +- (NSSet *)logEventsOkToSendOnMobileData { + return [self.events + objectsPassingTest:^BOOL(GDTCORStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { + return [GDTCCTQosTierFromGDTCOREventQosTier(event.qosTier) isEqual:@(GDTCCTQoSDefault)]; }]; } @@ -149,10 +160,10 @@ NSNumber *GDTCCTQosTierFromGDTEventQosTier(GDTEventQoS qosTier) { * @note This should be called from a thread safe method. * @return A set of logs that are ok to upload whilst on wifi. */ -- (NSSet *)logEventsOkToSendOnWifi { - return - [self.events objectsPassingTest:^BOOL(GDTStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { - NSNumber *qosTier = GDTCCTQosTierFromGDTEventQosTier(event.qosTier); +- (NSSet *)logEventsOkToSendOnWifi { + return [self.events + objectsPassingTest:^BOOL(GDTCORStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { + NSNumber *qosTier = GDTCCTQosTierFromGDTCOREventQosTier(event.qosTier); return [qosTier isEqual:@(GDTCCTQoSDefault)] || [qosTier isEqual:@(GDTCCTQoSWifiOnly)] || [qosTier isEqual:@(GDTCCTQoSDaily)]; }]; @@ -163,25 +174,25 @@ NSNumber *GDTCCTQosTierFromGDTEventQosTier(GDTEventQoS qosTier) { * @note This should be called from a thread safe method. * @return A set of logs that are ok to upload only once per day. */ -- (NSSet *)logEventsOkToSendDaily { - return - [self.events objectsPassingTest:^BOOL(GDTStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { - return [GDTCCTQosTierFromGDTEventQosTier(event.qosTier) isEqual:@(GDTCCTQoSDaily)]; +- (NSSet *)logEventsOkToSendDaily { + return [self.events + objectsPassingTest:^BOOL(GDTCORStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { + return [GDTCCTQosTierFromGDTCOREventQosTier(event.qosTier) isEqual:@(GDTCCTQoSDaily)]; }]; } -#pragma mark - GDTUploadPackageProtocol +#pragma mark - GDTCORUploadPackageProtocol -- (void)packageDelivered:(GDTUploadPackage *)package successful:(BOOL)successful { +- (void)packageDelivered:(GDTCORUploadPackage *)package successful:(BOOL)successful { dispatch_async(_queue, ^{ - NSSet *events = [package.events copy]; - for (GDTStoredEvent *event in events) { + NSSet *events = [package.events copy]; + for (GDTCORStoredEvent *event in events) { [self.events removeObject:event]; } }); } -- (void)packageExpired:(GDTUploadPackage *)package { +- (void)packageExpired:(GDTCORUploadPackage *)package { [self packageDelivered:package successful:YES]; } diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTUploader.m b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTUploader.m index 0b9abeae4..532bf3b1c 100644 --- a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTUploader.m +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTUploader.m @@ -16,34 +16,44 @@ #import "GDTCCTLibrary/Private/GDTCCTUploader.h" -#import -#import -#import +#import +#import +#import #import #import #import +#import "GDTCCTLibrary/Private/GDTCCTCompressionHelper.h" #import "GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h" #import "GDTCCTLibrary/Private/GDTCCTPrioritizer.h" #import "GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h" +#ifdef GDTCCTSUPPORT_VERSION +#define STR(x) STR_EXPAND(x) +#define STR_EXPAND(x) #x +static NSString *const kGDTCCTSupportSDKVersion = @STR(GDTCCTSUPPORT_VERSION); +#else +static NSString *const kGDTCCTSupportSDKVersion = @"UNKNOWN"; +#endif // GDTCCTSUPPORT_VERSION + +#if !NDEBUG +NSNotificationName const GDTCCTUploadCompleteNotification = @"com.GDTCCTUploader.UploadComplete"; +#endif // #if !NDEBUG + @interface GDTCCTUploader () // Redeclared as readwrite. @property(nullable, nonatomic, readwrite) NSURLSessionUploadTask *currentTask; -/** If running in the background, the current background ID. */ -@property(nonatomic) BOOL runningInBackground; - @end @implementation GDTCCTUploader + (void)load { GDTCCTUploader *uploader = [GDTCCTUploader sharedInstance]; - [[GDTRegistrar sharedInstance] registerUploader:uploader target:kGDTTargetCCT]; + [[GDTCORRegistrar sharedInstance] registerUploader:uploader target:kGDTCORTargetCCT]; } + (instancetype)sharedInstance { @@ -84,77 +94,114 @@ return defaultServerURL; } -- (void)uploadPackage:(GDTUploadPackage *)package { - GDTBackgroundIdentifier bgID = GDTBackgroundIdentifierInvalid; - if (_runningInBackground) { - bgID = [[GDTApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ - if (bgID != GDTBackgroundIdentifierInvalid) { - [[GDTApplication sharedApplication] endBackgroundTask:bgID]; - } - }]; - } +- (void)uploadPackage:(GDTCORUploadPackage *)package { + __block GDTCORBackgroundIdentifier bgID = GDTCORBackgroundIdentifierInvalid; + bgID = [[GDTCORApplication sharedApplication] + beginBackgroundTaskWithName:@"GDTCCTUploader-upload" + expirationHandler:^{ + if (bgID != GDTCORBackgroundIdentifierInvalid) { + // Cancel the current upload and complete delivery. + [self.currentTask cancel]; + [self.currentUploadPackage completeDelivery]; + + // End the task. + [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; + } + }]; dispatch_async(_uploaderQueue, ^{ if (self->_currentTask || self->_currentUploadPackage) { - GDTLogWarning(GDTMCWUploadFailed, @"%@", - @"An upload shouldn't be initiated with another in progress."); + GDTCORLogWarning(GDTCORMCWUploadFailed, @"%@", + @"An upload shouldn't be initiated with another in progress."); return; } NSURL *serverURL = self.serverURL ? self.serverURL : [self defaultServerURL]; - NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:serverURL]; - request.HTTPMethod = @"POST"; - id completionHandler = - ^(NSData *_Nullable data, NSURLResponse *_Nullable response, NSError *_Nullable error) { - if (error) { - GDTLogWarning(GDTMCWUploadFailed, @"There was an error uploading events: %@", error); - } - NSError *decodingError; - gdt_cct_LogResponse logResponse = GDTCCTDecodeLogResponse(data, &decodingError); - if (!decodingError && logResponse.has_next_request_wait_millis) { - self->_nextUploadTime = - [GDTClock clockSnapshotInTheFuture:logResponse.next_request_wait_millis]; - } else { - // 15 minutes from now. - self->_nextUploadTime = [GDTClock clockSnapshotInTheFuture:15 * 60 * 1000]; - } - pb_release(gdt_cct_LogResponse_fields, &logResponse); - [package completeDelivery]; + id completionHandler = ^(NSData *_Nullable data, NSURLResponse *_Nullable response, + NSError *_Nullable error) { + GDTCORLogDebug("%@", @"CCT: request completed"); + if (error) { + GDTCORLogWarning(GDTCORMCWUploadFailed, @"There was an error uploading events: %@", error); + } + NSError *decodingError; + if (data) { + gdt_cct_LogResponse logResponse = GDTCCTDecodeLogResponse(data, &decodingError); + if (!decodingError && logResponse.has_next_request_wait_millis) { + GDTCORLogDebug( + "CCT: The backend responded asking to not upload for %lld millis from now.", + logResponse.next_request_wait_millis); + self->_nextUploadTime = + [GDTCORClock clockSnapshotInTheFuture:logResponse.next_request_wait_millis]; + } else { + GDTCORLogDebug("%@", @"CCT: The CCT backend response failed to parse, so the next " + @"request won't occur until 15 minutes from now"); + // 15 minutes from now. + self->_nextUploadTime = [GDTCORClock clockSnapshotInTheFuture:15 * 60 * 1000]; + } + pb_release(gdt_cct_LogResponse_fields, &logResponse); + } +#if !NDEBUG + // Post a notification when in DEBUG mode to state how many packages were uploaded. Useful + // for validation during tests. + [[NSNotificationCenter defaultCenter] postNotificationName:GDTCCTUploadCompleteNotification + object:@(package.events.count)]; +#endif // #if !NDEBUG + GDTCORLogDebug("%@", @"CCT: package delivered"); + [package completeDelivery]; - // End the background task if there was one. - if (bgID != GDTBackgroundIdentifierInvalid) { - [[GDTApplication sharedApplication] endBackgroundTask:bgID]; - } - self.currentTask = nil; - self.currentUploadPackage = nil; - }; + // End the background task if there was one. + if (bgID != GDTCORBackgroundIdentifierInvalid) { + [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + } + self.currentTask = nil; + self.currentUploadPackage = nil; + }; self->_currentUploadPackage = package; - NSData *requestProtoData = [self constructRequestProtoFromPackage:(GDTUploadPackage *)package]; + NSData *requestProtoData = + [self constructRequestProtoFromPackage:(GDTCORUploadPackage *)package]; + NSData *gzippedData = [GDTCCTCompressionHelper gzippedData:requestProtoData]; + BOOL usingGzipData = gzippedData != nil && gzippedData.length < requestProtoData.length; + NSData *dataToSend = usingGzipData ? gzippedData : requestProtoData; + NSURLRequest *request = [self constructRequestWithURL:serverURL data:dataToSend]; + GDTCORLogDebug("CCT: request created: %@", request); self.currentTask = [self.uploaderSession uploadTaskWithRequest:request - fromData:requestProtoData + fromData:dataToSend completionHandler:completionHandler]; + GDTCORLogDebug("%@", @"CCT: The upload task is about to begin."); [self.currentTask resume]; }); } -- (BOOL)readyToUploadWithConditions:(GDTUploadConditions)conditions { +- (BOOL)readyToUploadWithConditions:(GDTCORUploadConditions)conditions { __block BOOL result = NO; dispatch_sync(_uploaderQueue, ^{ if (self->_currentUploadPackage) { result = NO; + GDTCORLogDebug("%@", @"CCT: can't upload because a package is in flight"); return; } if (self->_currentTask) { result = NO; + GDTCORLogDebug("%@", @"CCT: can't upload because a task is in progress"); return; } - if ((conditions & GDTUploadConditionHighPriority) == GDTUploadConditionHighPriority) { + if ((conditions & GDTCORUploadConditionHighPriority) == GDTCORUploadConditionHighPriority) { result = YES; + GDTCORLogDebug("%@", @"CCT: a high priority event is allowing an upload"); return; } else if (self->_nextUploadTime) { - result = [[GDTClock snapshot] isAfter:self->_nextUploadTime]; + result = [[GDTCORClock snapshot] isAfter:self->_nextUploadTime]; +#if !NDEBUG + if (result) { + GDTCORLogDebug("%@", @"CCT: can upload because the request wait time has transpired"); + } else { + GDTCORLogDebug("%@", @"CCT: can't upload because the backend asked to wait"); + } +#endif // !NDEBUG return; } + GDTCORLogDebug("%@", @"CCT: can upload because nothing is preventing it"); result = YES; }); return result; @@ -167,12 +214,12 @@ * @param package The upload package used to construct the request proto bytes. * @return Proto bytes representing a gdt_cct_LogRequest object. */ -- (nonnull NSData *)constructRequestProtoFromPackage:(GDTUploadPackage *)package { +- (nonnull NSData *)constructRequestProtoFromPackage:(GDTCORUploadPackage *)package { // Segment the log events by log type. - NSMutableDictionary *> *logMappingIDToLogSet = + NSMutableDictionary *> *logMappingIDToLogSet = [[NSMutableDictionary alloc] init]; [package.events - enumerateObjectsUsingBlock:^(GDTStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { + enumerateObjectsUsingBlock:^(GDTCORStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { NSMutableSet *logSet = logMappingIDToLogSet[event.mappingID]; logSet = logSet ? logSet : [[NSMutableSet alloc] init]; [logSet addObject:event]; @@ -187,9 +234,31 @@ return data ? data : [[NSData alloc] init]; } -#pragma mark - GDTUploadPackageProtocol +/** Constructs a request to CCT given a URL and request body data. + * + * @param URL The URL to send the request to. + * @param data The request body data. + * @return A new NSURLRequest ready to be sent to CCT. + */ +- (NSURLRequest *)constructRequestWithURL:(NSURL *)URL data:(NSData *)data { + BOOL isGzipped = [GDTCCTCompressionHelper isGzipped:data]; + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; + [request setValue:@"application/x-protobuf" forHTTPHeaderField:@"Content-Type"]; + if (isGzipped) { + [request setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"]; + } + [request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]; + NSString *userAgent = [NSString stringWithFormat:@"datatransport/%@ cctsupport/%@ apple/", + kGDTCORVersion, kGDTCCTSupportSDKVersion]; + [request setValue:userAgent forHTTPHeaderField:@"User-Agent"]; + request.HTTPMethod = @"POST"; + [request setHTTPBody:data]; + return request; +} -- (void)packageExpired:(GDTUploadPackage *)package { +#pragma mark - GDTCORUploadPackageProtocol + +- (void)packageExpired:(GDTCORUploadPackage *)package { dispatch_async(_uploaderQueue, ^{ [self.currentTask cancel]; self.currentTask = nil; @@ -197,27 +266,9 @@ }); } -#pragma mark - GDTLifecycleProtocol +#pragma mark - GDTCORLifecycleProtocol -- (void)appWillBackground:(GDTApplication *)app { - _runningInBackground = YES; - __block GDTBackgroundIdentifier bgID = [app beginBackgroundTaskWithExpirationHandler:^{ - if (bgID != GDTBackgroundIdentifierInvalid) { - [app endBackgroundTask:bgID]; - } - }]; - if (bgID != GDTBackgroundIdentifierInvalid) { - dispatch_async(_uploaderQueue, ^{ - [[GDTApplication sharedApplication] endBackgroundTask:bgID]; - }); - } -} - -- (void)appWillForeground:(GDTApplication *)app { - _runningInBackground = NO; -} - -- (void)appWillTerminate:(GDTApplication *)application { +- (void)appWillTerminate:(GDTCORApplication *)application { dispatch_sync(_uploaderQueue, ^{ [self.currentTask cancel]; [self.currentUploadPackage completeDelivery]; diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTFLLPrioritizer.m b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTFLLPrioritizer.m new file mode 100644 index 000000000..b52c10bd4 --- /dev/null +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTFLLPrioritizer.m @@ -0,0 +1,199 @@ +/* + * Copyright 2019 Google + * + * 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 "GDTCCTLibrary/Private/GDTFLLPrioritizer.h" + +#import +#import +#import +#import +#import + +const static int64_t kMillisPerDay = 8.64e+7; + +@implementation GDTFLLPrioritizer + ++ (void)load { + GDTFLLPrioritizer *prioritizer = [GDTFLLPrioritizer sharedInstance]; + [[GDTCORRegistrar sharedInstance] registerPrioritizer:prioritizer target:kGDTCORTargetFLL]; +} + ++ (instancetype)sharedInstance { + static GDTFLLPrioritizer *sharedInstance; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sharedInstance = [[GDTFLLPrioritizer alloc] init]; + }); + return sharedInstance; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _queue = dispatch_queue_create("com.google.GDTFLLPrioritizer", DISPATCH_QUEUE_SERIAL); + _events = [[NSMutableSet alloc] init]; + } + return self; +} + +#pragma mark - GDTCORPrioritizer Protocol + +- (void)prioritizeEvent:(GDTCORStoredEvent *)event { + dispatch_async(_queue, ^{ + [self.events addObject:event]; + }); +} + +- (GDTCORUploadPackage *)uploadPackageWithConditions:(GDTCORUploadConditions)conditions { + GDTCORUploadPackage *package = [[GDTCORUploadPackage alloc] initWithTarget:kGDTCORTargetFLL]; + dispatch_sync(_queue, ^{ + NSSet *logEventsThatWillBeSent; + // A high priority event effectively flushes all events to be sent. + if ((conditions & GDTCORUploadConditionHighPriority) == GDTCORUploadConditionHighPriority) { + GDTCORLogDebug("%@", @"FLL: A high priority event is flushing all events."); + package.events = self.events; + GDTCORLogDebug("FLL: %lu events are in the upload package", + (unsigned long)package.events.count); + return; + } + + // If on wifi, upload logs that are ok to send on wifi. + if ((conditions & GDTCORUploadConditionWifiData) == GDTCORUploadConditionWifiData) { + logEventsThatWillBeSent = [self logEventsOkToSendOnWifi]; + GDTCORLogDebug("%@", @"FLL: events ok to send on wifi are being added to the upload package"); + } else { + logEventsThatWillBeSent = [self logEventsOkToSendOnMobileData]; + GDTCORLogDebug("%@", + @"FLL: events ok to send on mobile are being added to the upload package"); + } + + // If it's been > 24h since the last daily upload, upload logs with the daily QoS. + if (self.timeOfLastDailyUpload) { + int64_t millisSinceLastUpload = + [GDTCORClock snapshot].timeMillis - self.timeOfLastDailyUpload.timeMillis; + if (millisSinceLastUpload > kMillisPerDay) { + logEventsThatWillBeSent = + [logEventsThatWillBeSent setByAddingObjectsFromSet:[self logEventsOkToSendDaily]]; + GDTCORLogDebug("%@", @"FLL: events ok to send daily are being added to the upload package"); + } + } else { + self.timeOfLastDailyUpload = [GDTCORClock snapshot]; + logEventsThatWillBeSent = + [logEventsThatWillBeSent setByAddingObjectsFromSet:[self logEventsOkToSendDaily]]; + GDTCORLogDebug("%@", @"FLL: events ok to send daily are being added to the upload package"); + } + package.events = logEventsThatWillBeSent; + }); + GDTCORLogDebug("FLL: created an upload package with %ld events", + (unsigned long)package.events.count); + return package; +} + +#pragma mark - Private helper methods + +/** The different possible quality of service specifiers. High values indicate high priority. */ +typedef NS_ENUM(NSInteger, GDTFLLQoSTier) { + /** The QoS tier wasn't set, and won't ever be sent. */ + GDTFLLQoSDefault = 0, + + /** This event is internal telemetry data that should not be sent on its own if possible. */ + GDTFLLQoSTelemetry = 1, + + /** This event should be sent, but in a batch only roughly once per day. */ + GDTFLLQoSDaily = 2, + + /** This event should only be uploaded on wifi. */ + GDTFLLQoSWifiOnly = 5, +}; + +/** Converts a GDTCOREventQoS to a GDTFLLQoS tier. + * + * @param qosTier The GDTCOREventQoS value. + * @return A static NSNumber that represents the CCT QoS tier. + */ +FOUNDATION_STATIC_INLINE +NSNumber *GDTCCTQosTierFromGDTCOREventQosTier(GDTCOREventQoS qosTier) { + switch (qosTier) { + case GDTCOREventQoSWifiOnly: + return @(GDTFLLQoSWifiOnly); + break; + + case GDTCOREventQoSTelemetry: + // falls through. + case GDTCOREventQoSDaily: + return @(GDTFLLQoSDaily); + break; + + default: + return @(GDTFLLQoSDefault); + break; + } +} + +/** Returns a set of logs that are ok to upload whilst on mobile data. + * + * @note This should be called from a thread safe method. + * @return A set of logs that are ok to upload whilst on mobile data. + */ +- (NSSet *)logEventsOkToSendOnMobileData { + return [self.events + objectsPassingTest:^BOOL(GDTCORStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { + return [GDTCCTQosTierFromGDTCOREventQosTier(event.qosTier) isEqual:@(GDTFLLQoSDefault)]; + }]; +} + +/** Returns a set of logs that are ok to upload whilst on wifi. + * + * @note This should be called from a thread safe method. + * @return A set of logs that are ok to upload whilst on wifi. + */ +- (NSSet *)logEventsOkToSendOnWifi { + return [self.events + objectsPassingTest:^BOOL(GDTCORStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { + NSNumber *qosTier = GDTCCTQosTierFromGDTCOREventQosTier(event.qosTier); + return [qosTier isEqual:@(GDTFLLQoSDefault)] || [qosTier isEqual:@(GDTFLLQoSWifiOnly)] || + [qosTier isEqual:@(GDTFLLQoSDaily)]; + }]; +} + +/** Returns a set of logs that only should have a single upload attempt per day. + * + * @note This should be called from a thread safe method. + * @return A set of logs that are ok to upload only once per day. + */ +- (NSSet *)logEventsOkToSendDaily { + return [self.events + objectsPassingTest:^BOOL(GDTCORStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { + return [GDTCCTQosTierFromGDTCOREventQosTier(event.qosTier) isEqual:@(GDTFLLQoSDaily)]; + }]; +} + +#pragma mark - GDTCORUploadPackageProtocol + +- (void)packageDelivered:(GDTCORUploadPackage *)package successful:(BOOL)successful { + dispatch_async(_queue, ^{ + NSSet *events = [package.events copy]; + for (GDTCORStoredEvent *event in events) { + [self.events removeObject:event]; + } + }); +} + +- (void)packageExpired:(GDTCORUploadPackage *)package { + [self packageDelivered:package successful:YES]; +} + +@end diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTFLLUploader.m b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTFLLUploader.m new file mode 100644 index 000000000..6117d8878 --- /dev/null +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTFLLUploader.m @@ -0,0 +1,328 @@ +/* + * Copyright 2019 Google + * + * 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 "GDTCCTLibrary/Private/GDTFLLUploader.h" + +#import +#import +#import + +#import +#import +#import + +#import "GDTCCTLibrary/Private/GDTCCTCompressionHelper.h" +#import "GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h" +#import "GDTCCTLibrary/Private/GDTFLLPrioritizer.h" + +#import "GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h" + +#ifdef GDTCCTSUPPORT_VERSION +#define STR(x) STR_EXPAND(x) +#define STR_EXPAND(x) #x +static NSString *const kGDTCCTSupportSDKVersion = @STR(GDTCCTSUPPORT_VERSION); +#else +static NSString *const kGDTCCTSupportSDKVersion = @"UNKNOWN"; +#endif // GDTCCTSUPPORT_VERSION + +#if !NDEBUG +NSNotificationName const GDTFLLUploadCompleteNotification = @"com.GDTFLLUploader.UploadComplete"; +#endif // #if !NDEBUG + +@interface GDTFLLUploader () + +// Redeclared as readwrite. +@property(nullable, nonatomic, readwrite) NSURLSessionUploadTask *currentTask; + +@end + +@implementation GDTFLLUploader + ++ (void)load { + GDTFLLUploader *uploader = [GDTFLLUploader sharedInstance]; + [[GDTCORRegistrar sharedInstance] registerUploader:uploader target:kGDTCORTargetFLL]; +} + ++ (instancetype)sharedInstance { + static GDTFLLUploader *sharedInstance; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + sharedInstance = [[GDTFLLUploader alloc] init]; + }); + return sharedInstance; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _uploaderQueue = dispatch_queue_create("com.google.GDTFLLUploader", DISPATCH_QUEUE_SERIAL); + NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; + _uploaderSession = [NSURLSession sessionWithConfiguration:config + delegate:self + delegateQueue:nil]; + } + return self; +} + +- (NSURL *)defaultServerURL { + static NSURL *defaultServerURL; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + // These strings should be interleaved to construct the real URL. This is just to (hopefully) + // fool github URL scanning bots. + const char *p1 = "hts/frbslgigp.ogepscmv/ieo/eaybtho"; + const char *p2 = "tp:/ieaeogn-agolai.o/1frlglgc/aclg"; + const char defaultURL[69] = { + p1[0], p2[0], p1[1], p2[1], p1[2], p2[2], p1[3], p2[3], p1[4], p2[4], + p1[5], p2[5], p1[6], p2[6], p1[7], p2[7], p1[8], p2[8], p1[9], p2[9], + p1[10], p2[10], p1[11], p2[11], p1[12], p2[12], p1[13], p2[13], p1[14], p2[14], + p1[15], p2[15], p1[16], p2[16], p1[17], p2[17], p1[18], p2[18], p1[19], p2[19], + p1[20], p2[20], p1[21], p2[21], p1[22], p2[22], p1[23], p2[23], p1[24], p2[24], + p1[25], p2[25], p1[26], p2[26], p1[27], p2[27], p1[28], p2[28], p1[29], p2[29], + p1[30], p2[30], p1[31], p2[31], p1[32], p2[32], p1[33], p2[33], '\0'}; + defaultServerURL = [NSURL URLWithString:[NSString stringWithUTF8String:defaultURL]]; + }); + return defaultServerURL; +} + +- (NSString *)defaultAPIKey { + static NSString *defaultServerKey; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + // These strings should be interleaved to construct the real key. + const char *p1 = "AzSBG0honD6A-PxV5nBc"; + const char *p2 = "Iay44Iwtu2vV0AOrz1C"; + const char defaultKey[40] = {p1[0], p2[0], p1[1], p2[1], p1[2], p2[2], p1[3], p2[3], + p1[4], p2[4], p1[5], p2[5], p1[6], p2[6], p1[7], p2[7], + p1[8], p2[8], p1[9], p2[9], p1[10], p2[10], p1[11], p2[11], + p1[12], p2[12], p1[13], p2[13], p1[14], p2[14], p1[15], p2[15], + p1[16], p2[16], p1[17], p2[17], p1[18], p2[18], p1[19], '\0'}; + defaultServerKey = [NSString stringWithUTF8String:defaultKey]; + }); + return defaultServerKey; +} + +- (void)uploadPackage:(GDTCORUploadPackage *)package { + __block GDTCORBackgroundIdentifier bgID = GDTCORBackgroundIdentifierInvalid; + bgID = [[GDTCORApplication sharedApplication] + beginBackgroundTaskWithName:@"GDTFLLUploader-upload" + expirationHandler:^{ + if (bgID != GDTCORBackgroundIdentifierInvalid) { + // Cancel the upload and complete delivery. + [self.currentTask cancel]; + [self.currentUploadPackage completeDelivery]; + + // End the background task. + [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; + } + }]; + + dispatch_async(_uploaderQueue, ^{ + if (self->_currentTask || self->_currentUploadPackage) { + GDTCORLogWarning(GDTCORMCWUploadFailed, @"%@", + @"An upload shouldn't be initiated with another in progress."); + return; + } + NSURL *serverURL = self.serverURL ? self.serverURL : [self defaultServerURL]; + + id completionHandler = ^(NSData *_Nullable data, NSURLResponse *_Nullable response, + NSError *_Nullable error) { + GDTCORLogDebug("%@", @"FLL: request completed"); + if (error) { + GDTCORLogWarning(GDTCORMCWUploadFailed, @"There was an error uploading events: %@", error); + } + NSError *decodingError; + if (data) { + gdt_cct_LogResponse logResponse = GDTCCTDecodeLogResponse(data, &decodingError); + if (!decodingError && logResponse.has_next_request_wait_millis) { + GDTCORLogDebug( + "FLL: The backend responded asking to not upload for %lld millis from now.", + logResponse.next_request_wait_millis); + self->_nextUploadTime = + [GDTCORClock clockSnapshotInTheFuture:logResponse.next_request_wait_millis]; + } else { + GDTCORLogDebug("%@", @"FLL: The CCT backend response failed to parse, so the next " + @"request won't occur until 15 minutes from now"); + // 15 minutes from now. + self->_nextUploadTime = [GDTCORClock clockSnapshotInTheFuture:15 * 60 * 1000]; + } + pb_release(gdt_cct_LogResponse_fields, &logResponse); + } + + // Only retry if one of these codes is returned. + if (((NSHTTPURLResponse *)response).statusCode == 429 || + ((NSHTTPURLResponse *)response).statusCode == 503) { + [package retryDeliveryInTheFuture]; + } else { +#if !NDEBUG + // Post a notification when in DEBUG mode to state how many packages were uploaded. Useful + // for validation during tests. + [[NSNotificationCenter defaultCenter] postNotificationName:GDTFLLUploadCompleteNotification + object:@(package.events.count)]; +#endif // #if !NDEBUG + GDTCORLogDebug("%@", @"FLL: package delivered"); + [package completeDelivery]; + } + + // End the background task if there was one. + if (bgID != GDTCORBackgroundIdentifierInvalid) { + [[GDTCORApplication sharedApplication] endBackgroundTask:bgID]; + bgID = GDTCORBackgroundIdentifierInvalid; + } + self.currentTask = nil; + self.currentUploadPackage = nil; + }; + self->_currentUploadPackage = package; + NSData *requestProtoData = + [self constructRequestProtoFromPackage:(GDTCORUploadPackage *)package]; + NSData *gzippedData = [GDTCCTCompressionHelper gzippedData:requestProtoData]; + BOOL usingGzipData = gzippedData != nil && gzippedData.length < requestProtoData.length; + NSData *dataToSend = usingGzipData ? gzippedData : requestProtoData; + NSURLRequest *request = [self constructRequestWithURL:serverURL data:dataToSend]; + GDTCORLogDebug("FLL: request created: %@", request); + self.currentTask = [self.uploaderSession uploadTaskWithRequest:request + fromData:dataToSend + completionHandler:completionHandler]; + GDTCORLogDebug("%@", @"FLL: The upload task is about to begin."); + [self.currentTask resume]; + }); +} + +- (BOOL)readyToUploadWithConditions:(GDTCORUploadConditions)conditions { + __block BOOL result = NO; + dispatch_sync(_uploaderQueue, ^{ + if (self->_currentUploadPackage) { + result = NO; + GDTCORLogDebug("%@", @"FLL: can't upload because a package is in flight"); + return; + } + if (self->_currentTask) { + result = NO; + GDTCORLogDebug("%@", @"FLL: can't upload because a task is in progress"); + return; + } + if ((conditions & GDTCORUploadConditionHighPriority) == GDTCORUploadConditionHighPriority) { + result = YES; + GDTCORLogDebug("%@", @"FLL: a high priority event is allowing an upload"); + return; + } else if (self->_nextUploadTime) { + result = [[GDTCORClock snapshot] isAfter:self->_nextUploadTime]; +#if !NDEBUG + if (result) { + GDTCORLogDebug("%@", @"FLL: can upload because the request wait time has transpired"); + } else { + GDTCORLogDebug("%@", @"FLL: can't upload because the backend asked to wait"); + } +#endif // !NDEBUG + return; + } + GDTCORLogDebug("%@", @"FLL: can upload because nothing is preventing it"); + result = YES; + }); + return result; +} + +#pragma mark - Private helper methods + +/** Constructs data given an upload package. + * + * @param package The upload package used to construct the request proto bytes. + * @return Proto bytes representing a gdt_cct_LogRequest object. + */ +- (nonnull NSData *)constructRequestProtoFromPackage:(GDTCORUploadPackage *)package { + // Segment the log events by log type. + NSMutableDictionary *> *logMappingIDToLogSet = + [[NSMutableDictionary alloc] init]; + [package.events + enumerateObjectsUsingBlock:^(GDTCORStoredEvent *_Nonnull event, BOOL *_Nonnull stop) { + NSMutableSet *logSet = logMappingIDToLogSet[event.mappingID]; + logSet = logSet ? logSet : [[NSMutableSet alloc] init]; + [logSet addObject:event]; + logMappingIDToLogSet[event.mappingID] = logSet; + }]; + + gdt_cct_BatchedLogRequest batchedLogRequest = + GDTCCTConstructBatchedLogRequest(logMappingIDToLogSet); + + NSData *data = GDTCCTEncodeBatchedLogRequest(&batchedLogRequest); + pb_release(gdt_cct_BatchedLogRequest_fields, &batchedLogRequest); + return data ? data : [[NSData alloc] init]; +} + +/** Constructs a request to FLL given a URL and request body data. + * + * @param URL The URL to send the request to. + * @param data The request body data. + * @return A new NSURLRequest ready to be sent to FLL. + */ +- (NSURLRequest *)constructRequestWithURL:(NSURL *)URL data:(NSData *)data { + const UInt8 *bytes = (const UInt8 *)data.bytes; + // From https://en.wikipedia.org/wiki/Gzip, gzip's magic number is 1f 8b. + BOOL isGzipped = (data.length >= 2 && bytes[0] == 0x1f && bytes[1] == 0x8b); + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; + [request setValue:[self defaultAPIKey] forHTTPHeaderField:@"X-Goog-Api-Key"]; + [request setValue:@"application/x-protobuf" forHTTPHeaderField:@"Content-Type"]; + if (isGzipped) { + [request setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"]; + } + [request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]; + NSString *userAgent = [NSString stringWithFormat:@"datatransport/%@ fllsupport/%@ apple/", + kGDTCORVersion, kGDTCCTSupportSDKVersion]; + [request setValue:userAgent forHTTPHeaderField:@"User-Agent"]; + request.HTTPMethod = @"POST"; + [request setHTTPBody:data]; + return request; +} + +#pragma mark - GDTCORUploadPackageProtocol + +- (void)packageExpired:(GDTCORUploadPackage *)package { + dispatch_async(_uploaderQueue, ^{ + [self.currentTask cancel]; + self.currentTask = nil; + self.currentUploadPackage = nil; + }); +} + +#pragma mark - GDTCORLifecycleProtocol + +- (void)appWillTerminate:(GDTCORApplication *)application { + dispatch_sync(_uploaderQueue, ^{ + [self.currentTask cancel]; + [self.currentUploadPackage completeDelivery]; + }); +} + +#pragma mark - NSURLSessionDelegate + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + willPerformHTTPRedirection:(NSHTTPURLResponse *)response + newRequest:(NSURLRequest *)request + completionHandler:(void (^)(NSURLRequest *_Nullable))completionHandler { + if (!completionHandler) { + return; + } + if (response.statusCode == 302 || response.statusCode == 301) { + NSURLRequest *newRequest = [self constructRequestWithURL:request.URL + data:task.originalRequest.HTTPBody]; + completionHandler(newRequest); + } else { + completionHandler(request); + } +} + +@end diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTCompressionHelper.h b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTCompressionHelper.h new file mode 100644 index 000000000..08d0a4bad --- /dev/null +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTCompressionHelper.h @@ -0,0 +1,40 @@ +/* + * Copyright 2020 Google + * + * 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 + +NS_ASSUME_NONNULL_BEGIN + +/** A class with methods to help with gzipped data. */ +@interface GDTCCTCompressionHelper : NSObject + +/** Compresses the given data and returns a new data object. + * + * @note Reduced version from GULNSData+zlib.m of GoogleUtilities. + * @return Compressed data, or nil if there was an error. + */ ++ (nullable NSData *)gzippedData:(NSData *)data; + +/** Returns YES if the data looks like it was gzip compressed by checking for the gzip magic number. + * + * @note: From https://en.wikipedia.org/wiki/Gzip, gzip's magic number is 1f 8b. + * @return YES if the data appears gzipped, NO otherwise. + */ ++ (BOOL)isGzipped:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h index 792b5fb39..08081cc72 100644 --- a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h @@ -16,7 +16,7 @@ #import -#import +#import #import "GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h" @@ -63,7 +63,7 @@ NSData *GDTCCTEncodeBatchedLogRequest(gdt_cct_BatchedLogRequest *batchedLogReque */ FOUNDATION_EXPORT gdt_cct_BatchedLogRequest GDTCCTConstructBatchedLogRequest( - NSDictionary *> *logMappingIDToLogSet); + NSDictionary *> *logMappingIDToLogSet); /** Constructs a log request given a log source and a set of events. * @@ -72,15 +72,15 @@ gdt_cct_BatchedLogRequest GDTCCTConstructBatchedLogRequest( * @param logSet The set of events to send in this log request. */ FOUNDATION_EXPORT -gdt_cct_LogRequest GDTCCTConstructLogRequest(int32_t logSource, NSSet *logSet); +gdt_cct_LogRequest GDTCCTConstructLogRequest(int32_t logSource, NSSet *logSet); -/** Constructs a gdt_cct_LogEvent given a GDTStoredEvent*. +/** Constructs a gdt_cct_LogEvent given a GDTCORStoredEvent*. * - * @param event The GDTStoredEvent to convert. + * @param event The GDTCORStoredEvent to convert. * @return The new gdt_cct_LogEvent object. */ FOUNDATION_EXPORT -gdt_cct_LogEvent GDTCCTConstructLogEvent(GDTStoredEvent *event); +gdt_cct_LogEvent GDTCCTConstructLogEvent(GDTCORStoredEvent *event); /** Constructs a gdt_cct_ClientInfo representing the client device. * diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTPrioritizer.h b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTPrioritizer.h index 5986435cb..1908a31b8 100644 --- a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTPrioritizer.h +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTPrioritizer.h @@ -16,22 +16,22 @@ #import -#import -#import +#import +#import NS_ASSUME_NONNULL_BEGIN /** Manages the prioritization of events from GoogleDataTransport. */ -@interface GDTCCTPrioritizer : NSObject +@interface GDTCCTPrioritizer : NSObject /** The queue on which this prioritizer operates. */ @property(nonatomic) dispatch_queue_t queue; /** All log events that have been processed by this prioritizer. */ -@property(nonatomic) NSMutableSet *events; +@property(nonatomic) NSMutableSet *events; /** The most recent attempted upload of daily uploaded logs. */ -@property(nonatomic) GDTClock *timeOfLastDailyUpload; +@property(nonatomic) GDTCORClock *timeOfLastDailyUpload; /** Creates and/or returns the singleton instance of this class. * diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTUploader.h b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTUploader.h index dc4c8ace1..ba95a201b 100644 --- a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTUploader.h +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTUploader.h @@ -16,12 +16,17 @@ #import -#import +#import NS_ASSUME_NONNULL_BEGIN +#if !NDEBUG +/** A notification fired when uploading is complete, detailing the number of events uploaded. */ +extern NSNotificationName const GDTCCTUploadCompleteNotification; +#endif // #if !NDEBUG + /** Class capable of uploading events to the CCT backend. */ -@interface GDTCCTUploader : NSObject +@interface GDTCCTUploader : NSObject /** The queue on which all CCT uploading will occur. */ @property(nonatomic, readonly) dispatch_queue_t uploaderQueue; @@ -36,10 +41,10 @@ NS_ASSUME_NONNULL_BEGIN @property(nullable, nonatomic, readonly) NSURLSessionUploadTask *currentTask; /** Current upload package. */ -@property(nullable, nonatomic) GDTUploadPackage *currentUploadPackage; +@property(nullable, nonatomic) GDTCORUploadPackage *currentUploadPackage; /** The next upload time. */ -@property(nullable, nonatomic) GDTClock *nextUploadTime; +@property(nullable, nonatomic) GDTCORClock *nextUploadTime; /** Creates and/or returns the singleton instance of this class. * diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTFLLPrioritizer.h b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTFLLPrioritizer.h new file mode 100644 index 000000000..b7622f2ea --- /dev/null +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTFLLPrioritizer.h @@ -0,0 +1,44 @@ +/* + * Copyright 2019 Google + * + * 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 + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** Manages the prioritization of events from GoogleDataTransport. */ +@interface GDTFLLPrioritizer : NSObject + +/** The queue on which this prioritizer operates. */ +@property(nonatomic) dispatch_queue_t queue; + +/** All log events that have been processed by this prioritizer. */ +@property(nonatomic) NSMutableSet *events; + +/** The most recent attempted upload of daily uploaded logs. */ +@property(nonatomic) GDTCORClock *timeOfLastDailyUpload; + +/** Creates and/or returns the singleton instance of this class. + * + * @return The singleton instance of this class. + */ ++ (instancetype)sharedInstance; + +NS_ASSUME_NONNULL_END + +@end diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTFLLUploader.h b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTFLLUploader.h new file mode 100644 index 000000000..7df08ab82 --- /dev/null +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTFLLUploader.h @@ -0,0 +1,57 @@ +/* + * Copyright 2019 Google + * + * 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 + +#import + +NS_ASSUME_NONNULL_BEGIN + +#if !NDEBUG +/** A notification fired when uploading is complete, detailing the number of events uploaded. */ +extern NSNotificationName const GDTFLLUploadCompleteNotification; +#endif // #if !NDEBUG + +/** Class capable of uploading events to the CCT backend. */ +@interface GDTFLLUploader : NSObject + +/** The queue on which all CCT uploading will occur. */ +@property(nonatomic, readonly) dispatch_queue_t uploaderQueue; + +/** The server URL to upload to. Look at .m for the default value. */ +@property(nonatomic) NSURL *serverURL; + +/** The URL session that will attempt upload. */ +@property(nonatomic, readonly) NSURLSession *uploaderSession; + +/** The current upload task. */ +@property(nullable, nonatomic, readonly) NSURLSessionUploadTask *currentTask; + +/** Current upload package. */ +@property(nullable, nonatomic) GDTCORUploadPackage *currentUploadPackage; + +/** The next upload time. */ +@property(nullable, nonatomic) GDTCORClock *nextUploadTime; + +/** Creates and/or returns the singleton instance of this class. + * + * @return The singleton instance of this class. + */ ++ (instancetype)sharedInstance; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c index 87afc5c98..95846e6d6 100644 --- a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.3.9.2 */ +/* Generated by nanopb-0.3.9.3 */ #include "cct.nanopb.h" diff --git a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h index 41131c29a..a6d4cfb82 100644 --- a/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h +++ b/ios/Pods/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.3.9.2 */ +/* Generated by nanopb-0.3.9.3 */ #ifndef PB_GDT_CCT_CCT_NANOPB_H_INCLUDED #define PB_GDT_CCT_CCT_NANOPB_H_INCLUDED diff --git a/ios/Pods/GoogleDataTransportCCTSupport/README.md b/ios/Pods/GoogleDataTransportCCTSupport/README.md index d75ae8cb1..5097a89ae 100644 --- a/ios/Pods/GoogleDataTransportCCTSupport/README.md +++ b/ios/Pods/GoogleDataTransportCCTSupport/README.md @@ -3,7 +3,8 @@ This repository contains a subset of the Firebase iOS SDK source. It currently includes FirebaseCore, FirebaseABTesting, FirebaseAuth, FirebaseDatabase, FirebaseFirestore, FirebaseFunctions, FirebaseInstanceID, FirebaseInAppMessaging, -FirebaseInAppMessagingDisplay, FirebaseMessaging and FirebaseStorage. +FirebaseInAppMessagingDisplay, FirebaseMessaging, FirebaseRemoteConfig, and +FirebaseStorage. The repository also includes GoogleUtilities source. The [GoogleUtilities](GoogleUtilities/README.md) pod is @@ -75,14 +76,31 @@ the following software: * Xcode 10.1 (or later) * CocoaPods 1.7.2 (or later) + * [CocoaPods generate](https://github.com/square/cocoapods-generate) For the pod that you want to develop: -`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open` +`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios` + +Note: If the CocoaPods cache is out of date, you may need to run +`pod repo update` before the `pod gen` command. + +Note: Set the `--platforms` option to `macos` or `tvos` to develop/test for +those platforms. Since 10.2, Xcode does not properly handle multi-platform +CocoaPods workspaces. Firestore has a self contained Xcode project. See [Firestore/README.md](Firestore/README.md). +### Development for Catalyst +* `pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios` +* Check the Mac box in the App-iOS Build Settings +* Sign the App in the Settings Signing & Capabilities tab +* Click Pods in the Project Manager +* Add Signing to the iOS host app and unit test targets +* Select the Unit-unit scheme +* Run it to build and test + ### Adding a New Firebase Pod See [AddNewPod.md](AddNewPod.md). @@ -98,13 +116,17 @@ Travis will verify that any code changes are done in a style compliant way. Inst These commands will get the right versions: ``` -brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/773cb75d360b58f32048f5964038d09825a507c8/Formula/clang-format.rb -brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/3dfea1004e0736754bbf49673cca8aaed8a94089/Formula/swiftformat.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/e3496d9/Formula/clang-format.rb +brew upgrade https://raw.githubusercontent.com/Homebrew/homebrew-core/7963c3d/Formula/swiftformat.rb ``` Note: if you already have a newer version of these installed you may need to `brew switch` to this version. +To update this section, find the versions of clang-format and swiftformat.rb to +match the versions in the CI failure logs +[here](https://github.com/Homebrew/homebrew-core/tree/master/Formula). + ### Running Unit Tests Select a scheme and press Command-u to build a component and run its unit tests. @@ -177,34 +199,42 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### macOS and tvOS -Thanks to contributions from the community, FirebaseABTesting, FirebaseAuth, FirebaseCore, -FirebaseDatabase, FirebaseMessaging, -FirebaseFirestore, FirebaseFunctions and FirebaseStorage now compile, run unit tests, and work on -macOS and tvOS. +### tvOS, macOS, and Catalyst +Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on +tvOS, macOS, and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). -Keep in mind that macOS and tvOS are not officially supported by Firebase, and this repository is -actively developed primarily for iOS. While we can catch basic unit test issues with Travis, there -may be some changes where the SDK no longer works as expected on macOS or tvOS. If you encounter -this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). +Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +repository is actively developed primarily for iOS. While we can catch basic unit test issues with +Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). -Note that the Firebase pod is not available for macOS and tvOS. +During app setup in the console, you may get to a step that mentions something like "Checking if the app +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +**It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. To install, add a subset of the following to the Podfile: ``` -pod 'FirebaseABTesting' -pod 'FirebaseAuth' -pod 'FirebaseCore' -pod 'FirebaseDatabase' -pod 'FirebaseFirestore' -pod 'FirebaseFunctions' -pod 'FirebaseMessaging' -pod 'FirebaseStorage' +pod 'Firebase/ABTesting' +pod 'Firebase/Auth' +pod 'Firebase/Crashlytics' +pod 'Firebase/Database' +pod 'Firebase/Firestore' +pod 'Firebase/Functions' +pod 'Firebase/Messaging' +pod 'Firebase/RemoteConfig' +pod 'Firebase/Storage' ``` +#### Additional Catalyst Notes + +* FirebaseAuth and FirebaseMessaging require adding `Keychain Sharing Capability` +to Build Settings. +* FirebaseFirestore requires signing the +[gRPC Resource target](https://github.com/firebase/firebase-ios-sdk/issues/3500#issuecomment-518741681). + ## Roadmap See [Roadmap](ROADMAP.md) for more about the Firebase iOS SDK Open Source diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m b/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m index a55f4733b..173a776dc 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m @@ -12,14 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "TargetConditionals.h" +#import #import #import #import #import -#import "../Common/GULLoggerCodes.h" -#import "Internal/GULAppDelegateSwizzler_Private.h" +#import "GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h" +#import "GoogleUtilities/Common/GULLoggerCodes.h" #import @@ -53,14 +53,14 @@ typedef void (*GULRealDidFailToRegisterForRemoteNotificationsIMP)(id, typedef void (*GULRealDidReceiveRemoteNotificationIMP)(id, SEL, GULApplication *, NSDictionary *); -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 -// This is needed to for the library to be warning free on iOS versions < 7. +// TODO: Since we don't support iOS 7 anymore, see if we can remove the check below. +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 && !TARGET_OS_WATCH #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunguarded-availability" typedef void (*GULRealDidReceiveRemoteNotificationWithCompletionIMP)( id, SEL, GULApplication *, NSDictionary *, void (^)(UIBackgroundFetchResult)); #pragma clang diagnostic pop -#endif // __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 +#endif // __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 && !TARGET_OS_WATCH typedef void (^GULAppDelegateInterceptorCallback)(id); @@ -75,11 +75,12 @@ static GULLoggerService kGULLoggerSwizzler = @"[GoogleUtilities/AppDelegateSwizz // Since Firebase SDKs also use this for app delegate proxying, in order to not be a breaking change // we disable App Delegate proxying when either of these two flags are set to NO. -/** Plist key that allows Firebase developers to disable App Delegate Proxying. */ +/** Plist key that allows Firebase developers to disable App and Scene Delegate Proxying. */ static NSString *const kGULFirebaseAppDelegateProxyEnabledPlistKey = @"FirebaseAppDelegateProxyEnabled"; -/** Plist key that allows developers not using Firebase to disable App Delegate Proxying. */ +/** Plist key that allows developers not using Firebase to disable App and Scene Delegate Proxying. + */ static NSString *const kGULGoogleUtilitiesAppDelegateProxyEnabledPlistKey = @"GoogleUtilitiesAppDelegateProxyEnabled"; @@ -518,7 +519,7 @@ static dispatch_once_t sProxyAppDelegateRemoteNotificationOnceToken; storeDestinationImplementationTo:realImplementationsBySelector]; // For application:didReceiveRemoteNotification:fetchCompletionHandler: -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 && !TARGET_OS_WATCH if ([GULAppEnvironmentUtil isIOS7OrHigher]) { SEL didReceiveRemoteNotificationWithCompletionSEL = NSSelectorFromString(kGULDidReceiveRemoteNotificationWithCompletionSEL); @@ -539,7 +540,7 @@ static dispatch_once_t sProxyAppDelegateRemoteNotificationOnceToken; storeDestinationImplementationTo:realImplementationsBySelector]; } } -#endif // __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 +#endif // __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 && !TARGET_OS_WATCH } /// We have to do this to invalidate the cache that caches the original respondsToSelector of @@ -548,11 +549,13 @@ static dispatch_once_t sProxyAppDelegateRemoteNotificationOnceToken; /// Register KVO only once. Otherwise, the observing method will be called as many times as /// being registered. + (void)reassignAppDelegate { +#if !TARGET_OS_WATCH id delegate = [self sharedApplication].delegate; [self sharedApplication].delegate = nil; [self sharedApplication].delegate = delegate; gOriginalAppDelegate = delegate; [[GULAppDelegateObserver sharedInstance] observeUIApplication]; +#endif } #pragma mark - Helper methods @@ -809,6 +812,7 @@ static dispatch_once_t sProxyAppDelegateRemoteNotificationOnceToken; continueUserActivityIMPPointer.pointerValue; __block BOOL returnedValue = NO; +#if !TARGET_OS_WATCH [GULAppDelegateSwizzler notifyInterceptorsWithMethodSelector:methodSelector callback:^(id interceptor) { @@ -816,6 +820,7 @@ static dispatch_once_t sProxyAppDelegateRemoteNotificationOnceToken; continueUserActivity:userActivity restorationHandler:restorationHandler]; }]; +#endif // Call the real implementation if the real App Delegate has any. if (continueUserActivityIMP) { returnedValue |= continueUserActivityIMP(self, methodSelector, application, userActivity, @@ -880,8 +885,7 @@ static dispatch_once_t sProxyAppDelegateRemoteNotificationOnceToken; } } -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 -// This is needed to for the library to be warning free on iOS versions < 7. +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 && !TARGET_OS_WATCH #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunguarded-availability" - (void)application:(GULApplication *)application @@ -914,7 +918,7 @@ static dispatch_once_t sProxyAppDelegateRemoteNotificationOnceToken; } } #pragma clang diagnostic pop -#endif // __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 +#endif // __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 && !TARGET_OS_WATCH - (void)application:(GULApplication *)application donor_didReceiveRemoteNotification:(NSDictionary *)userInfo { diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h b/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h index cb322f496..80672124a 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h @@ -36,4 +36,15 @@ static NSString *const kGULApplicationClassName = @"UIApplication"; static NSString *const kGULApplicationClassName = @"NSApplication"; +#elif TARGET_OS_WATCH + +#import + +// We match the according watchOS API but swizzling should not work in watch +#define GULApplication WKExtension +#define GULApplicationDelegate WKExtensionDelegate +#define GULUserActivityRestoring NSUserActivityRestoring + +static NSString *const kGULApplicationClassName = @"WKExtension"; + #endif diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Common/GULLoggerCodes.h b/ios/Pods/GoogleUtilities/GoogleUtilities/Common/GULLoggerCodes.h index 2320ed36d..053ce8432 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/Common/GULLoggerCodes.h +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Common/GULLoggerCodes.h @@ -34,6 +34,23 @@ typedef NS_ENUM(NSInteger, GULSwizzlerMessageCode) { kGULSwizzlerMessageCodeAppDelegateSwizzling013 = 1013, // I-SWZ001013 kGULSwizzlerMessageCodeAppDelegateSwizzlingInvalidAppDelegate = 1014, // I-SWZ001014 + // Scene Delegate Swizzling. + kGULSwizzlerMessageCodeSceneDelegateSwizzling000 = 1100, // I-SWZ001100 + kGULSwizzlerMessageCodeSceneDelegateSwizzling001 = 1101, // I-SWZ001101 + kGULSwizzlerMessageCodeSceneDelegateSwizzling002 = 1102, // I-SWZ001102 + kGULSwizzlerMessageCodeSceneDelegateSwizzling003 = 1103, // I-SWZ001103 + kGULSwizzlerMessageCodeSceneDelegateSwizzling004 = 1104, // I-SWZ001104 + kGULSwizzlerMessageCodeSceneDelegateSwizzling005 = 1105, // I-SWZ001105 + kGULSwizzlerMessageCodeSceneDelegateSwizzling006 = 1106, // I-SWZ001106 + kGULSwizzlerMessageCodeSceneDelegateSwizzling007 = 1107, // I-SWZ001107 + kGULSwizzlerMessageCodeSceneDelegateSwizzling008 = 1108, // I-SWZ001108 + kGULSwizzlerMessageCodeSceneDelegateSwizzling009 = 1109, // I-SWZ001109 + kGULSwizzlerMessageCodeSceneDelegateSwizzling010 = 1110, // I-SWZ001110 + kGULSwizzlerMessageCodeSceneDelegateSwizzling011 = 1111, // I-SWZ001111 + kGULSwizzlerMessageCodeSceneDelegateSwizzling012 = 1112, // I-SWZ001112 + kGULSwizzlerMessageCodeSceneDelegateSwizzling013 = 1113, // I-SWZ001113 + kGULSwizzlerMessageCodeSceneDelegateSwizzlingInvalidSceneDelegate = 1114, // I-SWZ001114 + // Method Swizzling. kGULSwizzlerMessageCodeMethodSwizzling000 = 2000, // I-SWZ002000 }; diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/GULHeartbeatDateStorage.m b/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/GULHeartbeatDateStorage.m new file mode 100644 index 000000000..483c85903 --- /dev/null +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/GULHeartbeatDateStorage.m @@ -0,0 +1,140 @@ +/* + * Copyright 2019 Google + * + * 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 +#import + +@interface GULHeartbeatDateStorage () +/** The storage to store the date of the last sent heartbeat. */ +@property(nonatomic, readonly) NSFileCoordinator *fileCoordinator; +@end + +@implementation GULHeartbeatDateStorage + +- (instancetype)initWithFileName:(NSString *)fileName { + if (fileName == nil) { + return nil; + } + + self = [super init]; + if (self) { + _fileCoordinator = [[NSFileCoordinator alloc] initWithFilePresenter:nil]; + NSURL *directoryURL = [[self class] directoryPathURL]; + [[self class] checkAndCreateDirectory:directoryURL fileCoordinator:_fileCoordinator]; + _fileURL = [directoryURL URLByAppendingPathComponent:fileName]; + } + return self; +} + +/** Returns the URL path of the Application Support folder. + * @return the URL path of Application Support. + */ ++ (NSURL *)directoryPathURL { + NSArray *paths = + NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); + NSArray *components = @[ paths.lastObject, @"Google/FIRApp" ]; + NSString *directoryString = [NSString pathWithComponents:components]; + NSURL *directoryURL = [NSURL fileURLWithPath:directoryString]; + return directoryURL; +} + +/** Checks and creates a directory for the directory specified by the + * directory url + * @param directoryPathURL The path to the directory which needs to be created. + * @param fileCoordinator The fileCoordinator object to coordinate writes to the directory. + */ ++ (void)checkAndCreateDirectory:(NSURL *)directoryPathURL + fileCoordinator:(NSFileCoordinator *)fileCoordinator { + NSError *fileCoordinatorError = nil; + [fileCoordinator + coordinateWritingItemAtURL:directoryPathURL + options:0 + error:&fileCoordinatorError + byAccessor:^(NSURL *writingDirectoryURL) { + NSError *error; + if (![writingDirectoryURL checkResourceIsReachableAndReturnError:&error]) { + // If fail creating the Application Support directory, log warning. + NSError *error; + [[NSFileManager defaultManager] createDirectoryAtURL:writingDirectoryURL + withIntermediateDirectories:YES + attributes:nil + error:&error]; + } + }]; +} + +- (nullable NSMutableDictionary *)heartbeatDictionaryWithFileURL:(NSURL *)readingFileURL { + NSError *error; + NSMutableDictionary *dict; + NSData *objectData = [NSData dataWithContentsOfURL:readingFileURL options:0 error:&error]; + if (objectData == nil || error != nil) { + dict = [NSMutableDictionary dictionary]; + } else { + dict = [GULSecureCoding + unarchivedObjectOfClasses:[NSSet setWithArray:@[ NSDictionary.class, NSDate.class ]] + fromData:objectData + error:&error]; + if (dict == nil || error != nil) { + dict = [NSMutableDictionary dictionary]; + } + } + return dict; +} + +- (nullable NSDate *)heartbeatDateForTag:(NSString *)tag { + __block NSMutableDictionary *dict; + NSError *error; + [self.fileCoordinator coordinateReadingItemAtURL:self.fileURL + options:0 + error:&error + byAccessor:^(NSURL *readingURL) { + dict = [self heartbeatDictionaryWithFileURL:readingURL]; + }]; + return dict[tag]; +} + +- (BOOL)setHearbeatDate:(NSDate *)date forTag:(NSString *)tag { + NSError *error; + __block BOOL isSuccess = false; + [self.fileCoordinator coordinateReadingItemAtURL:self.fileURL + options:0 + writingItemAtURL:self.fileURL + options:0 + error:&error + byAccessor:^(NSURL *readingURL, NSURL *writingURL) { + NSMutableDictionary *dictionary = + [self heartbeatDictionaryWithFileURL:readingURL]; + dictionary[tag] = date; + NSError *error; + isSuccess = [self writeDictionary:dictionary + forWritingURL:writingURL + error:&error]; + }]; + return isSuccess; +} + +- (BOOL)writeDictionary:(NSMutableDictionary *)dictionary + forWritingURL:(NSURL *)writingFileURL + error:(NSError **)outError { + NSData *data = [GULSecureCoding archivedDataWithRootObject:dictionary error:outError]; + if (*outError != nil) { + return false; + } else { + return [data writeToURL:writingFileURL atomically:YES]; + } +} + +@end diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/GULSecureCoding.m b/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/GULSecureCoding.m new file mode 100644 index 000000000..ebfb80845 --- /dev/null +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/GULSecureCoding.m @@ -0,0 +1,103 @@ +// Copyright 2019 Google +// +// 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 "GoogleUtilities/Environment/Public/GULSecureCoding.h" + +NSString *const kGULSecureCodingError = @"GULSecureCodingError"; + +@implementation GULSecureCoding + ++ (nullable id)unarchivedObjectOfClasses:(NSSet *)classes + fromData:(NSData *)data + error:(NSError **)outError { + id object; +#if __has_builtin(__builtin_available) + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { + object = [NSKeyedUnarchiver unarchivedObjectOfClasses:classes fromData:data error:outError]; + } else +#endif // __has_builtin(__builtin_available) + { + @try { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; +#pragma clang diagnostic pop + unarchiver.requiresSecureCoding = YES; + + object = [unarchiver decodeObjectOfClasses:classes forKey:NSKeyedArchiveRootObjectKey]; + } @catch (NSException *exception) { + if (outError) { + *outError = [self archivingErrorWithException:exception]; + } + } + + if (object == nil && outError && *outError == nil) { + NSString *failureReason = @"NSKeyedUnarchiver failed to unarchive data."; + *outError = [NSError errorWithDomain:kGULSecureCodingError + code:-1 + userInfo:@{NSLocalizedFailureReasonErrorKey : failureReason}]; + } + } + + return object; +} + ++ (nullable id)unarchivedObjectOfClass:(Class)class + fromData:(NSData *)data + error:(NSError **)outError { + return [self unarchivedObjectOfClasses:[NSSet setWithObject:class] fromData:data error:outError]; +} + ++ (nullable NSData *)archivedDataWithRootObject:(id)object error:(NSError **)outError { + NSData *archiveData; +#if __has_builtin(__builtin_available) + if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) { + archiveData = [NSKeyedArchiver archivedDataWithRootObject:object + requiringSecureCoding:YES + error:outError]; + } else +#endif // __has_builtin(__builtin_available) + { + @try { + NSMutableData *data = [NSMutableData data]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; +#pragma clang diagnostic pop + archiver.requiresSecureCoding = YES; + + [archiver encodeObject:object forKey:NSKeyedArchiveRootObjectKey]; + [archiver finishEncoding]; + + archiveData = [data copy]; + } @catch (NSException *exception) { + if (outError) { + *outError = [self archivingErrorWithException:exception]; + } + } + } + + return archiveData; +} + ++ (NSError *)archivingErrorWithException:(NSException *)exception { + NSString *failureReason = [NSString + stringWithFormat:@"NSKeyedArchiver exception with name: %@, reason: %@, userInfo: %@", + exception.name, exception.reason, exception.userInfo]; + NSDictionary *errorUserInfo = @{NSLocalizedFailureReasonErrorKey : failureReason}; + + return [NSError errorWithDomain:kGULSecureCodingError code:-1 userInfo:errorUserInfo]; +} + +@end diff --git a/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnosticsDateFileStorage.h b/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GULHeartbeatDateStorage.h similarity index 63% rename from ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnosticsDateFileStorage.h rename to ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GULHeartbeatDateStorage.h index 93e406a4d..9432dfc04 100644 --- a/ios/Pods/FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnosticsDateFileStorage.h +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GULHeartbeatDateStorage.h @@ -18,29 +18,31 @@ NS_ASSUME_NONNULL_BEGIN -/// Stores a date to a specified file. -@interface FIRCoreDiagnosticsDateFileStorage : NSObject +/// Stores either a date or a dictionary to a specified file. +@interface GULHeartbeatDateStorage : NSObject - (instancetype)init NS_UNAVAILABLE; +@property(nonatomic, readonly) NSURL *fileURL; + /** * Default initializer. - * @param fileURL The URL of the file to store the date. The directory must exist, the file may not + * @param fileName The name of the file to store the date information. * exist, it will be created if needed. */ -- (instancetype)initWithFileURL:(NSURL *)fileURL; +- (instancetype)initWithFileName:(NSString *)fileName; /** - * Saves the date to the specified file. - * @return YES on success, NO otherwise. - */ -- (BOOL)setDate:(nullable NSDate *)date error:(NSError **)outError; - -/** - * Reads the date to the specified file. + * Reads the date from the specified file for the given tag. * @return Returns date if exists, otherwise `nil`. */ -- (nullable NSDate *)date; +- (nullable NSDate *)heartbeatDateForTag:(NSString *)tag; + +/** + * Saves the date for the specified tag in the specified file. + * @return YES on success, NO otherwise. + */ +- (BOOL)setHearbeatDate:(NSDate *)date forTag:(NSString *)tag; @end diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GULSecureCoding.h b/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GULSecureCoding.h new file mode 100644 index 000000000..8484b3953 --- /dev/null +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/Public/GULSecureCoding.h @@ -0,0 +1,36 @@ +// Copyright 2019 Google +// +// 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 + +NS_ASSUME_NONNULL_BEGIN + +/** The class wraps `NSKeyedArchiver` and `NSKeyedUnarchiver` API to provide a unified secure coding + * methods for iOS versions before and after 11. + */ +@interface GULSecureCoding : NSObject + ++ (nullable id)unarchivedObjectOfClasses:(NSSet *)classes + fromData:(NSData *)data + error:(NSError **)outError; + ++ (nullable id)unarchivedObjectOfClass:(Class)class + fromData:(NSData *)data + error:(NSError **)outError; + ++ (nullable NSData *)archivedDataWithRootObject:(id)object error:(NSError **)outError; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m b/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m index 8327438ad..6442941d1 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "GULAppEnvironmentUtil.h" +#import "GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.h" #import #import @@ -129,7 +129,7 @@ static BOOL IsAppEncrypted() { } static BOOL HasSCInfoFolder() { -#if TARGET_OS_IOS || TARGET_OS_TV +#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH NSString *bundlePath = [NSBundle mainBundle].bundlePath; NSString *scInfoPath = [bundlePath stringByAppendingPathComponent:@"SC_Info"]; return [[NSFileManager defaultManager] fileExistsAtPath:scInfoPath]; @@ -139,7 +139,7 @@ static BOOL HasSCInfoFolder() { } static BOOL HasEmbeddedMobileProvision() { -#if TARGET_OS_IOS || TARGET_OS_TV +#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH return [[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"].length > 0; #elif TARGET_OS_OSX return NO; @@ -207,6 +207,7 @@ static BOOL HasEmbeddedMobileProvision() { #elif TARGET_OS_OSX return NO; #endif + return NO; } + (NSString *)deviceModel { @@ -225,7 +226,7 @@ static BOOL HasEmbeddedMobileProvision() { + (NSString *)systemVersion { #if TARGET_OS_IOS return [UIDevice currentDevice].systemVersion; -#elif TARGET_OS_OSX || TARGET_OS_TV +#elif TARGET_OS_OSX || TARGET_OS_TV || TARGET_OS_WATCH // Assemble the systemVersion, excluding the patch version if it's 0. NSOperatingSystemVersion osVersion = [NSProcessInfo processInfo].operatingSystemVersion; NSMutableString *versionString = [[NSMutableString alloc] @@ -238,7 +239,7 @@ static BOOL HasEmbeddedMobileProvision() { } + (BOOL)isAppExtension { -#if TARGET_OS_IOS || TARGET_OS_TV +#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH // Documented by Apple BOOL appExtension = [[[NSBundle mainBundle] bundlePath] hasSuffix:@".appex"]; return appExtension; diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/LICENSE b/ios/Pods/GoogleUtilities/GoogleUtilities/LICENSE new file mode 100644 index 000000000..30a8f7252 --- /dev/null +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/LICENSE @@ -0,0 +1,247 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + +================================================================================ + +The following copyright from Landon J. Fuller applies to the isAppEncrypted +function in Environment/third_party/GULAppEnvironmentUtil.m. + +Copyright (c) 2017 Landon J. Fuller +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Comment from +iPhone Dev Wiki +Crack Prevention: App Store binaries are signed by both their developer +and Apple. This encrypts the binary so that decryption keys are needed in order +to make the binary readable. When iOS executes the binary, the decryption keys +are used to decrypt the binary into a readable state where it is then loaded +into memory and executed. iOS can tell the encryption status of a binary via the +cryptid structure member of LC_ENCRYPTION_INFO MachO load command. If cryptid is +a non-zero value then the binary is encrypted. + +'Cracking' works by letting the kernel decrypt the binary then siphoning the +decrypted data into a new binary file, resigning, and repackaging. This will +only work on jailbroken devices as codesignature validation has been removed. +Resigning takes place because while the codesignature doesn't have to be valid +thanks to the jailbreak, it does have to be in place unless you have AppSync or +similar to disable codesignature checks. + +More information at Landon +Fuller's blog diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Logger/GULLogger.m b/ios/Pods/GoogleUtilities/GoogleUtilities/Logger/GULLogger.m index b177c3d01..0a512da60 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/Logger/GULLogger.m +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Logger/GULLogger.m @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "Private/GULLogger.h" +#import "GoogleUtilities/Logger/Private/GULLogger.h" #include @@ -161,7 +161,12 @@ void GULLogBasic(GULLoggerLevel level, range:messageCodeRange]; NSCAssert(numberOfMatches == 1, @"Incorrect message code format."); #endif - NSString *logMsg = [[NSString alloc] initWithFormat:message arguments:args_ptr]; + NSString *logMsg; + if (args_ptr == NULL) { + logMsg = message; + } else { + logMsg = [[NSString alloc] initWithFormat:message arguments:args_ptr]; + } logMsg = [NSString stringWithFormat:@"%s - %@[%@] %@", sVersion, service, messageCode, logMsg]; dispatch_async(sGULClientQueue, ^{ asl_log(sGULLoggerClient, NULL, (int)level, "%s", logMsg.UTF8String); @@ -172,10 +177,10 @@ void GULLogBasic(GULLoggerLevel level, /** * Generates the logging functions using macros. * - * Calling GULLogError(kGULLoggerCore, @"I-COR000001", @"Configure %@ failed.", @"blah") shows: - * yyyy-mm-dd hh:mm:ss.SSS sender[PID] [{service}][I-COR000001] Configure blah failed. - * Calling GULLogDebug(kGULLoggerCore, @"I-COR000001", @"Configure succeed.") shows: - * yyyy-mm-dd hh:mm:ss.SSS sender[PID] [{service}][I-COR000001] Configure succeed. + * Calling GULLogError({service}, @"I-XYZ000001", @"Configure %@ failed.", @"blah") shows: + * yyyy-mm-dd hh:mm:ss.SSS sender[PID] [{service}][I-XYZ000001] Configure blah failed. + * Calling GULLogDebug({service}, @"I-XYZ000001", @"Configure succeed.") shows: + * yyyy-mm-dd hh:mm:ss.SSS sender[PID] [{service}][I-XYZ000001] Configure succeed. */ #define GUL_LOGGING_FUNCTION(level) \ void GULLog##level(GULLoggerService service, BOOL force, NSString *messageCode, \ diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/GULSwizzler.m b/ios/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/GULSwizzler.m index 17b1c316a..27d48bbf0 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/GULSwizzler.m +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/MethodSwizzler/GULSwizzler.m @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "Private/GULSwizzler.h" +#import "GoogleUtilities/MethodSwizzler/Private/GULSwizzler.h" #import #ifdef DEBUG #import -#import "../Common/GULLoggerCodes.h" +#import "GoogleUtilities/Common/GULLoggerCodes.h" static GULLoggerService kGULLoggerSwizzler = @"[GoogleUtilities/MethodSwizzler]"; #endif diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.m b/ios/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.m index cd3394a41..5a77bb8f5 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.m +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/NSData+zlib/GULNSData+zlib.m @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "GULNSData+zlib.h" +#import "GoogleUtilities/NSData+zlib/GULNSData+zlib.h" #import diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULMutableDictionary.m b/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULMutableDictionary.m index d281eb445..43896601f 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULMutableDictionary.m +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULMutableDictionary.m @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "Private/GULMutableDictionary.h" +#import "GoogleUtilities/Network/Private/GULMutableDictionary.h" @implementation GULMutableDictionary { /// The mutable dictionary. @@ -45,14 +45,14 @@ - (id)objectForKey:(id)key { __block id object; dispatch_sync(_queue, ^{ - object = self->_objects[key]; + object = [self->_objects objectForKey:key]; }); return object; } - (void)setObject:(id)object forKey:(id)key { dispatch_async(_queue, ^{ - self->_objects[key] = object; + [self->_objects setObject:object forKey:key]; }); } @@ -77,13 +77,17 @@ } - (id)objectForKeyedSubscript:(id)key { - // The method this calls is already synchronized. - return [self objectForKey:key]; + __block id object; + dispatch_sync(_queue, ^{ + object = self->_objects[key]; + }); + return object; } - (void)setObject:(id)obj forKeyedSubscript:(id)key { - // The method this calls is already synchronized. - [self setObject:obj forKey:key]; + dispatch_async(_queue, ^{ + self->_objects[key] = obj; + }); } - (NSDictionary *)dictionary { diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetwork.m b/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetwork.m index c3227278b..9d78e0ef7 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetwork.m +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetwork.m @@ -12,14 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "Private/GULNetwork.h" -#import "Private/GULNetworkMessageCode.h" +#import "GoogleUtilities/Network/Private/GULNetwork.h" +#import "GoogleUtilities/Network/Private/GULNetworkMessageCode.h" #import #import #import -#import "Private/GULMutableDictionary.h" -#import "Private/GULNetworkConstants.h" +#import "GoogleUtilities/Network/Private/GULMutableDictionary.h" +#import "GoogleUtilities/Network/Private/GULNetworkConstants.h" /// Constant string for request header Content-Encoding. static NSString *const kGULNetworkContentCompressionKey = @"Content-Encoding"; diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkConstants.m b/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkConstants.m index 90bd03d57..dea8dbd57 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkConstants.m +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkConstants.m @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#import "Private/GULNetworkConstants.h" +#import "GoogleUtilities/Network/Private/GULNetworkConstants.h" #import diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkURLSession.m b/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkURLSession.m index 416a73601..df8bf4601 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkURLSession.m +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Network/GULNetworkURLSession.m @@ -14,16 +14,17 @@ #import -#import "Private/GULNetworkURLSession.h" +#import "GoogleUtilities/Network/Private/GULNetworkURLSession.h" #import -#import "Private/GULMutableDictionary.h" -#import "Private/GULNetworkConstants.h" -#import "Private/GULNetworkMessageCode.h" +#import "GoogleUtilities/Network/Private/GULMutableDictionary.h" +#import "GoogleUtilities/Network/Private/GULNetworkConstants.h" +#import "GoogleUtilities/Network/Private/GULNetworkMessageCode.h" @interface GULNetworkURLSession () + NSURLSessionDataDelegate, + NSURLSessionDownloadDelegate, + NSURLSessionTaskDelegate> @end @implementation GULNetworkURLSession { @@ -221,6 +222,24 @@ return _sessionID; } +#pragma mark - NSURLSessionDataDelegate + +/// Called by the NSURLSession when the data task has received some of the expected data. +/// Once the session is completed, URLSession:task:didCompleteWithError will be called and the +/// completion handler will be called with the downloaded data. +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask + didReceiveData:(NSData *)data { + @synchronized(self) { + NSMutableData *mutableData = [[NSMutableData alloc] init]; + if (_downloadedData) { + mutableData = _downloadedData.mutableCopy; + } + [mutableData appendData:data]; + _downloadedData = mutableData; + } +} + #pragma mark - NSURLSessionTaskDelegate /// Called by the NSURLSession once the download task is completed. The file is saved in the @@ -368,7 +387,10 @@ OSStatus trustError; @synchronized([GULNetworkURLSession class]) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" trustError = SecTrustEvaluate(serverTrust, &trustEval); +#pragma clang dianostic pop } if (trustError != errSecSuccess) { diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h b/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h index 8883c4d19..8aabc8a12 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h @@ -15,7 +15,7 @@ */ #import - +#if !TARGET_OS_WATCH typedef SCNetworkReachabilityRef (*GULReachabilityCreateWithNameFn)(CFAllocatorRef allocator, const char *host); @@ -38,7 +38,7 @@ struct GULReachabilityApi { GULReachabilityUnscheduleFromRunLoopFn unscheduleFromRunLoopFn; GULReachabilityReleaseFn releaseFn; }; - +#endif @interface GULReachabilityChecker (Internal) - (const struct GULReachabilityApi *)reachabilityApi; diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker.m b/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker.m index 1ddacdfc2..a334c1a0b 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker.m +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/GULReachabilityChecker.m @@ -14,15 +14,15 @@ #import -#import "GULReachabilityChecker+Internal.h" -#import "Private/GULReachabilityChecker.h" -#import "Private/GULReachabilityMessageCode.h" +#import "GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h" +#import "GoogleUtilities/Reachability/Private/GULReachabilityChecker.h" +#import "GoogleUtilities/Reachability/Private/GULReachabilityMessageCode.h" #import #import static GULLoggerService kGULLoggerReachability = @"[GULReachability]"; - +#if !TARGET_OS_WATCH static void ReachabilityCallback(SCNetworkReachabilityRef reachability, SCNetworkReachabilityFlags flags, void *info); @@ -38,26 +38,31 @@ static const struct GULReachabilityApi kGULDefaultReachabilityApi = { static NSString *const kGULReachabilityUnknownStatus = @"Unknown"; static NSString *const kGULReachabilityConnectedStatus = @"Connected"; static NSString *const kGULReachabilityDisconnectedStatus = @"Disconnected"; - +#endif @interface GULReachabilityChecker () @property(nonatomic, assign) const struct GULReachabilityApi *reachabilityApi; @property(nonatomic, assign) GULReachabilityStatus reachabilityStatus; @property(nonatomic, copy) NSString *host; +#if !TARGET_OS_WATCH @property(nonatomic, assign) SCNetworkReachabilityRef reachability; +#endif @end @implementation GULReachabilityChecker @synthesize reachabilityApi = reachabilityApi_; +#if !TARGET_OS_WATCH @synthesize reachability = reachability_; +#endif - (const struct GULReachabilityApi *)reachabilityApi { return reachabilityApi_; } - (void)setReachabilityApi:(const struct GULReachabilityApi *)reachabilityApi { +#if !TARGET_OS_WATCH if (reachability_) { GULLogError(kGULLoggerReachability, NO, [NSString stringWithFormat:@"I-REA%06ld", (long)kGULReachabilityMessageCode000], @@ -66,6 +71,7 @@ static NSString *const kGULReachabilityDisconnectedStatus = @"Disconnected"; return; } reachabilityApi_ = reachabilityApi; +#endif } @synthesize reachabilityStatus = reachabilityStatus_; @@ -73,7 +79,11 @@ static NSString *const kGULReachabilityDisconnectedStatus = @"Disconnected"; @synthesize reachabilityDelegate = reachabilityDelegate_; - (BOOL)isActive { +#if !TARGET_OS_WATCH return reachability_ != nil; +#else + return NO; +#endif } - (void)setReachabilityDelegate:(id)reachabilityDelegate { @@ -98,11 +108,13 @@ static NSString *const kGULReachabilityDisconnectedStatus = @"Disconnected"; return nil; } if (self) { +#if !TARGET_OS_WATCH [self setReachabilityDelegate:reachabilityDelegate]; reachabilityApi_ = &kGULDefaultReachabilityApi; reachabilityStatus_ = kGULReachabilityUnknown; host_ = [host copy]; reachability_ = nil; +#endif } return self; } @@ -113,6 +125,10 @@ static NSString *const kGULReachabilityDisconnectedStatus = @"Disconnected"; } - (BOOL)start { +#if TARGET_OS_WATCH + return NO; +#else + if (!reachability_) { reachability_ = reachabilityApi_->createWithNameFn(kCFAllocatorDefault, [host_ UTF8String]); if (!reachability_) { @@ -141,9 +157,11 @@ static NSString *const kGULReachabilityDisconnectedStatus = @"Disconnected"; [NSString stringWithFormat:@"I-REA%06ld", (long)kGULReachabilityMessageCode003], @"Monitoring the network status"); return YES; +#endif } - (void)stop { +#if !TARGET_OS_WATCH if (reachability_) { reachabilityStatus_ = kGULReachabilityUnknown; reachabilityApi_->unscheduleFromRunLoopFn(reachability_, CFRunLoopGetMain(), @@ -151,8 +169,10 @@ static NSString *const kGULReachabilityDisconnectedStatus = @"Disconnected"; reachabilityApi_->releaseFn(reachability_); reachability_ = nil; } +#endif } +#if !TARGET_OS_WATCH - (GULReachabilityStatus)statusForFlags:(SCNetworkReachabilityFlags)flags { GULReachabilityStatus status = kGULReachabilityNotReachable; // If the Reachable flag is not set, we definitely don't have connectivity. @@ -203,14 +223,17 @@ static NSString *const kGULReachabilityDisconnectedStatus = @"Disconnected"; } } +#endif @end +#if !TARGET_OS_WATCH static void ReachabilityCallback(SCNetworkReachabilityRef reachability, SCNetworkReachabilityFlags flags, void *info) { GULReachabilityChecker *checker = (__bridge GULReachabilityChecker *)info; [checker reachabilityFlagsChanged:flags]; } +#endif // This function used to be at the top of the file, but it was moved here // as a workaround for a suspected compiler bug. When compiled in Release mode diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/Private/GULReachabilityChecker.h b/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/Private/GULReachabilityChecker.h index b317a0be7..0c70c0553 100644 --- a/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/Private/GULReachabilityChecker.h +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/Reachability/Private/GULReachabilityChecker.h @@ -15,7 +15,9 @@ */ #import +#if !TARGET_OS_WATCH #import +#endif /// Reachability Status typedef enum { diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/GULSceneDelegateSwizzler.m b/ios/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/GULSceneDelegateSwizzler.m new file mode 100644 index 000000000..b80e2aff1 --- /dev/null +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/GULSceneDelegateSwizzler.m @@ -0,0 +1,438 @@ +// Copyright 2019 Google LLC +// +// 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 "TargetConditionals.h" + +#import +#import +#import +#import +#import +#import "GoogleUtilities/Common/GULLoggerCodes.h" +#import "GoogleUtilities/SceneDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h" + +#import + +#if UISCENE_SUPPORTED +API_AVAILABLE(ios(13.0), tvos(13.0)) +typedef void (*GULOpenURLContextsIMP)(id, SEL, UIScene *, NSSet *); + +API_AVAILABLE(ios(13.0), tvos(13.0)) +typedef void (^GULSceneDelegateInterceptorCallback)(id); + +// The strings below are the keys for associated objects. +static char const *const kGULRealIMPBySelectorKey = "GUL_realIMPBySelector"; +static char const *const kGULRealClassKey = "GUL_realClass"; +#endif // UISCENE_SUPPORTED + +static GULLoggerService kGULLoggerSwizzler = @"[GoogleUtilities/SceneDelegateSwizzler]"; + +// Since Firebase SDKs also use this for app delegate proxying, in order to not be a breaking change +// we disable App Delegate proxying when either of these two flags are set to NO. + +/** Plist key that allows Firebase developers to disable App and Scene Delegate Proxying. */ +static NSString *const kGULFirebaseSceneDelegateProxyEnabledPlistKey = + @"FirebaseAppDelegateProxyEnabled"; + +/** Plist key that allows developers not using Firebase to disable App and Scene Delegate Proxying. + */ +static NSString *const kGULGoogleUtilitiesSceneDelegateProxyEnabledPlistKey = + @"GoogleUtilitiesAppDelegateProxyEnabled"; + +/** The prefix of the Scene Delegate. */ +static NSString *const kGULSceneDelegatePrefix = @"GUL_"; + +/** + * This class is necessary to store the delegates in an NSArray without retaining them. + * [NSValue valueWithNonRetainedObject] also provides this functionality, but does not provide a + * zeroing pointer. This will cause EXC_BAD_ACCESS when trying to access the object after it is + * dealloced. Instead, this container stores a weak, zeroing reference to the object, which + * automatically is set to nil by the runtime when the object is dealloced. + */ +@interface GULSceneZeroingWeakContainer : NSObject + +/** Stores a weak object. */ +@property(nonatomic, weak) id object; + +@end + +@implementation GULSceneZeroingWeakContainer +@end + +@implementation GULSceneDelegateSwizzler + +#pragma mark - Public methods + ++ (BOOL)isSceneDelegateProxyEnabled { + return [GULAppDelegateSwizzler isAppDelegateProxyEnabled]; +} + ++ (void)proxyOriginalSceneDelegate { +#if UISCENE_SUPPORTED + if ([GULAppEnvironmentUtil isAppExtension]) { + return; + } + + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + if (@available(iOS 13.0, tvOS 13.0, *)) { + if (![GULSceneDelegateSwizzler isSceneDelegateProxyEnabled]) { + return; + } + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector(handleSceneWillConnectToNotification:) + name:UISceneWillConnectNotification + object:nil]; + } + }); +#endif // UISCENE_SUPPORTED +} + +#if UISCENE_SUPPORTED ++ (GULSceneDelegateInterceptorID)registerSceneDelegateInterceptor:(id)interceptor { + NSAssert(interceptor, @"SceneDelegateProxy cannot add nil interceptor"); + NSAssert([interceptor conformsToProtocol:@protocol(UISceneDelegate)], + @"SceneDelegateProxy interceptor does not conform to UIApplicationDelegate"); + + if (!interceptor) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling000], + @"SceneDelegateProxy cannot add nil interceptor."); + return nil; + } + if (![interceptor conformsToProtocol:@protocol(UISceneDelegate)]) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling001], + @"SceneDelegateProxy interceptor does not conform to UIApplicationDelegate"); + return nil; + } + + // The ID should be the same given the same interceptor object. + NSString *interceptorID = + [NSString stringWithFormat:@"%@%p", kGULSceneDelegatePrefix, interceptor]; + if (!interceptorID.length) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling002], + @"SceneDelegateProxy cannot create Interceptor ID."); + return nil; + } + GULSceneZeroingWeakContainer *weakObject = [[GULSceneZeroingWeakContainer alloc] init]; + weakObject.object = interceptor; + [GULSceneDelegateSwizzler interceptors][interceptorID] = weakObject; + return interceptorID; +} + ++ (void)unregisterSceneDelegateInterceptorWithID:(GULSceneDelegateInterceptorID)interceptorID { + NSAssert(interceptorID, @"SceneDelegateProxy cannot unregister nil interceptor ID."); + NSAssert(((NSString *)interceptorID).length != 0, + @"SceneDelegateProxy cannot unregister empty interceptor ID."); + + if (!interceptorID) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling003], + @"SceneDelegateProxy cannot unregister empty interceptor ID."); + return; + } + + GULSceneZeroingWeakContainer *weakContainer = + [GULSceneDelegateSwizzler interceptors][interceptorID]; + if (!weakContainer.object) { + GULLogError(kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling004], + @"SceneDelegateProxy cannot unregister interceptor that was not registered. " + "Interceptor ID %@", + interceptorID); + return; + } + + [[GULSceneDelegateSwizzler interceptors] removeObjectForKey:interceptorID]; +} + +#pragma mark - Helper methods + ++ (GULMutableDictionary *)interceptors { + static dispatch_once_t onceToken; + static GULMutableDictionary *sInterceptors; + dispatch_once(&onceToken, ^{ + sInterceptors = [[GULMutableDictionary alloc] init]; + }); + return sInterceptors; +} + ++ (void)clearInterceptors { + [[self interceptors] removeAllObjects]; +} + ++ (nullable NSValue *)originalImplementationForSelector:(SEL)selector object:(id)object { + NSDictionary *realImplementationBySelector = + objc_getAssociatedObject(object, &kGULRealIMPBySelectorKey); + return realImplementationBySelector[NSStringFromSelector(selector)]; +} + ++ (void)proxyDestinationSelector:(SEL)destinationSelector + implementationsFromSourceSelector:(SEL)sourceSelector + fromClass:(Class)sourceClass + toClass:(Class)destinationClass + realClass:(Class)realClass + storeDestinationImplementationTo: + (NSMutableDictionary *)destinationImplementationsBySelector { + [self addInstanceMethodWithDestinationSelector:destinationSelector + withImplementationFromSourceSelector:sourceSelector + fromClass:sourceClass + toClass:destinationClass]; + IMP sourceImplementation = + [GULSceneDelegateSwizzler implementationOfMethodSelector:destinationSelector + fromClass:realClass]; + NSValue *sourceImplementationPointer = [NSValue valueWithPointer:sourceImplementation]; + + NSString *destinationSelectorString = NSStringFromSelector(destinationSelector); + destinationImplementationsBySelector[destinationSelectorString] = sourceImplementationPointer; +} + +/** Copies a method identified by the methodSelector from one class to the other. After this method + * is called, performing [toClassInstance methodSelector] will be similar to calling + * [fromClassInstance methodSelector]. This method does nothing if toClass already has a method + * identified by methodSelector. + * + * @param methodSelector The SEL that identifies both the method on the fromClass as well as the + * one on the toClass. + * @param fromClass The class from which a method is sourced. + * @param toClass The class to which the method is added. If the class already has a method with + * the same selector, this has no effect. + */ ++ (void)addInstanceMethodWithSelector:(SEL)methodSelector + fromClass:(Class)fromClass + toClass:(Class)toClass { + [self addInstanceMethodWithDestinationSelector:methodSelector + withImplementationFromSourceSelector:methodSelector + fromClass:fromClass + toClass:toClass]; +} + +/** Copies a method identified by the sourceSelector from the fromClass as a method for the + * destinationSelector on the toClass. After this method is called, performing + * [toClassInstance destinationSelector] will be similar to calling + * [fromClassInstance sourceSelector]. This method does nothing if toClass already has a method + * identified by destinationSelector. + * + * @param destinationSelector The SEL that identifies the method on the toClass. + * @param sourceSelector The SEL that identifies the method on the fromClass. + * @param fromClass The class from which a method is sourced. + * @param toClass The class to which the method is added. If the class already has a method with + * the same selector, this has no effect. + */ ++ (void)addInstanceMethodWithDestinationSelector:(SEL)destinationSelector + withImplementationFromSourceSelector:(SEL)sourceSelector + fromClass:(Class)fromClass + toClass:(Class)toClass { + Method method = class_getInstanceMethod(fromClass, sourceSelector); + IMP methodIMP = method_getImplementation(method); + const char *types = method_getTypeEncoding(method); + if (!class_addMethod(toClass, destinationSelector, methodIMP, types)) { + GULLogWarning( + kGULLoggerSwizzler, NO, + [NSString + stringWithFormat:@"I-SWZ%06ld", (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling009], + @"Cannot copy method to destination selector %@ as it already exists", + NSStringFromSelector(destinationSelector)); + } +} + +/** Gets the IMP of the instance method on the class identified by the selector. + * + * @param selector The selector of which the IMP is to be fetched. + * @param aClass The class from which the IMP is to be fetched. + * @return The IMP of the instance method identified by selector and aClass. + */ ++ (IMP)implementationOfMethodSelector:(SEL)selector fromClass:(Class)aClass { + Method aMethod = class_getInstanceMethod(aClass, selector); + return method_getImplementation(aMethod); +} + +/** Enumerates through all the interceptors and if they respond to a given selector, executes a + * GULSceneDelegateInterceptorCallback with the interceptor. + * + * @param methodSelector The SEL to check if an interceptor responds to. + * @param callback the GULSceneDelegateInterceptorCallback. + */ ++ (void)notifyInterceptorsWithMethodSelector:(SEL)methodSelector + callback:(GULSceneDelegateInterceptorCallback)callback + API_AVAILABLE(ios(13.0)) { + if (!callback) { + return; + } + + NSDictionary *interceptors = [GULSceneDelegateSwizzler interceptors].dictionary; + [interceptors enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + GULSceneZeroingWeakContainer *interceptorContainer = obj; + id interceptor = interceptorContainer.object; + if (!interceptor) { + GULLogWarning( + kGULLoggerSwizzler, NO, + [NSString stringWithFormat:@"I-SWZ%06ld", + (long)kGULSwizzlerMessageCodeSceneDelegateSwizzling010], + @"SceneDelegateProxy cannot find interceptor with ID %@. Removing the interceptor.", key); + [[GULSceneDelegateSwizzler interceptors] removeObjectForKey:key]; + return; + } + if ([interceptor respondsToSelector:methodSelector]) { + callback(interceptor); + } + }]; +} + ++ (void)handleSceneWillConnectToNotification:(NSNotification *)notification { + if (@available(iOS 13.0, tvOS 13.0, *)) { + if ([notification.object isKindOfClass:[UIScene class]]) { + UIScene *scene = (UIScene *)notification.object; + [GULSceneDelegateSwizzler proxySceneDelegateIfNeeded:scene]; + } + } +} + +#pragma mark - [Donor Methods] UISceneDelegate URL handler + +- (void)scene:(UIScene *)scene + openURLContexts:(NSSet *)URLContexts API_AVAILABLE(ios(13.0), tvos(13.0)) { + if (@available(iOS 13.0, tvOS 13.0, *)) { + SEL methodSelector = @selector(scene:openURLContexts:); + // Call the real implementation if the real Scene Delegate has any. + NSValue *openURLContextsIMPPointer = + [GULSceneDelegateSwizzler originalImplementationForSelector:methodSelector object:self]; + GULOpenURLContextsIMP openURLContextsIMP = [openURLContextsIMPPointer pointerValue]; + + [GULSceneDelegateSwizzler + notifyInterceptorsWithMethodSelector:methodSelector + callback:^(id interceptor) { + if ([interceptor + conformsToProtocol:@protocol(UISceneDelegate)]) { + id sceneInterceptor = + (id)interceptor; + [sceneInterceptor scene:scene openURLContexts:URLContexts]; + } + }]; + + if (openURLContextsIMP) { + openURLContextsIMP(self, methodSelector, scene, URLContexts); + } + } +} + ++ (void)proxySceneDelegateIfNeeded:(UIScene *)scene { + Class realClass = [scene.delegate class]; + NSString *className = NSStringFromClass(realClass); + + // Skip proxying if failed to get the delegate class name for some reason (e.g. `delegate == nil`) + // or the class has a prefix of kGULAppDelegatePrefix, which means it has been proxied before. + if (className == nil || [className hasPrefix:kGULSceneDelegatePrefix]) { + return; + } + + NSString *classNameWithPrefix = [kGULSceneDelegatePrefix stringByAppendingString:className]; + NSString *newClassName = + [NSString stringWithFormat:@"%@-%@", classNameWithPrefix, [NSUUID UUID].UUIDString]; + + if (NSClassFromString(newClassName)) { + GULLogError( + kGULLoggerSwizzler, NO, + [NSString + stringWithFormat:@"I-SWZ%06ld", + (long) + kGULSwizzlerMessageCodeSceneDelegateSwizzlingInvalidSceneDelegate], + @"Cannot create a proxy for Scene Delegate. Subclass already exists. Original Class" + @": %@, subclass: %@", + className, newClassName); + return; + } + + // Register the new class as subclass of the real one. Do not allocate more than the real class + // size. + Class sceneDelegateSubClass = objc_allocateClassPair(realClass, newClassName.UTF8String, 0); + if (sceneDelegateSubClass == Nil) { + GULLogError( + kGULLoggerSwizzler, NO, + [NSString + stringWithFormat:@"I-SWZ%06ld", + (long) + kGULSwizzlerMessageCodeSceneDelegateSwizzlingInvalidSceneDelegate], + @"Cannot create a proxy for Scene Delegate. Subclass already exists. Original Class" + @": %@, subclass: Nil", + className); + return; + } + + NSMutableDictionary *realImplementationsBySelector = + [[NSMutableDictionary alloc] init]; + + // For scene:openURLContexts: + SEL openURLContextsSEL = @selector(scene:openURLContexts:); + [self proxyDestinationSelector:openURLContextsSEL + implementationsFromSourceSelector:openURLContextsSEL + fromClass:[GULSceneDelegateSwizzler class] + toClass:sceneDelegateSubClass + realClass:realClass + storeDestinationImplementationTo:realImplementationsBySelector]; + + // Store original implementations to a fake property of the original delegate. + objc_setAssociatedObject(scene.delegate, &kGULRealIMPBySelectorKey, + [realImplementationsBySelector copy], OBJC_ASSOCIATION_RETAIN_NONATOMIC); + objc_setAssociatedObject(scene.delegate, &kGULRealClassKey, realClass, + OBJC_ASSOCIATION_RETAIN_NONATOMIC); + + // The subclass size has to be exactly the same size with the original class size. The subclass + // cannot have more ivars/properties than its superclass since it will cause an offset in memory + // that can lead to overwriting the isa of an object in the next frame. + if (class_getInstanceSize(realClass) != class_getInstanceSize(sceneDelegateSubClass)) { + GULLogError( + kGULLoggerSwizzler, NO, + [NSString + stringWithFormat:@"I-SWZ%06ld", + (long) + kGULSwizzlerMessageCodeSceneDelegateSwizzlingInvalidSceneDelegate], + @"Cannot create subclass of Scene Delegate, because the created subclass is not the " + @"same size. %@", + className); + NSAssert(NO, @"Classes must be the same size to swizzle isa"); + return; + } + + // Make the newly created class to be the subclass of the real Scene Delegate class. + objc_registerClassPair(sceneDelegateSubClass); + if (object_setClass(scene.delegate, sceneDelegateSubClass)) { + GULLogDebug( + kGULLoggerSwizzler, NO, + [NSString + stringWithFormat:@"I-SWZ%06ld", + (long) + kGULSwizzlerMessageCodeSceneDelegateSwizzlingInvalidSceneDelegate], + @"Successfully created Scene Delegate Proxy automatically. To disable the " + @"proxy, set the flag %@ to NO (Boolean) in the Info.plist", + [GULSceneDelegateSwizzler correctSceneDelegateProxyKey]); + } +} + ++ (NSString *)correctSceneDelegateProxyKey { + return NSClassFromString(@"FIRCore") ? kGULFirebaseSceneDelegateProxyEnabledPlistKey + : kGULGoogleUtilitiesSceneDelegateProxyEnabledPlistKey; +} + +#endif // UISCENE_SUPPORTED + +@end diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h b/ios/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h new file mode 100644 index 000000000..a2439eb30 --- /dev/null +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h @@ -0,0 +1,48 @@ +/* + * Copyright 2019 Google LLC + * + * 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 +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GULSceneDelegateSwizzler () + +#if UISCENE_SUPPORTED + +/** Returns a dictionary containing interceptor IDs mapped to a GULZeroingWeakContainer. + * + * @return A dictionary of the form {NSString : GULZeroingWeakContainer}, where the NSString is + * the interceptorID. + */ ++ (GULMutableDictionary *)interceptors; + +/** Deletes all the registered interceptors. */ ++ (void)clearInterceptors; + +/** ISA Swizzles the given appDelegate as the original app delegate would be. + * + * @param scene The scene whose delegate needs to be isa swizzled. This should conform to the + * scene delegate protocol. + */ ++ (void)proxySceneDelegateIfNeeded:(UIScene *)scene API_AVAILABLE(ios(13.0), tvos(13.0)); + +#endif // UISCENE_SUPPORTED + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Private/GULSceneDelegateSwizzler.h b/ios/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Private/GULSceneDelegateSwizzler.h new file mode 100644 index 000000000..420b3e76c --- /dev/null +++ b/ios/Pods/GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Private/GULSceneDelegateSwizzler.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 Google LLC + * + * 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. + */ + +#if !TARGET_OS_OSX +#import +#endif // !TARGET_OS_OSX + +#if ((TARGET_OS_IOS || TARGET_OS_TV) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= 130000)) +#define UISCENE_SUPPORTED 1 +#endif + +NS_ASSUME_NONNULL_BEGIN + +typedef NSString *const GULSceneDelegateInterceptorID; + +/** This class contains methods that isa swizzle the scene delegate. */ +@interface GULSceneDelegateSwizzler : NSProxy + +#if UISCENE_SUPPORTED + +/** Registers a scene delegate interceptor whose methods will be invoked as they're invoked on the + * original scene delegate. + * + * @param interceptor An instance of a class that conforms to the application delegate protocol. + * The interceptor is NOT retained. + * @return A unique GULSceneDelegateInterceptorID if interceptor was successfully registered; nil + * if it fails. + */ ++ (nullable GULSceneDelegateInterceptorID)registerSceneDelegateInterceptor: + (id)interceptor API_AVAILABLE(ios(13.0), tvos(13.0)); + +/** Unregisters an interceptor with the given ID if it exists. + * + * @param interceptorID The object that was generated when the interceptor was registered. + */ ++ (void)unregisterSceneDelegateInterceptorWithID:(GULSceneDelegateInterceptorID)interceptorID + API_AVAILABLE(ios(13.0), tvos(13.0)); + +/** Do not initialize this class. */ +- (instancetype)init NS_UNAVAILABLE; + +#endif // UISCENE_SUPPORTED + +/** This method ensures that the original scene delegate has been proxied. Call this before + * registering your interceptor. This method is safe to call multiple times (but it only proxies + * the scene delegate once). + * + * The method has no effect for extensions. + */ ++ (void)proxyOriginalSceneDelegate; + +/** Indicates whether scene delegate proxy is explicitly disabled or enabled. Enabled by default. + * + * @return YES if SceneDelegateProxy is Enabled, NO otherwise. + */ ++ (BOOL)isSceneDelegateProxyEnabled; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/GoogleUtilities/README.md b/ios/Pods/GoogleUtilities/README.md index f55d64218..5097a89ae 100644 --- a/ios/Pods/GoogleUtilities/README.md +++ b/ios/Pods/GoogleUtilities/README.md @@ -76,14 +76,31 @@ the following software: * Xcode 10.1 (or later) * CocoaPods 1.7.2 (or later) + * [CocoaPods generate](https://github.com/square/cocoapods-generate) For the pod that you want to develop: -`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open` +`pod gen Firebase{name here}.podspec --local-sources=./ --auto-open --platforms=ios` + +Note: If the CocoaPods cache is out of date, you may need to run +`pod repo update` before the `pod gen` command. + +Note: Set the `--platforms` option to `macos` or `tvos` to develop/test for +those platforms. Since 10.2, Xcode does not properly handle multi-platform +CocoaPods workspaces. Firestore has a self contained Xcode project. See [Firestore/README.md](Firestore/README.md). +### Development for Catalyst +* `pod gen {name here}.podspec --local-sources=./ --auto-open --platforms=ios` +* Check the Mac box in the App-iOS Build Settings +* Sign the App in the Settings Signing & Capabilities tab +* Click Pods in the Project Manager +* Add Signing to the iOS host app and unit test targets +* Select the Unit-unit scheme +* Run it to build and test + ### Adding a New Firebase Pod See [AddNewPod.md](AddNewPod.md). @@ -182,35 +199,42 @@ We've seen an amazing amount of interest and contributions to improve the Fireba very grateful! We'd like to empower as many developers as we can to be able to use Firebase and participate in the Firebase community. -### macOS and tvOS -Thanks to contributions from the community, FirebaseABTesting, FirebaseAuth, FirebaseCore, -FirebaseDatabase, FirebaseMessaging, FirebaseFirestore, -FirebaseFunctions, FirebaseRemoteConfig, and FirebaseStorage now compile, run unit tests, and work on -macOS and tvOS. +### tvOS, macOS, and Catalyst +Thanks to contributions from the community, many of Firebase SDKs now compile, run unit tests, and work on +tvOS, macOS, and Catalyst. For tvOS, checkout the [Sample](Example/tvOSSample). -Keep in mind that macOS and tvOS are not officially supported by Firebase, and this repository is -actively developed primarily for iOS. While we can catch basic unit test issues with Travis, there -may be some changes where the SDK no longer works as expected on macOS or tvOS. If you encounter -this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). +Keep in mind that macOS, Catalyst and tvOS are not officially supported by Firebase, and this +repository is actively developed primarily for iOS. While we can catch basic unit test issues with +Travis, there may be some changes where the SDK no longer works as expected on macOS or tvOS. If you +encounter this, please [file an issue](https://github.com/firebase/firebase-ios-sdk/issues). -Note that the Firebase pod is not available for macOS and tvOS. +During app setup in the console, you may get to a step that mentions something like "Checking if the app +has communicated with our servers". This relies on Analytics and will not work on macOS/tvOS/Catalyst. +**It's safe to ignore the message and continue**, the rest of the SDKs will work as expected. To install, add a subset of the following to the Podfile: ``` -pod 'FirebaseABTesting' -pod 'FirebaseAuth' -pod 'FirebaseCore' -pod 'FirebaseDatabase' -pod 'FirebaseFirestore' -pod 'FirebaseFunctions' -pod 'FirebaseMessaging' -pod 'FirebaseRemoteConfig' -pod 'FirebaseStorage' +pod 'Firebase/ABTesting' +pod 'Firebase/Auth' +pod 'Firebase/Crashlytics' +pod 'Firebase/Database' +pod 'Firebase/Firestore' +pod 'Firebase/Functions' +pod 'Firebase/Messaging' +pod 'Firebase/RemoteConfig' +pod 'Firebase/Storage' ``` +#### Additional Catalyst Notes + +* FirebaseAuth and FirebaseMessaging require adding `Keychain Sharing Capability` +to Build Settings. +* FirebaseFirestore requires signing the +[gRPC Resource target](https://github.com/firebase/firebase-ios-sdk/issues/3500#issuecomment-518741681). + ## Roadmap See [Roadmap](ROADMAP.md) for more about the Firebase iOS SDK Open Source diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRAnalyticsConfiguration.h b/ios/Pods/Headers/Private/FirebaseCore/FIRAnalyticsConfiguration.h index 97836071d..9a3893f7f 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRAnalyticsConfiguration.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRAnalyticsConfiguration.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRAnalyticsConfiguration.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRApp.h b/ios/Pods/Headers/Private/FirebaseCore/FIRApp.h index 40a3ac4d2..6ddd61bfb 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRApp.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRApp.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Public/FIRApp.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Public/FIRApp.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRAppAssociationRegistration.h b/ios/Pods/Headers/Private/FirebaseCore/FIRAppAssociationRegistration.h index 43d1fd093..75bf981a3 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRAppAssociationRegistration.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRAppAssociationRegistration.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRAppAssociationRegistration.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRAppAssociationRegistration.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRAppInternal.h b/ios/Pods/Headers/Private/FirebaseCore/FIRAppInternal.h index a565e8574..a5e2e06d3 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRAppInternal.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRAppInternal.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRAppInternal.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRAppInternal.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRBundleUtil.h b/ios/Pods/Headers/Private/FirebaseCore/FIRBundleUtil.h index c108c1fde..1e8a0ea95 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRBundleUtil.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRBundleUtil.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRBundleUtil.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/FIRBundleUtil.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRComponent.h b/ios/Pods/Headers/Private/FirebaseCore/FIRComponent.h index b8ed6897a..c3df77de9 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRComponent.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRComponent.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRComponent.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRComponent.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRComponentContainer.h b/ios/Pods/Headers/Private/FirebaseCore/FIRComponentContainer.h index c55a7087c..c979a12fe 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRComponentContainer.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRComponentContainer.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRComponentContainer.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRComponentContainerInternal.h b/ios/Pods/Headers/Private/FirebaseCore/FIRComponentContainerInternal.h index d417d94fc..5df38379d 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRComponentContainerInternal.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRComponentContainerInternal.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRComponentContainerInternal.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRComponentContainerInternal.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRComponentType.h b/ios/Pods/Headers/Private/FirebaseCore/FIRComponentType.h index 89cd56c2b..2ba1bb488 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRComponentType.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRComponentType.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRComponentType.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRComponentType.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRConfiguration.h b/ios/Pods/Headers/Private/FirebaseCore/FIRConfiguration.h index a88a9b24b..eb3f63851 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRConfiguration.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRConfiguration.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Public/FIRConfiguration.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Public/FIRConfiguration.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRConfigurationInternal.h b/ios/Pods/Headers/Private/FirebaseCore/FIRConfigurationInternal.h index 7f6000d33..7fc6c1df5 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRConfigurationInternal.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRConfigurationInternal.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRConfigurationInternal.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRConfigurationInternal.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRCoreDiagnosticsConnector.h b/ios/Pods/Headers/Private/FirebaseCore/FIRCoreDiagnosticsConnector.h index efa4f7039..bbc120bc0 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRCoreDiagnosticsConnector.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRCoreDiagnosticsConnector.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRCoreDiagnosticsConnector.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRDependency.h b/ios/Pods/Headers/Private/FirebaseCore/FIRDependency.h index 28203342e..b8bdd0341 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRDependency.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRDependency.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRDependency.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRDependency.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRDiagnosticsData.h b/ios/Pods/Headers/Private/FirebaseCore/FIRDiagnosticsData.h index 6f4122547..bd4b38b40 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRDiagnosticsData.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRDiagnosticsData.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRDiagnosticsData.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRDiagnosticsData.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRErrorCode.h b/ios/Pods/Headers/Private/FirebaseCore/FIRErrorCode.h index 1d4373da3..18a3f4e86 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRErrorCode.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRErrorCode.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRErrorCode.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRErrorCode.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRErrors.h b/ios/Pods/Headers/Private/FirebaseCore/FIRErrors.h index 76d02791a..c8daeb7b7 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRErrors.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRErrors.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRErrors.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRErrors.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRHeartbeatInfo.h b/ios/Pods/Headers/Private/FirebaseCore/FIRHeartbeatInfo.h new file mode 120000 index 000000000..7e3285e5e --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRHeartbeatInfo.h @@ -0,0 +1 @@ +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRHeartbeatInfo.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRLibrary.h b/ios/Pods/Headers/Private/FirebaseCore/FIRLibrary.h index f0e5a7b27..a1a6adbc5 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRLibrary.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRLibrary.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRLibrary.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRLibrary.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRLogger.h b/ios/Pods/Headers/Private/FirebaseCore/FIRLogger.h index 1b44ae904..7b5e53548 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRLogger.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRLogger.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRLogger.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIRLogger.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRLoggerLevel.h b/ios/Pods/Headers/Private/FirebaseCore/FIRLoggerLevel.h index a8f2b8567..99279de6d 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRLoggerLevel.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRLoggerLevel.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Public/FIRLoggerLevel.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Public/FIRLoggerLevel.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIROptions.h b/ios/Pods/Headers/Private/FirebaseCore/FIROptions.h index caa84d6be..a0dca9211 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIROptions.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIROptions.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Public/FIROptions.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Public/FIROptions.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIROptionsInternal.h b/ios/Pods/Headers/Private/FirebaseCore/FIROptionsInternal.h index cd57437d6..6ed7957a9 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIROptionsInternal.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIROptionsInternal.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIROptionsInternal.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Private/FIROptionsInternal.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FIRVersion.h b/ios/Pods/Headers/Private/FirebaseCore/FIRVersion.h index 10151ab0b..5e00ea07f 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FIRVersion.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FIRVersion.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Private/FIRVersion.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/FIRVersion.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCore/FirebaseCore.h b/ios/Pods/Headers/Private/FirebaseCore/FirebaseCore.h index 923cc40fc..15ac3c88c 120000 --- a/ios/Pods/Headers/Private/FirebaseCore/FirebaseCore.h +++ b/ios/Pods/Headers/Private/FirebaseCore/FirebaseCore.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Public/FirebaseCore.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseCoreDiagnostics/FIRCoreDiagnosticsDateFileStorage.h b/ios/Pods/Headers/Private/FirebaseCoreDiagnostics/FIRCoreDiagnosticsDateFileStorage.h deleted file mode 120000 index fe49a2977..000000000 --- a/ios/Pods/Headers/Private/FirebaseCoreDiagnostics/FIRCoreDiagnosticsDateFileStorage.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnosticsDateFileStorage.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallations.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallations.h new file mode 120000 index 000000000..58d96960f --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallations.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallations.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsAPIService.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsAPIService.h new file mode 120000 index 000000000..d83e16ea2 --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsAPIService.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsAuthTokenResult.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsAuthTokenResult.h new file mode 120000 index 000000000..a779a3725 --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsAuthTokenResult.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsAuthTokenResult.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsAuthTokenResultInternal.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsAuthTokenResultInternal.h new file mode 120000 index 000000000..7a5a5281e --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsAuthTokenResultInternal.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResultInternal.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsErrorUtil.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsErrorUtil.h new file mode 120000 index 000000000..bd0b5ce82 --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsErrorUtil.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsErrors.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsErrors.h new file mode 120000 index 000000000..3e141efcb --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsErrors.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsErrors.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsHTTPError.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsHTTPError.h new file mode 120000 index 000000000..61ce3ae54 --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsHTTPError.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsIDController.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsIDController.h new file mode 120000 index 000000000..d40c3c752 --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsIDController.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsIIDStore.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsIIDStore.h new file mode 120000 index 000000000..f43217560 --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsIIDStore.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsIIDTokenStore.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsIIDTokenStore.h new file mode 120000 index 000000000..d60215ba0 --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsIIDTokenStore.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsItem+RegisterInstallationAPI.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsItem+RegisterInstallationAPI.h new file mode 120000 index 000000000..666a48f34 --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsItem+RegisterInstallationAPI.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsItem.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsItem.h new file mode 120000 index 000000000..b4f0591a6 --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsItem.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsItem.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsKeychainUtils.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsKeychainUtils.h new file mode 120000 index 000000000..9f5946a10 --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsKeychainUtils.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsLogger.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsLogger.h new file mode 120000 index 000000000..d98c99c11 --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsLogger.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/FIRInstallationsLogger.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsSingleOperationPromiseCache.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsSingleOperationPromiseCache.h new file mode 120000 index 000000000..425563c1b --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsSingleOperationPromiseCache.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsStatus.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsStatus.h new file mode 120000 index 000000000..17da34e8b --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsStatus.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsStatus.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsStore.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsStore.h new file mode 120000 index 000000000..f2ac1e19e --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsStore.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsStoredAuthToken.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsStoredAuthToken.h new file mode 120000 index 000000000..ffc37bfbd --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsStoredAuthToken.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsStoredItem.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsStoredItem.h new file mode 120000 index 000000000..afc51d48f --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsStoredItem.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsVersion.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsVersion.h new file mode 120000 index 000000000..845fb573d --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRInstallationsVersion.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsVersion.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FIRSecureStorage.h b/ios/Pods/Headers/Private/FirebaseInstallations/FIRSecureStorage.h new file mode 120000 index 000000000..84762a97a --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FIRSecureStorage.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstallations/FirebaseInstallations.h b/ios/Pods/Headers/Private/FirebaseInstallations/FirebaseInstallations.h new file mode 120000 index 000000000..c5bd3b779 --- /dev/null +++ b/ios/Pods/Headers/Private/FirebaseInstallations/FirebaseInstallations.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstanceID/FIRInstanceIDKeyPair.h b/ios/Pods/Headers/Private/FirebaseInstanceID/FIRInstanceIDKeyPair.h deleted file mode 120000 index b62ca1151..000000000 --- a/ios/Pods/Headers/Private/FirebaseInstanceID/FIRInstanceIDKeyPair.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPair.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstanceID/FIRInstanceIDKeyPairStore.h b/ios/Pods/Headers/Private/FirebaseInstanceID/FIRInstanceIDKeyPairStore.h deleted file mode 120000 index 78c194e82..000000000 --- a/ios/Pods/Headers/Private/FirebaseInstanceID/FIRInstanceIDKeyPairStore.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairStore.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/FirebaseInstanceID/FIRInstanceIDKeyPairUtilities.h b/ios/Pods/Headers/Private/FirebaseInstanceID/FIRInstanceIDKeyPairUtilities.h deleted file mode 120000 index a061e3e88..000000000 --- a/ios/Pods/Headers/Private/FirebaseInstanceID/FIRInstanceIDKeyPairUtilities.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseInstanceID/Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTAssert.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTAssert.h deleted file mode 120000 index d231c0fe8..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTAssert.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTAssert.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORAssert.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORAssert.h new file mode 120000 index 000000000..e01f1b5ba --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORAssert.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORAssert.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORClock.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORClock.h new file mode 120000 index 000000000..d4f004f1a --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORClock.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORClock.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORConsoleLogger.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORConsoleLogger.h new file mode 120000 index 000000000..a4fa59af4 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORConsoleLogger.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORConsoleLogger.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORDataFuture.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORDataFuture.h new file mode 120000 index 000000000..5f87ffd11 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORDataFuture.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORDataFuture.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCOREvent.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCOREvent.h new file mode 120000 index 000000000..c5584e0d7 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCOREvent.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREvent.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCOREventDataObject.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCOREventDataObject.h new file mode 120000 index 000000000..c9f8809b0 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCOREventDataObject.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventDataObject.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCOREventTransformer.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCOREventTransformer.h new file mode 120000 index 000000000..fe31351eb --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCOREventTransformer.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventTransformer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCOREvent_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCOREvent_Private.h new file mode 120000 index 000000000..74d9bb837 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCOREvent_Private.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORLifecycle.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORLifecycle.h new file mode 120000 index 000000000..f6c092b59 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORLifecycle.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORLifecycle.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORPlatform.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORPlatform.h new file mode 120000 index 000000000..e53eae61e --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORPlatform.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPlatform.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORPrioritizer.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORPrioritizer.h new file mode 120000 index 000000000..859d73fbb --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORPrioritizer.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPrioritizer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORReachability.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORReachability.h new file mode 120000 index 000000000..e21a76b6c --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORReachability.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORReachability_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORReachability_Private.h new file mode 120000 index 000000000..a0e6d987f --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORReachability_Private.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORRegistrar.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORRegistrar.h new file mode 120000 index 000000000..26fa38648 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORRegistrar.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORRegistrar.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORRegistrar_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORRegistrar_Private.h new file mode 120000 index 000000000..e82648d3a --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORRegistrar_Private.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORStorage.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORStorage.h new file mode 120000 index 000000000..0aef1dab8 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORStorage.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORStorage_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORStorage_Private.h new file mode 120000 index 000000000..d0d7a06e7 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORStorage_Private.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORStoredEvent.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORStoredEvent.h new file mode 120000 index 000000000..25f7c49ec --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORStoredEvent.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORStoredEvent.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTargets.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTargets.h new file mode 120000 index 000000000..4a0cd6760 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTargets.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTargets.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTransformer.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTransformer.h new file mode 120000 index 000000000..debbd41d6 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTransformer.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTransformer_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTransformer_Private.h new file mode 120000 index 000000000..09716fa30 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTransformer_Private.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTransport.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTransport.h new file mode 120000 index 000000000..46d4f4c82 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTransport.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTransport.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTransport_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTransport_Private.h new file mode 120000 index 000000000..7f7e10545 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORTransport_Private.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransport_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORUploadCoordinator.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORUploadCoordinator.h new file mode 120000 index 000000000..b6cc51dbc --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORUploadCoordinator.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORUploadPackage.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORUploadPackage.h new file mode 120000 index 000000000..0d592326f --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORUploadPackage.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploadPackage.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORUploadPackage_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORUploadPackage_Private.h new file mode 120000 index 000000000..30c30f597 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORUploadPackage_Private.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadPackage_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORUploader.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORUploader.h new file mode 120000 index 000000000..c8efaa219 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GDTCORUploader.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploader.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTClock.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTClock.h deleted file mode 120000 index c1960b7ac..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTClock.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTClock.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTConsoleLogger.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTConsoleLogger.h deleted file mode 120000 index 0d5fa6525..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTConsoleLogger.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTConsoleLogger.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTDataFuture.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTDataFuture.h deleted file mode 120000 index 5d1eca0e9..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTDataFuture.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTDataFuture.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTEvent.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTEvent.h deleted file mode 120000 index adf123acf..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTEvent.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEvent.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTEventDataObject.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTEventDataObject.h deleted file mode 120000 index 698817f3f..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTEventDataObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEventDataObject.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTEventTransformer.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTEventTransformer.h deleted file mode 120000 index dfadf97e2..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTEventTransformer.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEventTransformer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTEvent_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTEvent_Private.h deleted file mode 120000 index 950a1fb16..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTEvent_Private.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTEvent_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTLifecycle.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTLifecycle.h deleted file mode 120000 index 7f41110ca..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTLifecycle.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTLifecycle.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTPlatform.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTPlatform.h deleted file mode 120000 index 53238f5f1..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTPlatform.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTPlatform.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTPrioritizer.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTPrioritizer.h deleted file mode 120000 index ab4e5a056..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTPrioritizer.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTPrioritizer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTReachability.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTReachability.h deleted file mode 120000 index d4067130c..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTReachability.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTReachability.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTReachability_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTReachability_Private.h deleted file mode 120000 index 1ed3207c3..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTReachability_Private.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTReachability_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTRegistrar.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTRegistrar.h deleted file mode 120000 index ebcd10b26..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTRegistrar.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTRegistrar.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTRegistrar_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTRegistrar_Private.h deleted file mode 120000 index dcdc25669..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTRegistrar_Private.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTRegistrar_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTStorage.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTStorage.h deleted file mode 120000 index 0e05c2eef..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTStorage.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTStorage.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTStorage_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTStorage_Private.h deleted file mode 120000 index b9523bad3..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTStorage_Private.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTStorage_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTStoredEvent.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTStoredEvent.h deleted file mode 120000 index 508758b09..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTStoredEvent.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTStoredEvent.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTTargets.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTTargets.h deleted file mode 120000 index 5dbbc9e8c..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTTargets.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTTargets.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTTransformer.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTTransformer.h deleted file mode 120000 index c16676359..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTTransformer.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTTransformer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTTransformer_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTTransformer_Private.h deleted file mode 120000 index c7bf46ab9..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTTransformer_Private.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTTransformer_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTTransport.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTTransport.h deleted file mode 120000 index bf95a42d5..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTTransport.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTTransport.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTTransport_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTTransport_Private.h deleted file mode 120000 index 5456ef571..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTTransport_Private.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTTransport_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTUploadCoordinator.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTUploadCoordinator.h deleted file mode 120000 index 177b879c3..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTUploadCoordinator.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTUploadCoordinator.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTUploadPackage.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTUploadPackage.h deleted file mode 120000 index c15de965d..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTUploadPackage.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTUploadPackage.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTUploadPackage_Private.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTUploadPackage_Private.h deleted file mode 120000 index 49b7f77da..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTUploadPackage_Private.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Private/GDTUploadPackage_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GDTUploader.h b/ios/Pods/Headers/Private/GoogleDataTransport/GDTUploader.h deleted file mode 120000 index 4552ebe73..000000000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GDTUploader.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTUploader.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransport/GoogleDataTransport.h b/ios/Pods/Headers/Private/GoogleDataTransport/GoogleDataTransport.h index 47de910b4..4cb738201 120000 --- a/ios/Pods/Headers/Private/GoogleDataTransport/GoogleDataTransport.h +++ b/ios/Pods/Headers/Private/GoogleDataTransport/GoogleDataTransport.h @@ -1 +1 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GoogleDataTransport.h \ No newline at end of file +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransportCCTSupport/GDTCCTCompressionHelper.h b/ios/Pods/Headers/Private/GoogleDataTransportCCTSupport/GDTCCTCompressionHelper.h new file mode 120000 index 000000000..0008b4af9 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransportCCTSupport/GDTCCTCompressionHelper.h @@ -0,0 +1 @@ +../../../GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTCompressionHelper.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransportCCTSupport/GDTFLLPrioritizer.h b/ios/Pods/Headers/Private/GoogleDataTransportCCTSupport/GDTFLLPrioritizer.h new file mode 120000 index 000000000..f12c39f00 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransportCCTSupport/GDTFLLPrioritizer.h @@ -0,0 +1 @@ +../../../GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTFLLPrioritizer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleDataTransportCCTSupport/GDTFLLUploader.h b/ios/Pods/Headers/Private/GoogleDataTransportCCTSupport/GDTFLLUploader.h new file mode 120000 index 000000000..6942a20ab --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleDataTransportCCTSupport/GDTFLLUploader.h @@ -0,0 +1 @@ +../../../GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTFLLUploader.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleUtilities/GULHeartbeatDateStorage.h b/ios/Pods/Headers/Private/GoogleUtilities/GULHeartbeatDateStorage.h new file mode 120000 index 000000000..4bd32cf7e --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleUtilities/GULHeartbeatDateStorage.h @@ -0,0 +1 @@ +../../../GoogleUtilities/GoogleUtilities/Environment/Public/GULHeartbeatDateStorage.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleUtilities/GULSceneDelegateSwizzler.h b/ios/Pods/Headers/Private/GoogleUtilities/GULSceneDelegateSwizzler.h new file mode 120000 index 000000000..3c59707f4 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleUtilities/GULSceneDelegateSwizzler.h @@ -0,0 +1 @@ +../../../GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Private/GULSceneDelegateSwizzler.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleUtilities/GULSceneDelegateSwizzler_Private.h b/ios/Pods/Headers/Private/GoogleUtilities/GULSceneDelegateSwizzler_Private.h new file mode 120000 index 000000000..f078ca945 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleUtilities/GULSceneDelegateSwizzler_Private.h @@ -0,0 +1 @@ +../../../GoogleUtilities/GoogleUtilities/SceneDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/GoogleUtilities/GULSecureCoding.h b/ios/Pods/Headers/Private/GoogleUtilities/GULSecureCoding.h new file mode 120000 index 000000000..9cc98ca53 --- /dev/null +++ b/ios/Pods/Headers/Private/GoogleUtilities/GULSecureCoding.h @@ -0,0 +1 @@ +../../../GoogleUtilities/GoogleUtilities/Environment/Public/GULSecureCoding.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+All.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+All.h new file mode 120000 index 000000000..ec9536fd8 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+All.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+All.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Always.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Always.h new file mode 120000 index 000000000..aa45e83ab --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Always.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Always.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Any.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Any.h new file mode 120000 index 000000000..113a49e35 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Any.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Any.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Async.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Async.h new file mode 120000 index 000000000..957407484 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Async.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Async.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Await.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Await.h new file mode 120000 index 000000000..be0456634 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Await.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Await.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Catch.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Catch.h new file mode 120000 index 000000000..65e801237 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Catch.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Catch.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Delay.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Delay.h new file mode 120000 index 000000000..b0bcf3eb5 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Delay.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Delay.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Do.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Do.h new file mode 120000 index 000000000..2317036e3 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Do.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Do.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Race.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Race.h new file mode 120000 index 000000000..cfc33d48f --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Race.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Race.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Recover.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Recover.h new file mode 120000 index 000000000..0bb21e819 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Recover.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Recover.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Reduce.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Reduce.h new file mode 120000 index 000000000..06b9d090a --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Reduce.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Reduce.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Retry.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Retry.h new file mode 120000 index 000000000..9e8ff108e --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Retry.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Retry.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Testing.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Testing.h new file mode 120000 index 000000000..f4232a658 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Testing.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Then.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Then.h new file mode 120000 index 000000000..f060e8eb9 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Then.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Then.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Timeout.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Timeout.h new file mode 120000 index 000000000..17ba23970 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Timeout.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Timeout.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Validate.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Validate.h new file mode 120000 index 000000000..98d46d5ae --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Validate.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Validate.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Wrap.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Wrap.h new file mode 120000 index 000000000..b0ea9cd0b --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise+Wrap.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Wrap.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromise.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise.h new file mode 120000 index 000000000..c4941f5bb --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromise.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromiseError.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromiseError.h new file mode 120000 index 000000000..984d9ac70 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromiseError.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromiseError.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromisePrivate.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromisePrivate.h new file mode 120000 index 000000000..a5fbce03d --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromisePrivate.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromisePrivate.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/PromisesObjC/FBLPromises.h b/ios/Pods/Headers/Private/PromisesObjC/FBLPromises.h new file mode 120000 index 000000000..b25f37e80 --- /dev/null +++ b/ios/Pods/Headers/Private/PromisesObjC/FBLPromises.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromises.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDAnimatedImagePlayer.h b/ios/Pods/Headers/Private/SDWebImage/SDAnimatedImagePlayer.h new file mode 120000 index 000000000..786cc5e6a --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/SDAnimatedImagePlayer.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDAssociatedObject.h b/ios/Pods/Headers/Private/SDWebImage/SDAssociatedObject.h new file mode 120000 index 000000000..f104a13b9 --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/SDAssociatedObject.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Private/SDAssociatedObject.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDDeviceHelper.h b/ios/Pods/Headers/Private/SDWebImage/SDDeviceHelper.h new file mode 120000 index 000000000..44b99b826 --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/SDDeviceHelper.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Private/SDDeviceHelper.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDDisplayLink.h b/ios/Pods/Headers/Private/SDWebImage/SDDisplayLink.h new file mode 120000 index 000000000..ba2e28c19 --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/SDDisplayLink.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Private/SDDisplayLink.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDFileAttributeHelper.h b/ios/Pods/Headers/Private/SDWebImage/SDFileAttributeHelper.h new file mode 120000 index 000000000..deb8153d4 --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/SDFileAttributeHelper.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Private/SDFileAttributeHelper.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDGraphicsImageRenderer.h b/ios/Pods/Headers/Private/SDWebImage/SDGraphicsImageRenderer.h new file mode 120000 index 000000000..d390c1f7e --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/SDGraphicsImageRenderer.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDImageAPNGCoderInternal.h b/ios/Pods/Headers/Private/SDWebImage/SDImageAPNGCoderInternal.h deleted file mode 120000 index 358810e67..000000000 --- a/ios/Pods/Headers/Private/SDWebImage/SDImageAPNGCoderInternal.h +++ /dev/null @@ -1 +0,0 @@ -../../../SDWebImage/SDWebImage/Private/SDImageAPNGCoderInternal.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDImageGIFCoderInternal.h b/ios/Pods/Headers/Private/SDWebImage/SDImageGIFCoderInternal.h deleted file mode 120000 index 6c5ab1ad6..000000000 --- a/ios/Pods/Headers/Private/SDWebImage/SDImageGIFCoderInternal.h +++ /dev/null @@ -1 +0,0 @@ -../../../SDWebImage/SDWebImage/Private/SDImageGIFCoderInternal.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDImageHEICCoder.h b/ios/Pods/Headers/Private/SDWebImage/SDImageHEICCoder.h new file mode 120000 index 000000000..745e8d07c --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/SDImageHEICCoder.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/SDImageHEICCoder.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDImageHEICCoderInternal.h b/ios/Pods/Headers/Private/SDWebImage/SDImageHEICCoderInternal.h new file mode 120000 index 000000000..f3e60205e --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/SDImageHEICCoderInternal.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Private/SDImageHEICCoderInternal.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDImageIOAnimatedCoder.h b/ios/Pods/Headers/Private/SDWebImage/SDImageIOAnimatedCoder.h new file mode 120000 index 000000000..c898dc75a --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/SDImageIOAnimatedCoder.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDImageIOAnimatedCoderInternal.h b/ios/Pods/Headers/Private/SDWebImage/SDImageIOAnimatedCoderInternal.h new file mode 120000 index 000000000..33a6f00ef --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/SDImageIOAnimatedCoderInternal.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDWebImageDownloaderDecryptor.h b/ios/Pods/Headers/Private/SDWebImage/SDWebImageDownloaderDecryptor.h new file mode 120000 index 000000000..2163ce75f --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/SDWebImageDownloaderDecryptor.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/SDWebImageDownloaderResponseModifier.h b/ios/Pods/Headers/Private/SDWebImage/SDWebImageDownloaderResponseModifier.h new file mode 120000 index 000000000..3c78451e2 --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/SDWebImageDownloaderResponseModifier.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.h \ No newline at end of file diff --git a/ios/Pods/Headers/Private/SDWebImage/UIImage+ExtendedCacheData.h b/ios/Pods/Headers/Private/SDWebImage/UIImage+ExtendedCacheData.h new file mode 120000 index 000000000..26424897e --- /dev/null +++ b/ios/Pods/Headers/Private/SDWebImage/UIImage+ExtendedCacheData.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/FirebaseCore/FIRApp.h b/ios/Pods/Headers/Public/FirebaseCore/FIRApp.h index 40a3ac4d2..6ddd61bfb 120000 --- a/ios/Pods/Headers/Public/FirebaseCore/FIRApp.h +++ b/ios/Pods/Headers/Public/FirebaseCore/FIRApp.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Public/FIRApp.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Public/FIRApp.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/FirebaseCore/FIRConfiguration.h b/ios/Pods/Headers/Public/FirebaseCore/FIRConfiguration.h index a88a9b24b..eb3f63851 120000 --- a/ios/Pods/Headers/Public/FirebaseCore/FIRConfiguration.h +++ b/ios/Pods/Headers/Public/FirebaseCore/FIRConfiguration.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Public/FIRConfiguration.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Public/FIRConfiguration.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/FirebaseCore/FIRLoggerLevel.h b/ios/Pods/Headers/Public/FirebaseCore/FIRLoggerLevel.h index a8f2b8567..99279de6d 120000 --- a/ios/Pods/Headers/Public/FirebaseCore/FIRLoggerLevel.h +++ b/ios/Pods/Headers/Public/FirebaseCore/FIRLoggerLevel.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Public/FIRLoggerLevel.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Public/FIRLoggerLevel.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/FirebaseCore/FIROptions.h b/ios/Pods/Headers/Public/FirebaseCore/FIROptions.h index caa84d6be..a0dca9211 120000 --- a/ios/Pods/Headers/Public/FirebaseCore/FIROptions.h +++ b/ios/Pods/Headers/Public/FirebaseCore/FIROptions.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Public/FIROptions.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Public/FIROptions.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/FirebaseCore/FirebaseCore.h b/ios/Pods/Headers/Public/FirebaseCore/FirebaseCore.h index 923cc40fc..15ac3c88c 120000 --- a/ios/Pods/Headers/Public/FirebaseCore/FirebaseCore.h +++ b/ios/Pods/Headers/Public/FirebaseCore/FirebaseCore.h @@ -1 +1 @@ -../../../FirebaseCore/Firebase/Core/Public/FirebaseCore.h \ No newline at end of file +../../../FirebaseCore/FirebaseCore/Sources/Public/FirebaseCore.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/FirebaseCoreDiagnostics/FIRCoreDiagnosticsDateFileStorage.h b/ios/Pods/Headers/Public/FirebaseCoreDiagnostics/FIRCoreDiagnosticsDateFileStorage.h deleted file mode 120000 index fe49a2977..000000000 --- a/ios/Pods/Headers/Public/FirebaseCoreDiagnostics/FIRCoreDiagnosticsDateFileStorage.h +++ /dev/null @@ -1 +0,0 @@ -../../../FirebaseCoreDiagnostics/Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnosticsDateFileStorage.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/FirebaseInstallations/FIRInstallations.h b/ios/Pods/Headers/Public/FirebaseInstallations/FIRInstallations.h new file mode 120000 index 000000000..58d96960f --- /dev/null +++ b/ios/Pods/Headers/Public/FirebaseInstallations/FIRInstallations.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallations.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/FirebaseInstallations/FIRInstallationsAuthTokenResult.h b/ios/Pods/Headers/Public/FirebaseInstallations/FIRInstallationsAuthTokenResult.h new file mode 120000 index 000000000..a779a3725 --- /dev/null +++ b/ios/Pods/Headers/Public/FirebaseInstallations/FIRInstallationsAuthTokenResult.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsAuthTokenResult.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/FirebaseInstallations/FIRInstallationsErrors.h b/ios/Pods/Headers/Public/FirebaseInstallations/FIRInstallationsErrors.h new file mode 120000 index 000000000..3e141efcb --- /dev/null +++ b/ios/Pods/Headers/Public/FirebaseInstallations/FIRInstallationsErrors.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsErrors.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/FirebaseInstallations/FIRInstallationsVersion.h b/ios/Pods/Headers/Public/FirebaseInstallations/FIRInstallationsVersion.h new file mode 120000 index 000000000..845fb573d --- /dev/null +++ b/ios/Pods/Headers/Public/FirebaseInstallations/FIRInstallationsVersion.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FIRInstallationsVersion.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/FirebaseInstallations/FirebaseInstallations.h b/ios/Pods/Headers/Public/FirebaseInstallations/FirebaseInstallations.h new file mode 120000 index 000000000..c5bd3b779 --- /dev/null +++ b/ios/Pods/Headers/Public/FirebaseInstallations/FirebaseInstallations.h @@ -0,0 +1 @@ +../../../FirebaseInstallations/FirebaseInstallations/Source/Library/Public/FirebaseInstallations.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTAssert.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTAssert.h deleted file mode 120000 index d231c0fe8..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTAssert.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTAssert.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORAssert.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORAssert.h new file mode 120000 index 000000000..e01f1b5ba --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORAssert.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORAssert.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORClock.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORClock.h new file mode 120000 index 000000000..d4f004f1a --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORClock.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORClock.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORConsoleLogger.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORConsoleLogger.h new file mode 120000 index 000000000..a4fa59af4 --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORConsoleLogger.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORConsoleLogger.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORDataFuture.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORDataFuture.h new file mode 120000 index 000000000..5f87ffd11 --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORDataFuture.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORDataFuture.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCOREvent.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCOREvent.h new file mode 120000 index 000000000..c5584e0d7 --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCOREvent.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREvent.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCOREventDataObject.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCOREventDataObject.h new file mode 120000 index 000000000..c9f8809b0 --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCOREventDataObject.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventDataObject.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCOREventTransformer.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCOREventTransformer.h new file mode 120000 index 000000000..fe31351eb --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCOREventTransformer.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventTransformer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORLifecycle.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORLifecycle.h new file mode 120000 index 000000000..f6c092b59 --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORLifecycle.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORLifecycle.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORPlatform.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORPlatform.h new file mode 120000 index 000000000..e53eae61e --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORPlatform.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPlatform.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORPrioritizer.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORPrioritizer.h new file mode 120000 index 000000000..859d73fbb --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORPrioritizer.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORPrioritizer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORRegistrar.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORRegistrar.h new file mode 120000 index 000000000..26fa38648 --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORRegistrar.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORRegistrar.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORStoredEvent.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORStoredEvent.h new file mode 120000 index 000000000..25f7c49ec --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORStoredEvent.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORStoredEvent.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORTargets.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORTargets.h new file mode 120000 index 000000000..4a0cd6760 --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORTargets.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTargets.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORTransport.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORTransport.h new file mode 120000 index 000000000..46d4f4c82 --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORTransport.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORTransport.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORUploadPackage.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORUploadPackage.h new file mode 120000 index 000000000..0d592326f --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORUploadPackage.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploadPackage.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORUploader.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORUploader.h new file mode 120000 index 000000000..c8efaa219 --- /dev/null +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GDTCORUploader.h @@ -0,0 +1 @@ +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploader.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTClock.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTClock.h deleted file mode 120000 index c1960b7ac..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTClock.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTClock.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTConsoleLogger.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTConsoleLogger.h deleted file mode 120000 index 0d5fa6525..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTConsoleLogger.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTConsoleLogger.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTDataFuture.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTDataFuture.h deleted file mode 120000 index 5d1eca0e9..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTDataFuture.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTDataFuture.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTEvent.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTEvent.h deleted file mode 120000 index adf123acf..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTEvent.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEvent.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTEventDataObject.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTEventDataObject.h deleted file mode 120000 index 698817f3f..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTEventDataObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEventDataObject.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTEventTransformer.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTEventTransformer.h deleted file mode 120000 index dfadf97e2..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTEventTransformer.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTEventTransformer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTLifecycle.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTLifecycle.h deleted file mode 120000 index 7f41110ca..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTLifecycle.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTLifecycle.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTPlatform.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTPlatform.h deleted file mode 120000 index 53238f5f1..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTPlatform.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTPlatform.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTPrioritizer.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTPrioritizer.h deleted file mode 120000 index ab4e5a056..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTPrioritizer.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTPrioritizer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTRegistrar.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTRegistrar.h deleted file mode 120000 index ebcd10b26..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTRegistrar.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTRegistrar.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTStoredEvent.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTStoredEvent.h deleted file mode 120000 index 508758b09..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTStoredEvent.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTStoredEvent.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTTargets.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTTargets.h deleted file mode 120000 index 5dbbc9e8c..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTTargets.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTTargets.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTTransport.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTTransport.h deleted file mode 120000 index bf95a42d5..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTTransport.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTTransport.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTUploadPackage.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTUploadPackage.h deleted file mode 120000 index c15de965d..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTUploadPackage.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTUploadPackage.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GDTUploader.h b/ios/Pods/Headers/Public/GoogleDataTransport/GDTUploader.h deleted file mode 120000 index 4552ebe73..000000000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GDTUploader.h +++ /dev/null @@ -1 +0,0 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GDTUploader.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/GoogleDataTransport/GoogleDataTransport.h b/ios/Pods/Headers/Public/GoogleDataTransport/GoogleDataTransport.h index 47de910b4..4cb738201 120000 --- a/ios/Pods/Headers/Public/GoogleDataTransport/GoogleDataTransport.h +++ b/ios/Pods/Headers/Public/GoogleDataTransport/GoogleDataTransport.h @@ -1 +1 @@ -../../../GoogleDataTransport/GoogleDataTransport/GDTLibrary/Public/GoogleDataTransport.h \ No newline at end of file +../../../GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+All.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+All.h new file mode 120000 index 000000000..ec9536fd8 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+All.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+All.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Always.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Always.h new file mode 120000 index 000000000..aa45e83ab --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Always.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Always.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Any.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Any.h new file mode 120000 index 000000000..113a49e35 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Any.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Any.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Async.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Async.h new file mode 120000 index 000000000..957407484 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Async.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Async.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Await.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Await.h new file mode 120000 index 000000000..be0456634 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Await.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Await.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Catch.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Catch.h new file mode 120000 index 000000000..65e801237 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Catch.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Catch.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Delay.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Delay.h new file mode 120000 index 000000000..b0bcf3eb5 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Delay.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Delay.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Do.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Do.h new file mode 120000 index 000000000..2317036e3 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Do.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Do.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Race.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Race.h new file mode 120000 index 000000000..cfc33d48f --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Race.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Race.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Recover.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Recover.h new file mode 120000 index 000000000..0bb21e819 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Recover.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Recover.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Reduce.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Reduce.h new file mode 120000 index 000000000..06b9d090a --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Reduce.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Reduce.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Retry.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Retry.h new file mode 120000 index 000000000..9e8ff108e --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Retry.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Retry.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Testing.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Testing.h new file mode 120000 index 000000000..f4232a658 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Testing.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Then.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Then.h new file mode 120000 index 000000000..f060e8eb9 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Then.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Then.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Timeout.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Timeout.h new file mode 120000 index 000000000..17ba23970 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Timeout.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Timeout.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Validate.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Validate.h new file mode 120000 index 000000000..98d46d5ae --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Validate.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Validate.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Wrap.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Wrap.h new file mode 120000 index 000000000..b0ea9cd0b --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise+Wrap.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise+Wrap.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromise.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise.h new file mode 120000 index 000000000..c4941f5bb --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromise.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromise.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromiseError.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromiseError.h new file mode 120000 index 000000000..984d9ac70 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromiseError.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromiseError.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/PromisesObjC/FBLPromises.h b/ios/Pods/Headers/Public/PromisesObjC/FBLPromises.h new file mode 120000 index 000000000..b25f37e80 --- /dev/null +++ b/ios/Pods/Headers/Public/PromisesObjC/FBLPromises.h @@ -0,0 +1 @@ +../../../PromisesObjC/Sources/FBLPromises/include/FBLPromises.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/SDWebImage/SDAnimatedImagePlayer.h b/ios/Pods/Headers/Public/SDWebImage/SDAnimatedImagePlayer.h new file mode 120000 index 000000000..786cc5e6a --- /dev/null +++ b/ios/Pods/Headers/Public/SDWebImage/SDAnimatedImagePlayer.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/SDWebImage/SDGraphicsImageRenderer.h b/ios/Pods/Headers/Public/SDWebImage/SDGraphicsImageRenderer.h new file mode 120000 index 000000000..d390c1f7e --- /dev/null +++ b/ios/Pods/Headers/Public/SDWebImage/SDGraphicsImageRenderer.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/SDWebImage/SDImageHEICCoder.h b/ios/Pods/Headers/Public/SDWebImage/SDImageHEICCoder.h new file mode 120000 index 000000000..745e8d07c --- /dev/null +++ b/ios/Pods/Headers/Public/SDWebImage/SDImageHEICCoder.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/SDImageHEICCoder.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/SDWebImage/SDImageIOAnimatedCoder.h b/ios/Pods/Headers/Public/SDWebImage/SDImageIOAnimatedCoder.h new file mode 120000 index 000000000..c898dc75a --- /dev/null +++ b/ios/Pods/Headers/Public/SDWebImage/SDImageIOAnimatedCoder.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/SDWebImage/SDWebImageDownloaderDecryptor.h b/ios/Pods/Headers/Public/SDWebImage/SDWebImageDownloaderDecryptor.h new file mode 120000 index 000000000..2163ce75f --- /dev/null +++ b/ios/Pods/Headers/Public/SDWebImage/SDWebImageDownloaderDecryptor.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/SDWebImage/SDWebImageDownloaderResponseModifier.h b/ios/Pods/Headers/Public/SDWebImage/SDWebImageDownloaderResponseModifier.h new file mode 120000 index 000000000..3c78451e2 --- /dev/null +++ b/ios/Pods/Headers/Public/SDWebImage/SDWebImageDownloaderResponseModifier.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.h \ No newline at end of file diff --git a/ios/Pods/Headers/Public/SDWebImage/UIImage+ExtendedCacheData.h b/ios/Pods/Headers/Public/SDWebImage/UIImage+ExtendedCacheData.h new file mode 120000 index 000000000..26424897e --- /dev/null +++ b/ios/Pods/Headers/Public/SDWebImage/UIImage+ExtendedCacheData.h @@ -0,0 +1 @@ +../../../SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.h \ No newline at end of file diff --git a/ios/Pods/Local Podspecs/RNSharedElement.podspec.json b/ios/Pods/Local Podspecs/RNSharedElement.podspec.json deleted file mode 100644 index 76493a145..000000000 --- a/ios/Pods/Local Podspecs/RNSharedElement.podspec.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "RNSharedElement", - "version": "0.5.3", - "summary": "Native shared element transition primitives for react-native 💫", - "license": "MIT", - "authors": "IjzerenHein ", - "homepage": "https://github.com/IjzerenHein/react-native-shared-element", - "platforms": { - "ios": "9.0" - }, - "source": { - "git": "https://github.com/IjzerenHein/react-native-shared-element.git", - "tag": "v0.5.3" - }, - "source_files": "ios/**/*.{h,m}", - "dependencies": { - "React": [ - - ] - } -} diff --git a/ios/Pods/Manifest.lock b/ios/Pods/Manifest.lock index 2a0b1daeb..c0bec2f56 100644 --- a/ios/Pods/Manifest.lock +++ b/ios/Pods/Manifest.lock @@ -34,35 +34,41 @@ PODS: - React-Core (= 0.61.5) - React-jsi (= 0.61.5) - ReactCommon/turbomodule/core (= 0.61.5) - - Firebase/Core (6.8.1): + - Firebase/Core (6.16.0): - Firebase/CoreOnly - - FirebaseAnalytics (= 6.1.1) - - Firebase/CoreOnly (6.8.1): - - FirebaseCore (= 6.2.3) - - FirebaseAnalytics (6.1.1): - - FirebaseCore (~> 6.2) - - FirebaseInstanceID (~> 4.2) - - GoogleAppMeasurement (= 6.1.1) + - FirebaseAnalytics (= 6.2.2) + - Firebase/CoreOnly (6.16.0): + - FirebaseCore (= 6.6.1) + - FirebaseAnalytics (6.2.2): + - FirebaseCore (~> 6.6) + - FirebaseInstanceID (~> 4.3) + - GoogleAppMeasurement (= 6.2.2) - GoogleUtilities/AppDelegateSwizzler (~> 6.0) - GoogleUtilities/MethodSwizzler (~> 6.0) - GoogleUtilities/Network (~> 6.0) - "GoogleUtilities/NSData+zlib (~> 6.0)" - - nanopb (~> 0.3) - - FirebaseCore (6.2.3): - - FirebaseCoreDiagnostics (~> 1.0) - - FirebaseCoreDiagnosticsInterop (~> 1.0) - - GoogleUtilities/Environment (~> 6.2) - - GoogleUtilities/Logger (~> 6.2) - - FirebaseCoreDiagnostics (1.0.1): - - FirebaseCoreDiagnosticsInterop (~> 1.0) - - GoogleDataTransportCCTSupport (~> 1.0) - - GoogleUtilities/Environment (~> 6.2) - - GoogleUtilities/Logger (~> 6.2) - - FirebaseCoreDiagnosticsInterop (1.0.0) - - FirebaseInstanceID (4.2.5): - - FirebaseCore (~> 6.0) - - GoogleUtilities/Environment (~> 6.0) - - GoogleUtilities/UserDefaults (~> 6.0) + - nanopb (= 0.3.9011) + - FirebaseCore (6.6.1): + - FirebaseCoreDiagnostics (~> 1.2) + - FirebaseCoreDiagnosticsInterop (~> 1.2) + - GoogleUtilities/Environment (~> 6.5) + - GoogleUtilities/Logger (~> 6.5) + - FirebaseCoreDiagnostics (1.2.0): + - FirebaseCoreDiagnosticsInterop (~> 1.2) + - GoogleDataTransportCCTSupport (~> 1.3) + - GoogleUtilities/Environment (~> 6.5) + - GoogleUtilities/Logger (~> 6.5) + - nanopb (~> 0.3.901) + - FirebaseCoreDiagnosticsInterop (1.2.0) + - FirebaseInstallations (1.1.0): + - FirebaseCore (~> 6.6) + - GoogleUtilities/UserDefaults (~> 6.5) + - PromisesObjC (~> 1.2) + - FirebaseInstanceID (4.3.0): + - FirebaseCore (~> 6.6) + - FirebaseInstallations (~> 1.0) + - GoogleUtilities/Environment (~> 6.5) + - GoogleUtilities/UserDefaults (~> 6.5) - Folly (2018.10.22.00): - boost-for-react-native - DoubleConversion @@ -73,51 +79,52 @@ PODS: - DoubleConversion - glog - glog (0.3.5) - - GoogleAppMeasurement (6.1.1): + - GoogleAppMeasurement (6.2.2): - GoogleUtilities/AppDelegateSwizzler (~> 6.0) - GoogleUtilities/MethodSwizzler (~> 6.0) - GoogleUtilities/Network (~> 6.0) - "GoogleUtilities/NSData+zlib (~> 6.0)" - - nanopb (~> 0.3) - - GoogleDataTransport (1.2.0) - - GoogleDataTransportCCTSupport (1.0.4): - - GoogleDataTransport (~> 1.2) - - nanopb - - GoogleUtilities/AppDelegateSwizzler (6.3.0): + - nanopb (= 0.3.9011) + - GoogleDataTransport (3.3.1) + - GoogleDataTransportCCTSupport (1.3.1): + - GoogleDataTransport (~> 3.3) + - nanopb (~> 0.3.901) + - GoogleUtilities/AppDelegateSwizzler (6.5.1): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - - GoogleUtilities/Environment (6.3.0) - - GoogleUtilities/Logger (6.3.0): + - GoogleUtilities/Environment (6.5.1) + - GoogleUtilities/Logger (6.5.1): - GoogleUtilities/Environment - - GoogleUtilities/MethodSwizzler (6.3.0): + - GoogleUtilities/MethodSwizzler (6.5.1): - GoogleUtilities/Logger - - GoogleUtilities/Network (6.3.0): + - GoogleUtilities/Network (6.5.1): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (6.3.0)" - - GoogleUtilities/Reachability (6.3.0): + - "GoogleUtilities/NSData+zlib (6.5.1)" + - GoogleUtilities/Reachability (6.5.1): - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (6.3.0): + - GoogleUtilities/UserDefaults (6.5.1): - GoogleUtilities/Logger - JitsiMeetSDK (2.4.0) - KeyCommands (2.0.3): - React - - libwebp (1.0.3): - - libwebp/demux (= 1.0.3) - - libwebp/mux (= 1.0.3) - - libwebp/webp (= 1.0.3) - - libwebp/demux (1.0.3): + - libwebp (1.1.0): + - libwebp/demux (= 1.1.0) + - libwebp/mux (= 1.1.0) + - libwebp/webp (= 1.1.0) + - libwebp/demux (1.1.0): - libwebp/webp - - libwebp/mux (1.0.3): + - libwebp/mux (1.1.0): - libwebp/demux - - libwebp/webp (1.0.3) - - nanopb (0.3.901): - - nanopb/decode (= 0.3.901) - - nanopb/encode (= 0.3.901) - - nanopb/decode (0.3.901) - - nanopb/encode (0.3.901) + - libwebp/webp (1.1.0) + - nanopb (0.3.9011): + - nanopb/decode (= 0.3.9011) + - nanopb/encode (= 0.3.9011) + - nanopb/decode (0.3.9011) + - nanopb/encode (0.3.9011) + - PromisesObjC (1.2.8) - RCTRequired (0.61.5) - RCTTypeSafety (0.61.5): - FBLazyVector (= 0.61.5) @@ -395,10 +402,10 @@ PODS: - RNVectorIcons (6.6.0): - React - RSKImageCropper (2.2.3) - - SDWebImage (5.1.1): - - SDWebImage/Core (= 5.1.1) - - SDWebImage/Core (5.1.1) - - SDWebImageWebPCoder (0.2.4): + - SDWebImage (5.5.2): + - SDWebImage/Core (= 5.5.2) + - SDWebImage/Core (5.5.2) + - SDWebImageWebPCoder (0.2.5): - libwebp (~> 1.0) - SDWebImage/Core (~> 5.0) - UMBarCodeScannerInterface (3.0.0) @@ -500,7 +507,7 @@ DEPENDENCIES: - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: - https://github.com/CocoaPods/Specs.git: + trunk: - boost-for-react-native - Crashlytics - Fabric @@ -509,6 +516,7 @@ SPEC REPOS: - FirebaseCore - FirebaseCoreDiagnostics - FirebaseCoreDiagnosticsInterop + - FirebaseInstallations - FirebaseInstanceID - GoogleAppMeasurement - GoogleDataTransport @@ -516,6 +524,7 @@ SPEC REPOS: - GoogleUtilities - libwebp - nanopb + - PromisesObjC - RSKImageCropper - SDWebImage - SDWebImageWebPCoder @@ -713,22 +722,24 @@ SPEC CHECKSUMS: Fabric: 706c8b8098fff96c33c0db69cbf81f9c551d0d74 FBLazyVector: aaeaf388755e4f29cd74acbc9e3b8da6d807c37f FBReactNativeSpec: 118d0d177724c2d67f08a59136eb29ef5943ec75 - Firebase: 9cbe4e5b5eaafa05dc932be58b7c8c3820d71e88 - FirebaseAnalytics: 843c7f64a8f9c79f0d03281197ebe7bb1d58d477 - FirebaseCore: e9d9bd1dae61c1e82bc1e0e617a9d832392086a0 - FirebaseCoreDiagnostics: 4c04ae09d0ab027c30179828c6bb47764df1bd13 - FirebaseCoreDiagnosticsInterop: 6829da2b8d1fc795ff1bd99df751d3788035d2cb - FirebaseInstanceID: 550df9be1f99f751d8fcde3ac342a1e21a0e6c42 + Firebase: 497158b816d0a86fc31babbd05546fcd7e6083ff + FirebaseAnalytics: cf95d3aab897612783020fbd98401d5366f135ee + FirebaseCore: 85064903ed6c28e47fec9c7bd149d94ba1b6b6e7 + FirebaseCoreDiagnostics: 5e78803ab276bc5b50340e3c539c06c3de35c649 + FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850 + FirebaseInstallations: 575cd32f2aec0feeb0e44f5d0110a09e5e60b47b + FirebaseInstanceID: 6668efc1655a4052c083f287a7141f1ead12f9c2 Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 glog: 1f3da668190260b06b429bb211bfbee5cd790c28 - GoogleAppMeasurement: 86a82f0e1f20b8eedf8e20326530138fd71409de - GoogleDataTransport: 8f9897b8e073687f24ca8d3c3a8013dec7d2d1cc - GoogleDataTransportCCTSupport: 7455d07b98851aa63e4c05a34dad356ca588479e - GoogleUtilities: 9c2c544202301110b29f7974a82e77fdcf12bf51 + GoogleAppMeasurement: d0560d915abf15e692e8538ba1d58442217b6aff + GoogleDataTransport: 0048df6388dab1c254799f2a30365b1dffe20422 + GoogleDataTransportCCTSupport: f880d70972efa2ed1be4e9173a0f4c5f3dc2d176 + GoogleUtilities: 06eb53bb579efe7099152735900dd04bf09e7275 JitsiMeetSDK: d4a3aeed1a75fd57e6a78e5d202b6051dfcb9320 KeyCommands: f66c535f698ed14b3d3a4e58859d79a827ea907e - libwebp: 057912d6d0abfb6357d8bb05c0ea470301f5d61e - nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48 + libwebp: 946cb3063cea9236285f7e9a8505d806d30e07f3 + nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd + PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6 RCTRequired: b153add4da6e7dbc44aebf93f3cf4fcae392ddf1 RCTTypeSafety: 9aa1b91d7f9310fc6eadc3cf95126ffe818af320 React: b6a59ef847b2b40bb6e0180a97d0ca716969ac78 @@ -778,8 +789,8 @@ SPEC CHECKSUMS: RNUserDefaults: af71a1cdf1c12baf8210bc741c65f5faba9826d6 RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4 RSKImageCropper: a446db0e8444a036b34f3c43db01b2373baa4b2a - SDWebImage: 96d7f03415ccb28d299d765f93557ff8a617abd8 - SDWebImageWebPCoder: cc72085bb20368b2f8dbb21b7e355c667e1309b7 + SDWebImage: 4d5c027c935438f341ed33dbac53ff9f479922ca + SDWebImageWebPCoder: 947093edd1349d820c40afbd9f42acb6cdecd987 UMBarCodeScannerInterface: 84ea2d6b58ff0dc27ef9b68bab71286be18ee020 UMCameraInterface: 26b26005d1756a0d5f4f04f1e168e39ea9154535 UMConstantsInterface: 038bacb19de12b6fd328c589122c8dc977cccf61 diff --git a/ios/Pods/Pods.xcodeproj/project.pbxproj b/ios/Pods/Pods.xcodeproj/project.pbxproj index 7c4b46778..d88234ea3 100644 --- a/ios/Pods/Pods.xcodeproj/project.pbxproj +++ b/ios/Pods/Pods.xcodeproj/project.pbxproj @@ -228,59 +228,61 @@ 00FD715D554BEF2B43C4A77344A2A2F9 /* RCTSliderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E5C7FEE81D653379FD6F11F5976D61FB /* RCTSliderManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0110988CDD0DA3F7F49434DAB8BA87E1 /* RCTProgressViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 52D23EDA5F884C3239B077C15910ECC1 /* RCTProgressViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 013E97EF0B110B48D15D8445F1D3C24A /* RCTEventAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = AD04C1BFC9C5F281657981675CDCA95D /* RCTEventAnimation.m */; }; - 014A953E16242C5C2D97728BE5EB3FED /* FirebaseCoreDiagnostics-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 549CC56FC99AAB064C41404A60ACDCA7 /* FirebaseCoreDiagnostics-dummy.m */; }; - 018BC758F67618B02AE7AF70B2E5D29B /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = DF3B6A5615D38501C12A332422F0D8FD /* SDImageFrame.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0168747D9FDB61A33B92889060F5D4B8 /* FIRInstallationsKeychainUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 4341798946137AA9F80EA098E35B9931 /* FIRInstallationsKeychainUtils.m */; }; 01AF68C56B353F0273A4AC2CD9C55356 /* BSG_KSCrashCallCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = F006204547FEC6498B166EFA2D35B2B8 /* BSG_KSCrashCallCompletion.h */; settings = {ATTRIBUTES = (Project, ); }; }; 01CF128DB818B5C83EC67F1FB8C044E2 /* BugsnagUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 72EEE078A0BECBB045605975E76C3299 /* BugsnagUser.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 01E9290B5AF4EF792AF0770821457C81 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = DEA1AFC7815DE289321DB234082AB133 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 01F1D84FDAD0AF47FF1C2166C9A2D3EC /* pb_encode.h in Headers */ = {isa = PBXBuildFile; fileRef = A2309B02D4CBE5D68836BD94999C64E2 /* pb_encode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 02218BCD8452C372E4ACC4A4C8325932 /* rescaler.c in Sources */ = {isa = PBXBuildFile; fileRef = BCC4CC6682FE82D7FD68D5C478533F62 /* rescaler.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 02995B31B424D53935F8576996C9F306 /* FIRCoreDiagnosticsConnector.m in Sources */ = {isa = PBXBuildFile; fileRef = FCC11573AB7D5B652772C6126FE31C36 /* FIRCoreDiagnosticsConnector.m */; }; - 02D340EA0E9D8C59CB3B6584EA53BCAD /* GDTTransformer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = FF5EBC9A5E12D5281CC29EAB37CD1E5E /* GDTTransformer_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 01F1D84FDAD0AF47FF1C2166C9A2D3EC /* pb_encode.h in Headers */ = {isa = PBXBuildFile; fileRef = 383A35C11C4C2DD2BADC793667564783 /* pb_encode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 02218BCD8452C372E4ACC4A4C8325932 /* rescaler.c in Sources */ = {isa = PBXBuildFile; fileRef = DCB23ABFC8B49A5E319D843667A25D15 /* rescaler.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 02D7F16622CA9A03D5F5BC227F111F09 /* RCTTextSelection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F2C6B4E466B4DA131D5D01DABB9804E /* RCTTextSelection.h */; settings = {ATTRIBUTES = (Project, ); }; }; 02FD14CFE42783E886506F2E17859960 /* RCTVirtualTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB2D10B5EA5FBAB4565B783C80C9A12 /* RCTVirtualTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 033394FF64D05DACD31B10A0BE4E0F67 /* EXVideoPlayerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 277D35BCCDA3CD69ADA70C694A988723 /* EXVideoPlayerViewController.m */; }; + 0343D94D2D5E8E2E318BA28B81964C30 /* GDTCCTUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = C0DCE0BB52AF13A0B41211860EA0CDCA /* GDTCCTUploader.h */; settings = {ATTRIBUTES = (Project, ); }; }; 034BC962567065301B3E423CEEFF6493 /* ARTTextManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7E00DBEF80A2A87BC5A2C4198D0CE /* ARTTextManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 037A597C46854C7EAE1349B3B682C044 /* FFFastImageViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 09340D593FCF156D56EC788C9D61A56E /* FFFastImageViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 038DCB497B0C163EB9C86859E531AFFA /* BSG_KSMach_x86_32.c in Sources */ = {isa = PBXBuildFile; fileRef = 1E36B6104ECCD9D037D65F133A90B34E /* BSG_KSMach_x86_32.c */; }; 03A091EF0A44A9313367BD851F9685DB /* RNFetchBlobConst.h in Headers */ = {isa = PBXBuildFile; fileRef = B2BC78EDC760B450A885614547A7428E /* RNFetchBlobConst.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 03FC1A870235ECB216F4737C694F3747 /* GDTCORUploadPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 8174EE8838427BE46A0885CA8539CA9D /* GDTCORUploadPackage.h */; settings = {ATTRIBUTES = (Project, ); }; }; 04148C0C198379E5C1D179F18BF512A9 /* BSGSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 289FDAE476A89BDD5D67514FF6353737 /* BSGSerialization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 04AA55BE7FB64746D55ECB9C8714BE6C /* RSKImageScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 72C4B8A7FB6E16BCE4CDCCB39D680712 /* RSKImageScrollView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 043F127F8BCEE1CF57B50F26BC40EEC6 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B9414D353B3774B94F6BC07EDA11C7C /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 043F132113151E6ADEDCE2882496167D /* FIRInstanceIDTokenOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DA120FFE328161A90702286BAB6CDA6 /* FIRInstanceIDTokenOperation+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 049781277A4DF708130AF68AA1C925EC /* FIRInstanceIDAuthService.h in Headers */ = {isa = PBXBuildFile; fileRef = 297C759A2A6FB64610A331F75C41FC8D /* FIRInstanceIDAuthService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 04AA55BE7FB64746D55ECB9C8714BE6C /* RSKImageScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = BDEA5C38759AB791A74D4E71063DB293 /* RSKImageScrollView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 04B9B85ED8CA97838E08E90F268B5A6A /* BSG_RFC3339DateTool.h in Headers */ = {isa = PBXBuildFile; fileRef = 05C6F803ACAD8D922F711576AF18EB36 /* BSG_RFC3339DateTool.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 053BA4F3C75D35BCBAA8F8891D611B84 /* animi.h in Headers */ = {isa = PBXBuildFile; fileRef = F762F0A56AD644160EE40F2C9ED7DC7D /* animi.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 04F32CC017A5B4680D550DF38F6F630D /* FIRInstanceIDVersionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 3995372A68A43A67B051244F80037938 /* FIRInstanceIDVersionUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 053BA4F3C75D35BCBAA8F8891D611B84 /* animi.h in Headers */ = {isa = PBXBuildFile; fileRef = FF00CDB7A8232AE4158B172CB16D57C2 /* animi.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0550E1CF6AA520F2250C08EDB7D025EB /* RCTLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FE49070AC3414D65AA9228AB7579A7C /* RCTLog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 055E3CCCC565B32662B62AEB2687DFD6 /* dec_clip_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 870525D77085BDC7FD874AC0C6EE096B /* dec_clip_tables.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 055E3CCCC565B32662B62AEB2687DFD6 /* dec_clip_tables.c in Sources */ = {isa = PBXBuildFile; fileRef = D34AAFE9C37C1A4DC2FFAF19DFF69CDC /* dec_clip_tables.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 05756863C1BD6A6522B1046F4351B6BD /* RCTSurfaceSizeMeasureMode.h in Headers */ = {isa = PBXBuildFile; fileRef = F4BDA12CC1F9BEBEA8803C87DD3AB8EE /* RCTSurfaceSizeMeasureMode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 058A0E6FB778E47AC2ACEED1729900C5 /* enc_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 669FED7B0C83E29684D6A0598821FBD9 /* enc_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 058A0E6FB778E47AC2ACEED1729900C5 /* enc_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = CC558CC663CA045F998F5CA528ADEDB7 /* enc_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 05AADAF87C7C8F45EB17F1D2055547DB /* UIView+FindUIViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 826389E051DB9F5DAFC23A5ED7B18FD8 /* UIView+FindUIViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 05B0D839ADEDCA18BCB0342D8850023C /* decode.h in Headers */ = {isa = PBXBuildFile; fileRef = DE53658AF11CD49486D35DB8F2FE3A22 /* decode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 05B0D839ADEDCA18BCB0342D8850023C /* decode.h in Headers */ = {isa = PBXBuildFile; fileRef = AE42AA2FA59AF812E73CBB61E72ECEA8 /* decode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 05B8061B8AE0708A11C2E65F08069385 /* RCTUIManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B90B4942E1ED0199158E5ACC0EF66E35 /* RCTUIManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 05C1FD03B0C4673F79EC7E77569B14EC /* nanopb-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CE60F49EF77406B156BFE39692C9CCF7 /* nanopb-dummy.m */; }; + 05C1FD03B0C4673F79EC7E77569B14EC /* nanopb-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F62A51F0D87C21CBDCC1B8756AE451C6 /* nanopb-dummy.m */; }; 05D27696F3A8F3906AAC9F552AA9EEF6 /* ARTRadialGradient.m in Sources */ = {isa = PBXBuildFile; fileRef = B13AF61B2C73376A40B9B8A94305983D /* ARTRadialGradient.m */; }; - 05EEE113DA8195D1A8446E6E0223F87B /* quant.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C1BC541497F9D69CFB6FF7A5F1D16E5 /* quant.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 05D69A135B67FBAE73D5F583B05D8AB5 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = F87F6A22FB4F600954FB2663E53340C6 /* SDImageIOCoder.m */; }; + 05EEE113DA8195D1A8446E6E0223F87B /* quant.h in Headers */ = {isa = PBXBuildFile; fileRef = F02ACAE8DEE115DBBC18C44F0AE2128C /* quant.h */; settings = {ATTRIBUTES = (Project, ); }; }; 05FA51F562C7976518F650F5858E7149 /* RCTJavaScriptExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 60D9920325F1E197245EC5E2DDB3E2C6 /* RCTJavaScriptExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 05FD9CBC49A9036945A855E5976925F8 /* REASetNode.m in Sources */ = {isa = PBXBuildFile; fileRef = DD62AC3EB3E406698321F90D62839E7C /* REASetNode.m */; }; 06290A0DBEBB396363D9CB31FC2FFA27 /* RNFetchBlobReqBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = E44F908151A562A3AF20B69A1D54098E /* RNFetchBlobReqBuilder.m */; }; 062F8BE5952FAF7F5CF3E6966A337F28 /* RNBootSplash.h in Headers */ = {isa = PBXBuildFile; fileRef = 250AC3F1C3E28195B86681506026C1B0 /* RNBootSplash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 063A7D878ACB2A6037E13C4A23179557 /* FIRAnalyticsConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = D685191518CCCE8477FBB30EA847D2D9 /* FIRAnalyticsConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0642877CFA3BABF6838B380EC90E850C /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = 5080E1E9F662041ACF60804ACBB04CE3 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0679E8A1EFD1528B6DD85FD80C935105 /* UMModuleRegistryDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 31AE9C83361780E6B38F68149BE8ED27 /* UMModuleRegistryDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 067CF6E901ED664FD2842890860A5713 /* RCTBackedTextInputDelegateAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0BFCA3863288C619E65898BB7D3E5D /* RCTBackedTextInputDelegateAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 068627D6351492A400D81DA04B4AAEE1 /* histogram_enc.h in Headers */ = {isa = PBXBuildFile; fileRef = E35994BA61AA03850DB1775AB78F5240 /* histogram_enc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 06C78FC8169996E806BE536269C185CD /* yuv_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = 0B87E9F95E955F70802BB09E14E71817 /* yuv_sse41.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 06DB6A5EF09D9417BA180FC364973426 /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F07AB9A93907E76E3C570F14ADF3E275 /* SDImageAssetManager.m */; }; + 068627D6351492A400D81DA04B4AAEE1 /* histogram_enc.h in Headers */ = {isa = PBXBuildFile; fileRef = D21939B5F49D3C368E0AE91BCDCB1CF4 /* histogram_enc.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 06922EF69D044B6F0042385A661A6B60 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 82F6DE05F32E14B763473B91688324E1 /* SDImageHEICCoder.m */; }; + 06C78FC8169996E806BE536269C185CD /* yuv_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = 8E103C191260FD8059A70EBEAD980250 /* yuv_sse41.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 06FBD958C231090762361344B123CACD /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F107D99DE30C03FC83538F1745C81DE /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 07141BDF264104502C0D2041648F7880 /* FIRComponentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E5CC8F6A5743198CEE068F4A629834B /* FIRComponentType.m */; }; 071E58B8852567A971AABBB61B4BF64A /* RCTProfileTrampoline-i386.S in Sources */ = {isa = PBXBuildFile; fileRef = 06C809B8549057A07FF4A8E38A64FA53 /* RCTProfileTrampoline-i386.S */; }; + 072340F95F41D91DADDE392ACB4F7665 /* FIRInstallationsIIDStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 06736283C77882D931377C3AF94D64FD /* FIRInstallationsIIDStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0764A6EAFA3A7BEBA50E99A74A95F549 /* QBVideoIconView.m in Sources */ = {isa = PBXBuildFile; fileRef = A46CEB0D88622A4206E1436F9F31EB39 /* QBVideoIconView.m */; }; - 0769A9F39A25A9A976CCD0C87C3D2CFA /* Format.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A3E63A13602882E51CE5359C7B370400 /* Format.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 0769A9F39A25A9A976CCD0C87C3D2CFA /* Format.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 965EC53F67148F2FB7C1C52C636A654B /* Format.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 0770FB987A4D038938191C2B33C4846C /* RCTActivityIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = BF5CBB0DE4D0AA9DE287CF7AE6A51CEF /* RCTActivityIndicatorView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 077A5F8C4B9C33DFA15873A399B2597C /* stl_logging.h in Headers */ = {isa = PBXBuildFile; fileRef = C476CADBE585CCBC4E285BDCE9C9B9B6 /* stl_logging.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 078E653C3724A2179DCB9018B3F7CCFC /* GULApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 38306BBBC3C64D7DF03BEC71BC608DBF /* GULApplication.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 077A5F8C4B9C33DFA15873A399B2597C /* stl_logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CFEB116ECB9A495D54B314D795B805B /* stl_logging.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0801F2E7F7115B2A1B2836000ECB42BE /* BugsnagHandledState.h in Headers */ = {isa = PBXBuildFile; fileRef = FB6EE44FA7F3B55552E8366D392E5AF7 /* BugsnagHandledState.h */; settings = {ATTRIBUTES = (Project, ); }; }; 080E1D5D33742F3791A8FC5C709FE265 /* TurboModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9BC71A5918A997F15CAC9126B3C68E59 /* TurboModule.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 081768B0FABD06884FD6F65643672F1A /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 960C7132FDACCCBC602818FF9F87C10A /* SDWebImageDownloader.m */; }; - 081E6B601B49FE4F98631AE9F6594C9F /* dec_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = 2F3473B6568C15F43FDFEAEBB5BC8625 /* dec_mips32.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 081E6B601B49FE4F98631AE9F6594C9F /* dec_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = C31EC300C1418FF40CB367611BE8EB41 /* dec_mips32.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 082930C05486B2E939CD2D2046D6E8D4 /* RCTLog.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8540E2CE4399AB56BCE33B40A8623314 /* RCTLog.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 0831A0057F646251FD8B9F72008F0F52 /* CGGeometry+RSKImageCropper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD9D6D015FBBB5D23A16236EFDC21EA /* CGGeometry+RSKImageCropper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0831A0057F646251FD8B9F72008F0F52 /* CGGeometry+RSKImageCropper.h in Headers */ = {isa = PBXBuildFile; fileRef = 112CFA9961DCCEA1D55E037EE24E1C38 /* CGGeometry+RSKImageCropper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 08386AF2FE7E61FFAC513C0EABDE2BF5 /* RCTRootViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 05C392ACAA16564F1646887DF81113EF /* RCTRootViewInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 086D30EE631E6CD8A53B13E30037F880 /* UMAppLifecycleService.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F2C682FA6F99D67928F8667235A3CF /* UMAppLifecycleService.h */; settings = {ATTRIBUTES = (Project, ); }; }; 08751D5B412E7F5CF628EA5003D23DC0 /* UIImage+Resize.m in Sources */ = {isa = PBXBuildFile; fileRef = 445ECA9E6B1D54EE4EF38089336C8C17 /* UIImage+Resize.m */; }; @@ -288,23 +290,23 @@ 08F038226206BFA4EC2E474742BCCCBE /* RCTActivityIndicatorViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 773D91497860302EEC08AB5AEE213413 /* RCTActivityIndicatorViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 08F5142CBA48202DB5E2CD6DD24AB790 /* RCTMultipartStreamReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 459D354B128A5B3FD0717608572663F7 /* RCTMultipartStreamReader.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 090CD0CBDC7A1A0ADFAF53F574E31D2E /* Instance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BF45BB6462C515794294F19F13B4BB37 /* Instance.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 0923FD3747647148D132AB7CCB7B375A /* FIRInstanceIDTokenDeleteOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 593434FB0205C22E5A950A80442758C9 /* FIRInstanceIDTokenDeleteOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 094A110F9B7125E1ACA5C55D97CE3305 /* GDTTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CFDF61A090051FCE603DE9E0332AFAC /* GDTTransformer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 09BC7875E6D801E8C3A5D78A944B7127 /* neon.h in Headers */ = {isa = PBXBuildFile; fileRef = F40A68A5A790E9F7437AC7A11A10E049 /* neon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 09E32B915F68813180BCB425D417A907 /* fast-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = 514A2F253442115AFA4B6EDDAFFFE085 /* fast-dtoa.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; + 09BC7875E6D801E8C3A5D78A944B7127 /* neon.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0188F1CFA087DDC5889F8B0B0301C3 /* neon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 09C185F1C7A5642A99FC851468FCD3E0 /* GULSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CE153AFAE2F96D0F934D1BAF6939CCD /* GULSwizzler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 09E32B915F68813180BCB425D417A907 /* fast-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = F72625A8093D89ACAEF9ACBC3883C014 /* fast-dtoa.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; + 09F2344CDF2289F7B806ED72CB1E16C9 /* FIRAppAssociationRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C8B9AF946127A4CCC12F6DA5E9EFD4E /* FIRAppAssociationRegistration.m */; }; 0A062F2E4946A573D13ADBCC08C63259 /* RCTComponentData.m in Sources */ = {isa = PBXBuildFile; fileRef = 3972A87C0C31E6D865566FB1C97594D7 /* RCTComponentData.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 0A1AB2547E41AAF64E97BFB18FD29C6B /* RCTVirtualTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 067D5D2C99221EB0A3B9E22F7DFD06BF /* RCTVirtualTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0A6BA0F3B42A8F085AD76A71AD742B25 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 3786DC3F685C9387F570BEF33D84FDBA /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0A7A1BCCD1D5D7238DC06CB7E38E76F9 /* RNNotificationParser.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C90F3A98224D6DE3458CF9B4592563 /* RNNotificationParser.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0A7FF47E30F61AFB6AD9CA895EE1A4F9 /* RNDateTimePickerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DC0B02E92152D5231A7995E9D166C4C0 /* RNDateTimePickerManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0A92A4EB11AC3149D6C51E87E22A1A5B /* cost_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 3106BC87F2CAE5827507F197753E8093 /* cost_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 0A92A4EB11AC3149D6C51E87E22A1A5B /* cost_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = E24A9D8245F7C2A76A8F628651409D86 /* cost_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 0AB9B568C6742A432B80BF2477E83C45 /* REATransformNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 590A991CA39320D61338A86CD16B61E4 /* REATransformNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0AE12686EC6C465D8435BAB4DC808603 /* RCTVibration.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AA78930FB447031AB93AD2299273FD1 /* RCTVibration.m */; }; - 0AE630EDDF3087755FB7900375791D51 /* double-conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = B37B061BCFAEAF0A54D7854C6C0322C7 /* double-conversion.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0AE630EDDF3087755FB7900375791D51 /* double-conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 67126F01CF3D1827B3B8FF2A8F677A2F /* double-conversion.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0AF837F5FF8B37A2F687B3A1B0940884 /* RNNotificationCenterListener.m in Sources */ = {isa = PBXBuildFile; fileRef = CE5C53A1B492CD6BA850C71383973F6E /* RNNotificationCenterListener.m */; }; 0AFBACEB31E8CB9878295D470B31031A /* RCTModalManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D66376417C047FE531FA96D8FE8291E2 /* RCTModalManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 0AFF41962269C89779046793E1AE0FE7 /* RCTBackedTextInputDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = C6B5FE04EF96F3DBDA6FA2EACB05DA49 /* RCTBackedTextInputDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0B36FBB44F665720229F62FC21CFABAE /* RCTModalHostViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D6700C73A21F270ADADE2937AD41BE0 /* RCTModalHostViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0B7207001D16534DDF0C56E7C6F71B7B /* UIColor+HexString.h in Headers */ = {isa = PBXBuildFile; fileRef = 93FD2FCA283A90F02414FA05025F9086 /* UIColor+HexString.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0B83B8382AA1631C302C6BE3F5CC6264 /* YGFloatOptional.h in Headers */ = {isa = PBXBuildFile; fileRef = 919802DD5EA1842AF2787476A69A3CA9 /* YGFloatOptional.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0BAFAF4887E747EA3A91FED76A3C5031 /* RCTAlertManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5915477795932526EEFC89FBEA7B82AC /* RCTAlertManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 0BC16804FAEBD375BEC98962EA320575 /* MethodCall.h in Headers */ = {isa = PBXBuildFile; fileRef = 78E7BDED4CA237BA0E4E1B8DA70EDF15 /* MethodCall.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -318,27 +320,23 @@ 0CCF45BDC92B6384522785AEDE8F0ABC /* RCTDevMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 3083FD8E4D6460DC8673F63185D156BE /* RCTDevMenu.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 0CE586BF83E29531A0E1FA35876120DF /* REASetNode.h in Headers */ = {isa = PBXBuildFile; fileRef = E2AA0ED6787A5B84B6EE8F547631B88A /* REASetNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0CF293FEA013686D3F2F8067F3713336 /* RCTSwitchManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E9528C15F34FC663E46FCF92A0ABB1 /* RCTSwitchManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0CFB0957C67C24787E5C546936BE3550 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = C7E16FB85FF0BDA0B29022320BDF1B66 /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0D0B0F672F1016D9C9B72AFD4E83E04A /* FIRIMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = D54A835DCAEBC10A120B48CEBA085CC1 /* FIRIMessageCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0D225414A45DFDEDBA19BEB5F0A30704 /* GULNetworkConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F5540001EC3C541DE53A5E0C4D860B9 /* GULNetworkConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0D5AA62B5CBCFDB275A50E0BDC16DF22 /* RNPushKitEventHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 5631191D62E5021A68942E823AA434E2 /* RNPushKitEventHandler.m */; }; 0D5FFF5C460BF47C00EC6A2A4BCB89F8 /* RCTUIManagerObserverCoordinator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4FEADA75A15417B8AAAADA6C46C6DBB7 /* RCTUIManagerObserverCoordinator.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 0D6DAE408F66820DF20E6D416582ADB3 /* RCTBridge+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1275E79B06824B79F8ED750B4F349A74 /* RCTBridge+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0E1B3276561F7EB341FA907EB1A86F04 /* upsampling.c in Sources */ = {isa = PBXBuildFile; fileRef = 88DEDF68D8C60CEAF48D94503FA3FA5A /* upsampling.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 0E620510126D852FC371F7F9178AA6F0 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = FCBA8C8C8D9E02658B2AAA645469C0A1 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0D7E2BB25F84CFE2561BE6FCCF597EF7 /* FIRBundleUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 108CB420FAB407BE3178EAEC6141D97E /* FIRBundleUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0D9556D98C79F485EE8896FC3AC92523 /* GDTCORTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 55ABCD868D69EBB8B226D955E9B65C94 /* GDTCORTransport.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0E1B3276561F7EB341FA907EB1A86F04 /* upsampling.c in Sources */ = {isa = PBXBuildFile; fileRef = C6624A128D06B1B7C27D2FBFA0584A44 /* upsampling.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 0E89AE392BB117EBA5EF898E3D243727 /* RCTView.h in Headers */ = {isa = PBXBuildFile; fileRef = 309BA5AC5996A59987DC5FC2AA555F5F /* RCTView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0E9A96BC607353897B6F33133E636884 /* RCTAsyncLocalStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = D800362A1EAC706DB637DDDA815FCB64 /* RCTAsyncLocalStorage.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 0EAC2ADA214241BD4899DB8B47726FD2 /* FIRAppInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = C1F62027A357E86846B1913AE4D9178C /* FIRAppInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0EB90738C1AEE8890CC35B181C099BA8 /* RCTModalHostViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 354570A9B75704AAC869CD4A66F043E9 /* RCTModalHostViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0F112286F11B894F72C66676A5BAC325 /* SDWebImageWebPCoder-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DDE8F8D657B4AD8D68519848C7E00D6E /* SDWebImageWebPCoder-dummy.m */; }; - 0F199BC919DA606852559D57EF858777 /* GDTLifecycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 13721102B03A8ECF1B4691430FB78793 /* GDTLifecycle.m */; }; - 0F2C29D27A4A81991C787404478AF099 /* UIImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 49D8B4ECBCC3CC3CCA6C5A1B97D266F7 /* UIImage+WebP.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0F0C237F0948F4A86466E10DEA439B7D /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 23AF27BB8FC1D90102AF761B02C48033 /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0F112286F11B894F72C66676A5BAC325 /* SDWebImageWebPCoder-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DAD1EC07061CD01D8DB00C1DF9CBA5B9 /* SDWebImageWebPCoder-dummy.m */; }; + 0F2C29D27A4A81991C787404478AF099 /* UIImage+WebP.h in Headers */ = {isa = PBXBuildFile; fileRef = 30B2778F70E9E7B0D2AE6C69B7F5FA18 /* UIImage+WebP.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0F3C55B3AD23D445D2C973DC06EF00BF /* BugsnagCrashReport.m in Sources */ = {isa = PBXBuildFile; fileRef = 36EA2990DB0BEF0EBFC83DF98C1FD56A /* BugsnagCrashReport.m */; }; 0F3D589E134AAC1A8C2D94EF3BE48EA7 /* RCTTrackingAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 04AF880EA4E6EC46A565A469E7BBF10A /* RCTTrackingAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0F3E8D4BB17DBFF30E41EFB555B29895 /* RCTSurfaceRootView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3A35B3C486393401E3F04F277F938938 /* RCTSurfaceRootView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 0F4D40CEBE58229EC7B0B854D6E5FAD9 /* BSG_KSCrashSentry_User.h in Headers */ = {isa = PBXBuildFile; fileRef = 75FB1004D9B7D67BB87C20ADF2E6B934 /* BSG_KSCrashSentry_User.h */; settings = {ATTRIBUTES = (Project, ); }; }; 0F74D6E0F1A38843AB6578A45C4430F2 /* RCTPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EE0DB3A20DEA4CB06D26C4EED1FA386 /* RCTPicker.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0F7CB1F6725B33F8063BD453A4435278 /* FIRComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 64E3F75CCBF052877127694AF8D51F61 /* FIRComponent.m */; }; 0F9A9B467AFA8D375F679F23590C7A04 /* ja.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 0BFBA628CCFEC71D915A97EFB96799A7 /* ja.lproj */; }; 0FAA30AD698ED824A3B229298FEEA782 /* BSG_KSCrashReport.c in Sources */ = {isa = PBXBuildFile; fileRef = 444FAA0588008314F1EDA1458D4351C1 /* BSG_KSCrashReport.c */; }; 0FB7D0FA0AEE71186610F43B04E89482 /* BugsnagSessionTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = A1D0CBD754DC34F014D38B05008B8745 /* BugsnagSessionTracker.m */; }; @@ -347,76 +345,84 @@ 0FD596FBE550953CD15F5607D99F958B /* RCTReloadCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = BEF99ADC4DDE3984F46775A1AC8A3678 /* RCTReloadCommand.h */; settings = {ATTRIBUTES = (Project, ); }; }; 10168B721987DC2FA1F6508094876B8D /* BSG_KSJSONCodecObjC.m in Sources */ = {isa = PBXBuildFile; fileRef = 679C432647D258664EB921B077656E54 /* BSG_KSJSONCodecObjC.m */; }; 101E1B4ACE356E9F4F94FD5EBB71BE85 /* BSG_KSSysCtl.c in Sources */ = {isa = PBXBuildFile; fileRef = 70E03B7B4E15C9359D458397CC5D05CD /* BSG_KSSysCtl.c */; }; + 1045178BFBC6E58CEDC65E19F91A7CB9 /* GDTFLLPrioritizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 500E76CDFB8113AFD9AC1DB0CB454843 /* GDTFLLPrioritizer.m */; }; 107C4519DAD004793550C86DB342BF13 /* JSDeltaBundleClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F7F35B41FAB9FA37A2B5968D68D8838 /* JSDeltaBundleClient.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1092BB8011776EF67080DC8649C68F22 /* RNFirebaseAdMobRewardedVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 388EC556317ED0A5D2EB3EAE9B62567A /* RNFirebaseAdMobRewardedVideo.m */; }; + 10B88123E4B69BD0762CDB5A90CF066A /* GULSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = 238912792225FCFD2816B4E4CF1D3D79 /* GULSwizzler.m */; }; 10D68B02FDF05C99237E067F9918509D /* RNFetchBlobRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C358DCFDF7DB17909BE6CDF6AE5AFF7A /* RNFetchBlobRequest.h */; settings = {ATTRIBUTES = (Project, ); }; }; 10F2442EBE6313786A5CD8D0DB09736C /* RCTImageDataDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B8FC91299498ED4C8360B3FA9F79E38D /* RCTImageDataDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 110663446F2A96F5275705CA7143F736 /* FIRInstanceIDLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB3943BA57703F03AC1AE6E9180EC2B /* FIRInstanceIDLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; 110686C3B9BFABED7EF510599B8F4BA4 /* RCTKeyCommandConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F783017BFCE6D8957205E2368080555 /* RCTKeyCommandConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; 110BBF5833CF8C4CA65E11D6C0374191 /* BSG_KSJSONCodec.h in Headers */ = {isa = PBXBuildFile; fileRef = BCEAF35223D82BA11CD63E498B46EDA1 /* BSG_KSJSONCodec.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 11129F1CB005A708A117077C32350240 /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = CD7864EB1FCB4EFCCDE103F9D8F50114 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 111BF626ABBCE8E04BB4E1EEB8787C09 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = C98669397B6EB380F73981625F007E41 /* SDWebImageCacheSerializer.m */; }; 1152E236D3BFBB5B1171698F8642FE45 /* JSIndexedRAMBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ACF74694A6631E1862E7387FF1FE94C9 /* JSIndexedRAMBundle.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 116192D11F0F7C27B891EC46BEB67776 /* BSG_KSCrashSentry_NSException.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D673843F637BD65A1677DB94EFD1975 /* BSG_KSCrashSentry_NSException.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 11629DF38EC6C86FE4002B0EF764297B /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = AF56195464AFAF7C34D6F48C7CFF702E /* UIImageView+WebCache.m */; }; 118927A3BC6A658BB88536CE7C1B0BE3 /* BSG_KSCrashState.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AEE2091ED266224B958D1DDE10E9E00 /* BSG_KSCrashState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 11AB86078F205218D679E1C0BB086684 /* cached-powers.h in Headers */ = {isa = PBXBuildFile; fileRef = F6BC72E7DD48A1994CDB1E6FFF3B439E /* cached-powers.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 11B33B2F8BB6CFADE2A5ED140CFEC8C1 /* signalhandler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 971B256811855BF0D6867E3A723FA37E /* signalhandler.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; + 11AB86078F205218D679E1C0BB086684 /* cached-powers.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B60F0B412AB14099AD2E2BCB853B9F5 /* cached-powers.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 11B33B2F8BB6CFADE2A5ED140CFEC8C1 /* signalhandler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 993AC02EC1C111E4334D17D3E0BBE05E /* signalhandler.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; + 1229180557BB3A7AD13E3DC16B283B14 /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = A2CB7B6EE46AF3166A4B3053A322A61C /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1234DA362C104A5687EE842DEE6540AE /* BugsnagErrorReportApiClient.m in Sources */ = {isa = PBXBuildFile; fileRef = B11A55FD8328E6DD365FE8FE004FCBC7 /* BugsnagErrorReportApiClient.m */; }; 12478C3DEA4C049CB9A2CA1CD20C89DA /* rn-extensions-share-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3693EA1280CB5A156C4A5F602F068CB9 /* rn-extensions-share-dummy.m */; }; 125342FA79F416BFC2462CBEB29FBD3B /* RCTMultilineTextInputViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 991F63888F0DADE5B74E325A8A6BCCE8 /* RCTMultilineTextInputViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 126F40666E812A4A6E90817FF328B49D /* RNFetchBlobFS.h in Headers */ = {isa = PBXBuildFile; fileRef = D8138F80FD52EEC80E47EADAFF73B580 /* RNFetchBlobFS.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 127076FAD518DE8F520B404457D45FF5 /* FBLPromise+Testing.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C015C102D6AB79D534F16ADF531CE8A /* FBLPromise+Testing.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1281344D19FA3223B267A1EAA6DEA09F /* RCTDatePickerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1231B98DC8FA463C5147C87F53A7B0CD /* RCTDatePickerManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 12A09B07EAE7194E9F183DF6EAEB4850 /* RCTScrollContentShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = FB900A939C4D5CD6FC137C114524DE71 /* RCTScrollContentShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 12B4CB2B1F8A425ECEA73AABB12E7A30 /* SDImageGIFCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = B3125C414316843B2D464D1AFF4A848C /* SDImageGIFCoderInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 12C621AF654295B051104624EC13F961 /* RCTFont.h in Headers */ = {isa = PBXBuildFile; fileRef = D50D717ED039514E7E3EF72E9ED56463 /* RCTFont.h */; settings = {ATTRIBUTES = (Project, ); }; }; 12DD5DE7278177DF30D74E5E4991BEA5 /* RCTPointerEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = C3AF558283E7E128FB626F24EDADC103 /* RCTPointerEvents.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 12FA7519507285624A8F734D8A3939CB /* GDTDataFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = F1EFD5B46A034F0A431926E8B5FF6501 /* GDTDataFuture.m */; }; 131A4F913E2F1E98913D8D766736C5C1 /* JSCExecutorFactory.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7AA8EAD8C2A634C8B211DCA3C84C4BB1 /* JSCExecutorFactory.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 1328941F49991BEB7900B9FAE0861076 /* RCTI18nManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F0FB6B1D273917FA9C0F1B70ECFCB3F /* RCTI18nManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 1328F683A4C0D079350259A18A68938A /* JSINativeModules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5DC588802B42ED16EAEE7DDAA94E6D8 /* JSINativeModules.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 1340A92BC48BF0D0E320FFD57737B166 /* FBLPromise+Catch.m in Sources */ = {isa = PBXBuildFile; fileRef = 9338EA7FE417C2BDF76DEEE30198B2B8 /* FBLPromise+Catch.m */; }; 1352441B7E9907AD4E56358E520341F0 /* RCTSinglelineTextInputView.h in Headers */ = {isa = PBXBuildFile; fileRef = C4ACA86B0CE6802F5303BB625FF3E0F4 /* RCTSinglelineTextInputView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1354B5A202FE5B927603FE3F3934ADF1 /* RCTNativeModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 517BA8A3ED2645580577976899A3448A /* RCTNativeModule.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 135CA47E90F11A11511D769C60754F77 /* REATransitionValues.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FF4B60E416BC2B631C047F702F4A746 /* REATransitionValues.m */; }; + 13908C215FAF98E1987E6DD3F7A6C858 /* GULNSData+zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C7F9D33807C629347B5CC327303501 /* GULNSData+zlib.h */; settings = {ATTRIBUTES = (Project, ); }; }; 13910E80E165B0FD5041DF222C1B3339 /* ARTShape.h in Headers */ = {isa = PBXBuildFile; fileRef = 62F433C626104248599C9F6319D3C54B /* ARTShape.h */; settings = {ATTRIBUTES = (Project, ); }; }; 13B3A8F3BBFB94FC266C8B2D127F2001 /* JSINativeModules.h in Headers */ = {isa = PBXBuildFile; fileRef = 6803EF30AD795DD46BE07598CF430D32 /* JSINativeModules.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 13CC63F0A5CAA2C7909B84D3C6D4620B /* GDTStoredEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 772A0E739DDA6F457BF35D3662285A59 /* GDTStoredEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 13DB00DEA52829F591682707236F7779 /* FIRInstallationsIIDTokenStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 09A8F5B7DA6974622D6C9A6189F7FAEE /* FIRInstallationsIIDTokenStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; 13EAEB1E6CFD48E9CFE15F88743AC92C /* RCTAppState.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C7E01E3156F2137645C0D6C51F90EB6 /* RCTAppState.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 141CB062270AB0D64040EE9FF7CCDFC0 /* RCTCustomKeyboardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A55F4A869D8A3E299746A434C181C2C9 /* RCTCustomKeyboardViewController.m */; }; + 143514A20BA542FDEC6E1C150B00248B /* FIRInstallationsStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 226470D5AC918D710F1EE1BDBAADC256 /* FIRInstallationsStatus.h */; settings = {ATTRIBUTES = (Project, ); }; }; 14422B587C7D1474F869D259CFF998CC /* RCTRawTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D75317127DCA2E50611CDFF673C98CB /* RCTRawTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1451A870A667B770CA7921A66DF1382B /* FIRInstallationsItem.h in Headers */ = {isa = PBXBuildFile; fileRef = D3ABC6469D72A242803A91AF2DA0B153 /* FIRInstallationsItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; 14660286F6DC6FCABD38E2C1F70CFC01 /* ReactMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = A819EBFAB8718BC7B0C8F260D76861B5 /* ReactMarker.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 14A3CA4B77271ED4415356A1FBA7362F /* dsp.h in Headers */ = {isa = PBXBuildFile; fileRef = 34BF1241D53E178690864E349AD0D6CB /* dsp.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1478C97F0EFA9E58B5A017551A091B98 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = 726CEC5D657E14C2D28E2608DB007104 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 14A3CA4B77271ED4415356A1FBA7362F /* dsp.h in Headers */ = {isa = PBXBuildFile; fileRef = C74C60148A4948BAD446E2F2B11586EB /* dsp.h */; settings = {ATTRIBUTES = (Project, ); }; }; 14AA7CA15F034772E8B2636CFE2A5C85 /* ReactCommon-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6539F776FBDC5E175D59AE2A055A008D /* ReactCommon-dummy.m */; }; 14BCE7072FC4CE33BC35324A78BE2FAE /* RCTMultilineTextInputView.h in Headers */ = {isa = PBXBuildFile; fileRef = 959628BA0DDBCCD75C7AC43F9F4BEF8C /* RCTMultilineTextInputView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 14DD05E4CFBF56241AC5D65134AF6AB8 /* RCTSinglelineTextInputView.m in Sources */ = {isa = PBXBuildFile; fileRef = B28DFCB28C906E2A2ADB0BBBAFA4E945 /* RCTSinglelineTextInputView.m */; }; - 14E29E6C822F8A5CB16A6B5EE716D81C /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 9837BE777B812E8919321296E0674F0C /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Project, ); }; }; 14F9F3C4C0A1E8EF80C71FA3A569FDF1 /* RCTInputAccessoryViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DC44227D6FBEFC40745BD6F81A94947 /* RCTInputAccessoryViewManager.m */; }; + 14FBD8CB3447A6D5C521A0193AF4C43E /* GULNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3000A1D45E185CABEFD0B060F04FC4 /* GULNSData+zlib.m */; }; 15135A9A67B4019F2CC03E7D5FACA0FE /* RCTTypeSafety-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 782FA60B47AB3C13BD5A739B4E7D0267 /* RCTTypeSafety-dummy.m */; }; - 15320769AD3A12888272E5E141BFCC9C /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F5E96D93EA3C646CF7B21BA5C5B356EE /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1536DE229D62C9EF155775D756DD3921 /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C4539C0D5139FA433EA40799F1AC83A5 /* SDAsyncBlockOperation.m */; }; + 153C36E5468C038F1974115A982058E8 /* GDTFLLUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B8FEC8581AD19DDD78ABBB18ECE2F22 /* GDTFLLUploader.h */; settings = {ATTRIBUTES = (Project, ); }; }; 154C752B3AAEDBCD978036AE32CAB1BD /* RCTValueAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C89C4FC2E607369BF79A14FC2B68643 /* RCTValueAnimatedNode.m */; }; 1557BAF14C9A6976E7C40616CCA7944C /* JSIExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = E7AFB949AA68523D3816D43F5D0B6829 /* JSIExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 15AF61B7B72DD93E6B1F6FC5B420F7DF /* Yoga.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BDF14C570382A8C3638F41F2E56EABB /* Yoga.h */; settings = {ATTRIBUTES = (Project, ); }; }; 15B714B84953652DA8EAD8B5661F5D17 /* RCTActionSheetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 794262CC6F2E3398361EF16166E8B3B2 /* RCTActionSheetManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 15CAF5C633711E2C121CC6A30FEB1848 /* UMUtilitiesInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CBEBBFD992C37A25A483B4EBEF43B1 /* UMUtilitiesInterface.h */; settings = {ATTRIBUTES = (Project, ); }; }; 15D79F4277BA759EC85E7DD868E3A4C4 /* RCTSwitchManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 42DF9032CA32383CC1CF121CF6BEF124 /* RCTSwitchManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 15D7CCF59D45A8AEB4224BD291FC9910 /* huffman_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 71D84307C5CFE93C1EA2452F993A5334 /* huffman_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 15D7CCF59D45A8AEB4224BD291FC9910 /* huffman_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C4857A0842D2EBB815D30CCE3A20B92 /* huffman_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 15F44C32023C26032714E53545E8B3F5 /* RNCWKProcessPoolManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FF61105B6BE647061B73DB8202543064 /* RNCWKProcessPoolManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 15FA0CEC28541CA4EF930A1163CEAB50 /* lossless_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B3821D4D649D9795E1609C4D166AE59 /* lossless_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 15FA0CEC28541CA4EF930A1163CEAB50 /* lossless_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = D93D3654709D1331D79514EC1B960450 /* lossless_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 164A3F991FCC1341F1E46E003371F224 /* RCTSurfaceHostingProxyRootView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0B3ABC7A04102C3F682D13E316B99260 /* RCTSurfaceHostingProxyRootView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 1669AFC658678BE6CCD8B55B48F9C97E /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A06434A333E319EE6F329F7AD16700F /* NSButton+WebCache.m */; }; 16899D5B9029FB6D5A400783A624C1C8 /* EXWebBrowser.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D97133D0DF5D8D360CB13EED21FEA64 /* EXWebBrowser.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 168EBAAD25584C70CA9111D5CCB8180E /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 18083C0F8FB874B63881DB343401FE81 /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 169B31B58BC0F2BBFA82EAC8F165F361 /* RCTConvert+Text.h in Headers */ = {isa = PBXBuildFile; fileRef = 258615144280F905E5F66A4A8335502A /* RCTConvert+Text.h */; settings = {ATTRIBUTES = (Project, ); }; }; 170322932D8FC0F02AA360A25D994D98 /* UIResponder+FirstResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = 053B4C49FB9C5527BDEBBC3C97992335 /* UIResponder+FirstResponder.m */; }; 1728749B028AD1D781945AAA91BE736E /* AudioRecorderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EE0EFB192D6A4057750293E76172B93 /* AudioRecorderManager.m */; }; 172E676A7EEA5B4EB058AFE8453B62C0 /* TurboCxxModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 49348BFD9292A3FF67B1B65C396AB7EB /* TurboCxxModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 173B9B2399E756F996763591588AFE57 /* RCTNativeModule.h in Headers */ = {isa = PBXBuildFile; fileRef = C355DC38001EC1DC404881B238ADC3B4 /* RCTNativeModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 176E21BC9C50FFBB8929F3C72F7E3241 /* RCTBorderStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 15D44666109AB3610BC6DEF28C5CA237 /* RCTBorderStyle.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 178E75DE2938CCFCEE8DE1C3A13FB126 /* GULReachabilityChecker.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3844A27E41E7C5F10BF14FC9A7929A /* GULReachabilityChecker.m */; }; 17A36219C987CD12C5A1C50EA590D11A /* EXReactNativeUserNotificationCenterProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 94074BB665964C130EF3AEAD5903C1F7 /* EXReactNativeUserNotificationCenterProxy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 17D2A3D9D174A9BE8815BCA3EC73B4CA /* GoogleUtilities-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BF904877DC532C867E65B62EAB5AC8DD /* GoogleUtilities-dummy.m */; }; 17DFF9A451798288365E8AB8A0784530 /* RCTScrollViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A2968C02EB2F9DA9CFE11523D853F0E /* RCTScrollViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 1832399A5D86191FBC62039FAA886F24 /* EXWebBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = B96641B5D9DCA4C6DE1C0D7235BAA942 /* EXWebBrowser.m */; }; 18508BF0F3BB7FB5771E7208D859296F /* EXHapticsModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 8330AEDA932A6AD8E031EF0C641E5DE7 /* EXHapticsModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 187D94A9F0B845CEE3B305C8ECBA9A13 /* RCTScrollContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = E09BBD190BFD8F1D383C10221631F5DC /* RCTScrollContentView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 18E054C5BBDA83CCE21A718C8DD17262 /* Unicode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D4576431923B32B28E848D30EB34BD00 /* Unicode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 18A68BC1A619AFFD7CCB45B0AEB98715 /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CA3042722DE6BE862DDD182F6A65072 /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 18CE7AC942DCECCDCE8C8153D7CA9E2C /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0078CF9DAC8CC4187F6E291B8F51727E /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 18E054C5BBDA83CCE21A718C8DD17262 /* Unicode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 05D21B2E62B525961EA9BE1309FB1D32 /* Unicode.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 18F803F363DA4D252D73E4C3C33535F6 /* RCTShadowView+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DA9AAE44CF3B1F9CBD5F932B34C3A912 /* RCTShadowView+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 18FF465AC2ED82AD0A5A0501AACD0956 /* BugsnagCrashSentry.m in Sources */ = {isa = PBXBuildFile; fileRef = C486485423B3730492ECFD48D1453907 /* BugsnagCrashSentry.m */; }; 1921059D97551DED6DBBA916DBA150C5 /* QBAssetsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CA80193E1A0EDA3D3A4B103FC31B051 /* QBAssetsViewController.m */; }; @@ -424,13 +430,17 @@ 1948B4CBDE4703BC5BDFB832E73A0A1D /* UMViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A5E31C57EE60147EDAAE3E31B1D19AC /* UMViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 195EDF63D05599454DC50CD6100A1D14 /* RCTPerformanceLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DC6AB09782FC3C60D8E082174E26072 /* RCTPerformanceLogger.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 19A77F5198AE35F6170EF743E166358A /* ModuleRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 304DA1D0C363EA0FC991F52EC05BAB2C /* ModuleRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 19B3BC4E2828FB30D6FE19E66BBBC724 /* token_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = F73448C5E41D0B6AED5A89E493E41FDC /* token_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 19B3BC4E2828FB30D6FE19E66BBBC724 /* token_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = A99DA828BE8FDFE29CCA18FF1A666E27 /* token_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 19BB6A5959515A1DBDDC1B41C2E63739 /* FIRCoreDiagnosticsConnector.h in Headers */ = {isa = PBXBuildFile; fileRef = 52CDBAFD1C6554282FCD586FFBA8FFFD /* FIRCoreDiagnosticsConnector.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1A02EAB59D9B047FEBAC7C67C5DF51E5 /* RCTSurfacePresenterStub.m in Sources */ = {isa = PBXBuildFile; fileRef = 69B055354EAE4BA62853C728881ACD3A /* RCTSurfacePresenterStub.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 1A10FA3F9DF4CDF788BDB424013C402F /* RCTSpringAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F4DE1B54DC18B7BBDAE769BF3FDFB56 /* RCTSpringAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1A1290C7A860E755FC08591CB199176F /* CxxModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C97DDC0573F567F53412E83F064BC52 /* CxxModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1A39045EC7A8504580AEFC75EDB56CED /* EXVideoView.m in Sources */ = {isa = PBXBuildFile; fileRef = 325884761AB5F277A663E791EA9E1138 /* EXVideoView.m */; }; + 1A491A5EF79205088E6544696C92D02F /* GDTCORTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 92839ECA01AD51593C6AC08DBD9EBCC2 /* GDTCORTransformer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1A8C26E48B802ECAF127BAB17E884ABA /* FIRInstallationsStoredItem.m in Sources */ = {isa = PBXBuildFile; fileRef = C7EFB60008DF9B71E0BF22DE8B9F1110 /* FIRInstallationsStoredItem.m */; }; 1A9087134F848791F290A446F14D53BA /* react-native-notifications-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A82C63712B42E185D5C270BBDB629E32 /* react-native-notifications-dummy.m */; }; 1A91DAC8DA3EBEAA0D5111513D568D69 /* RNUserDefaults-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FCCF3DEE4FAB690782F0F7F0ACA51C41 /* RNUserDefaults-dummy.m */; }; + 1ABA2B507962FB92E51A2CA70A819741 /* FIRErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = F43FC1D38479CA8483FA503030EE4B5B /* FIRErrors.m */; }; 1AC5F470D468CCBF2A8B1D2FC1CA7A01 /* RCTDecayAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 927C17DD6B309124DF54EAD8D4F887E9 /* RCTDecayAnimation.m */; }; 1AFB7660AED3CB914CF01D42131CECAD /* RNFirebaseAuth.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F318A1FC11A1A8E05DDD499EE7F877C /* RNFirebaseAuth.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1B0BF1AFE2A309247EC3F75FFF585413 /* LNAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 9554C2907C9D9E8F76D8D70EA7EE6249 /* LNAnimator.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -438,40 +448,46 @@ 1B11B7875E992E06B9CF0335A921EA94 /* YGValue.h in Headers */ = {isa = PBXBuildFile; fileRef = B99E5695594CBE8CFD931027DD3C667C /* YGValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1B72DD3B96B82F7387FC92F861EB8BAC /* BugsnagSessionTrackingApiClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 69356F2622014AF7DC2A3EA2A07BB2EE /* BugsnagSessionTrackingApiClient.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1BB646B47D3E345D72B5CFBDE7DAC2EA /* READebugNode.h in Headers */ = {isa = PBXBuildFile; fileRef = DBCA195BCAFC9C66DBE902BE6B9EF2E8 /* READebugNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1BB7DF35DA8BC3E5E76D9ADB62B3BAC6 /* lossless_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = FA224BD245F6880CF82A97B34F57EA47 /* lossless_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 1BB7DF35DA8BC3E5E76D9ADB62B3BAC6 /* lossless_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = 32964D290663FAA0AEFD17DAEBD90947 /* lossless_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 1BD314A43A3B0FD30BACF7FB0DD8E89E /* REAAllTransitions.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EECAA76F5023729BF7A8A99CFF1F073 /* REAAllTransitions.m */; }; + 1BDF6BD96EE33DE39DB37AB25232CA12 /* FIRInstanceIDAuthKeyChain.h in Headers */ = {isa = PBXBuildFile; fileRef = F3EA4E1C67B5BF8BD4E1E55A6409EB28 /* FIRInstanceIDAuthKeyChain.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1BF065CBF59F4DBF141D3E85E32C7599 /* RCTBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D3ACA5DF26B64D8BFB86382C59C225C /* RCTBridge.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 1BF555E94A7BE625ACB1CF2549EA79E4 /* RCTObjcExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCC74BBCDD1FFF31B5B035F9074E4CF /* RCTObjcExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C5BDB058468D11E68A6B18163FAFD43 /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AC3610A19BBC0F2EACD04CBA96AE998 /* SDImageFrame.m */; }; 1C7684185263BD3216BDDDCD068B795D /* BSG_KSCrashSentry_MachException.h in Headers */ = {isa = PBXBuildFile; fileRef = 4375BD13925DDD566F3381489293DE18 /* BSG_KSCrashSentry_MachException.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1CC75EE4B0889B7CD5ABC6A55A77378E /* RCTUITextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F3001C57F8CC737DBD4A431068E0CC5 /* RCTUITextField.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1D0E9D473AE2CA5B3C418987B185FD40 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = B6B1C72E3F0EB30F5121B546F5090E9A /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1D286B93CF69BD522436DB068478A6F6 /* RCTSourceCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AF7C413C7FA2654A5538A174E57FF11 /* RCTSourceCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1DC21330146F0910DFE00A496CBC37E5 /* RCTTrackingAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 07460367788943CC87A5DEBC9F0BE2A6 /* RCTTrackingAnimatedNode.m */; }; + 1DC47F2B7B43257E19EC099965EC544C /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7612B1F9763549EA1DC383D43FC8950C /* SDImageAPNGCoder.m */; }; + 1DC8D5909F0CC6F24EF0084ECF759D64 /* GULUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BE1EB0C0D097F1CEF044EABD60FA2B0 /* GULUserDefaults.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1DCC3147F0B0324DA6BEFF22166809C5 /* RCTUIManagerUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = F1591CF497A71B0B4B05EFD3E3656A52 /* RCTUIManagerUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E39EB7CE27A1A84AF4831760FF1A643 /* FIRDependency.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D8FD8F174DBC0600594D0ACA475512E /* FIRDependency.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E6C0F4ADDB7C8B2B268AB3794E30791 /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = B30EC1C70EBBBF1AE74DCF889632A04B /* SDWebImageOptionsProcessor.m */; }; + 1DE2ED65A6C32CF6CC486B9DD6BEE45D /* GDTCORTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D432FED92D53468BB148EBC674FF927 /* GDTCORTransport.m */; }; + 1E9BE88FA1550744658E5DF4C5E27E30 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = A6C7344EA1DD6836B5D82E682D0A59D7 /* NSImage+Compatibility.m */; }; 1E9D0476202EAFDEC48D83008CD69D7E /* RCTEventDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D0BC95ED6BBB430597CE23C417B542E /* RCTEventDispatcher.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 1E9E9841ECD43A7B59D4B9C4A24373CD /* RNSScreenContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = C8CDFAE1DC19C13D3DA945619871BD92 /* RNSScreenContainer.m */; }; - 1EE29AF938E8A2AA9DB15EC2CF341FA8 /* FIRCoreDiagnosticsDateFileStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B86658594281C1E99C699518F4B8838 /* FIRCoreDiagnosticsDateFileStorage.m */; }; - 1F0C67962D2BB44987FD1B99593098A3 /* strtod.h in Headers */ = {isa = PBXBuildFile; fileRef = EED9275A1D632EBAF320EF1A80E7B5C2 /* strtod.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1F8BD67D3120D5BB19A1CB41C1B94BB1 /* FIROptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 58C1F1702169DF372D6719CB18B37FE6 /* FIROptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1F0C67962D2BB44987FD1B99593098A3 /* strtod.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B408AE390C2CD577F7EF23E9F2D97CA /* strtod.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1F2F9B4108921F0391A9CC05C304D013 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 70BF969C7EE75D6BABCC43461AAEF644 /* SDImageLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1FBA5703F009E2F9E3B454CF8B31AA2F /* NSTextStorage+FontScaling.m in Sources */ = {isa = PBXBuildFile; fileRef = 615B854A67C7167ECA294B3EA4483A71 /* NSTextStorage+FontScaling.m */; }; 1FD3F9BD427A14B0A7DBE59A9ED28AEB /* QBAssetCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DE079E5E70B4BA4B86DB31EFEA492E6 /* QBAssetCell.m */; }; - 2001857FBC4E5A92A474A1694AE23BD6 /* json_pointer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6219DECE46FCBA0B37B214302C278F1 /* json_pointer.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 1FF2393253B66E225DBF6E7B48F3860C /* FIRBundleUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = E2FDE91FD70FFC43E88F683DC84004E6 /* FIRBundleUtil.m */; }; + 2001857FBC4E5A92A474A1694AE23BD6 /* json_pointer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08ECB6371492FBD46314AE3703CD8DAF /* json_pointer.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 202AAEBEC0D471F0AC6005E0ECEE1203 /* BSG_KSArchSpecific.h in Headers */ = {isa = PBXBuildFile; fileRef = 46AFF8864BD2A72064697C0A599996A6 /* BSG_KSArchSpecific.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2060620FDFF5B1A5D8C07E8EF403882E /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = E76F1E8AD66134342407C6C7C3FD17A8 /* SDWebImageDownloaderConfig.m */; }; 206924EB5DF82EE6DD0FCCF6588714D2 /* UIView+FindUIViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FD79D0F338295E977F4D316A76EDFFD /* UIView+FindUIViewController.m */; }; 2070FF6A8B3C8ABBD14E748FC74E8231 /* UIView+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B244A2A0B9030A23EFCCC664D154DC51 /* UIView+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2076F59F6E240771A5E9CFFD8205AAC3 /* GDTCORRegistrar_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 78D16CA96B3633E9D5C63D2D8DEB3AFD /* GDTCORRegistrar_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 208F0F89A59307CFD4DBEE7148C57E22 /* RCTImageLoader.mm in Sources */ = {isa = PBXBuildFile; fileRef = AC251573210046CA55ECE59BC216F8F9 /* RCTImageLoader.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 209B337BCC8D29242D29EDFAE0AC53E7 /* RCTSurfaceHostingView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 678B533B72684A0D8700B5E2E66C5D4C /* RCTSurfaceHostingView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 20A3DBEBF84B486EEB93BD75A146033D /* REAConcatNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EB8D3B71BF713EDA4402769F375825 /* REAConcatNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 20A5F474212746352B444046C98E45C2 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 85852013697E914BA35F277826FB9CEE /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Project, ); }; }; 20B2CC1FA97984EE397092FF8B25018B /* ARTGroupManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 57264E8B1036FFCCC26FD7A98BC652C4 /* ARTGroupManager.m */; }; - 20B48F4438783B90D6ADAB673582DD9F /* GDTUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = 42EE7E5F427054E1DC3D903A71DF485E /* GDTUploader.h */; settings = {ATTRIBUTES = (Project, ); }; }; 20B95512DF1DDE97DC9AB8856B976D55 /* RCTBlobCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CD28EB1C5665AB87CD4B715CE0C3EC7 /* RCTBlobCollector.h */; settings = {ATTRIBUTES = (Project, ); }; }; 20E395C9875740A8A614B3B3F1739656 /* RNFirebaseAdMob.h in Headers */ = {isa = PBXBuildFile; fileRef = C887A99E09489A56DE2379D37D1AA86E /* RNFirebaseAdMob.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 20F03A0EE0116A9EDABC5AB21DC39778 /* GULSecureCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 76248F9402D4DD786D6A8E7AA04A7A4C /* GULSecureCoding.m */; }; 21227AB74B4FBEF7FEE5EA1C0AEA6708 /* RNFirebaseAdMobInterstitial.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FA1D4486566CBD662DF2E1BA3D046B8 /* RNFirebaseAdMobInterstitial.m */; }; 214C64C44656A5B63CAF20CF8DDCAD76 /* BSG_KSCrashC.c in Sources */ = {isa = PBXBuildFile; fileRef = 4F544C6F4427F61DDF85089E22844A7F /* BSG_KSCrashC.c */; }; 21B97B8F1D7EE4D61F5ED7BA11086BAA /* RCTMultipartDataTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFAA9D3ADEE4875D364F0EA50C4098C /* RCTMultipartDataTask.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 21DCB3C8CBBB0BDCA5B2F4F7D875A352 /* GoogleDataTransport-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EA1D92B58046A683FB99792F54C738E /* GoogleDataTransport-dummy.m */; }; + 22136FA91117A1F7ED3FF91BBC609979 /* GDTCCTPrioritizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 037048A23ACDD15887BD75AFB6F14662 /* GDTCCTPrioritizer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2257612A49356B139C85021FDCFEA687 /* REAAlwaysNode.m in Sources */ = {isa = PBXBuildFile; fileRef = EA0BFB9CED579761C61A19D4B239A6D8 /* REAAlwaysNode.m */; }; 227134EEB40138501F42DCB74D501A8D /* RNFirebaseAdMobInterstitial.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EDBD7760CAAD0BDC4B18C56EE630607 /* RNFirebaseAdMobInterstitial.h */; settings = {ATTRIBUTES = (Project, ); }; }; 227182585B91FF43E82847A96669088C /* QBAssetsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 90CED7693DC05D50A140637839883E72 /* QBAssetsViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -483,449 +499,487 @@ 22C92FEB3B04579CFF0378E618DFB3BA /* RCTPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = C29328094405CED92A7C7819B81EC90E /* RCTPlatform.h */; settings = {ATTRIBUTES = (Project, ); }; }; 22CEFC35D6BE5B9099CB736853ACAC54 /* KeyCommands-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FF34E16BF85DD97F2E55FE764F2285B /* KeyCommands-dummy.m */; }; 22FBC041FA6BDB8D31F52C96B4D0A174 /* RNBridgeModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A11CFDE7065490F90641B26838FBD7D /* RNBridgeModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 23179720D87885A6C7BCFE8789B76AFF /* GDTCORTargets.h in Headers */ = {isa = PBXBuildFile; fileRef = 43670C6003CB892BF4EEBCCCCF5B1628 /* GDTCORTargets.h */; settings = {ATTRIBUTES = (Project, ); }; }; 231AE8A6F71E9002C1051DE440D06378 /* EXVideoManager.m in Sources */ = {isa = PBXBuildFile; fileRef = FC803D1BE9A2CB384D5AAB212AFFCFB6 /* EXVideoManager.m */; }; 232A5F0ADAC6F28BA824008C57E88A6F /* LNAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BA0CDC92F4D7E062A8E3BD5ECA5BFFA /* LNAnimator.m */; }; + 23314833370A97855835848E48AF9CB8 /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 6689EFD327C141249C36F84B370FCC15 /* SDAnimatedImage.m */; }; 23B2B5118824C36E0A8F3FCC2DE98C3F /* RNNotificationUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = CA225D5A2E6D717CD7870ED6432FA37F /* RNNotificationUtils.m */; }; + 240F76F7437478A24B599EF0EB8A0881 /* FIRInstanceID_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 28FAFC7FE3AEBCDC53B7E984681EB602 /* FIRInstanceID_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 24245B52141EA46A7042F4BE99AEB86E /* RNFirebaseNotifications.h in Headers */ = {isa = PBXBuildFile; fileRef = 978DACD044797636B6F45E9EE5148512 /* RNFirebaseNotifications.h */; settings = {ATTRIBUTES = (Project, ); }; }; 243E5A16194B1BAD6EC6D914F6D1AD3A /* RCTCxxModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 45B38EB267EC8DC49342BD5DF77B29E3 /* RCTCxxModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2455449FDD13A5BD6B015D9B25207EB9 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = 9113EA59A61B4CBF5ED6E953CCFA9F01 /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 24570C884E7B05506960B1ADE2EBA32E /* demux.h in Headers */ = {isa = PBXBuildFile; fileRef = F789322912D13D98F15BEB706E0A630D /* demux.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 24570C884E7B05506960B1ADE2EBA32E /* demux.h in Headers */ = {isa = PBXBuildFile; fileRef = 2536DE7D124E9784E2285002DB68F17A /* demux.h */; settings = {ATTRIBUTES = (Project, ); }; }; 247AF2B7F6D31B2F8D692A841B08815F /* LNInterpolable.h in Headers */ = {isa = PBXBuildFile; fileRef = 405EA870C2BB4F89E5D6CD159F4CFA9E /* LNInterpolable.h */; settings = {ATTRIBUTES = (Project, ); }; }; 24B97F4F26D06C097C3E12F6B68F04CD /* RNBackgroundTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6467BFC418094BBA82ED699AF2F84AF9 /* RNBackgroundTimer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 24C7E525A367ABCB6718748137DD44EE /* RCTKeyCommands.m in Sources */ = {isa = PBXBuildFile; fileRef = E99AFBF30A3D56FE587EF4FDA58BDAC4 /* RCTKeyCommands.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 24DC681EB1AA4E65ADA6DF92E3F69D9B /* BridgeJSCallInvoker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5D376DCB0CBDF7412C0B00C8968B66E3 /* BridgeJSCallInvoker.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 2520BA6FFB511E1F3B13760E919E35B9 /* BSG_KSCrashType.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B9F452F697190C881B95C6137E24274 /* BSG_KSCrashType.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 25464C199156B6F34863455C64857399 /* bit_writer_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 38A4FA5B11D3DBFA1186FAB230AC87CA /* bit_writer_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 2565B9310EC364F58EDF6D7C3E9D9E74 /* bignum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9307A5FA57000E38FBF9EC08FFF8A2BF /* bignum.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; + 2521216CE078E953104465D53D96B1AC /* GDTCORAssert.m in Sources */ = {isa = PBXBuildFile; fileRef = CB0E66A3C33EB8EEC21616C116ABB4A4 /* GDTCORAssert.m */; }; + 2538800F60EA068402CA799DB74EC4BE /* GDTCOREvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 921B01A30EBFEA00540CF83973A575F9 /* GDTCOREvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 25464C199156B6F34863455C64857399 /* bit_writer_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 5890F013C17AD08F673E9838E1CBC85D /* bit_writer_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 2565B9310EC364F58EDF6D7C3E9D9E74 /* bignum.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5EE46B386E95AC9FBBEE856CF2383198 /* bignum.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; 257E5695DD14352106A5F9F2324F7403 /* RCTImageBlurUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A8DFA1F864C62F0877DC2857424EDD7 /* RCTImageBlurUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 25C10CF7700C88922C4053826BE8422E /* RCTPicker.m in Sources */ = {isa = PBXBuildFile; fileRef = F3BEBAA5D1ED553CB8FCF2B22DF6606C /* RCTPicker.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 25D1EE7FFDCEE0EBC3F03EB316E69F59 /* RNCCameraRollManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 53D6DDF8F37CA9BCAD772E6D5DA49295 /* RNCCameraRollManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 25E00F43E1EDF928FD21D8275DAD3A20 /* RCTRefreshControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A49957A6E59C86F1A4F1583FB7FD8F4 /* RCTRefreshControl.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 25ED384032B9D13C5127B75C00C81489 /* BugsnagApiClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C57C3B759A5EEBA851D9DEC243E07D0 /* BugsnagApiClient.m */; }; - 261E1575F07D66992D6993C4AB9699F0 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA2D4D1364530875FFC9C34F5E9DFCE /* SDImageCacheDefine.m */; }; + 261F32A1FA02D5BF8B24CB71FD71F10A /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8047865EF52BDB8F74E450253525FD98 /* SDImageIOAnimatedCoder.m */; }; 263275AD02EEDA619AF605D8A57C8549 /* RCTView.m in Sources */ = {isa = PBXBuildFile; fileRef = D89B07927047B4DADE70F271874C1179 /* RCTView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 2672B79116AA34F158A2BF9BCF83F014 /* GULNetworkURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = A90EEA3E24B6338A093526F3631E6B57 /* GULNetworkURLSession.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 26CDA6E509270CC32B1FF34C4F7D0DA2 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A09930B6AF4D29B74B05A4AA77C3AAE /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; 26D5892C49257B552E50E5D953378DB1 /* RCTUIManagerObserverCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C936AB33DF656FAF2C5EAB8138CA869 /* RCTUIManagerObserverCoordinator.h */; settings = {ATTRIBUTES = (Project, ); }; }; 26EADB2B1F91B0E98325CE377339AB6C /* RCTI18nUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 772720108593E953F4093B30981FFD2D /* RCTI18nUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2705398BF3B9198CC897D23D396A7586 /* RCTVirtualTextViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F095906BDA3965C76D41B3547C91D8F5 /* RCTVirtualTextViewManager.m */; }; 2707704D222AF75C77C0C75D36884A07 /* RCTAnimationType.h in Headers */ = {isa = PBXBuildFile; fileRef = 60133F456FF78804F9AEE4D2C3B11678 /* RCTAnimationType.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2765C99C5AB7A70535A4695E30345CA9 /* RCTConvert+ART.m in Sources */ = {isa = PBXBuildFile; fileRef = 28A951EB4F09E6AB0FE2D903F6DF0CB5 /* RCTConvert+ART.m */; }; 2767B6F483EB91FC1AF72B9E56C9EA93 /* BugsnagFileStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ED0B61A0303FB3177736862FD78448E /* BugsnagFileStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 276EA1438A750B1EB0094AC03C85B9CA /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 70890F33DE7A2F89F7A6D02F11156613 /* SDImageCachesManagerOperation.m */; }; + 27905779CF00AA72248BCE35B952D351 /* GULAppDelegateSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = 921C25810B4533D9E001D73370A577B6 /* GULAppDelegateSwizzler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 27B32BB91B5592AA463BED8039D4A34F /* RCTBlobManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 376ECD23699FC3A77877C59FAF661064 /* RCTBlobManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 27C1A69C52BB15DC67850E468B12D649 /* RCTExceptionsManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 565940AB6D57C8F2B22C29AEA65242DC /* RCTExceptionsManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 27C583D37081F7F3510722DF66158B32 /* RCTDataRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 23CED23C3BC4B8F1C25E48EA10AE1A89 /* RCTDataRequestHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 27E5457CDA9A021B29AF532A8477DAB0 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F3FA0B1FB5B9C2F68BBAD227716F23A /* SDWebImageIndicator.m */; }; + 287E7C771C9169D90BC1BFCA9CED0679 /* FirebaseInstallations.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0B134B634581BF0AB4FFB905334766 /* FirebaseInstallations.h */; settings = {ATTRIBUTES = (Project, ); }; }; 28927F940A72BCEB4A44F42EFBA0B02C /* RCTTextAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = C88FF80CF46E6A7B8FF8FD176C8397E0 /* RCTTextAttributes.m */; }; 28BB381A7C6B3B83811D50FE70E938DD /* RCTComponentData.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E92E29D5A6756A75844E6E90EB02976 /* RCTComponentData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 28DE633C2791D8880A18411419955E80 /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = A88DF20441288B71F15D147211C1C64B /* SDGraphicsImageRenderer.m */; }; 28EDFE782C03971D26A94DABC42882E1 /* RCTNetworkTask.m in Sources */ = {isa = PBXBuildFile; fileRef = B7F0074FC2D8A9EA66D202D5DCE0A2A5 /* RCTNetworkTask.m */; }; 28F5181CAF14D2F0597691A3E405F985 /* RCTConvert+ART.h in Headers */ = {isa = PBXBuildFile; fileRef = 306350DC6B344211A1A7511A3235860D /* RCTConvert+ART.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 28F938C614393C2E27ED714D9579FC8E /* rescaler_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AA57940434E3AAD7AEEE00A590613E6 /* rescaler_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 28F938C614393C2E27ED714D9579FC8E /* rescaler_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = D8183FDF6CBBC2458D910575E0B9AE45 /* rescaler_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 294DF61467891D4A15B8BE8DA7B249C8 /* FIRApp.m in Sources */ = {isa = PBXBuildFile; fileRef = 0162C892BDD766E04E2714F47090AB60 /* FIRApp.m */; }; 2971D2756E69D3A1B1B0B05CB44883FA /* RNFirebaseDatabaseReference.h in Headers */ = {isa = PBXBuildFile; fileRef = 723F636C015B98033D45BBB786F18DAD /* RNFirebaseDatabaseReference.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 29B5E0AD4C8BD0DB9E1BF5D8AD913CED /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 28FD7F961165BA72E393450F992F2048 /* SDWebImageManager.m */; }; + 29BC45BF5AE5015D46B969B85561BEA0 /* firebasecore.nanopb.h in Headers */ = {isa = PBXBuildFile; fileRef = A15D9453B10C17715504A05E32605847 /* firebasecore.nanopb.h */; settings = {ATTRIBUTES = (Project, ); }; }; 29BE103541578385234026751F8ACE67 /* RNRootView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E16F32AB7DCAAD31BCA1ABF27AD35118 /* RNRootView-dummy.m */; }; 29D9E419C855902AC95C921BDC6A1124 /* BugsnagErrorReportApiClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 90DD67F63242CF1116E18DA6D1483E77 /* BugsnagErrorReportApiClient.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 29EF263F0219112B7A83EB6282AC6BC8 /* FIRAnalyticsConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E799F0463BF1E9CB29AB2DD41EB7846 /* FIRAnalyticsConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2A0924AB7815CCF0A58FF53C9F9DD715 /* RNFirebaseNotifications.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0615B53F7227CA93A036AB3700D8B3 /* RNFirebaseNotifications.m */; }; + 2A0CFDAFE1D323DD59F8CC55D2BF21A2 /* FIRInstallations.m in Sources */ = {isa = PBXBuildFile; fileRef = DC834FE770DBAFD4CAD544AB5F592ED4 /* FIRInstallations.m */; }; 2A271C1605508A90C3BA1EAB6BAADC3E /* react-native-document-picker-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F19F79B8441F90165D2F5B44C1CF1A88 /* react-native-document-picker-dummy.m */; }; 2A6155E5BEB10B758FA689BF7FE14AE8 /* RCTVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 10250D78C60056D203D235E04EEDF191 /* RCTVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2A96EC20BE6E26342579B6EEEEDE35BD /* jsilib-posix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD4EE6B665100A595F0DC9AF28ADE115 /* jsilib-posix.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 2AD4C462CA3933A8FE83A9AE6C424AC8 /* GULAppEnvironmentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DCB7B74B4C2EC6C5BAFC108D409C754 /* GULAppEnvironmentUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2ADFF29E38F4061AD30EE837833ADAAC /* RCTSliderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0552660F46727BD283F8A428044D8013 /* RCTSliderManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 2AE22261C2F0CC82CDFBB9435346A3A8 /* RCTComponentEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 985950B5EA8B80D858D6759A4C297DAF /* RCTComponentEvent.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 2AF1ED3F44A359AF4E731231E6CFAFE8 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C599D37E0638CACC8F72727A8ACBC6E8 /* SDImageCodersManager.m */; }; - 2B18BA16E70FB8CE8D1CBA9F53F02241 /* GDTEventDataObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 236BD84A3D7A0BCA0879CEFAA83975BA /* GDTEventDataObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2B4B674BADB4E8A18006C2676BA1EAE5 /* RCTDevLoadingView.h in Headers */ = {isa = PBXBuildFile; fileRef = C3311B35B5431B68BDAD6D00E792EA16 /* RCTDevLoadingView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2B57AD2AFDB9147504E562E1E6F17751 /* Bugsnag.m in Sources */ = {isa = PBXBuildFile; fileRef = C382C4B6DF1722D9953FF2B3DCD27F4E /* Bugsnag.m */; }; + 2B59524284711BD287A3812E9E981486 /* NSError+FIRInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = 325C4D831CC5588DA91A39FF53FA5BB0 /* NSError+FIRInstanceID.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2B5B62C5708555CC396B26DEA29C08AF /* ARTShapeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = ECA1FB0F407E17C0D9E1776F51DB8395 /* ARTShapeManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2B7AD03BE3907FBE6A6161BE67B9585E /* BSG_KSCrashDoctor.m in Sources */ = {isa = PBXBuildFile; fileRef = F06E69D19CB17124A98CAC4A351F247F /* BSG_KSCrashDoctor.m */; }; - 2BCCAFD974059ACAFC22F751ECDD2AD7 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C312E4CB1D08B208EAE28642C3490978 /* SDImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2BD172C6FB7DF31CC3EFA3CE085B4126 /* predictor_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 693DA1F565A6FF66C8393EEABBBBDE86 /* predictor_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 2B8F067276102FA6915006D607D487FD /* UIColor+HexString.m in Sources */ = {isa = PBXBuildFile; fileRef = D7593711A2E6EAD105E206B03D6E3616 /* UIColor+HexString.m */; }; + 2BD172C6FB7DF31CC3EFA3CE085B4126 /* predictor_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = F41672D8B6EA45CF462409479614FB31 /* predictor_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 2C0C31B7505BC8E94D6FAFBE26E70005 /* fr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = B6B7BACA996C70663A94C0AC4B349908 /* fr.lproj */; }; - 2C301F59E16291961A53C6EFE487CBA9 /* FIRInstanceIDTokenFetchOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 90EF6699ACCAB7C72CD5324F892A9215 /* FIRInstanceIDTokenFetchOperation.m */; }; + 2C2703DF3EEE37D3A30ECEB1DCD36D94 /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 9823CB2C7479BFFC9C9AA170BD0CBB10 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2C3B70E550F6BE498EA5F00CBC159890 /* RCTDataRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 52C5B614F2C0CF9203952EBBEA501F8B /* RCTDataRequestHandler.m */; }; 2C4337F44EA78BED73792EE210819525 /* QBCheckmarkView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F8AAAFDC375A850D80E66702DD4BF52 /* QBCheckmarkView.m */; }; - 2C447F128915ABFDC8E0CE94BEC794B8 /* GULLoggerLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 663D8A7DE61E19F411CA269EABCC27CC /* GULLoggerLevel.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2C4587AD15A7973ECE6637EDA1DFBF08 /* EXFilePermissionModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B515C88A882F49E4AE51F40CC365F3 /* EXFilePermissionModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2C45E8CE187BD8D93820C40615AC1E4F /* RCTAccessibilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC1D16019A96C865667CB57CCF23519 /* RCTAccessibilityManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 2C4AB1C100D4C8F549F3B391F96BF82C /* RCTRawTextShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = C711D324C097D28645BE1368E672C76B /* RCTRawTextShadowView.m */; }; 2C6754F57D3F7E17CA74E5B2EEB0D7F9 /* RCTSurfaceView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A73B6FB820D5DF2EC492B1A4D6037F2 /* RCTSurfaceView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2C8B9B59A5D2050A4FC678FA0A65D5D5 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FFD07CA8CC396C11428C8593FC6E959 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2CD5D4D9AB0BB12808E36B48405592A4 /* BSG_KSCrashState.m in Sources */ = {isa = PBXBuildFile; fileRef = D65685F530E8F51BABCEE69624EBCEEA /* BSG_KSCrashState.m */; }; 2CDAC043E586A4E33786C82BEFBB0DBF /* RNRootViewGestureRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E2AC07FAC1F2E0091A4C47C3EEBD291 /* RNRootViewGestureRecognizer.m */; }; 2CE08EC7BA09068921151F10810607FF /* RNJitsiMeetView.h in Headers */ = {isa = PBXBuildFile; fileRef = 661D96F33813C29F39EAA5A247C1BE48 /* RNJitsiMeetView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2CFEE3C68DF30B10733EB873C39AD7CC /* FIRCoreDiagnostics.m in Sources */ = {isa = PBXBuildFile; fileRef = 326F4393F9730A5FCBBD861903F4E98C /* FIRCoreDiagnostics.m */; }; - 2D5C8E1419E3DCF259A42E81A1EA56F1 /* FIRInstanceIDKeyPair.m in Sources */ = {isa = PBXBuildFile; fileRef = F84CFF851919F4C8C90C7A0A02A4EDBC /* FIRInstanceIDKeyPair.m */; }; + 2D20AB1269B163E91C616DA631432A23 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AD5C654D5F9C65609BC75BEDEB1C2EF1 /* SDImageCachesManager.m */; }; 2D61A2747A7ED3643B239BF6F190E30A /* EXLocationRequester.h in Headers */ = {isa = PBXBuildFile; fileRef = F269EA1A423BE65A1543239DB727E92D /* EXLocationRequester.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2D889A37C6B0DCFAC73E5AC673F56C1C /* EXCameraRollRequester.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C3364F0E0F6F42CB93E2B0560C2DA0 /* EXCameraRollRequester.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2D9B31280B8E5294977D5CC7EA819B25 /* BSG_KSCrashReportFields.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EDFFA47C755F73800F680EE4AC433EE /* BSG_KSCrashReportFields.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2DD5EF0EB4B7DC767D1006CA43D91FA3 /* FIRInstanceIDURLQueryItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CA316AB9B1E087EE087129012E3ED1A /* FIRInstanceIDURLQueryItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2E0BEB13B0C41568EC020EFDECAACFD9 /* GDTCORDataFuture.m in Sources */ = {isa = PBXBuildFile; fileRef = 93B448CC3FB8A5E0A529641BC3F578C2 /* GDTCORDataFuture.m */; }; 2E4931E8207986206E7AB09BFBB585EB /* EXPermissions.h in Headers */ = {isa = PBXBuildFile; fileRef = 58C6DDEA9DA8FAA71B8F5563B3C8BAE3 /* EXPermissions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2E6C0A66C6CE67C359435223E0B96692 /* RNNotificationCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = A96ADDFAE20DF4F9B514874EEA3709EB /* RNNotificationCenter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2E834C1C8872637F95200FF9269927E5 /* UMSingletonModule.m in Sources */ = {isa = PBXBuildFile; fileRef = D62B7A3B4AF1152F21105D3B2E827CE0 /* UMSingletonModule.m */; }; - 2E97E8985D7EEA0ACA621F03CBB618E0 /* GDTCCTUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = F534DAFAC571CC5B019C05580EB1FADB /* GDTCCTUploader.m */; }; 2EC6448F6874BE18BCAC7E4B8750436D /* RCTBaseTextInputViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B06766EBC90E7AB98A11548494111AA /* RCTBaseTextInputViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2EF1C5548F3F0E3DE7BEF6390805DEB1 /* FIRInstanceIDLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = A180D1561EE0153CEAE325FB966800B0 /* FIRInstanceIDLogger.m */; }; + 2EE1214FC3E8D03CDD99006494DDCA55 /* FIRInstanceIDTokenOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 50B1336BF0B799990F11A2C6C846FEC9 /* FIRInstanceIDTokenOperation.m */; }; 2F14DEC7E589201E4ADE8E61F5CCCB8E /* RCTNetworking.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9B2FF77B343827C35C7332825DF9A585 /* RCTNetworking.mm */; }; 2F37E13839018122C7584B33BD63610D /* react-native-video-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F79445FDFB8F1C28B17B142380CA2575 /* react-native-video-dummy.m */; }; 2F3E6CFDE51DA53D85F9F0B1E585D2C2 /* RNCAppearanceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = ECAF2F04ACCF39BF7E4DD7FBF6BE4009 /* RNCAppearanceProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2F4B5D8A9B7B3F427CD7F280DF2FA890 /* JSCExecutorFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C0DEA996540B56EC22001BD80BF8094 /* JSCExecutorFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2F4D3CB5530FEDC8D599D0FC2A883DF8 /* EXAppLoaderProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = A3909AF4DCC56DEC8BD614F01AECA9B0 /* EXAppLoaderProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2F51852AA11405085D9282ECDBA680A8 /* RCTConvert+Text.h in Headers */ = {isa = PBXBuildFile; fileRef = 258615144280F905E5F66A4A8335502A /* RCTConvert+Text.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2F88FBA4BEA00215CDF33A4CB5C1AC70 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = A8D66EB87FF1052564109710F3EC6D0F /* SDWebImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2F5AE014543358BAEE4B4D6CD5A371E3 /* FIRSecureStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 2987EA104168329CA646DE0B0609C594 /* FIRSecureStorage.m */; }; + 2FA53DFC789880672A8C658D69915008 /* GULMutableDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = B64A61A851185348B2695008405AD490 /* GULMutableDictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; 2FF2BE53DCA8EE04DBC53FA3A07AF916 /* decorator.h in Headers */ = {isa = PBXBuildFile; fileRef = 697331A145A2D7B271EF0AF6035364AC /* decorator.h */; settings = {ATTRIBUTES = (Project, ); }; }; 300A7BA55DB2E2C8576B6CE7FB0A34CD /* RCTFPSGraph.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F2E9045B2AC258C5B8DFB25414CFD3F /* RCTFPSGraph.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 3035872384B71512B8644A2C9491AD6D /* RNCommandsHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = BAA7D6FBDA74E2838646EFC29397B571 /* RNCommandsHandler.m */; }; 307F3607934710DF997A7298180F7E98 /* RCTImageStoreManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 99D8040F6EAEAB257B9664B10F8BFEDA /* RCTImageStoreManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; - 30BBF147562E0292D0D75BDC762DE85E /* FIRInstanceIDConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 884C00138AD3CAF3B4B0B63BD80BED30 /* FIRInstanceIDConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 30C27B25CE11FBFEC253B678435C2261 /* GULReachabilityMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C7E75DE032D780D996A33E74AA1D42 /* GULReachabilityMessageCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 308EE9EA4C9727C5413B848F42523151 /* FIRInstanceIDTokenFetchOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 08419E1C07242E0A29A26A675DC67E63 /* FIRInstanceIDTokenFetchOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 309E081F63A76DB6AB8C9F3CE25D9B9C /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = F26BB59FEC9CBF96A4426D94923EF71D /* SDImageLoader.m */; }; 30EA45CE3AE07BC35CEF6C9986E2E1F6 /* InspectorInterfaces.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 066DAB200485098245D5EED0B1FEF098 /* InspectorInterfaces.cpp */; }; - 30EA63D0E95EB523F359EAA9BCADC1F1 /* lossless_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = D9E1543EA3F83B6350BB339D31E74A42 /* lossless_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 30EFA1CE7F1133015F0E3E10A28316CF /* quant_levels_dec_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 250CF8B419B162FB992D8736BE4DBC17 /* quant_levels_dec_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 31104DDF23E644091D0B208B51B3F550 /* upsampling_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 79056B8415873E79B2C8F6C636A96E00 /* upsampling_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 30EA63D0E95EB523F359EAA9BCADC1F1 /* lossless_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = B4A567AE04DB13B59FF8430E58211E82 /* lossless_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 30EFA1CE7F1133015F0E3E10A28316CF /* quant_levels_dec_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 0500B10E6BA68DF16917B05F920FA4CE /* quant_levels_dec_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 31008478AA016544A263E99504DE8C56 /* FIRInstallationsIIDStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B1BB1A3C8627427538472C2BEF119CE /* FIRInstallationsIIDStore.m */; }; + 31104DDF23E644091D0B208B51B3F550 /* upsampling_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 288BE286F03060115DD9AF8F02177A9A /* upsampling_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 3117D5AFA4E546F9B2CEA3EB35965A82 /* REACondNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7612E5357AA20DB81B79395E816B4249 /* REACondNode.m */; }; 31274EDDBCD11A92A9DDF9C3CAFD44FE /* EXVideoPlayerViewControllerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1164A57691AA9276B0B6AA6CF9EBA52B /* EXVideoPlayerViewControllerDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 315F128047475CF8C8E82CB2C51AC69E /* FIRInstanceIDStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BC2EF7B3BFD238AB12617D31274CEF8 /* FIRInstanceIDStore.m */; }; 3166FD3754F038B8409AD57568FD58B3 /* UMEventEmitterService.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CC8FBDE81778614DD8CE5DE55460D4C /* UMEventEmitterService.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3178E2FFAF91C8CD5462E8492D7EFE77 /* ARTRenderableManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 966AF84F0F33FEE812FBB4E268EAF1E9 /* ARTRenderableManager.m */; }; 31935F903EB3421E32FCD701A8DBD38F /* RNCSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 90F4B4F539C60A30B094D1DF65FF0527 /* RNCSlider.m */; }; - 3195DB0618B1CA79C84E8D42C590DF57 /* UIColor+HexString.h in Headers */ = {isa = PBXBuildFile; fileRef = E4ABD4161A335B5730AA14BC21DFBFD1 /* UIColor+HexString.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 319B2207EC617BEAACE39E7183364D0F /* GDTCORLifecycle.m in Sources */ = {isa = PBXBuildFile; fileRef = 40C0ACE417B604A869EFEBF0F8727F90 /* GDTCORLifecycle.m */; }; 31F10CDB791C2620DD0B1A31A0F82884 /* RCTFileRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A72D7CEB55FEA06E30120F74D720E54 /* RCTFileRequestHandler.m */; }; - 31F3C1F1C0E29CC26D3A6B81776FC9E1 /* RSKImageCropViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 097257AFA6B9ABB50D1D8D460C297CE1 /* RSKImageCropViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 31F3C1F1C0E29CC26D3A6B81776FC9E1 /* RSKImageCropViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 6853D0C0275C488A7AFF75D5BF9ACC72 /* RSKImageCropViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3216E3B96EA52D8BDB8D9F86571D35AB /* RCTUITextView.h in Headers */ = {isa = PBXBuildFile; fileRef = E5385A8D8663E76400E26DE09608AD04 /* RCTUITextView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3240E20C3A58ACFE15D21D48E1D40A6B /* RNForceTouchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 74E4529B98FEDAACF3150604E65DAAD1 /* RNForceTouchHandler.m */; }; 32622CE75F78F8E2F8D5400CD2CB17DC /* FFFastImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CD830FC15460173E593D0931A1CFE15 /* FFFastImageView.m */; }; - 3292BA9319F6A044C79AE28E0D918FC5 /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 89160B8C3B26D7474A95630C72EA1E5F /* utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 3292BA9319F6A044C79AE28E0D918FC5 /* utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 037F5EC90407C5CE3418149B6C7A824B /* utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 3313337DEB72DBE20A1BC168A06E68F8 /* KeyboardTrackingViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 70286279EDC882A5A6D54D5A78D4E4E3 /* KeyboardTrackingViewManager.m */; }; 3317D2669464A6DE7D7DFD3DC080C7B8 /* RCTDiffClampAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 21F7F0D642A4BE155F53A6D1027A76FB /* RCTDiffClampAnimatedNode.m */; }; 333803FE324E27588D21B11BCB0C9D06 /* RCTCxxBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = B6EE70348525F32720F5513A236840CB /* RCTCxxBridge.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 33457000C73C1BA5BC2352B54AB16160 /* LongLivedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E4D000D9915C53B5FCAF941E7972F69 /* LongLivedObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 33988475BC9754D18D14BF27766A2C0D /* GULSceneDelegateSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = 21A7E3A6A97682E28E064E912B3B4371 /* GULSceneDelegateSwizzler.m */; }; 33B34720C076709D0AE09FBD66D845C3 /* UMInternalModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A37385936A3AF6975BE19B5E37A6A63 /* UMInternalModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 33FE4DEEBCA383ED7755A9CBC51B108D /* GDTCORStorage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = D76568A132A5A42C9799FAF84FB8BD09 /* GDTCORStorage_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 34056CD84DEBCDD1C746695C686393F5 /* BSG_KSCrashReportFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = B755B5DEA69CA3FE94D40CD2B3D5BDA8 /* BSG_KSCrashReportFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3413CDA8B5470DCFC4C8E5FB4BD1A291 /* RNPushKitEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 585FC8608495994937895B8A2591307F /* RNPushKitEventHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 341859F7AE772790EC9DE0E1AB2AB792 /* FBLPromise.m in Sources */ = {isa = PBXBuildFile; fileRef = 919435F4CD2ADBE3C210FD10F56B568A /* FBLPromise.m */; }; 3467E57D037D208C62BFFE18DF8E348E /* BSG_KSCrashSentry.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A479634950702320BDA8537F995EFD0 /* BSG_KSCrashSentry.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 34B59CB8CE7F33E4AEFA4F8D21FAF94C /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = A38CE196FAF4456B06F77B5B9E0CFDBE /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 34E56652AA0AEE4823E7F31D025B69C5 /* RCTUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 04281FA56489A7CCB9EF40362A453BBC /* RCTUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 34EA20ADEFC65F6118975776F29B5ABE /* picture_csp_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 52FF01E96854D8F37412901CC140380F /* picture_csp_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 34EA20ADEFC65F6118975776F29B5ABE /* picture_csp_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 51EE49DA7F1EB208F9461CB6483D55F0 /* picture_csp_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 35269B5057CDDCC7DEA2FE786C99AF9E /* RNFetchBlobConst.m in Sources */ = {isa = PBXBuildFile; fileRef = E969E0281AFFBB8E4657559C0100F794 /* RNFetchBlobConst.m */; }; 3532F5EE6268C8BC44E880EF1AF4FB8E /* BugsnagSessionTrackingPayload.h in Headers */ = {isa = PBXBuildFile; fileRef = D115542288AF9DA2B7799D6CCF398704 /* BugsnagSessionTrackingPayload.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3537CE1621452E04CE333F76DC5EA2FE /* RNFirebaseAnalytics.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E4C192890231485B12830210B5D7DE2 /* RNFirebaseAnalytics.m */; }; 35772BB3CEED422E3D0575B000524EC7 /* React-cxxreact-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 070F4DA174D42E2375C1E26D009B3DE9 /* React-cxxreact-dummy.m */; }; 35832F60A513B34B1EEA6BDD6419FE8C /* RCTVideoPlayerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8498FD18C19E0FE18E529B9AE9B2DFBC /* RCTVideoPlayerViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3585CBDCF731A7F68C48BB6AD9A70AFB /* FIRLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 8175885836544CD4D80DDBE66EEFAA45 /* FIRLogger.m */; }; 358BABC6CB59A971C1E83090D568F1FE /* UMModuleRegistryAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D4EAD8BE22D1A60AEC57B78752F6185 /* UMModuleRegistryAdapter.m */; }; 35DB32595AFE292384F7082E4EDB8D9B /* zh-Hans.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 4E865392D14D7F9AAD27DDB39B8F642E /* zh-Hans.lproj */; }; + 362992C88541C7E04A9D3CC4D08CB8F9 /* GDTCORUploadCoordinator.m in Sources */ = {isa = PBXBuildFile; fileRef = 38CB235F9B094ECF8F8B1B1C082AB298 /* GDTCORUploadCoordinator.m */; }; + 3656E1A7C7F5703F0068F479C0F68F58 /* FIRInstanceID+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 62E764263319E7C9A53A9AF39D7723E5 /* FIRInstanceID+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 366116BABF4984007964E29E1D5ABD22 /* RCTConvert+UIBackgroundFetchResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 222E3933ED98940FBF6250CAF9E69A01 /* RCTConvert+UIBackgroundFetchResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 36919C052E22A8130A9FCC27694A61DF /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9423585289F0FEE1EDBF88CC077C5BA9 /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 36B30A72BB2A2EB9D72BACEBA5A74C69 /* RNBootSplash.m in Sources */ = {isa = PBXBuildFile; fileRef = B330D7E6ECB96495FE5D9E5DCC9EF7CC /* RNBootSplash.m */; }; - 36BAEA5FD99090F9ACDB8246FAEF9A44 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = C662555DEFDD7CFFF2487F4277C6C686 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 36C7EF28833E6681D834301FE13A86F9 /* FIRApp.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D31DB622D9EBAA4FBD560D40618BCBA /* FIRApp.h */; settings = {ATTRIBUTES = (Project, ); }; }; 36D80615F4DEE0F645C306DFED51FB52 /* RCTTextAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E29BD840C7EEDF0C2224CAE90F3EF14 /* RCTTextAttributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 370F54E7E5F99ECD931AF474471A530F /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 69479128234A29F965EAC5E5AC7A110C /* SDImageCoder.m */; }; - 37561D58917BF3DD193FA026B4DC7819 /* buffer_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 5807EB6D92C08024B83553174ACA5DD1 /* buffer_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 37A8A74509CB140CA1CBD2862791F6C1 /* thread_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = E33DB78328A822A9C5D7101BE31F544A /* thread_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 37BE852FE436F3F6397F550D19500530 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 719678554CEA5B56015186C2FDB53C4B /* SDWebImageCacheSerializer.m */; }; + 37561D58917BF3DD193FA026B4DC7819 /* buffer_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 079482D8D03370ABEA3B4293E9E0F902 /* buffer_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 3785F7EB165DAE2A7047D3376A8A5DB2 /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 62DCD8FC43D8554520EF5C154FB8D476 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 37A8A74509CB140CA1CBD2862791F6C1 /* thread_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 21BCCE9D22EB85259CE081E0A923EDB6 /* thread_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 37C0A3BF90F97D08F52212FF1DBF170A /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EAF77B51624F49BDB16C3865BA59750 /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 37FCEB31D086A0F531245307B9F7C801 /* EXFileSystem.m in Sources */ = {isa = PBXBuildFile; fileRef = E86EAAE85254BEA5727D1E88DF730008 /* EXFileSystem.m */; }; 3825F7BBADE0E2636469ABA15B1C2FE3 /* RCTTurboModuleManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 21FE77054F9C254ACCD4B873EF82A437 /* RCTTurboModuleManager.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 3834792EC9BABDBC3BEC609A77EC0B45 /* FIRInstallationsAuthTokenResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 30B6C6D8A65E6CF1025DC7B7A6DEE0CD /* FIRInstallationsAuthTokenResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; 383C5B89C2949BBFEA55565E4DCFCB15 /* ARTCGFloatArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 61BB33DDB089C0F391FE215CEC01FBC2 /* ARTCGFloatArray.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3842C7262C69AD90463B43931CE9B8D4 /* backward_references_cost_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = DC1ED14685D94D7B65AD30A55F657B68 /* backward_references_cost_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 38442B0F8709B30A6EDA4CD0454A21A5 /* bignum.h in Headers */ = {isa = PBXBuildFile; fileRef = C993DF06793B7954B7AE6F9F0A64ED07 /* bignum.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3842C7262C69AD90463B43931CE9B8D4 /* backward_references_cost_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 47848D888973B34379A73A1129C8E494 /* backward_references_cost_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 38442B0F8709B30A6EDA4CD0454A21A5 /* bignum.h in Headers */ = {isa = PBXBuildFile; fileRef = F4110D159EB83763AAC648B1B81D2F9D /* bignum.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3883B5815DBFA4EF2FE84C41BC335FB8 /* NativeToJsBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 3577E0616DA660D725D6546620A9D780 /* NativeToJsBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; 38A4CA283B119D95B0A0E732C2331660 /* BSG_KSCrashAdvanced.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D6AB77C2053E9044D3C2DA81EE8E08D /* BSG_KSCrashAdvanced.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 38A8686E3AE8C9948AC8E16A0FF259FD /* GDTCOREventDataObject.h in Headers */ = {isa = PBXBuildFile; fileRef = D3601FC2175A7805C42496F6D3F25E1D /* GDTCOREventDataObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 38CD1EEFACF1F4E85CAC904A501B0876 /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 438B0AFC915C650C7DD6BBD7E1482856 /* SDWebImageTransition.m */; }; + 38D058F638351726858D7A563A8982A7 /* FIRInstallationsIDController.m in Sources */ = {isa = PBXBuildFile; fileRef = AA4F5619775B05EAF3BD82EDACD91B98 /* FIRInstallationsIDController.m */; }; 38D4C661B8BBC385A0AB2B4AB1558258 /* DispatchMessageQueueThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D4D50C9905DD81CF3A3FD3D2B7A8672 /* DispatchMessageQueueThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 38E6BCA7EF6AEE0500A1E457935A37AD /* FBLPromise+Delay.h in Headers */ = {isa = PBXBuildFile; fileRef = 68041748F69925013F2E5E2E941E5D0B /* FBLPromise+Delay.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3916D8D75559CA9F46FA11A981903A5A /* EXRemindersRequester.m in Sources */ = {isa = PBXBuildFile; fileRef = 31EFC03F02EFC58D84B8AE95618C2233 /* EXRemindersRequester.m */; }; - 395183D9069FB94B71C8E24EA8A21FCD /* FIRInstanceID_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A346F7EB324ED60BD0277D524F7464F /* FIRInstanceID_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 39A8B0F0C8877BB15AD04CD38C7C9161 /* RNFetchBlob.m in Sources */ = {isa = PBXBuildFile; fileRef = D093A63288644F13E10F340EED802CBE /* RNFetchBlob.m */; }; 39B19D68538AE0FC980A4351FA0EB0FF /* RCTRawTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 30BB975B57CCC177196223E03CF5753F /* RCTRawTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 39FE229CE1651E2B524FEE20F0222100 /* JSBundleType.h in Headers */ = {isa = PBXBuildFile; fileRef = F330F62465D1AC3978641F665A77320D /* JSBundleType.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3A218CA173C1EE76D958B3AD0C9BC0CD /* RCTUITextView.h in Headers */ = {isa = PBXBuildFile; fileRef = E5385A8D8663E76400E26DE09608AD04 /* RCTUITextView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A32F3DF1F3A28FD3A9E28078BB3EB2A /* FIRCoreDiagnosticsConnector.h in Headers */ = {isa = PBXBuildFile; fileRef = 38B418D43F61C1B419AB3F337FC541B6 /* FIRCoreDiagnosticsConnector.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A38B322CEF5C4F1F5C90CDC284CC7AA /* GULSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = 019EF2F3E1EBEF4B63B42F53A1FE1122 /* GULSwizzler.m */; }; + 3A2AB10764D649D2C494B8ACE9F93C74 /* FBLPromiseError.h in Headers */ = {isa = PBXBuildFile; fileRef = EF4EB3533CCB7A84BFF17BE881F535D0 /* FBLPromiseError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3A41B9C4BAA9C197A9D08F1ACC7C7CC8 /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = D525C8CC60B15909F0B82D63E338E963 /* SDImageGraphics.m */; }; 3A588C35CF59D1DA0D42450E2D7D237C /* EXConstantsService.m in Sources */ = {isa = PBXBuildFile; fileRef = FC77272D5D1D48B43F12E55DDD9F80C1 /* EXConstantsService.m */; }; - 3A90F40F02279EE028931CE48514D66F /* double-conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70A2C57EB51078DE137D607F34867F54 /* double-conversion.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; + 3A6B7B5EA8B4C74A3B3628907AF2C361 /* FirebaseCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 325556A95664EB529C31870C6A52D5D8 /* FirebaseCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3A90F40F02279EE028931CE48514D66F /* double-conversion.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9CC2E2273ED5FE89DBB756223A07E524 /* double-conversion.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; 3A922CDA2316846097056591F696D6F7 /* RCTDatePicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AD46E5BD03286A699768842ABBEB548 /* RCTDatePicker.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 3AA635385D2DD6AF7B23A198E1851B06 /* EXRemoteNotificationRequester.m in Sources */ = {isa = PBXBuildFile; fileRef = 6927644527C531D96A463FF647B863B0 /* EXRemoteNotificationRequester.m */; }; 3AAFEFC4AD799AFDB98222D0B36F097B /* RCTMultipartStreamReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A674AEBCA76215CB8F991FFDBA16AFE /* RCTMultipartStreamReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3ABBA80F6C061E7A70AF047FF9B2595C /* GDTCCTCompressionHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 5847FD2633BC9047F028FE38A7084AD7 /* GDTCCTCompressionHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3AC6D38871E11794AACBDDD94449CE63 /* BugsnagReactNative.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A1B67C83BAF844E6860075F41D052A4 /* BugsnagReactNative.m */; }; - 3B333F775A3E42130B41AE2EF4E0B53D /* near_lossless_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 9B1DED816870AF0C0B03329B34DC15BD /* near_lossless_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 3B19116ABDED6431782A3A8BB569F8C6 /* GULAppEnvironmentUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 9266B058E00473F5A3D7D31E6AFE30EA /* GULAppEnvironmentUtil.m */; }; + 3B333F775A3E42130B41AE2EF4E0B53D /* near_lossless_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 099A43376A0723FBD49B492ED1DA139D /* near_lossless_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 3B426494F084B4127219E522755411FA /* RCTKeyCommandConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = EFE587B647AEA797A88F2C365DAC8EC2 /* RCTKeyCommandConstants.m */; }; 3B565DC355CC5A6C542619592FAE3C31 /* ImageCropPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = 9599ABDDBC657553636D3A5F8EAAEA92 /* ImageCropPicker.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3BEF5F842EA4316476D9252C81E7D100 /* GULNetworkURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 00EF713613E649AF69AC589CAB985955 /* GULNetworkURLSession.m */; }; + 3B5A6465606762C6EB7BF68923C55487 /* FIRAnalyticsConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FE52EC86FAD6477499E13343ED2C1DF /* FIRAnalyticsConfiguration.m */; }; + 3C0FCF93B0ED1741AC247835CC335F80 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = 91CF14832C73F2B333714483F06B3C9A /* UIImage+Transform.m */; }; 3C3A3FB4AFFF88F2C17EA07185AC0663 /* RCTFollyConvert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F54A1DE8FD0FC45607B56E1634615E88 /* RCTFollyConvert.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 3C766293FB7619D510FF59F15B150FAD /* RNPinchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A1BABD4B412A0953C577E058336334A /* RNPinchHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3C9923B6B84D38A40767A6E529CABE0F /* FIRComponentContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 703C19B7DA7D14697A7DA9E62F10EC52 /* FIRComponentContainer.m */; }; - 3CD9657B5CDE67AE647DA7FC86A341A7 /* RSKTouchView.m in Sources */ = {isa = PBXBuildFile; fileRef = BD02FE5A2E5FEA9FC370768CE07C74A3 /* RSKTouchView.m */; }; - 3CDB4A31E6703CFF32E72D3638BA11B4 /* GDTCCTUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E6E78446D4C66AB49A9367C4B33947A /* GDTCCTUploader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3CE0729079D17BAE2A3F5C0904B3FEC8 /* GDTTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = BF97D9E3AB424B03E0D472FE750E447F /* GDTTransformer.m */; }; + 3CD9657B5CDE67AE647DA7FC86A341A7 /* RSKTouchView.m in Sources */ = {isa = PBXBuildFile; fileRef = BB3994268A3900BB3EC0B6E41C8ACEEC /* RSKTouchView.m */; }; 3D1507020B4C2DC1A841168F7B2F2095 /* BSG_KSCrashReport.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CEF007F87D815FF9DDAF8260B117C81 /* BSG_KSCrashReport.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3D2BDDA5696E0248B91335C53007C1D8 /* RCTKeyCommandsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 30F18E9133C9EE4A81CFD2687ACBCD7C /* RCTKeyCommandsManager.m */; }; 3D62B6B0650C43E889B249FA6981903E /* REAModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 706F9976E2D7AAA380D98FA3C76F52EB /* REAModule.m */; }; - 3D8BE5BF644BE9BB4F41CAB6B7D79A09 /* strtod.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B74342AA866FE731DC0FDD2C2028F04 /* strtod.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; - 3D9F8FE3C127F89AEAD65F09969FE642 /* muxedit.c in Sources */ = {isa = PBXBuildFile; fileRef = 23EFDD9E4FD7AF73F60CA08A78677637 /* muxedit.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 3D8BE5BF644BE9BB4F41CAB6B7D79A09 /* strtod.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D7305392656B07787D0BAA87B5735C4 /* strtod.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; + 3D9F8FE3C127F89AEAD65F09969FE642 /* muxedit.c in Sources */ = {isa = PBXBuildFile; fileRef = E71363AF216BF6A9FDEDA89C8D14B6A2 /* muxedit.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 3DA3978096D5C53CBFF6D5DCE1A25655 /* GDTCCTUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 23D5AA523F9126F7D30ECF8AA9BBE433 /* GDTCCTUploader.m */; }; 3DB2B8FFC504E9B2209D51E0471B3072 /* NativeExpressComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AADB8C895E14A4EA0A6240AEE3AB200 /* NativeExpressComponent.m */; }; + 3DB6D861B1BED3FE02246D09E892A49B /* FBLPromise+Always.h in Headers */ = {isa = PBXBuildFile; fileRef = 47B052E1FD1233F07E279610681D4C0B /* FBLPromise+Always.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3DC6AD9F4EB8CA917DAA18FC2C54697A /* RCTMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8905113572F8576DEA7D37FA11A60F0D /* RCTMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3DF0FC2AAEEB2CD774228809E76A36EA /* RCTWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = CD3C78B7160EC7119BD39667D355E1DD /* RCTWeakProxy.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 3DF2CF12BAE1442A3F18E366DCF1E367 /* JsArgumentHelpers-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FF6908128D9BDCF36D9E9E2CBC0256D /* JsArgumentHelpers-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3E0588C6F38C12F8417DEA53E703E771 /* InspectorInterfaces.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F30FEDE839FB7BCCC1244D32E272745 /* InspectorInterfaces.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3E31ADE4D01843AFE94E6B95687C36C1 /* RCTShadowView+Layout.h in Headers */ = {isa = PBXBuildFile; fileRef = 0357F2904793AF75BF705D34080B39A7 /* RCTShadowView+Layout.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3E4147890AAABB96969C70E0D7986318 /* GULMutableDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 095C3A99BAD601DEF79FEC7E58053AA8 /* GULMutableDictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3E6E2A5941481ECA8D947D329A8D5E4D /* FIRErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = FD7691D43748739B72817CB68865006A /* FIRErrors.m */; }; 3E79EBF873CC80665DB87799FE8B85CC /* RCTShadowView+Internal.m in Sources */ = {isa = PBXBuildFile; fileRef = C64D7B0743BF13D2875ED1AD6F5B1BBF /* RCTShadowView+Internal.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 3E7CFC6BBA278D60B2DEF04E96E41275 /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 22DA47BB069C91769B82987265E8AA4F /* SDAnimatedImageView.m */; }; 3E9B846063DBDF34FBAF2E13B2104ECC /* RCTNativeAnimatedModule.h in Headers */ = {isa = PBXBuildFile; fileRef = C2517F65DB4D4963955B79BCC8FB2A1D /* RCTNativeAnimatedModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3EC8C2462B60DB403104F22B294A4B24 /* FIRLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C2373D7CD550A7BB6746818ACCFF4A9 /* FIRLibrary.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3ECD97BBD34E2AEF1DB283897AEBB626 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B4C2C687BA9A4F482BCC6E3550747BE /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3ED49C84C1C1A124F30F61E18033F6E1 /* REATransformNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C478C7C78C67B422A383B902C940722 /* REATransformNode.m */; }; 3ED530EBB19DB479636138A65FFFC9D9 /* RCTImageLoaderProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B4D64374C7E6A0B63625C1CDC038AF1 /* RCTImageLoaderProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3F16574039A61B5C86268A6D9E5BD931 /* picture_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 85DDB9877837BA0AF9B0F7B6DEC362A9 /* picture_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 3F16574039A61B5C86268A6D9E5BD931 /* picture_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = CE50447D6089FD034C451BE7675B6D7A /* picture_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 3F23A9C8F4C6D6FC2240003C679F1D40 /* UMReactFontManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 25DBAFC7D6E6CECEE0D8BD212F907826 /* UMReactFontManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3F4D09BB757DC2587425562E435DD7DB /* QBCheckmarkView.h in Headers */ = {isa = PBXBuildFile; fileRef = FB8640F657DD2122ADB8CAB8319C9279 /* QBCheckmarkView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3F4E6AB35F55AE7DF736BE8E399AF815 /* RNFirebasePerformance.h in Headers */ = {isa = PBXBuildFile; fileRef = FF707174B2503E5C71F8EF8F5FECB06F /* RNFirebasePerformance.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3F8DC9E3686D8CA5C3C1DCAE5CA38D5F /* RCTSourceCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 215BA62B612524467633014B1E139B0D /* RCTSourceCode.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 3F9160E52A4D137A52DD2A7FE857193B /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = E1FF3ABBB86D23C6F4AF464146BCB44E /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 3FAECAD98E39575A2C864CE080401E9F /* RCTDivisionAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4299726BEA3130042018922655CEAB31 /* RCTDivisionAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3FD14FDCB0DCCD257A3AE028913722A1 /* FIRInstanceIDKeychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B086A0ED5925BD59CEF6134AF11EEB4 /* FIRInstanceIDKeychain.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3FE6DC36C896C99E4F0E10B92E1FE061 /* frame_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = C01777BFA2467300977CA3FEF913D5F4 /* frame_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 3FE6DC36C896C99E4F0E10B92E1FE061 /* frame_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 535AA0B78CF70BA9675FAEC421BED1E6 /* frame_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 3FFF42A16F8EB91750162C36C8843027 /* RCTClipboard.m in Sources */ = {isa = PBXBuildFile; fileRef = D38935DB2A21836A8A17D87C02FE8DCC /* RCTClipboard.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 403E9D49D8232B1F6A6BACED3679104F /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFF7646CDA1C9BC7B92C2364D35EB4F /* SDAnimatedImageRep.m */; }; 407DE17E311F50FDA9BC4ED4C4759FF6 /* RNFirebaseAdMobNativeExpressManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 37E9F851FAD48A36030E29145906CAB0 /* RNFirebaseAdMobNativeExpressManager.m */; }; - 407DF13B0A6D61F156D84B50D25A3E2D /* upsampling_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 889DD58E7BECAD23FDAC21530CD7D0B8 /* upsampling_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 40D19B3596F2AAA91C871A4C0827D6E9 /* GDTEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = AFD2AC81AC5FA51E82EFED1BA17B7573 /* GDTEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 407DF13B0A6D61F156D84B50D25A3E2D /* upsampling_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A5DB3B95A61733B29846B836C5FE77A /* upsampling_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 40E02135B467F425AA7FC5D7C7DA09FD /* EXContactsRequester.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB78CEE69FD01B802877A116264D902 /* EXContactsRequester.h */; settings = {ATTRIBUTES = (Project, ); }; }; 41131751C2A30224DA39830C7FABDC37 /* JSCallInvoker.h in Headers */ = {isa = PBXBuildFile; fileRef = F18D82D105EFEAF96ABEC19B66F0AD0E /* JSCallInvoker.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 411A3C1B75FB16BE3B6C5709BBB21AD0 /* upsampling_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = 861C44D58795A70D3338BEA3807EBD22 /* upsampling_sse41.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 411A3C1B75FB16BE3B6C5709BBB21AD0 /* upsampling_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C8FC56CD5FE60871A148C7D2580D8D2 /* upsampling_sse41.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 41305B5E2E38F44BB750E2C3EB2ACEBA /* BugsnagSessionFileStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 094F4CDB49A7800ACC684C08A72D2F40 /* BugsnagSessionFileStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 41755CD0FA73E9E757BBF62F21F0FFF7 /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 838D7C69C1B531C642465B4BAA4320CF /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; 417C1F0F90CD0DF24740636DDA0E766F /* FBReactNativeSpec-generated.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93F2C3F2346A8BEA7226DFFDF8F4D52E /* FBReactNativeSpec-generated.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 41A875AF9B80762A227B0C9FCDADC17B /* EXConstants-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E22FF3121770287992115335C6CBFE83 /* EXConstants-dummy.m */; }; + 41C778DE498447ED87070B6D37C30A85 /* GULAppDelegateSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = D4389EC289745BCEF60BEA7CDAC784D2 /* GULAppDelegateSwizzler.m */; }; 41EA0669E9251ED0B3F27FB92F566757 /* UMModuleRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 84CAA6046B8BF4952D41D2078EF3C87D /* UMModuleRegistry.m */; }; + 4200E4BFCB23A3C2905D0525513F68CA /* GULLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = F12DAF7528A201C09ADE0D2FC9600260 /* GULLogger.m */; }; 420273C9877ACFCFBB918F211EA0EC2C /* RNNotifications.m in Sources */ = {isa = PBXBuildFile; fileRef = 0783991BC3A821F01ACDC5B0CE3BB3F0 /* RNNotifications.m */; }; - 425F4D00564CD45E8BAED4DB2AA48455 /* FIRInstanceIDTokenDeleteOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = FE9D8DD53AB4F688CFE58BF275771887 /* FIRInstanceIDTokenDeleteOperation.m */; }; 4291025987BAFF7204F5EF33EC8B11FA /* jsi.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BD3AC16BF3F92264910DB70EF0406EE /* jsi.h */; settings = {ATTRIBUTES = (Project, ); }; }; 430E21DB1E40C00BBCD1A57AD6A66D7E /* RCTTurboModuleManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 90E6D6E6AF7AF5CBA6B44DC028DFE6B0 /* RCTTurboModuleManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 431786DF93882E8D7B28D5DAD61598CB /* GULOriginalIMPConvenienceMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = C8AAC00DA3B23BFCDC15277B87A9557B /* GULOriginalIMPConvenienceMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 43179FC00D84AEC590B6246AB2749BAA /* GDTCORDataFuture.h in Headers */ = {isa = PBXBuildFile; fileRef = D5B3BDB0DF8A0EE45046BCB479E4B62C /* GDTCORDataFuture.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 43A35C1D3B3938A25ADA1DAE6C41540A /* cct.nanopb.c in Sources */ = {isa = PBXBuildFile; fileRef = C67A04FD4DB80B332055C981539D61A1 /* cct.nanopb.c */; }; 43DC0AC2630D1973E947E9A504AD5F74 /* jsi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A47C0CBE5FA1A3C612E50398D72E3288 /* jsi.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 4401917CF3FFE099B7EE236875BE77E1 /* BugsnagUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 685D707D72CF9347E0B77A3C59D950EF /* BugsnagUser.m */; }; 44077BE7DC478E91BB1F7FBCBD475D79 /* RNBootSplash-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E662EF8BD891FF57BD8D395276CB1C6 /* RNBootSplash-dummy.m */; }; 4425EE6E7CE196D6CBE6414B491A2DB3 /* RCTImageURLLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A9671D357015F3C5567606DF3014E76 /* RCTImageURLLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; 442AAD764C2B5335D2D63EC64FDCABAE /* RCTDevSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 1588722AC1F1877FF162DB4503545D65 /* RCTDevSettings.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4434D48196A179E01B13B1B9B532A0F4 /* FIRInstanceIDAPNSInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 21E202A7C5AD705849C005996A458957 /* FIRInstanceIDAPNSInfo.m */; }; + 4456E28CE66464D55C0363C9BE7A328D /* FBLPromise+Catch.h in Headers */ = {isa = PBXBuildFile; fileRef = 47BAFD858ABCC55478AF6AB0854547DF /* FBLPromise+Catch.h */; settings = {ATTRIBUTES = (Project, ); }; }; 447005F902B950F31D9B84B31863C6C2 /* RNGestureHandlerState.h in Headers */ = {isa = PBXBuildFile; fileRef = 5801DFFC0C6A59EA34122FA75E352C62 /* RNGestureHandlerState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 44964FA9DAF14AAE03807F2BC8800146 /* NSBezierPath+RoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 66D51687A4FFDF194B556DE4B2DD8EFB /* NSBezierPath+RoundedCorners.m */; }; 44A5A16ECF6812A67354E03D10FED517 /* RCTManagedPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = C003E82845B79893D5C223AF9F0D9547 /* RCTManagedPointer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 44C3BFF27B3A00065E0694106B6BBC65 /* FIRInstanceIDStringEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = A0DE2AA756FD1093A58487EEF833F499 /* FIRInstanceIDStringEncoding.h */; settings = {ATTRIBUTES = (Project, ); }; }; 44CE88088F17C4DA76F31DB5A23EF1C0 /* RNFirebaseCrashlytics.m in Sources */ = {isa = PBXBuildFile; fileRef = AC65625B781057D8733A1F09D482D2DC /* RNFirebaseCrashlytics.m */; }; 44D47F1B80F64630143457D5E61D30D9 /* EXAppLoaderProvider-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FA61EA52F6BD937338BB3E55FAAC5537 /* EXAppLoaderProvider-dummy.m */; }; 450237AE946360B4D86A82DF9108EF63 /* RCTStatusBarManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AF1D3A7E4F081812185DAEB37EE6E065 /* RCTStatusBarManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4511E4C8DFD1706C322BEFECAB639B93 /* FIRInstanceIDCheckinPreferences_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E7DE8C91E01DA1613F5EC7CD66F28061 /* FIRInstanceIDCheckinPreferences_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4512CF639ACCB7CC62CD0336CC637A95 /* UIImage+Resize.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BFE4C44B6733B9C2BEAC7A14FBD13A9 /* UIImage+Resize.h */; settings = {ATTRIBUTES = (Project, ); }; }; 452641E607EA42EAB0D4C7FC7F68438A /* RNFirebaseRemoteConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 8517462EC8191891DDC4C090B5F149BE /* RNFirebaseRemoteConfig.m */; }; + 4532353CD119D76BF82B67891C680DD6 /* FirebaseInstanceID-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E05491038895B9B893771A35A083EAA8 /* FirebaseInstanceID-dummy.m */; }; 458E43E940D2058F9A68BBD0956A7644 /* BSGConnectivity.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E9C065145AF9F65D3F2ADEC6D33A0BA /* BSGConnectivity.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 45D3939CDA3B11BAB3744081B5730AC1 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 87A2920C46D0CC20B60A655E9FF18B0F /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 45B509EAE6F30C8FD22CB2AF7B72D785 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 3479DAFDB6E7103FA78860240F0C3A7C /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Project, ); }; }; 45FADA4EB5D6E6A2B5A3B8D358E27D2D /* EXVideoPlayerViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 07FAC8AB14356BFB7EC74487EAE16C04 /* EXVideoPlayerViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; 45FE11CB3CB7BBE3D49D3B126DB75BA1 /* ARTPattern.m in Sources */ = {isa = PBXBuildFile; fileRef = F254BA39B80F635278F87ECA06DBFD0D /* ARTPattern.m */; }; 460EDFD72035E6D5F088C95B73F30305 /* RCTBaseTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = CD1A41557D9711A38CCC49769B2E64DD /* RCTBaseTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 462B7BAAAE0B254BE9E648E5CFA0C6A8 /* GDTUploadPackage.h in Headers */ = {isa = PBXBuildFile; fileRef = 64EBE5F53B6247CF96532AA0FDA3C827 /* GDTUploadPackage.h */; settings = {ATTRIBUTES = (Project, ); }; }; 463558BBD4C758646B3A100042977D4A /* RCTCustomInputController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB98F90F90861D1A9C0D3B322EA9646 /* RCTCustomInputController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 468D4662C2082CD37B39EE1999FC6DD1 /* GDTCCTNanopbHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 583F2384046EE63CCD0360AE527E4565 /* GDTCCTNanopbHelpers.m */; }; 468E2BA37E64CD16F291C2603E6C6D60 /* RNCSliderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B776E20C9A189F93824B81E78FC45C39 /* RNCSliderManager.m */; }; 46C92D13EDF916BFBC5453A68C3B2B12 /* ARTBrush.h in Headers */ = {isa = PBXBuildFile; fileRef = 236C579C9D265168EDE8DB0F896CBBAA /* ARTBrush.h */; settings = {ATTRIBUTES = (Project, ); }; }; 47038C55444EDF4875734474B0D04880 /* RCTHTTPRequestHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 094800FF4F03E576562FEE945F9DEFD6 /* RCTHTTPRequestHandler.mm */; }; 473CEB698A524AA4C14DF66D6E572C37 /* Instance.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AEF51CFB5D2A21518EC339F1438E9B5 /* Instance.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 477A39CF2D9AB86F3DEE6359B97FB9F5 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 28AD1F843F1DFF344E92B8B18AB1A0FB /* SDImageCoderHelper.m */; }; + 477E9F458C626A14EA29CADDE3BE895A /* FIRInstallationsIIDTokenStore.m in Sources */ = {isa = PBXBuildFile; fileRef = CC36153E97819CC766DFEB874BBF6500 /* FIRInstallationsIIDTokenStore.m */; }; 47BD9494DBAEECF3B78696B1C7F16B4C /* RCTPackagerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = B539A7B9514BB8308B7BC00D8903DEAF /* RCTPackagerClient.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 47C1D14CAE63EFC8B07A816499198552 /* fast-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 310B5509506DB448A66995284AA9A9CF /* fast-dtoa.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 47C1D14CAE63EFC8B07A816499198552 /* fast-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 35C331504D9FED2A78645DE10B40A14F /* fast-dtoa.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 480C753D7FA4D8422864286E1DAE61D5 /* FBLPromise+Then.m in Sources */ = {isa = PBXBuildFile; fileRef = 05F2BC055A4813F5A29FBD88A3F3261D /* FBLPromise+Then.m */; }; 4835C3B0DAF49A23B4BEB570CF5327E2 /* RCTConvert+Text.m in Sources */ = {isa = PBXBuildFile; fileRef = EC6526582EC82F315F21184165A9D33A /* RCTConvert+Text.m */; }; - 48589406024717DC104D8F0B2585FCC4 /* FIRDependency.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA8FF5764F81F464D320E1177895992 /* FIRDependency.m */; }; - 48A597F6B21D3A8BD625F3BCA9DFFBF0 /* log_severity.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A39EDD3E7E23D5FD4B1E1E340CE326E /* log_severity.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 48363CF916E87324E455BF39CE064DC1 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AE11FC733D32808154EE0C7975D70AD /* SDImageCacheDefine.m */; }; + 48A597F6B21D3A8BD625F3BCA9DFFBF0 /* log_severity.h in Headers */ = {isa = PBXBuildFile; fileRef = 63743B445C8FAC8021EC41CC4362CF9F /* log_severity.h */; settings = {ATTRIBUTES = (Project, ); }; }; 48A65F090855476E8ED575F6389A7272 /* REAValueNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 43E94BA0660B13CFD23C2EF1EEF9BB88 /* REAValueNode.m */; }; 48AB1B74E63D91A4FDBB5A85D55E4ACF /* RCTVirtualTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB2D10B5EA5FBAB4565B783C80C9A12 /* RCTVirtualTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 48BF79294A1C22CC36D1E91201E030E2 /* BugsnagHandledState.m in Sources */ = {isa = PBXBuildFile; fileRef = 536F45DD82C94CE6D96EA437C0C21BBB /* BugsnagHandledState.m */; }; 48E2406E6C69AD9BA73860D7FAE33DCF /* BugsnagSink.h in Headers */ = {isa = PBXBuildFile; fileRef = 51A5F2C64929287D8852E8AD60EECEA3 /* BugsnagSink.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4908C596106B2FACEDFD4A5474075242 /* RNPushKitEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 1546D22C2C8EA6AE11F39999F64BC710 /* RNPushKitEventListener.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 495B0B15E14BC401DE45CAB2A4674C02 /* FIRComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = CCC714DCDA38C719574933AD4BB18BEA /* FIRComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 496DEF54A340C16E4ED8ECCD3ECA0479 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = F83BFECA194D5D3A53CCA3AF2C359335 /* SDImageTransformer.m */; }; - 4977E406F103BC7E9F600C3C57CBF755 /* picture_rescale_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = DBD19985FDA6E09B99A41FCAEBE6B1BE /* picture_rescale_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 4977E406F103BC7E9F600C3C57CBF755 /* picture_rescale_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 28360F116ACE0C01D969AB83563A87B3 /* picture_rescale_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 499A78064AD0B576066DF5C4AE420F4B /* FIRInstallationsAuthTokenResult.m in Sources */ = {isa = PBXBuildFile; fileRef = ABFDDF7E2B4A60522C6DC5915D034318 /* FIRInstallationsAuthTokenResult.m */; }; 499FEAAE461FD29D544C7CC5DE018BFA /* Orientation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3AB05FE90FFEEA3D320C38916D44AC /* Orientation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 49B7D61F6DE83F207D6CD7D9303633B1 /* RCTAccessibilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EBC7B2F4677382CBD60210CA455E8F86 /* RCTAccessibilityManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 49C6B4C68299EBCE9E775E1DD93265C2 /* RCTShadowView+Layout.m in Sources */ = {isa = PBXBuildFile; fileRef = F75184F86F3E79DE210E71936545C57D /* RCTShadowView+Layout.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 49CDF4B546A26C030AE55779EF9F63EF /* FIRInstanceIDCheckinStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 9598C47569571A616A8E6DDD9E675729 /* FIRInstanceIDCheckinStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 49ED22AD77FCA7D73439C955EC426CD9 /* backward_references_enc.h in Headers */ = {isa = PBXBuildFile; fileRef = C4632797BCED5CA7E43264D6EF175EB8 /* backward_references_enc.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 49E32996D57F0BE4B4C214A788834B8A /* GDTCOREvent_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F4B0846CC9420B2A99D2842B5596A174 /* GDTCOREvent_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 49ED22AD77FCA7D73439C955EC426CD9 /* backward_references_enc.h in Headers */ = {isa = PBXBuildFile; fileRef = 478F25920DDB277A1F4403B7268C02D9 /* backward_references_enc.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4A0647047F5A97E7B469362447A72896 /* RNEventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = EA972EEF98A6E6063A59FA70C8963000 /* RNEventEmitter.m */; }; 4A50D92C658ED40C6E8CEE6F91AFE368 /* RCTSurfaceRootView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B4F35BD813347FF988C6039F938EDE8 /* RCTSurfaceRootView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4B1091BECD4A0FD930B42261D4A716A6 /* REAParamNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C0D37E1B7CD8A752787DF9DE90D01E9 /* REAParamNode.m */; }; 4B174EC3B79E737EC18607D92EFFA69B /* RNDocumentPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = A4A7320CAB16DBE6090FF9162811B32F /* RNDocumentPicker.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4B6624A1006ED93B3305A5C01B680EAD /* random_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 16539A1962C2EA438882C01AA585AA85 /* random_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 4B46CA419944F2581E787DEC9E26DF27 /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6456BEB6732CB1208721A93717E83ACB /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4B6624A1006ED93B3305A5C01B680EAD /* random_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 64963B0AD90508C9D1DAD41D65CBBC0C /* random_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 4BDB4407A51CC421C90A908BD6A6031D /* RCTTextSelection.m in Sources */ = {isa = PBXBuildFile; fileRef = F4810CC9A18EA364361E1F4DF90E27D0 /* RCTTextSelection.m */; }; 4BFD25CA7DBC62396BB66D451DDC502A /* RCTObjcExecutor.mm in Sources */ = {isa = PBXBuildFile; fileRef = B9935A42776FF18709A2F382332B44DA /* RCTObjcExecutor.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 4C1215C207F76B2D1473350F2CD63B5F /* QBAlbumCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 49255696C1CCEA1E1242C663239CCB89 /* QBAlbumCell.m */; }; 4C7CFC31B67E5D1520E3FDB757211A24 /* RNAudio-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FB6F47EE770C3A9B0C5AF899D94B955 /* RNAudio-dummy.m */; }; 4C977662AA3595E8D9F5367431E85368 /* RCTInspectorPackagerConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = EA27D397082A0630D8A137FE7CE51625 /* RCTInspectorPackagerConnection.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 4CC0FCC24DC626AA4562DB78E899CF18 /* RCTUIManagerUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 29296F8F060C36B7C0B8B12AD859654B /* RCTUIManagerUtils.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 4CC6BB01FCE680CDEDAC061A4E95DB8B /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = EF7C77B591898E327390DEE0741690F3 /* SDDiskCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4CC8A1271887F77848976D93CA74D44F /* UIApplication+RSKImageCropper.h in Headers */ = {isa = PBXBuildFile; fileRef = 463FBAE4CC12986BA5E6A2BF56A0D785 /* UIApplication+RSKImageCropper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4CEBD6ED3BFF38C9053CDFC2E5FFE8C2 /* GULReachabilityChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = A21747766DD83B697F1247CD235A13CD /* GULReachabilityChecker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4CC8A1271887F77848976D93CA74D44F /* UIApplication+RSKImageCropper.h in Headers */ = {isa = PBXBuildFile; fileRef = 195034DDBA6E2F083A2BB6F020769C4F /* UIApplication+RSKImageCropper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4CCBFEADC3A7B8A5E9B92C290981C41B /* GULLoggerCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = E82A30AEF74EE71AF0B62661B8B26951 /* GULLoggerCodes.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4D1161EFA05C95DED718D8A835C85042 /* RCTTouchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 64AB36A81419579DFBE653B56BFDE10B /* RCTTouchHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4D316D26515A766E0766CDB80274FFD2 /* UMModuleRegistryAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = C9C40E7B6B5993D70A5D70F7D30FD3B4 /* UMModuleRegistryAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4D9B404036A2626231F5223FDFF15074 /* Yoga-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B122B1EE8FD3AD8E8CA73EA280DF17D6 /* Yoga-dummy.m */; }; 4DA8304474BEA599DF8E2F8D29F75DDA /* RNFirebaseAuth.m in Sources */ = {isa = PBXBuildFile; fileRef = FA12DD048A9A27567FE7075E7732FD3E /* RNFirebaseAuth.m */; }; - 4DC3C93691EB8D66A121CA71EF8113BF /* enc_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = 1C3933A150F307BEBEA5276E79AE9939 /* enc_sse41.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 4DC3C93691EB8D66A121CA71EF8113BF /* enc_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = 0707F165A40293C90DB9DB10B0433839 /* enc_sse41.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 4DD88B6EF04BCF202E55A0EB6D8EB486 /* RNForceTouchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 803AA4D060B960BE2E1541EB7EB0A8F8 /* RNForceTouchHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4DF24B425494D2F5095463CA148CCD40 /* FIRInstanceIDAuthService.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B31C55B0080450813DC71445DA97515 /* FIRInstanceIDAuthService.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4DFFBA368483E031A15E54516CEED584 /* JSBigString.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EB6DE0D9A1824EE199A41E34D2D0573 /* JSBigString.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4E1848B48A891AECC6A70A8F09515A91 /* BSG_KSCrashSentry.c in Sources */ = {isa = PBXBuildFile; fileRef = 486937403C032E7E7D7AC3549ADD9FF9 /* BSG_KSCrashSentry.c */; }; - 4E482BE9AD7430C9B3E1B787850C95DF /* huffman_encode_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = AF6E7AD32B0CAFD0E83AA25B15391D05 /* huffman_encode_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 4E502DC6E1495B0AE526594133F643B6 /* FIRLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = B7AD9152F3BD8FC9B15BFBC1B66AA7CB /* FIRLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4ECA0D81891EADA811094561AB083DF3 /* dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 190B39A0F3F2FA4A66BF58DD49E9BCFB /* dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 4E482BE9AD7430C9B3E1B787850C95DF /* huffman_encode_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 762B0734C882B680C9D971AF79E220CA /* huffman_encode_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 4E5A24B2AF227D372E222CC035C1DAA2 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A21588A6554E872D0F5137FF593521A /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4ECA0D81891EADA811094561AB083DF3 /* dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 78E05B5B4544D8C74092E8B0982CF77B /* dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 4EF4EDE720C083DE10CB8F54DE08DB92 /* RCTLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E13F2680B890F89ED3CAA5AB74573C4 /* RCTLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4EF7FEE09B24A016FD7489025596D713 /* AudioRecorderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 66A3C30FAD3141239D732D294DFC5598 /* AudioRecorderManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4F08C1AA06DB1EF092D1AC739DDD32A4 /* ARTSurfaceView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2906DDB1F14278AA23677F8338948411 /* ARTSurfaceView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 4F15A702742BC8EEC77814DD5A7D1641 /* RCTMessageThread.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3D6430F396C6EBB6638714FBB10315CA /* RCTMessageThread.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 4F1F6CFF3B9C457F73F5B8AF1AF79893 /* GULAppDelegateSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = B3D892AE8597A9B7DD8584C0AA7DA67F /* GULAppDelegateSwizzler.m */; }; 4F2C2732085E16054E71361E687114D3 /* RCTImageUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = C92512161C2301398F3E08A8BDCC12D0 /* RCTImageUtils.m */; }; - 4F396B6DA5545C2B06340E9BA79EB498 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = A984D3FECA3FC20063DBB2260C3340F6 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4F7E32A059ED4485D7CF79F3B74CDF01 /* FIRInstanceIDTokenOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DD51EADE5D09DE44C32D69103CFDC53 /* FIRInstanceIDTokenOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4F823185A6F682685710B9574E32D3AA /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = 1213AB99B5CC77DF90E77DCF5420383F /* SDWebImageError.m */; }; 4FC056AA5B803E2F5E1BE4D5EB038A0B /* react-native-appearance-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CCAF055E529752847C75826F77E9416 /* react-native-appearance-dummy.m */; }; 4FC9AE5622DA302E003954C3A03A61CD /* React-RCTSettings-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 89E51AAA62F862E9845F3BCEBA4471BA /* React-RCTSettings-dummy.m */; }; 4FCB2253CAAF6A8CD77729C14594CBE4 /* ARTSurfaceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B6173C9FF424C99E39122BE128ED09B /* ARTSurfaceView.m */; }; 4FD4A078850E697AAC9FE5093FFDAD53 /* UMAppDelegateWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = AB872D6F4881170DA344D4B5D2B8950C /* UMAppDelegateWrapper.m */; }; + 4FF27C416A5E6CF6705EE1732D392D1B /* FBLPromise+All.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAC32E62B1F1A5CF4B7035D16475866 /* FBLPromise+All.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5005D6761137D55A31755FA8762CCF7B /* FBLPromise+Wrap.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FECE8B750D858CB3C6E9F3EC41E9A9F /* FBLPromise+Wrap.h */; settings = {ATTRIBUTES = (Project, ); }; }; 500E9B663E101F6ACAFBA792E5932023 /* BugsnagBreadcrumb.h in Headers */ = {isa = PBXBuildFile; fileRef = 807A779FAE2954A7DEB36EE202F2B50B /* BugsnagBreadcrumb.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 502FAC1E08336ADB908FABCC6692BE90 /* FIRInstanceIDStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 400C4C1D16088D9B17F94F449FD66EEC /* FIRInstanceIDStore.m */; }; 503F96DD76B26B7F3FF816FB7F6E6B18 /* RNLocalize.m in Sources */ = {isa = PBXBuildFile; fileRef = BF75FB52132595BFDC41B0278ADAEE91 /* RNLocalize.m */; }; 50698A0A9C1C096EE7D378E2C872A384 /* RCTAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 50AAD7CC4F251E199BD4939630F9F528 /* RCTAnimatedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 50A813DCE536784396073D6FFF9F3325 /* mux_types.h in Headers */ = {isa = PBXBuildFile; fileRef = 6978AE3655589E7A3736CE24EF459AE0 /* mux_types.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 50A813DCE536784396073D6FFF9F3325 /* mux_types.h in Headers */ = {isa = PBXBuildFile; fileRef = 54C80AE83CCD41943A1509A4518CEF1A /* mux_types.h */; settings = {ATTRIBUTES = (Project, ); }; }; 50A900B393ED9B9AE107160AAAA9D2CE /* RCTErrorInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 84BE2C7443B6C5385B9E1464E6B32E3E /* RCTErrorInfo.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 50BFDEC0A6599CE33073B7F1245CBDEE /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = C2F2A0EACBCFF372BA3D861762FA3918 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 50F65A7405BEE517EC658FE55ED70018 /* GDTConsoleLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = EDC3EA1DDFF95BAE78F476F4F6CF2874 /* GDTConsoleLogger.m */; }; 51093E66FA7DBDB281D906D26D9DC378 /* RCTInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 19284D31BD342A64F8E638D6F6DD5F87 /* RCTInspector.h */; settings = {ATTRIBUTES = (Project, ); }; }; 511F51533D71E43B725E235CCA913464 /* RCTTouchEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = E20BECAAF117D13FDFA68D903AB2823F /* RCTTouchEvent.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 5127828C12F9E9715810F9D02C1CE720 /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = FCF58272F65ED034BE22E4A8C0456B72 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5134C7B582F00BAB682F3A69DC3790AA /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 93B11D5857328B9B8C43CEFE929288EC /* SDMemoryCache.m */; }; + 5170CD2D819D39CE643B288F7DA6212A /* FIRInstallationsAuthTokenResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A8C2E718EEB7FC61E0AF4FF7745365F7 /* FIRInstallationsAuthTokenResultInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 517ABBAF7367444484132D7F5CD6BBC7 /* RCTTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8494ADB2C4035D2B22513419C51B5517 /* RCTTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 51AB931695C6A683B02DCED4DDC7E900 /* RNNotificationEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 170A74C6C2C5C22A8B53386C9837E276 /* RNNotificationEventHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 52ADAD247D836F3627A7E5CE7744A659 /* FIRSecureStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 3831B2A00965967014DC2303A0B27F59 /* FIRSecureStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; 52D80F9C25476F314DF6A4A179BB7A23 /* RCTFileRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 48E66962C9572CC3ABCEC3D5589A4D7E /* RCTFileRequestHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 52FC0092CAC6137CD80C517EFF257494 /* FIRAppAssociationRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BB289DB92FF1A08F326924844309EEE /* FIRAppAssociationRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 530798D8A1CF3289921987D9FDC7B884 /* FIRAppAssociationRegistration.h in Headers */ = {isa = PBXBuildFile; fileRef = 59EDFE4884DAF3E61B6C33A8BE503617 /* FIRAppAssociationRegistration.h */; settings = {ATTRIBUTES = (Project, ); }; }; 531131AA54E45A625EE48708E77A7910 /* RNFirebaseFirestoreDocumentReference.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AD45FCA84FB2434143E5D1850C67D1C /* RNFirebaseFirestoreDocumentReference.m */; }; 5323DB969E6AEB25BAB50F2CB65D553E /* ARTBrush.m in Sources */ = {isa = PBXBuildFile; fileRef = CC3A25758C48E41849D21816D17AE1E8 /* ARTBrush.m */; }; + 532684D939B80EF9527A71AC2082A6E5 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = B2910F746BA799CA787EFCE48845B524 /* SDWebImageError.m */; }; + 533F5B5A43499AF92AB8DBF7CC1CF84B /* FIRErrorCode.h in Headers */ = {isa = PBXBuildFile; fileRef = CCE13B65AEE9DB27E1676D172D142597 /* FIRErrorCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 535DACC7936138341FA544E17631DE61 /* RCTVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E136A7DD0501D2920AC6E751907951C /* RCTVideo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 53C338E1563591F463193CF3D2327216 /* FIRInstanceIDTokenFetchOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B78E7E3DBE12168C17E886E24FB2F51 /* FIRInstanceIDTokenFetchOperation.m */; }; 5438467E978675E1651C0CC682270E26 /* RCTWebSocketExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = CDB5F578E2042E693A3F18E5B3DA855A /* RCTWebSocketExecutor.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 545434BD6D2216C6F09893FF449649DD /* BugsnagFileStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A708AD80219699E2A645931B9F0274 /* BugsnagFileStore.m */; }; 5472D790D5CA80D8841FE82D9CC7E06E /* REATransitionValues.h in Headers */ = {isa = PBXBuildFile; fileRef = BEA2EA1E087459E4C63B1E4E71562822 /* REATransitionValues.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5486311C31543B9A40362E6836E817DE /* ARTTextManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0728DF55B0762E76D1988160FF42272B /* ARTTextManager.m */; }; - 54A9246371027B4CD3B43008884FA90F /* FIRInstanceIDBackupExcludedPlist.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BBC2EA548E00A132F008D4552E8CABD /* FIRInstanceIDBackupExcludedPlist.m */; }; 54B1C522469904C9947EEFBC434317C7 /* RCTPropsAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B824CABD58145BAA085DEB425D763CD /* RCTPropsAnimatedNode.m */; }; - 54B6D082D028EEFE1E4A1987489EA682 /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BDBE26D1AFAFADA908C7EC0D26845579 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; 54DD7A4DA510F89502898CFDDE526791 /* RCTNativeAnimatedNodesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A02C799EB03CF97350DD5854B811C0C0 /* RCTNativeAnimatedNodesManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 54E1C1794977A05E882F8472429C9528 /* BSG_KSCrashSentry_NSException.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D0889914C2EAB592A088E57E532DCD1 /* BSG_KSCrashSentry_NSException.m */; }; 55195AB5F725DF334CBDC109AE395CA3 /* RCTStyleAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9288615ACA0BF93301A73914C47FFF /* RCTStyleAnimatedNode.m */; }; + 552BF8053A03C10B0A849A781B5D40AB /* NSError+FIRInstanceID.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DFBAA668DAA11EFFF653C4F4F65920D /* NSError+FIRInstanceID.m */; }; 5540CDDC03A82226F1717892B3E634E7 /* JSModulesUnbundle.h in Headers */ = {isa = PBXBuildFile; fileRef = 2057AABFC66C0A8C7AE0D06D345C2B55 /* JSModulesUnbundle.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 555AE9BB3A4B4A37116D009489131F89 /* GDTCORRegistrar.m in Sources */ = {isa = PBXBuildFile; fileRef = 43AAE931318CFC65211035F2E169B081 /* GDTCORRegistrar.m */; }; 556A5B3489033C319EFAFEB961E2CB93 /* UMViewManagerAdapterClassesRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = DAA490AB8CAED42668DC35D43BA2575D /* UMViewManagerAdapterClassesRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 556BC4473335922D123C95D9C7A6307F /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = D63B972B95C4ACEAA36C351BF1B2CDDD /* SDImageCacheConfig.m */; }; 5577579A4BFCE7BD4C079625B8F67344 /* RCTScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 277399C556AA4B46C25A19AC1B29F616 /* RCTScrollView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 55B7CB112CABCD20BB52FA1F225BCE39 /* RCTConvert+REATransition.m in Sources */ = {isa = PBXBuildFile; fileRef = EFEE57B5E9B7E6FFAE0FBB71BB7F7C04 /* RCTConvert+REATransition.m */; }; - 55F72D6B2A29619435CE8615E7803975 /* dec_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = 79CB84FBC11AB9D21E3012451C45CB96 /* dec_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 55F72D6B2A29619435CE8615E7803975 /* dec_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = B5C4CF7EEBB56E009C17E4CB2CDCD303 /* dec_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 55FB43514277CA17C739F645DAC9441E /* RCTConvert+RNNotifications.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F4BDB1C1F0DEC616F4EE2565D81B77F /* RCTConvert+RNNotifications.m */; }; + 5605F99EFA7EB1FC1B0AD035A25608E8 /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 55DEC1E6B4290093E9B0766AC1D19DFF /* SDDiskCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; 56100FAAA94464067322A690ED912A7A /* JSExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 94CDC22B49EC8B76E4EE023F1313845C /* JSExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5651B7D25B0D4053B7DCBE24594AE5A2 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EE39A7B4283BEFE43E66F46862951DC /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 565EF60B5D30D937C88DB733534A746E /* FIRInstallations.h in Headers */ = {isa = PBXBuildFile; fileRef = C99B6ED7E39443CBF47A64AE5D60CD8E /* FIRInstallations.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5672B8BD4C7EAB0DE6BBFEC8487B6693 /* RCTJavaScriptLoader.mm in Sources */ = {isa = PBXBuildFile; fileRef = 27F11528898E1C09AC16B648A3466810 /* RCTJavaScriptLoader.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 56E7702B98F46346A3D240054D939E7A /* UMReactNativeAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = C651F8C614465833939221AC4CFF9313 /* UMReactNativeAdapter.m */; }; - 5730650DB2DEAACDDD31A30086AC02D9 /* filters_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = 51532E710DF75FD878886A5E6C8F1977 /* filters_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 5730650DB2DEAACDDD31A30086AC02D9 /* filters_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = 371C3A9071849B2A8C9AA73083078BAB /* filters_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 5739A1EE2310BDED7DC7300319F16951 /* RCTInvalidating.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B5BF6F5C3F36B03310C16BB02AE92EB /* RCTInvalidating.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5741AFE087A083C8D0D5C9D5F646A707 /* muxread.c in Sources */ = {isa = PBXBuildFile; fileRef = D563B3F8B5F2EC3024FAB3290E161100 /* muxread.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 5741AFE087A083C8D0D5C9D5F646A707 /* muxread.c in Sources */ = {isa = PBXBuildFile; fileRef = 285481B86C63C48528603907702089DB /* muxread.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 575004987788BE8008A657816910AEF4 /* YGValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A23231E02523DBE1CEFD142A4EF57119 /* YGValue.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++1y -fPIC -fno-objc-arc"; }; }; 5750428B5929F173BFFC86913079ACDA /* ObservingInputAccessoryView.m in Sources */ = {isa = PBXBuildFile; fileRef = 414854704FB2E14EBAA33201FA04C107 /* ObservingInputAccessoryView.m */; }; - 57779A997F204BED973BB03DBF2B8190 /* vp8l_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = C5E50AFB60DE75A7F2AE919BBEB66E7E /* vp8l_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 57779A997F204BED973BB03DBF2B8190 /* vp8l_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = B18979D7EEF1DB0BD8B390FAE4FA6123 /* vp8l_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 57A58CB1136FD1C50C4E567719066705 /* BSG_KSJSONCodec.c in Sources */ = {isa = PBXBuildFile; fileRef = F52AF8FBB89BF50C43022FA550FC224E /* BSG_KSJSONCodec.c */; }; 57C316C8C1D30A80E5A09BE3C6B6DC7A /* EXFileSystem-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 76107D98663D0AAB38C7B9B963D90872 /* EXFileSystem-dummy.m */; }; - 57C8A26C5E905E0B125AC142E720F5DB /* firebasecore.nanopb.h in Headers */ = {isa = PBXBuildFile; fileRef = A72FB0A1AC1D24670509A274650EA2F3 /* firebasecore.nanopb.h */; settings = {ATTRIBUTES = (Project, ); }; }; 57F5F62A57C9A3E5EA58650CB98BADBD /* UIResponder+FirstResponder.h in Headers */ = {isa = PBXBuildFile; fileRef = E75BE57A61B40A7B224FE39774231435 /* UIResponder+FirstResponder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 58126EAA5B53B971BB4636C7A244A749 /* GDTCORUploadCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = F55052F42574B7D52A6BA105DCE2F19E /* GDTCORUploadCoordinator.h */; settings = {ATTRIBUTES = (Project, ); }; }; 583014BFFCEEA7B050F315C823BFB7DE /* JSCRuntime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 456084F44DAA789CB020F8A2FD5DA431 /* JSCRuntime.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 5835A6EE119F67B3B5DDB92D53520B25 /* EXHapticsModule.m in Sources */ = {isa = PBXBuildFile; fileRef = A5CD301CBCF12623517092F643A8D4A0 /* EXHapticsModule.m */; }; - 58AEF2D987F14D4D2AF6D28C7F7F4CF7 /* rescaler_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = 323084A9C7E3739A9C9108ABE90C5364 /* rescaler_mips32.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 589F5BDC2B57CBEAEC6B457450AB3F6B /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C3849B9FE871B8A9BFFEA94781CC286 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 58AEF2D987F14D4D2AF6D28C7F7F4CF7 /* rescaler_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = EB58C1A1A2B45B20B44F908DC5FFD1D5 /* rescaler_mips32.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 58D7052A7CCD26DD25B38FAAD2E996F2 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 458BC6D0F0ABCC8D2958F42C9A3F3820 /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 58EC76AF621A0CEB920D28FC263B080A /* BSG_KSCrashCallCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = B1F55CCBE67BE68BB69741B56329314A /* BSG_KSCrashCallCompletion.m */; }; 59C92BB99C82C50287F115D47A1CF725 /* RCTInputAccessoryViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 170794365051DE61C2F27CA071918980 /* RCTInputAccessoryViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 59FA089B729EBF37634A4D344228514B /* RNFirebaseUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = AA86777BCF757519048D2B2F0BB57062 /* RNFirebaseUtil.m */; }; + 5A01CF4A9C711B4E767058AC022D8DE5 /* FIRInstanceIDTokenStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 81DA341D791704280F8256A98FF27460 /* FIRInstanceIDTokenStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5A33410E138E7114023CBA9FD59674E8 /* BSG_KSSysCtl.h in Headers */ = {isa = PBXBuildFile; fileRef = 62C356E403E5757FEBB5F6AC59AF8A36 /* BSG_KSSysCtl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A4575C76426903C742BF80B5DC5361E /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = D54F6EA8F501C29E00AD8D0F3E53A1CA /* SDWebImageCompat.m */; }; - 5A59A50C6C6459D108D357CE53F2156A /* vlog_is_on.cc in Sources */ = {isa = PBXBuildFile; fileRef = 5D46682E47471017D25EE31D4CD7C097 /* vlog_is_on.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; + 5A59A50C6C6459D108D357CE53F2156A /* vlog_is_on.cc in Sources */ = {isa = PBXBuildFile; fileRef = 0F354B2F01F2D88BF64EFB54C7F55D9B /* vlog_is_on.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; 5A629419C0D96DB5D419A3C1138D1A21 /* RCTRefreshControlManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 69B44F6867FDC888D9B3E778B0CC86DA /* RCTRefreshControlManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A81696564F736AF85CA0CF8BA37458F /* FIRDiagnosticsData.m in Sources */ = {isa = PBXBuildFile; fileRef = 6750678139A1A6899CB0DEC8000545FE /* FIRDiagnosticsData.m */; }; 5A84ABFC6FC217BEC6FE13B2D09C48DF /* RCTImageViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A50F74C42C3DD6B4A9F69B23D3E82AE /* RCTImageViewManager.m */; }; 5AD05473C8FF3452F5780F1B84255D08 /* ARTGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = F58489410FF77E18D59457505B9AA8F0 /* ARTGroup.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5AF23FBF64648FF288C59BA264F52D33 /* RCTTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 00F141C90BDC5ABFB362C6A910458B2E /* RCTTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B3B7A693EFBE41F88B15144198DF339 /* BSG_KSObjCApple.h in Headers */ = {isa = PBXBuildFile; fileRef = 622C2298B9560A8972BADB00740D62C9 /* BSG_KSObjCApple.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5B3E2563BD4AC3D5DCEC78F631AC9B40 /* GoogleUtilities-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EA24205E9A7B87800BCFEEC108BFF33 /* GoogleUtilities-dummy.m */; }; 5B442972EF2B41A52CAF358203414CED /* RCTLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C51D6EBAB67D41940C272A7960AEFC9 /* RCTLayout.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 5B49E81F49E66F6505E50F99424D1C59 /* ARTPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 77327992D03EFF43D7486B0D4DF8FFAB /* ARTPattern.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5B4A397DF3BDA66041BD6CEF2B3EB09C /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = FC4D1271006F3F19FD1F32ED18916996 /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B4B0F4B0B8EC0566E9C37CFBE013C7E /* RCTBorderDrawing.m in Sources */ = {isa = PBXBuildFile; fileRef = 00D78A4B0214C7CF7F25E5312572EE0C /* RCTBorderDrawing.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 5B58EDCC67B8226268F1E5A7EA115AD6 /* RCTSwitch.h in Headers */ = {isa = PBXBuildFile; fileRef = 861210F0BE7A71097101B88DB973BF08 /* RCTSwitch.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5B70122A26A89D3DFA857385FD1A9AD0 /* BSG_KSMachApple.h in Headers */ = {isa = PBXBuildFile; fileRef = 5986E69905D8ABC7C1508DA89704548B /* BSG_KSMachApple.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5BBD3BF8F1D8BCE5424520F1C5F597A0 /* RCTConvert+FFFastImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C44808963FFBF4FFE9F3634F30135C4 /* RCTConvert+FFFastImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5BC9846FCBC634C69EDB99A707469D35 /* GDTStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 824F6DDB5733946BF470102D4A2B06CB /* GDTStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5BCC122BAE29ECBAEB136C7B886C7C8A /* RNFirebaseFirestoreCollectionReference.m in Sources */ = {isa = PBXBuildFile; fileRef = E7B3640BF5E94E328E51EA79A6AAC58F /* RNFirebaseFirestoreCollectionReference.m */; }; - 5BD3E450B15ADCEE0FED33892A3EAB5D /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 21DD77BC4C9F446030612C2B4AB20317 /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5C10DFDA2ABBC6171DFA658A947A46EB /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = F27874372F3317E7A40B56B92674FF9E /* SDMemoryCache.m */; }; 5C2627501BA7043543996AE385236BC1 /* RCTSettingsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D392E813171E4AF47DB543E300F51995 /* RCTSettingsManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5C3E927542A18118CA2CF86513E70B5B /* RCTVibration.h in Headers */ = {isa = PBXBuildFile; fileRef = BDCD5401FA368574693A20794B33DA3F /* RCTVibration.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5D13D45E4F101B31DA3BD58850C1D938 /* EXLocationRequester.m in Sources */ = {isa = PBXBuildFile; fileRef = 37033FA3AC8B8C8B77DDF486CC951EA6 /* EXLocationRequester.m */; }; - 5D94C85521F651CAF78D0774F739EFFE /* config_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 7223382B9B79F03CB07B899C151304FA /* config_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 5D95EAD37D2BC74E84D6596CE99FEDEA /* NSError+FIRInstanceID.m in Sources */ = {isa = PBXBuildFile; fileRef = 23EECA421B7288F614E7ABE957561AC3 /* NSError+FIRInstanceID.m */; }; + 5D94C85521F651CAF78D0774F739EFFE /* config_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 507484DC13FF28BFA253C3259BC915AF /* config_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 5DA1958CF4DAD67AEB1A26CA2FBBB7EB /* RNFirebaseAdMob.m in Sources */ = {isa = PBXBuildFile; fileRef = DFF060107B7AABE7F62B8FEEA39C3610 /* RNFirebaseAdMob.m */; }; - 5DBC3155185D22F3124C211FB656A452 /* GULNetworkMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = D6DD593F04D58A5F3553692C25B27A02 /* GULNetworkMessageCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5DB8EEF2D2A248784F2A801E1E0CA1A0 /* Pods-RocketChatRN-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A03EB9B87FF49512AC6907C1B9AA221 /* Pods-RocketChatRN-dummy.m */; }; + 5DCA31ED0308779922E83F0F13640E3F /* FIRInstanceIDAuthService.m in Sources */ = {isa = PBXBuildFile; fileRef = A4B5638048C9BE689A53D2981A56EE93 /* FIRInstanceIDAuthService.m */; }; 5DE8971BB473788ABB370255ABF4AED0 /* UMReactNativeAdapter-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F0C13DD5B14F39844489AA533439C11C /* UMReactNativeAdapter-dummy.m */; }; 5E037AEDDBDE44BA91A33C56023FF2F6 /* ARTRenderable.h in Headers */ = {isa = PBXBuildFile; fileRef = 4247D0FCFC11B26EB8C2B41054DABBDC /* ARTRenderable.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5E0AD81439136001BCF345A7288B768F /* FIRInstanceIDTokenDeleteOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CB6851B50895A42D3F7C877300D7C7A /* FIRInstanceIDTokenDeleteOperation.m */; }; 5E1BA146E8395101B4385FD2757A9A53 /* RCTUITextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 53FE4C651E52A4B096600F1C4BF1EF94 /* RCTUITextView.m */; }; 5E64CB1713EB7E433FFAAD7078525999 /* NSTextStorage+FontScaling.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E4A2E27DC374E4005C34F5376DAEBC0 /* NSTextStorage+FontScaling.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5EA02CA63D47384905FBB2F9305816A4 /* UMViewManagerAdapterClassesRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 03CF8B129F84A67BF7EDAEC900572B62 /* UMViewManagerAdapterClassesRegistry.m */; }; 5EA03FA15E6CA3B798DE10D11A26869C /* ReactMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 715704BCA6396E7B6D2AB56C7F7FE3B9 /* ReactMarker.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 5EB1A9BA116DDF6AA30A626D000FF5AF /* FIRInstallationsErrorUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = EB70BE00723008AAD156EB27A07FE171 /* FIRInstallationsErrorUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5ECBD7BAEE9AFE285724B8C23E2F8366 /* RCTSRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = ECC27A56848B03CC648EC2BF28BCC55F /* RCTSRWebSocket.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 5F09157C1DF89E099F5994063D10410B /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 188DE396BFE9BACC9E475E966B3ECB4C /* SDmetamacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5F1267AD8AA6EDAB59053DE48CE90F5E /* YGStyle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A570D229F7770410099A7C1A9BF2CC0 /* YGStyle.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++1y -fPIC -fno-objc-arc"; }; }; 5F23E8E57266DAC77BA53983F18B7DB2 /* REAParamNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D2126D3931AD02B5F31B449780DB9354 /* REAParamNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5F3914305B352AA4A312EA53ACD0BA46 /* RNGestureHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 25C61855D9E009FBDE973162823D5B7D /* RNGestureHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5F48078C953774E5876EA42742BA186F /* GULLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FE80A0E5A04BEDCC2FE998068C2E8A5 /* GULLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5F5378B828C8964BCBDD35727B30E2F2 /* GULUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 760D77A4F668A9C3F29BC76736A73378 /* GULUserDefaults.m */; }; + 5F591A05DC74FE96D26FCFCE23162A75 /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 445FADAAD22E2C0B298304BB38E55693 /* SDImageFrame.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5F7B3953B7ED183636C6FED0FABDE300 /* RCTInputAccessoryViewContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CEEB6FAF21D0BA92AC0A04AE4DDD428 /* RCTInputAccessoryViewContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5FA6DDEAD9030CB81E2D371A17F7C4BF /* GULSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A9619333FE09CF2DFA4A5A7A719200 /* GULSwizzler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5FBDE897F38FB994BBE94F564E24BDB2 /* RNFirebaseAdMobNativeExpressManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 57D38BD8CA32B091EC53F86C2CB7E8A8 /* RNFirebaseAdMobNativeExpressManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5FFED67AC7B45A372C816803664090C3 /* FIRInstanceIDTokenStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 357F2F1FC1E767EE78BF6EED5BD212E3 /* FIRInstanceIDTokenStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; 605EA3DD878151B4BC628CFE5E52A205 /* RCTUIImageViewAnimated.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B3EE1E4659F5906B7939DB8EB030CB /* RCTUIImageViewAnimated.m */; }; 607F8CB189F69907FA7ABD628863B047 /* RCTActivityIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 20B89E66A01DCF69DB5C84DFEAF3C692 /* RCTActivityIndicatorView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 60A990FC2ACC3B03F9B399BE28919107 /* JSIndexedRAMBundle.h in Headers */ = {isa = PBXBuildFile; fileRef = 484F116868006BD6B32BDC972A8A5370 /* JSIndexedRAMBundle.h */; settings = {ATTRIBUTES = (Project, ); }; }; 60FFD2D922B804E20A11302D5A3AE607 /* RNImageCropPicker-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 262A578D9D6A95FA9D2C63A74A12B843 /* RNImageCropPicker-dummy.m */; }; + 61076FBB82FF6974FED4A86160D17E5E /* GULNetworkLoggerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = F17947A41DC67706AD2ADAD8C7C559C3 /* GULNetworkLoggerProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; 611A7B0EA75F7056535EFE1611EAD137 /* ARTText.m in Sources */ = {isa = PBXBuildFile; fileRef = D31D1C26D5CC77343AF15248ADE7F6BA /* ARTText.m */; }; + 611D02587581D20BABC1EC3962F6262C /* FIRInstanceIDLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 57F3CF73401C2A7D1861DD573FA5AAAB /* FIRInstanceIDLogger.m */; }; + 61599CF45B061C7D8E678400226A7229 /* GDTCORTransport_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DF98BC6C3F20CCC5179F53F73FF41B6 /* GDTCORTransport_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 61CB6A0224314655A5CD350A3663ECD4 /* UMAppDelegateWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = EBAB452EFC2E62AC9BDDA0C948A39F1C /* UMAppDelegateWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 61E4CD178FDC8352B454E078ABEAFC48 /* RCTFileReaderModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 280F25C6B97C9C0323AD07C0C207CAA9 /* RCTFileReaderModule.m */; }; - 62266D8BCAC4E742B934F054A012CEDC /* GoogleDataTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = FE95110A46FCBDDFDF5AEEDAFE1C082D /* GoogleDataTransport.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6221A04C1F48445D01F695BD730A01CC /* FIRInstanceIDTokenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = ABB34BE98015F83F80BC4216458D9FE9 /* FIRInstanceIDTokenManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 623E4C952DCADDD44F6943CEFDCC21DC /* FIRInstanceID.m in Sources */ = {isa = PBXBuildFile; fileRef = D78FEB55F9E2565E62801C68DC429BCE /* FIRInstanceID.m */; }; 623FC295B29631DF73E03BC69E36032B /* RNFirebaseFirestore.m in Sources */ = {isa = PBXBuildFile; fileRef = 2979D53A359A99A42391A537AE1B5B75 /* RNFirebaseFirestore.m */; }; 6259FEAFDF7520D2B057E005B691B2B2 /* BSG_KSLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = A0C71A8BF755B047A6CF93AE27D962DF /* BSG_KSLogger.m */; }; - 625FB1A1A50F531C209F5950D7FF8475 /* alphai_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = DD6632004F2003DCDE912F11C44CEA56 /* alphai_dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 62AE5C4EFFF8C486F27736EA796AC818 /* FIRInstanceIDCombinedHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 7990BC8A7C7229119CF767CCAD9AAF62 /* FIRInstanceIDCombinedHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 625FB1A1A50F531C209F5950D7FF8475 /* alphai_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = FD022A7C3D909D8519F310D4392F2421 /* alphai_dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; 62BBB67D794EAD6E8AE0AD47CA0DBA80 /* REAEventNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 28681FF7EBC6A6EF86791B05CBAFC5BF /* REAEventNode.m */; }; 630C91DF5FAA47CF56146710CB25C67F /* EXPermissions-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 62D8299947B104E2F2441F8B8F224296 /* EXPermissions-dummy.m */; }; 635F0F813C7322171ED9EA180443A241 /* UMEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = F44086620DAB6F77CF3BD6506D06798F /* UMEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 638173471B670878B34394773F467230 /* REATransitionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 11FE3D70314F711012EF0BDE4979BE00 /* REATransitionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 63CC635B37FED8C7DEF027CB5462EA7B /* bit_reader_inl_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 814BC5DE2797DF0C936CF03839974699 /* bit_reader_inl_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 63CC635B37FED8C7DEF027CB5462EA7B /* bit_reader_inl_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C4C051A4E9CF5D93B0327AFF8F51044 /* bit_reader_inl_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 640929BA76B4E72C01E40669AC36E967 /* RCTBorderDrawing.h in Headers */ = {isa = PBXBuildFile; fileRef = 736077A8246C8154580EA08DB05C35BF /* RCTBorderDrawing.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 641AB39A00602C3CE7FB1FCD93FCCFF7 /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 66228ED45E198EDBDEA21A197E306C7E /* SDWebImageDownloaderResponseModifier.m */; }; 6424F5856E8339CF8C3F5570D47E2FED /* JSBundleType.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BAA6411C85426B36C85020C4B1C208E6 /* JSBundleType.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 64554430F1D85E4FC49F1062A6B85E22 /* GULNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = AAC30C36CEF4ACB54CE1E6E49DCF3E31 /* GULNetwork.m */; }; 648C1EE6D41D617836426E185AC5AAED /* EXConstantsService.h in Headers */ = {isa = PBXBuildFile; fileRef = EF12E615FDDDC5DC67C7B27029CB52D3 /* EXConstantsService.h */; settings = {ATTRIBUTES = (Project, ); }; }; 64B776BA872F19C7CE95997591E34F15 /* RCTDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B1B654D254C7E1810BADC1CBB4306B8 /* RCTDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; 64CE86C677FE58819125DF1CF00FD92D /* RNSScreenContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = F208CB3F8E89D985AB203CAD66B7B0EE /* RNSScreenContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 64D693E04A85ADB73BE80E3DA8FF8DCF /* react-native-keyboard-tracking-view-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B38B4B1080E2D409F08EC08ADE9D8F04 /* react-native-keyboard-tracking-view-dummy.m */; }; - 64E791612A7D27AE1C4409A981341CBE /* lossless_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = E258A8E46A886DA9F51CC133614C1696 /* lossless_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 64E83E53B7F40F2CC0A0CF7BC3C8A43C /* enc_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = E4376CCDB1E042F671C3D5BABF69B876 /* enc_mips32.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 64E791612A7D27AE1C4409A981341CBE /* lossless_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = BB117D47D780DC71082229222E18A9BB /* lossless_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 64E83E53B7F40F2CC0A0CF7BC3C8A43C /* enc_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = 54AE600BDD27B1D9D24B98E5EA73E2BB /* enc_mips32.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 64E9035391D61BFA55BD23B151AD07BB /* RNDateTimePickerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E878C1F2050BF8CB9FC08C84EDE84445 /* RNDateTimePickerManager.m */; }; 65257CF2DC6AD9C87EC075F55049D40D /* ARTText.h in Headers */ = {isa = PBXBuildFile; fileRef = D8B8D5E98E85919D0D2AE0E7AA270542 /* ARTText.h */; settings = {ATTRIBUTES = (Project, ); }; }; 653E84B85ABA16CB6DEA33042685263C /* RCTCxxMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = F5DC4210CA6076B3BBC396A83535BD17 /* RCTCxxMethod.h */; settings = {ATTRIBUTES = (Project, ); }; }; 654D2B56BB85DB6247D712F41EBB4BE8 /* RCTImageViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 96EAB41B780D55D6439A222820C17B09 /* RCTImageViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 656D1C77C4CAF79D0022BD5B4A141903 /* RNNotificationCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 494D7C6BB2849CCECF2A7719596A60E9 /* RNNotificationCenter.m */; }; - 6580CADB1B58D051496B7FFEE2B1C22E /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = C507B3571991755F03AFAE7FAA0A698D /* SDAnimatedImageView.m */; }; - 6584F1A61DBB0A4BB4BD9EA418FB70E6 /* quant_levels_dec_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = AC67BC726D036DB665F8D256B87CE29D /* quant_levels_dec_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 65A7CF7828FC4B009CBCEA5EE57938E3 /* FIRInstanceIDDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 169C59D4B7CFD8544456F26E526BB4F7 /* FIRInstanceIDDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6584F1A61DBB0A4BB4BD9EA418FB70E6 /* quant_levels_dec_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BDC9CA7E51DCBAD996FE36076C1898E /* quant_levels_dec_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 65B2DEA93BC9FAFE680CE9B5FD91C140 /* BSG_KSCrashSentry_MachException.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C19055FA15FDF3D592E684CADBB0FA2 /* BSG_KSCrashSentry_MachException.c */; }; - 65BC1D89895A4D5A4630CA5940E4A018 /* GDTCCTPrioritizer.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D51E11A724780AD122EAAB74D10317 /* GDTCCTPrioritizer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 65CA61934FB03CF180290DE31AF56EF4 /* enc_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 0729A290877CECD5381E28D8670BA702 /* enc_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 65CB92D29B76DFDEC572A3AAE0564298 /* encode.h in Headers */ = {isa = PBXBuildFile; fileRef = B79D1587D505AC41205B1956A58CDE6D /* encode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 65CA61934FB03CF180290DE31AF56EF4 /* enc_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 7AB2ABB19DF260BF726A2A7DE50BB0C7 /* enc_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 65CB92D29B76DFDEC572A3AAE0564298 /* encode.h in Headers */ = {isa = PBXBuildFile; fileRef = D79E6FEE7691DA5E934AADB1851C0232 /* encode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6608213295B85470CB7D9FF496A75AF9 /* RCTUITextField.m in Sources */ = {isa = PBXBuildFile; fileRef = F10EFF0CD575AC43A53D01C7D23AD50E /* RCTUITextField.m */; }; 660CECD8C6835E718C29800AB8CFEB46 /* RCTTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = FF905AF5FDF55125E6D055EEB4E6D87B /* RCTTiming.h */; settings = {ATTRIBUTES = (Project, ); }; }; 66461FCE36880BD3496945D2A2870456 /* FBReactNativeSpec-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B414D8CC65221A132C98C29A03A19116 /* FBReactNativeSpec-dummy.m */; }; 6661CB905BDE95946F8507AB79F27015 /* Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 26C529F93BEAF01BDCF314272A97D5A2 /* Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 666F347B84B23221BC4D76B0BB3D521F /* RNFirebaseFirestoreCollectionReference.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1C3016E3389BBCE59AD8B7649F0956 /* RNFirebaseFirestoreCollectionReference.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 66811E431F72A69005364E0433281D70 /* yuv.h in Headers */ = {isa = PBXBuildFile; fileRef = 612EB3CB4B257025F648D62D327C6602 /* yuv.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 66811E431F72A69005364E0433281D70 /* yuv.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B2C19870540C57176CD67F1135A50CA /* yuv.h */; settings = {ATTRIBUTES = (Project, ); }; }; 669AD772A900C26E92756FE2500CB010 /* BSG_KSDynamicLinker.c in Sources */ = {isa = PBXBuildFile; fileRef = BB9605D1B5460502B2344AE8267BB8CA /* BSG_KSDynamicLinker.c */; }; 66D0421E4DDA33160130778834F66E37 /* RNLocalize-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FC1C9BACB409258D55795F22EC30E614 /* RNLocalize-dummy.m */; }; 66D6E62D450BACF145A456166BB45C2B /* RNDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A1E231B5D85FFD8717EAF9D9C711B2A /* RNDeviceInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; 66DE3DA8B730B101267AE71D7E014D80 /* BugsnagKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 69553ADA0240020F66CCC3166C6C9541 /* BugsnagKeys.h */; settings = {ATTRIBUTES = (Project, ); }; }; 66F6C08EE54110CE9EE206BF6B293A2B /* RCTRedBoxExtraDataViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBFBE789BEF0674A3F1A44F89494557 /* RCTRedBoxExtraDataViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; 66F758B6340D92E1E9302298F1CF0F3B /* TurboModuleUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = F89473948C947E5DF0BAAC2B2AD27FA6 /* TurboModuleUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 67278E9F64F6827638B4D52D8CF71F42 /* RSKTouchView.h in Headers */ = {isa = PBXBuildFile; fileRef = 64FF2026735EBE214C8F6A877CC5B06F /* RSKTouchView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 67304F639591EAB43001263B341483A1 /* rescaler_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 70FC2444F6223914BEA560B3136110B7 /* rescaler_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 673EB44F71F2C6F4FBAD5C2C8E7CFEFF /* FIRInstanceIDTokenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D5B7CF80A43E501BEA20FB90FF049DD4 /* FIRInstanceIDTokenManager.m */; }; + 67036BF15E333815981C92DEF30881A0 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = F934561A4844BCB1A5D2C72516F4A72A /* NSData+ImageContentType.m */; }; + 67278E9F64F6827638B4D52D8CF71F42 /* RSKTouchView.h in Headers */ = {isa = PBXBuildFile; fileRef = A31F188D4B66F6B22F8E86B908FDCAFE /* RSKTouchView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 67304F639591EAB43001263B341483A1 /* rescaler_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 893353C22879F217358868739D8C89E9 /* rescaler_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 674B78DEE8CC679498E5DE48188B81FA /* FIRComponentContainerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 51D0EC206B3FF3FD54D207F3F5C70719 /* FIRComponentContainerInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 67534913E2CDEE9AB092E4C33EDA97F5 /* RCTSurfaceRootShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = F60BC6A0E8111DD5ACBEF3CC5959ECD8 /* RCTSurfaceRootShadowView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 6760547C035C32836135CEFD5839CC3F /* RCTInspectorPackagerConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = F29860ACF6D3192CE27B72D8D9BF7CC6 /* RCTInspectorPackagerConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; 67B899B04D895FCE5864571871AB2137 /* EXContactsRequester.m in Sources */ = {isa = PBXBuildFile; fileRef = 82A93793123AD90694C5D13F9796A9C9 /* EXContactsRequester.m */; }; + 67F58E27933AE0C15FDA31315B4F0861 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E9FEBF5B13B80FBCD53AF5D844C38822 /* SDAssociatedObject.m */; }; + 67FB60A3B7937AFDCE4D41A927B10F4D /* GDTCORStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B600A9196EDF7F5CE30EAA93665B08F /* GDTCORStorage.m */; }; + 680FF7736E95C4F0598D00BE3087C83E /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = EA3905F7E6892A7956DD8078E9E87116 /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; 684521B0CA1B1249C9ED804F3A62D6B4 /* UMReactNativeEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = DE374EF524BADF6A8BBCC5700C4FF753 /* UMReactNativeEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 68583F66159847D4566003F248CDAAAE /* RCTConvert+CoreLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C17ABAB606722715420D6708B76E113 /* RCTConvert+CoreLocation.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 685876391AD8815F91ADD8BF5CD5AD96 /* FIRInstallationsItem+RegisterInstallationAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = C422929093AA864A077D3201B48F2AD0 /* FIRInstallationsItem+RegisterInstallationAPI.m */; }; 687395ADE9902C1256A39693758A218D /* YGLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = F341B196FB24869F5A0581AE42F32956 /* YGLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; 68967D85B59597BD9AB686FCE92FD940 /* RCTSurfaceView.mm in Sources */ = {isa = PBXBuildFile; fileRef = BFA466318F7726718D3485D2E96C30E4 /* RCTSurfaceView.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 68A609DB01B156CC5ED6B85013BBE883 /* RNPushKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B33802F7D7B84AA0626D079F70601A1 /* RNPushKit.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -934,48 +988,54 @@ 68C3589E68CE16489EB8418E3D5F14B1 /* RCTDevSettings.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1AC7446DCA0665C90D621BE057E9256 /* RCTDevSettings.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 68D189344FD730D7E96118DB6861819D /* UMKernelService.h in Headers */ = {isa = PBXBuildFile; fileRef = E07D0B943DAD7D7AB04C7BFE016DCBFF /* UMKernelService.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6923B013228EE34EFB46111B344612C1 /* EXAppLoaderInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAFA15E541F79750341AB85EC424250 /* EXAppLoaderInterface.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6954C7E327E3C06A6AA626163C0C4B69 /* FIROptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 017CC1B34A00D5D000439D51172861CF /* FIROptions.h */; settings = {ATTRIBUTES = (Project, ); }; }; 695CBDCD8BFCAA443DA31034E8A4905A /* REABlockNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0764D02B42AE9C956D2AF6C3B6B62E /* REABlockNode.m */; }; 6986A1CB24DB43E7ACA1C07C85BB3090 /* RCTBackedTextInputDelegateAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0BFCA3863288C619E65898BB7D3E5D /* RCTBackedTextInputDelegateAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 698E16574F8BB6B1A4C2B0E81CDBDD30 /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = DD2806395B36E55041B47CB2F212D053 /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 69B92355E75BB5A248C0C9A2A254E5B1 /* ARTRenderableManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B74BF4987350560342F9A6664F21F93 /* ARTRenderableManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 69C23762E4D32B627E18AA019E5F8F2B /* dynamic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 98517DAD4810F45ED8FA59BC3F947354 /* dynamic.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 69C23762E4D32B627E18AA019E5F8F2B /* dynamic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C65235A5B4462861F568033127D5801F /* dynamic.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 6A03046C71CF85B2E59E2FBEFA35C326 /* RNCSliderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 19BB2473A3C289774EC32A321472BCE1 /* RNCSliderManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6A0AA1945B09A957D7980D6F9663E262 /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 2626AA8E24B62228D329C312E5C13F1A /* SDAnimatedImage.m */; }; - 6A789FEDD6D65DEB0888A4AB486DB224 /* pb_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 2B4DE5FDBADC18037B2EFE8D8FF57828 /* pb_common.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc -fno-objc-arc"; }; }; - 6A85D1B26E9CDC97E15DE8C824A82736 /* Pods-ShareRocketChatRN-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 20EB67591180BD14936DAED287A3BFF0 /* Pods-ShareRocketChatRN-dummy.m */; }; - 6ABEAD7FC928CF7779E132A291D0B0D2 /* vp8li_enc.h in Headers */ = {isa = PBXBuildFile; fileRef = DE9969CA71BDB274B67CCEA11C0020C2 /* vp8li_enc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6AECBE5205C7FE40901C60D3BAC2D475 /* FIRInstanceIDStringEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 15D81EE7F5F3714858C7FF9A5982EA34 /* FIRInstanceIDStringEncoding.m */; }; + 6A6811BCCAFE9B118E3913633F9D1A9D /* FIRComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 11613175A36C6EBE31343B6BACA3302C /* FIRComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6A789FEDD6D65DEB0888A4AB486DB224 /* pb_common.c in Sources */ = {isa = PBXBuildFile; fileRef = E427482FF0816F936F72DF5FD9CAB3BC /* pb_common.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc -fno-objc-arc"; }; }; + 6A9BAB8845A46379E69D055193EC5871 /* FIRDiagnosticsData.m in Sources */ = {isa = PBXBuildFile; fileRef = D8DE3BC13CAB60BD0F12942A7720BC23 /* FIRDiagnosticsData.m */; }; + 6ABEAD7FC928CF7779E132A291D0B0D2 /* vp8li_enc.h in Headers */ = {isa = PBXBuildFile; fileRef = D2435B61807A015F7C86DCAB5E5A19AC /* vp8li_enc.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6AF8B0B8BC5662944D21ABB73104ED6F /* Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 77624AAEF0034FE4363472281260D6F0 /* Utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B002A09EF5954BBC84674762FAA72AC /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A3205E89D7E14C616E752AE578B2DB3 /* SDInternalMacros.m */; }; 6B16BF857D52CA921AA18F9107D1A5D2 /* YGNodePrint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1DE90F6D33BFED95077AB0A667A87F14 /* YGNodePrint.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++1y -fPIC -fno-objc-arc"; }; }; 6B24587056B43B44A33D33481C1F0B7C /* EXCalendarRequester.h in Headers */ = {isa = PBXBuildFile; fileRef = E68BE7F4B132FCD9FC730DDAE3630F8D /* EXCalendarRequester.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6B407A46EF38EFD8233880BCA6BEA4A3 /* Color+Interpolation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D88E63A793A46AE2A8E4914AF3394BF /* Color+Interpolation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6BB0A0E40EDC7AB4948869DCFB90D4E2 /* muxi.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B2955D4AD48DE04BBCC5DB14A864B06 /* muxi.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6BBA73E13C75ECE9DC1C78077C4C87FA /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = A211DE5FFA61917BE4C69FFF1971DEE6 /* SDWebImageDownloaderConfig.m */; }; + 6B6CD41EA0E92DE12D6390B15A0C6D74 /* firebasecore.nanopb.c in Sources */ = {isa = PBXBuildFile; fileRef = 29E2C22FF879C56A44707455873A657F /* firebasecore.nanopb.c */; }; + 6B78D71DC954AB01DB63AFEE42B06E7B /* FIRInstallationsSingleOperationPromiseCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 677829C82932437E90068CC931C2D606 /* FIRInstallationsSingleOperationPromiseCache.m */; }; + 6BB0A0E40EDC7AB4948869DCFB90D4E2 /* muxi.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B5CA70816F8CA51268D097D84CE8B5B /* muxi.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6BC32C5F7F9AC61B55841DBD9D4B2D76 /* RCTEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AF5E0FDB28083ECE7863DC7831470AA /* RCTEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6BEB09BDA381DE6F36DFA175CBC46104 /* RCTLayoutAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F8F37064246BEE9F8C7A69671281433B /* RCTLayoutAnimation.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 6BF455BEAC6B3B63B7043B2A42FFB241 /* GULNetworkConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B591EBDB62B59175625167A78E88D03 /* GULNetworkConstants.m */; }; + 6BEE9EB48AF833CA1A6C58022E2C851E /* GULHeartbeatDateStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 853B2681E8D6B8DC9F55CF27A6E8090C /* GULHeartbeatDateStorage.m */; }; 6BFEA5716AA863598AB805E81B5BFE45 /* RNFirebaseEvents.h in Headers */ = {isa = PBXBuildFile; fileRef = 64C3E12A134EC7FB4105E2FFA8E68E22 /* RNFirebaseEvents.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6C1BF50C54FFCDABA052C0D60E4AA1CB /* quant_levels_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = EC832A43F0BD80A7DCD2D42A6A83BBE3 /* quant_levels_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C1BF50C54FFCDABA052C0D60E4AA1CB /* quant_levels_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 93606334B2DB3E80CC396AEDC2F909F5 /* quant_levels_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6C293AAE8A665126DB65576FB61F2C2E /* NativeExpressComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 33CCB852DAE0F4F830E760AA67856FEA /* NativeExpressComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6C37E85CCE25B3CBB805962BFF44C389 /* BSG_KSCrashContext.h in Headers */ = {isa = PBXBuildFile; fileRef = AF2531016461C8BC32A2D395A027A648 /* BSG_KSCrashContext.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C447F4317536C8BEDDCAE38158898E6 /* FIRInstallationsStoredItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A7647A1716C841E08616F47541DCD7B /* FIRInstallationsStoredItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6C62F01A3E274C4E2D49A70E12BB4B2E /* RCTFPSGraph.h in Headers */ = {isa = PBXBuildFile; fileRef = 81EB44B226ED52831CC256D3AD059682 /* RCTFPSGraph.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6C8A4C64FA432565E4D72C641396D7C0 /* EXAV.h in Headers */ = {isa = PBXBuildFile; fileRef = 834A4198AD7AF564A3B63F8008730F29 /* EXAV.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6C8D94790F619755B402629EC3F394BE /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A1C0F847D5B6DD6759E31413551F6F58 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6CBFAABEB470033B6CD1B49891885208 /* FBLPromise+Recover.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DC3538131FBA43CF7F442029413C750 /* FBLPromise+Recover.m */; }; 6CE6837AC0E4342DBEBEB53FB3122DA9 /* BridgeJSCallInvoker.h in Headers */ = {isa = PBXBuildFile; fileRef = 44AB2B396BB3B4317F6BDD93D2B92941 /* BridgeJSCallInvoker.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6CEC93D42BCE1C84B05210117F48F610 /* REACallFuncNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BF4251429A1B57F5019122FC3B9C1D3 /* REACallFuncNode.m */; }; 6CED95887EBD2CF89095B6C5EDD7AA82 /* QBVideoIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D41701D90D5307954B1742BDAFC0654 /* QBVideoIndicatorView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6CF9B64389DCBE99ED877DA30E3BE3A2 /* GDTCORTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 92FA3E16143BD843AB82FBE1484C3175 /* GDTCORTransformer.m */; }; 6D0CF30D57D65E1F68DA583AF4EF9CB2 /* UMUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = E46B1AF5E106478A68F22A098B1BEC5C /* UMUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6D81F160FDDE97DC6131EC9ED617BCCF /* RCTBaseTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9D529BF5731E3078C6EECBDF867328 /* RCTBaseTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6DB542FBEF8166B75D6E1997BC8D3F4A /* BSGOutOfMemoryWatchdog.m in Sources */ = {isa = PBXBuildFile; fileRef = FD46A0FA38F89A3EBB4D1D8F2C6C82B6 /* BSGOutOfMemoryWatchdog.m */; }; - 6DBB75EF7423F09AD44E2573CAF35AC4 /* FirebaseInstanceID-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 366329A40E8A1E715FE041B79A1E789B /* FirebaseInstanceID-dummy.m */; }; + 6DBD30F941705CABAECEB99911829643 /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 587AD88BD32631BB096534980CA556E2 /* SDDiskCache.m */; }; 6DC9D514C156F0E939716CE07F540ECB /* RCTURLRequestDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = A1B82C747E2EFEE16D2A007D5E678461 /* RCTURLRequestDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6E06BCFEEB8D951BF2E0382C38315402 /* RCTViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 333C8FCC3D51249171A72DCE9A5EEE18 /* RCTViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6E0A2A93EE3C8B6C6DF5074AB6077827 /* EXCameraPermissionRequester.m in Sources */ = {isa = PBXBuildFile; fileRef = 6454BB72AC441E1494905BF8E25039FD /* EXCameraPermissionRequester.m */; }; 6E351BE1A8F183D1BB3F520FA4FC4D93 /* RNNotifications.h in Headers */ = {isa = PBXBuildFile; fileRef = C4F47A60F5BCB7F76EED93F1C33E870A /* RNNotifications.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6E679D7FC64BCF6EA1ACFFB88A220FB0 /* RCTMessageThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 382DE283EE37D981E9C8F0FD22CCFA48 /* RCTMessageThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6E991C202A5292DBF3008C568A7C8F13 /* RCTRootViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = D86B87674697BCE5BC5B2C09E088521A /* RCTRootViewDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6ED99836BEA0FA40F40EB3E5E64786DB /* FIRInstanceIDURLQueryItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 44049E08C2816776C227F1102380AA46 /* FIRInstanceIDURLQueryItem.m */; }; + 6EC99E9A82F0476FB8A0B4E82330874B /* FIRInstallationsIDController.h in Headers */ = {isa = PBXBuildFile; fileRef = 289A7FAC33616CEAE154163C9869020A /* FIRInstallationsIDController.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6F1F0DE59B8D85D5C5BBE4827591AFE6 /* RNFirebaseUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 675F6D25A6A38C0965EC0E8FFF68F5E6 /* RNFirebaseUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6F222142E9E4F749DB37A59018C1A36D /* RCTPropsAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 30486FCD09C0FB413C2B73A34AB04757 /* RCTPropsAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6F2DC21E261B5DEF25DADB0E1FE0129F /* GULSecureCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = BD7302148CAB101FE972B11E7D6DB858 /* GULSecureCoding.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6F304A36099BC8A1FC2BA0AF4F249B80 /* RCTConvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 177DDED5760D29524F4FB9784CE2D2E4 /* RCTConvert.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 6F4C8ECB96B30078CDC6F3ED643DF275 /* REAAlwaysNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B7A4EBD7C821FECB435586412D39FCE /* REAAlwaysNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6F7A2AA0B06EFC5314EC9498AD3E1375 /* BSG_KSCrash.h in Headers */ = {isa = PBXBuildFile; fileRef = DF0F7834E6C0999B04A1ABAE902B1297 /* BSG_KSCrash.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -983,152 +1043,142 @@ 6F843A8D44C24AC8E1A98C7AA75F6A94 /* RCTMaskedViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A65519711D7E6514127CE6BBFACA6EE4 /* RCTMaskedViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6F8FAFF437453ABC54EAC53BC16ADCE0 /* RCTCxxBridgeDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 718AD05B5CD0F909A8FBD59F728158E6 /* RCTCxxBridgeDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 6F93C07FC27EC5F48FEF33A277837FEF /* BugsnagSessionTrackingApiClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A68B8844C7EB5008E2C239A40008B60 /* BugsnagSessionTrackingApiClient.m */; }; - 6FAB807DF62D6E61E6FB5A290B898F22 /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = E25C54E541F5F5072F951EC6F023180F /* SDWebImageCacheKeyFilter.m */; }; + 6F9A19A47EEE733740327FF7A92428BC /* FIRInstallationsHTTPError.m in Sources */ = {isa = PBXBuildFile; fileRef = 505638042E3CDED31ED33340DD6E648E /* FIRInstallationsHTTPError.m */; }; 6FADD2923098EDB7083BACF1DF28880E /* EXWebBrowser-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8959AF48FDC941E794274BEA913493C8 /* EXWebBrowser-dummy.m */; }; - 6FAE08276981C05988B6748DB0CB8ED5 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 37911D6525A8CE75A5166F52B23B3851 /* NSImage+Compatibility.m */; }; 6FB535A8E39D1F07E55B1E2356075896 /* RCTWrapperViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 37ACBA7F8BB60C087B592CF49B2BDCBF /* RCTWrapperViewController.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 6FB624CE84ABA6F5B472A098FD3B96CB /* iterator_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 49CD23BE81224DB8D95529CC8205EBAA /* iterator_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 6FB624CE84ABA6F5B472A098FD3B96CB /* iterator_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = CF05DD10D852093D157806E5E953BD23 /* iterator_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 6FCEE2424CB121B6DB9D8E376CF795C1 /* FIRInstallationsItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 43E958E567C22BA0032023C305BEC2AD /* FIRInstallationsItem.m */; }; 6FD86BC47002611DC40F437D2C1A2C23 /* RCTCustomKeyboardViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 194DF9C69A78D93A7716C6FA7B2DA705 /* RCTCustomKeyboardViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7003449F5AD5ED5357D584E2C927D1C9 /* filters_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = AA736E438B04D91D11B081155E2CF4E0 /* filters_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 7000B0B67786D5E2CF438B2C6A3E06F0 /* FIRInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BE700AB1A857567583B903EB1F58B73 /* FIRInstanceID.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7003449F5AD5ED5357D584E2C927D1C9 /* filters_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = CA21C40AB9E6792C5EB386BCA0C5CF9D /* filters_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 706254752772C2A2E485B68219F23D3A /* RCTBaseTextInputView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E6F08FB7B0D37C62C09B09E8F8FD092 /* RCTBaseTextInputView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7088EB44CAC740223920BA8B46908860 /* GULLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = D691A336ECF8181AE201DD7D26ADEBD4 /* GULLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 71337D195C7203C40B62109A887445E2 /* FBLPromise+Testing.m in Sources */ = {isa = PBXBuildFile; fileRef = D701D1816B81717849B176050ED98E4F /* FBLPromise+Testing.m */; }; 713786B3F95C96E2CEBAC2486313D34F /* CxxNativeModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 63AECF618A1E2CB8D3F97014A3D37AB8 /* CxxNativeModule.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 71843254E106F2D1E4F467A04B343EC3 /* EXCameraRollRequester.m in Sources */ = {isa = PBXBuildFile; fileRef = 25BF331DB7CC77F578419968BD700F17 /* EXCameraRollRequester.m */; }; 71A15281A319A724463909058E694A81 /* RCTRawTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 30BB975B57CCC177196223E03CF5753F /* RCTRawTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 71A8F1F7B8F1C500E5DB54E7568768BF /* RNSScreenStack.h in Headers */ = {isa = PBXBuildFile; fileRef = CE0BF9DA931342C7564A2F989F329C44 /* RNSScreenStack.h */; settings = {ATTRIBUTES = (Project, ); }; }; 71B1F6D3D1676C67B9689723295BBBF8 /* RNNativeViewHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = D71A3992E7CF3B86949CE9209EB49D59 /* RNNativeViewHandler.m */; }; 72029D9F22BCA54AF914D44CAFCA8792 /* RCTLocalAssetImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1628FCE1C0BA5C53ADD4E56D5A762BAA /* RCTLocalAssetImageLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7213D525B6583565A1285BAD6519937A /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = A08F869266F38519AEA0AAE93ECAD2A7 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7230FB37D3784E711FDC4DF68D61BDFF /* RCTKeyboardObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 659DA3653F4F72A99996761FA56C4DBC /* RCTKeyboardObserver.h */; settings = {ATTRIBUTES = (Project, ); }; }; 72313D87595E28A750CDCD4BBA386FC6 /* RCTTextTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = BE09031574CDEACBB49CE1AC66544EDB /* RCTTextTransform.h */; settings = {ATTRIBUTES = (Project, ); }; }; 725BC4B216ECC3B13922602F90FD5DDC /* RNFlingHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BB23806F75FA779CDDC924FA7F9C555 /* RNFlingHandler.m */; }; 725FA4364B3AAAC6DA5672FC3D3C5DE2 /* BugsnagCollections.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C5AB60DB5E0886BB2ED862637A07EF4 /* BugsnagCollections.m */; }; - 7264B177FBB9E819FEE3AD4C00E0E102 /* FIRErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = EDC5880EEB4755D48F83AD2787FA78EF /* FIRErrors.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 726F398FE3050CFFAB6C42E76FF5B72F /* GDTReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D975F4A710D3FF97114CA725B087D04 /* GDTReachability.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7285FB5D4837675FBC49C201EC04BB41 /* RCTSubtractionAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = F1831FDF795AAFF008805D1C8B5DAF7A /* RCTSubtractionAnimatedNode.m */; }; - 72A89D0E917A84710512EBBC8A498DBE /* bit_writer_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 941713D7F2ED661F6F62848161C4ACCD /* bit_writer_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 72A89D0E917A84710512EBBC8A498DBE /* bit_writer_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B528863F8D26E47DBD2FAA61C3FC4FA /* bit_writer_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 730DC14773375905F03EC77556A60EE7 /* RNCAppearanceProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = CB45C71AA8B34A612BAED8BF10703C66 /* RNCAppearanceProvider.m */; }; 73112C1488A872BEA689E089D0B0E0FD /* RNSScreenStack.m in Sources */ = {isa = PBXBuildFile; fileRef = 02153101DD015A798818C151A182F4DB /* RNSScreenStack.m */; }; 7342956F63A49A4C25847523E6F41D64 /* RCTConvert+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 48609FC6A9DB5548BDEC23FCA011708E /* RCTConvert+Transform.h */; settings = {ATTRIBUTES = (Project, ); }; }; 734F8686688DB475D6CF32D32D90EB10 /* BSG_KSBacktrace.c in Sources */ = {isa = PBXBuildFile; fileRef = 864D63C1C3348D6FFBDA77D0EC206085 /* BSG_KSBacktrace.c */; }; 7359E67295A554AC557D1213A0CB5D53 /* RCTAssert.m in Sources */ = {isa = PBXBuildFile; fileRef = EB731F52BCE9B41E27D5C618E184F494 /* RCTAssert.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 736C1E17BD05A7026591A32A7F626B7A /* FBLPromise+Reduce.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AD246BB1DA917A3E16D3F36B4867501 /* FBLPromise+Reduce.m */; }; + 738FD16D3B15E94374A9151BA1B17663 /* FIRInstanceIDCheckinPreferences+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 64858CBC195C53A245090C9C8C11D8DB /* FIRInstanceIDCheckinPreferences+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 73A68ADFEFA00CDF462544E0CABEF84F /* UMReactFontManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C2DC0411F3D040280C23BA49ABA4BF3C /* UMReactFontManager.m */; }; - 73BC222F96DC7059E988EC0D2EB7779C /* GoogleDataTransport-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C56B144313F11160699FC870103B147B /* GoogleDataTransport-dummy.m */; }; - 73E18A09BABC8E09E5AD7EBEDE40D69A /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 270B61094921448E80F733E74AF42855 /* SDImageLoader.m */; }; - 7416EBB83257207F58A9B56829018B1F /* FIRInstanceIDLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 42AF09E5E83635479F79553B7BC9BB92 /* FIRInstanceIDLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 744D36A39C5C7188078F180F8A379A4E /* GDTCORAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = FED3E487A355D9CE1B0445AF9E4FA899 /* GDTCORAssert.h */; settings = {ATTRIBUTES = (Project, ); }; }; 74E40035D26D7E61EE95B512E8219E77 /* BSG_KSCrashReportWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = B1BCB56DF0243718905C4F01C56AED89 /* BSG_KSCrashReportWriter.h */; settings = {ATTRIBUTES = (Project, ); }; }; 74EEF982C535C643E4E783C13EF2513A /* YGConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 880D12E1D949FD2BA1A1E9FB172B2B09 /* YGConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7563D4DBE0016DD8A873BB45F22E702D /* EXFileSystemLocalFileHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AEE9A0BA7E271016CEF50622ADF9914 /* EXFileSystemLocalFileHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 757C477AF763DFCA1BE5A5D78341AFE8 /* FirebaseCoreDiagnostics-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AE40F8A55B4E0868CA1A35733818234B /* FirebaseCoreDiagnostics-dummy.m */; }; 7592441730A3BC69180FA193844D96B4 /* RCTAdditionAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5300827367CB8363939AF1B14CB87CC7 /* RCTAdditionAnimatedNode.m */; }; 75A59976244E5AA9E3D97416B77865C4 /* RCTSegmentedControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 1530FCAA091AB1F8F8F266BFA7BDFA14 /* RCTSegmentedControl.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 75AF4BFBC99BEFE0356973D015D8F83B /* GDTCORUploadPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D213A29F586151F62E7D1190EC36483 /* GDTCORUploadPackage.m */; }; 75C38367AD41BCC14148B858141FD9A2 /* RNUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = CE61B3F28EBD3E2F62F2C9156F67624B /* RNUserDefaults.m */; }; 75FF28886473C6483EB0B468863B7E67 /* EXUserNotificationRequester.m in Sources */ = {isa = PBXBuildFile; fileRef = 30DD51C39F8D20A1631E4174BC225270 /* EXUserNotificationRequester.m */; }; - 761E0A568CDCE9B772917B337430A542 /* FIRInstanceIDTokenOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 0499B8CE4FABCF6E65F81D68962C5DA1 /* FIRInstanceIDTokenOperation+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 762FD7831F24C457DDBD8BA67F2BB1FC /* UMModuleRegistryProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = E08255D813D805A74DF0E2AC2D562207 /* UMModuleRegistryProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7636AEE9E430997447356606B9B1CD06 /* GULAppDelegateSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = DF1C9C2F9BBA22563F68A4571E4CF429 /* GULAppDelegateSwizzler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 764F640B2C505140321DA60CF2074D08 /* tree_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 7563DA5563314C4D44215ED308EF7C77 /* tree_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 764F640B2C505140321DA60CF2074D08 /* tree_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 7E8C6A830011E9B4493E7F2FC363A651 /* tree_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 765D355A7222D5FE09B6110134D7D90F /* NSError+BSG_SimpleConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F80C9501800379D69EFFFD9BC11E1F /* NSError+BSG_SimpleConstructor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 766F000E71EC6BFDEB9AAED4900BCDF4 /* RCTRawTextViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F3DF60D378DE3375BEB8A1BB072B390 /* RCTRawTextViewManager.m */; }; - 76EBE6CD51BEEE22F89845516E86EBAA /* SDWebImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4556E026447A016363B5E448CCAC7EAC /* SDWebImageWebPCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 76D25ED0F70513D59EB42DEDD4030C8C /* FIRInstallationsErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E28FEB864CD8E6FC7A5CD387F3CE7FD /* FIRInstallationsErrors.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 76EBE6CD51BEEE22F89845516E86EBAA /* SDWebImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8825B0D3568A19F57CDF00412E9B2DD6 /* SDWebImageWebPCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; 770E4158FE7D473DBF6166B27FB81902 /* ARTGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EFE1A74567BB328FDAE023C043DA3D3 /* ARTGroup.m */; }; - 773B4DFAC559B7F58017017433245601 /* SDImageAPNGCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F02235FA0AF90E49431E197512A6AD01 /* SDImageAPNGCoderInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 776B301441712DAA37FBF6A7CEA93C7B /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E3F600AA82D949DC333DA5269FFB8FD /* SDWebImageTransition.m */; }; - 77744A82C948F3D83862E0015E612602 /* muxinternal.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C47D1D35F481ACA0F8701C734BA781B /* muxinternal.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 77744A82C948F3D83862E0015E612602 /* muxinternal.c in Sources */ = {isa = PBXBuildFile; fileRef = 9A5D533C41D3DCA0AE4501ABA408A5EF /* muxinternal.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 7791BBB29998F4C9AC0F038A100DD278 /* RCTKeyCommands.h in Headers */ = {isa = PBXBuildFile; fileRef = 0499506163E27FDFE72BF36433C9AB81 /* RCTKeyCommands.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 77A6EABFF15EEE860F7EC832E59EDD63 /* FIRInstanceIDTokenStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 67947E69A5ABC8DF1DBF4B86B362C3EB /* FIRInstanceIDTokenStore.m */; }; - 77AD7992233DBE12F405310EBFC991C5 /* cct.nanopb.h in Headers */ = {isa = PBXBuildFile; fileRef = EA6AC78AD06EBD597B03B38F91D2D065 /* cct.nanopb.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 77EFFA9B1F1ED908799FD6F3C6DDEA77 /* GDTEventTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E5ACC036BB30F9E9969A8E34135F235 /* GDTEventTransformer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 77F7E18F5FDAACD09E6FB7DD9E448FE5 /* RCTSurface.mm in Sources */ = {isa = PBXBuildFile; fileRef = D6B3569005FEF35CBCD397365AD669B3 /* RCTSurface.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 783E0F7BD819E79560DB35F639B8019D /* FIRInstanceIDVersionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 3031A7731A02E0B42E97610B692B2468 /* FIRInstanceIDVersionUtilities.m */; }; + 782A7E895D3075095F9AACEBA47584EC /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 85F22489B98808C5DA103C7B579C00A3 /* SDImageAssetManager.m */; }; + 7858D06DC0B4D4114B09194D2473AF68 /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 183A3C0267913A961293F8FCB8FCF81D /* SDWebImageCacheKeyFilter.m */; }; 785B004CF833DF5DD70FEC6A215346C4 /* RCTAdditionAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = EDCB561D274C78BAB42BDF5266FEEFF6 /* RCTAdditionAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 785BC4CF4809020AF5132A2626189D3B /* mux.h in Headers */ = {isa = PBXBuildFile; fileRef = F1278B603ADC956F51E3304081668BFE /* mux.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 785BC4CF4809020AF5132A2626189D3B /* mux.h in Headers */ = {isa = PBXBuildFile; fileRef = 27AACFC75C230014487A026D8216B40F /* mux.h */; settings = {ATTRIBUTES = (Project, ); }; }; 785CAF95D72E52A3CB51D19B161EF757 /* RNDateTimePicker-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E90C52FDDD70CBAC0C2A6596C9C1FE6 /* RNDateTimePicker-dummy.m */; }; 78915BE17253AFB06827312FC0CCBAF6 /* RNSScreen.h in Headers */ = {isa = PBXBuildFile; fileRef = 95DC10A30ABC3BE3446C6B462168101A /* RNSScreen.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 78B369DDCE73212FDEF4DFCF3C3E28CD /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 81D7A46E2069BF2C08EB125AB419D0CA /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 78B9DE85D610820ACD6ED40A11F08E58 /* FIRConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = A6554CAC66AB58DD6D06EC2E8F89E196 /* FIRConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; 78BBE6B6246438B18643483CE090E330 /* RCTResizeMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E10089B334000D673BD63A61590F275 /* RCTResizeMode.m */; }; - 78C2DFE99D6F7A1A274E9D8EFD165643 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A9FE38B282E70BB60453725831AC9FB /* SDWebImagePrefetcher.m */; }; - 790CED3B2746C8BF72B9C0F037A74EB8 /* FIRInstanceIDStringEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = F44EE0313A65B3D0BB64ECA3C3C7D0E8 /* FIRInstanceIDStringEncoding.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7937E82C07AC827E3A6244D5DD2CF44B /* UMModuleRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = CBF28F20DB25164617538A4344BB107D /* UMModuleRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; 794567009289677F590846BBC3EC0ADF /* EXFilePermissionModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 23754EA75C4611DD841F9D526A5FE05D /* EXFilePermissionModule.m */; }; 798A82284A3CB48CBCD33D2A036FA58B /* RCTFrameUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DE98B4DC71DC91B5858A13E77D55B21 /* RCTFrameUpdate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 799D7BAD6B61F711CD5DC85E8FAC19EE /* UMNativeModulesProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9301A696465A7B138B63C930CAF7BF14 /* UMNativeModulesProxy.m */; }; 79AE898F906C7A86938C2D2FFDB55525 /* YGEnums.h in Headers */ = {isa = PBXBuildFile; fileRef = CA3C674A38DA149BA329634D1B2F2B08 /* YGEnums.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 79B0374BFE07F9D6A24D3310F5DB476E /* FBLPromise+Delay.m in Sources */ = {isa = PBXBuildFile; fileRef = E503EE768F7FB7BA45AF2BCAD9C1BFED /* FBLPromise+Delay.m */; }; 79F7D3090E3A8BF8F2EFA3DD0DCED79A /* RNCWebViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F52C1187542EE6BDDCA763ED03072E5F /* RNCWebViewManager.m */; }; - 7A773ABDF9C553C818BBEA466D3CF195 /* FIRInstanceIDTokenFetchOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1583CB301D61E5B65FA78359FE12CAD9 /* FIRInstanceIDTokenFetchOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7A19A0BB7B9140448F7E0498A1C64011 /* FIRIMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 31AFD104F69CCD2F1C24B01B859DDA5A /* FIRIMessageCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7A86CE51E137904ECFC87AD6329D753B /* FIRInstanceIDVersionUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 014FBCA79FB8FD0C06F5F4EBBC1B6BE8 /* FIRInstanceIDVersionUtilities.m */; }; 7AAD2D8D0F6574DC00F40C30BE28A7BD /* RCTLocalAssetImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = C9013C562EB93A1E3B006E509A27A411 /* RCTLocalAssetImageLoader.m */; }; 7AAD85FF6DEAA7B3E28F704359B64F2A /* RCTDivisionAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = D6F407857CF8E797D83CF81B4DDA0B83 /* RCTDivisionAnimatedNode.m */; }; 7AB7F19547D4A3B795D7B86C6F544B71 /* RCTEventAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 03CF224C0391812834F8FDCA55B544F8 /* RCTEventAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7AE193443996AA04DD37762CD29141DA /* RCTI18nManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F172B9DBE8D23302C6B8A44AE928388 /* RCTI18nManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7B28935E3953E17E3FA23F863D4E713C /* BugsnagReactNative.h in Headers */ = {isa = PBXBuildFile; fileRef = 8520DCC90076C2D0C0481EAA947E98F3 /* BugsnagReactNative.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7B469D1BA649E2A3DEA56273C87DD9B5 /* FIRInstanceIDAPNSInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 609D910B5A8FEB743D2A62CDA193939B /* FIRInstanceIDAPNSInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7B8176A0EC34E5A6E599C6B07EAE5D58 /* react-native-cameraroll-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 93A0D6200CDFA3971E6F29B76348B333 /* react-native-cameraroll-dummy.m */; }; - 7BBEF92E70F2EC74F3D43B7D1E1E3B5B /* FIRApp.m in Sources */ = {isa = PBXBuildFile; fileRef = 302B8DE670717BA41E14F4F5F4905743 /* FIRApp.m */; }; 7BDCFE0383194CE86013170AD313EA03 /* UMJavaScriptContextProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = E2967FC394675462ECF917E020B88494 /* UMJavaScriptContextProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7C1EC2A3D0A3E039BFEC6AE946044691 /* RCTParserUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 43003C63AB6D53D8F0C724F05E07DBBF /* RCTParserUtils.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 7C43967C261EDC8D9DF9C4FE6F0CCF03 /* UMUIManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 481152DCF8381BB81B4CB5E318542A6A /* UMUIManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C87A0BA4406932C036C25C471937D6D /* GDTRegistrar.m in Sources */ = {isa = PBXBuildFile; fileRef = EA728C8DE06AF12632054567A645AB9C /* GDTRegistrar.m */; }; - 7CAFE1BF52F8DE2D0BEF15A33CC19C7A /* GDTTargets.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AB86A467AD7828E4F2E55DA0BBDAD3A /* GDTTargets.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7CBDB0E759304C9B04F4D20194C95729 /* Yoga-internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EDA5479E41E41962A4F9C45DF4B942 /* Yoga-internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7CC52F3DE61510F717E8B0BF7FBB3FC3 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 487A7C585227E41DAC704B8715A93237 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7CD7443BBEECE3C05041C3788C3D53BD /* RCTSafeAreaViewLocalData.h in Headers */ = {isa = PBXBuildFile; fileRef = A2E8B0D809212EB4C96F0CCA0F7F3D37 /* RCTSafeAreaViewLocalData.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7CFEA0A6052051C538AD0B0F49158099 /* RNFirebaseInstanceId.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D1A4DF30C9801FD64301020561FE612 /* RNFirebaseInstanceId.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7D068CD903B1F0FB3C9BEFCC029D9EC2 /* GDTUploadPackage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E63334E9E147920AD55E8F4B08B6FDF8 /* GDTUploadPackage_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7D32CB346A8A737EF45F15BB54F57AFD /* rescaler_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 0C3A03091625137666805ABD9CD63C4F /* rescaler_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 7D32CB346A8A737EF45F15BB54F57AFD /* rescaler_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = FC7479F169BDFA83A763E71935B39C0A /* rescaler_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 7D34F61EBDBCC529E50187DF3DE0B9C0 /* RCTBackedTextInputDelegateAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A8E530C7B07419F2B4A9E63EFBA44C7 /* RCTBackedTextInputDelegateAdapter.m */; }; + 7DAFB46E119763177277EC28363FF378 /* GDTCORClock.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DB662C3FB633BCCF0EFD8EBAEEF8AF1 /* GDTCORClock.m */; }; 7DD578649537BE668B3C91865D187F5E /* RCTScrollViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C67C17F481D7F02D7C3463B2411DF5A /* RCTScrollViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7DFB9A6B11536D73819FAC0A9B8EF121 /* RCTSinglelineTextInputViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 721871E7D8498F4B8672EC761AD2C99C /* RCTSinglelineTextInputViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7E31C38FDEE307E1E16B520131091AC9 /* RCTScrollContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = E86D949368DBA5DAD2D805EA66DBEDBA /* RCTScrollContentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7E6785216D5A27AA388421B8CB226AA1 /* enc_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 9B4880B22F4A12C9C9791F4B32571F9C /* enc_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 7E6785216D5A27AA388421B8CB226AA1 /* enc_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 8D34461A66E3259AB0C1167A107511FE /* enc_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 7EC69469AE8553EF0FA6933D116F39D0 /* REABezierNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 39524F3CF000F1C3772A2EB4FB6EE525 /* REABezierNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7EDB9BED917BCE27EE5CA97BE801B215 /* GDTLifecycle.h in Headers */ = {isa = PBXBuildFile; fileRef = AE60B3A27F287887508D97080546ADAF /* GDTLifecycle.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7F56283D730304B0D4ED83995BEC332A /* JSIExecutor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0390AAC82D88B6B9496BEB754DB6C1CB /* JSIExecutor.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 7F5B8AD4B5BDB6069DFFF93AE08F5A20 /* RCTBundleURLProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = C7699AFD882E9DB82C6396CD2B33D5D9 /* RCTBundleURLProvider.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7F653669B6A69DE9841ED9138F3355A7 /* GULNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 31D6386A910752DB6206410DE1299650 /* GULNetwork.m */; }; 7F7EB20C894667526294CC1DDC90976E /* UMExportedModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 165085416BBB22C24BA508984FD6C6DF /* UMExportedModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7F88BA2A6186CE14A4677F1250E893A4 /* RCTCxxModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = 75E7950EB27C6E711A5E1791BD815BF4 /* RCTCxxModule.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 7F9C8E377A693E9134461700B17A972C /* FIRInstallationsStoredAuthToken.h in Headers */ = {isa = PBXBuildFile; fileRef = C4FFE67DC13EEC2EBC31ADD1DEBB2A2A /* FIRInstallationsStoredAuthToken.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7FAA5C3803BDBCD88781D22DA9A5F090 /* RCTDevMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 8937DEA30EF284C0AAC3EE9008F4AF8D /* RCTDevMenu.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7FDA653125CBE9C51664C67E7676A423 /* NSBezierPath+RoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 3762F4EB37B62BDA42A52139A2CE184A /* NSBezierPath+RoundedCorners.m */; }; 7FE86235E6DD6F9548921779D4ECCC36 /* TurboModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FD6D859CDD113AA532232F2E50E074E /* TurboModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 7FFF609490B27A267918214D660FB9DE /* BSG_KSCrashSentry_Signal.h in Headers */ = {isa = PBXBuildFile; fileRef = 30ED0B77780D8EE9E497B0F89B035B5F /* BSG_KSCrashSentry_Signal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 803C92ABB453A18968C860278D28CF34 /* RCTBridgeMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 37AA33A165E8A21BDAF2AA4E1482AD12 /* RCTBridgeMethod.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 803FFADEF322BF208B7C37C7368C3A1B /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 338364BF8659B692A5C38072A7EEDC55 /* UIImage+ForceDecode.m */; }; + 803DEFC2CCE0AB3F23FEB7BE2E87EBE2 /* FBLPromise+Timeout.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B3A6A7C3F776BAF61AC51C5A02FBFA0 /* FBLPromise+Timeout.m */; }; + 809388545866799ABD28AA5A1D27F9E5 /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 54FDDD0372DB70DE5506C1BE95A23BE4 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Project, ); }; }; 80AC448F56E4A0894BB9D80A198C040A /* BSGConnectivity.m in Sources */ = {isa = PBXBuildFile; fileRef = BAC744DF840B073F67D86E407066568C /* BSGConnectivity.m */; }; - 80C026B0E39AC1F1703DF72A313A900B /* cost_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 1479715D7848A8E4C2D19640161BB45D /* cost_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 80C026B0E39AC1F1703DF72A313A900B /* cost_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 45C98A4D849F92BF74F62E180ABEA4E5 /* cost_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 80F8AC2C5A3783FCA7E33066B501CDB4 /* FIRInstallationsStoredAuthToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FE7CAD15D46DC8EB22E034ACFB28888 /* FIRInstallationsStoredAuthToken.m */; }; 811214DDC1A8BD246F50C79F6E9DBBA9 /* READebugNode.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BE368005DFD93C79A814B8743A0E9A /* READebugNode.m */; }; - 8145C77FDDC575D33B405FF7F421A215 /* lossless_enc_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 4D420AC726A223105A3A66DD59C7E9A6 /* lossless_enc_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 8164D2DE9EA9493CD176F2BEF6966635 /* FIROptions.m in Sources */ = {isa = PBXBuildFile; fileRef = E4DEC78771EBC06D1CC9FFE168FB912D /* FIROptions.m */; }; - 817AD6EE8D4389A94BC361C34B67C504 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F3E48665DAFDDB3F7A5623962507725 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 81931D53BE00E8FC4B75DDBAC7C86185 /* FIRInstanceIDCheckinPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = FA33B60640BF328BF0DFC68784B43B8F /* FIRInstanceIDCheckinPreferences.m */; }; - 81B0ACA7DCE8C57A1D20F5F0671367A1 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 78E6B460E72CC20396C19DC0B73930E7 /* SDImageIOCoder.m */; }; + 8145C77FDDC575D33B405FF7F421A215 /* lossless_enc_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 32E8D2B7930D83212864A4ACCE2292BC /* lossless_enc_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 81B79CD8BFF35C210CEA0DE3E706643F /* RCTFont.mm in Sources */ = {isa = PBXBuildFile; fileRef = 117823082507FF2CD3810DE8A924654C /* RCTFont.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 81C9A77CF5BD40BF99B2953E95A037A0 /* BSG_KSLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 31603209831682D8D8E385789AD81326 /* BSG_KSLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; 81CE3889FF186CCB32CA2BE60F122F65 /* RCTCustomInputController.m in Sources */ = {isa = PBXBuildFile; fileRef = 75A3991F723F7E84E6D7328336BCDCBE /* RCTCustomInputController.m */; }; - 81D1A8068B0BE495C688E5DF7DFA63BA /* FIRInstanceIDTokenInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = FACB29702ACD77D66D657A8CCAA16447 /* FIRInstanceIDTokenInfo.m */; }; - 81FC60A335BDB739D75D24ED623A8264 /* enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FDBF5EADD2E3AD2936BAD2E5FBA95D0 /* enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 8208754E5259F6F76445FDE11F5E84F0 /* SpookyHashV2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE4FFEE6A9488A6CE72466623293BE4 /* SpookyHashV2.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 81D4F16B20CB72219D872D8ABFB068F7 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FA7BEFCEE456CEE557E176D2373B2AE /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 81FC60A335BDB739D75D24ED623A8264 /* enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 327D614BA3B1F0B08F1632FD256AEA36 /* enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 8208754E5259F6F76445FDE11F5E84F0 /* SpookyHashV2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2281519202E71413AA842990FD9E7D77 /* SpookyHashV2.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 8209D9C90CD67454D69539C35A13667A /* RCTAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = BD46AC5385CC84A5952D1E255FF9A689 /* RCTAnimatedNode.m */; }; 8210666640C5B1AF7DAB2FBA2292A1D1 /* ReactNativeShareExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 17842AAA69394D97DF4C5ECF3A8B42B0 /* ReactNativeShareExtension.m */; }; 821ABF75DF759E8CB4B34AE575C39D2D /* EXSystemBrightnessRequester.m in Sources */ = {isa = PBXBuildFile; fileRef = A06C9573800BE82290BC622570CD2D16 /* EXSystemBrightnessRequester.m */; }; + 8234B7822CF1CA1C3DF395FCE35C9178 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = 66BB28169F8562B9DE334B74B5B456EB /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8235F479BC5ACA11857EEAAF249DB6B7 /* QBAlbumsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 833A6A67ACF149F280F8CE95DC6D8B09 /* QBAlbumsViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; 824F04AB3E4D8A8DF4B28E8A3F4E6A28 /* RCTLayoutAnimationGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 657929BA048F6BF2E57ADF4C9CD39799 /* RCTLayoutAnimationGroup.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8264F64F4D30DEAEA786C1196C93A765 /* FBLPromise+Race.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3DCE3E62D468D58DE3FECB07CFAB5C /* FBLPromise+Race.m */; }; 8281C89E4A30505E37E1331748D62073 /* REANodesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F8D67059CA3241FF449AFB5ADB16969 /* REANodesManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 829DD372488FC133D2BFEC4D238098D3 /* RNFirebaseStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = D3CEBF185736931401D88D86C390B09E /* RNFirebaseStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 82B3F4C318BA4FD63398DE44A20A7367 /* Pods-ShareRocketChatRN-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 20EB67591180BD14936DAED287A3BFF0 /* Pods-ShareRocketChatRN-dummy.m */; }; 82B62F8035E6080C72B9E40F6CAD3DC8 /* RCTRootContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 16E6D00B240E8A6875583B15B09C0AD0 /* RCTRootContentView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 82BA825CBA44E0261A4B02BB37342B26 /* RCTAutoInsetsProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = F65F1F278B0F93DF76C27745779138E5 /* RCTAutoInsetsProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; 82BE17CA11C38578EE02F5D438CA1EFB /* EXFileSystemAssetLibraryHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = C1E9AC90B7DAF68E7C5B579D368FF30B /* EXFileSystemAssetLibraryHandler.m */; }; 82CE7BC7B2F924C47EE8EAE39BFF7661 /* RCTFrameAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = DF18B8EFC438372BC3B6F6B072B43455 /* RCTFrameAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 82D5E70C909B1BAAFED667876F1FE586 /* RCTNullability.h in Headers */ = {isa = PBXBuildFile; fileRef = 12AF02A793F26E562BCB5474EC337429 /* RCTNullability.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 82FAD75153594152D13166FA9C918B07 /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 39B20C33D2A8CC7A30CD500AEC10C4EA /* utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 83408F01EBA71440E6C97BDAC6DFD142 /* GDTUploadPackage.m in Sources */ = {isa = PBXBuildFile; fileRef = E7D311016AE55CFBF49595940BB2F606 /* GDTUploadPackage.m */; }; + 82E00AB632629A007250F0155CA70AF1 /* FIROptionsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A16CE135CC71ACDAB57AB9C085A4213 /* FIROptionsInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 82FAD75153594152D13166FA9C918B07 /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E2CDB4C30DCF3C644EBFB1CB6F8B63C /* utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 83390A67A2F49D02357DF39160B3C87C /* GDTCCTCompressionHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 636D6783185DE1F442D58AEE9C52B4B1 /* GDTCCTCompressionHelper.m */; }; 834FB89D7DB61483288C20507F8369EC /* BSG_KSSignalInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 255B228CCCED6DFCD0C46C088AC3FFCA /* BSG_KSSignalInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8355F5AC1AF62C88E8E0CC029ED7862C /* color_cache_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = BC9B332A6829DBEC2A6BEED66CA30C36 /* color_cache_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 836F27D41A90EDA63F478FC8EC9B6B2B /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C73BC466081F293E4D01A6633E29FB0 /* SDmetamacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8355F5AC1AF62C88E8E0CC029ED7862C /* color_cache_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = F4EB52F7237332185617C32F718E1270 /* color_cache_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 8383FA5D12B0C3167407B96F2013E9FE /* FIRInstanceIDBackupExcludedPlist.m in Sources */ = {isa = PBXBuildFile; fileRef = 60BC27AD9ED5029E588DEDFB282BC600 /* FIRInstanceIDBackupExcludedPlist.m */; }; 838538291E1FB1EEBAAF1AB24E0F62D8 /* SharedProxyCxxModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A4380E4A384171BCA37835AB57207EF /* SharedProxyCxxModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 838CC0185F3DD5230F96B08E6ABA7014 /* RCTImageEditingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C8C4C62EDE5BA4D7F161B54E1D83F566 /* RCTImageEditingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 83943BFAC59E2196EC1FF4D2E942776B /* String.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BB4BF48A648AF492AE8FCDE9F4545A29 /* String.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 83943BFAC59E2196EC1FF4D2E942776B /* String.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5F1C5F873FB22C5A73E967F1C3900F05 /* String.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 83E61F2DC9A2A7B3C3BDC4B7BD146D98 /* RCTBundleURLProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A79B9769DABF5D747621369F882A30A /* RCTBundleURLProvider.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 842E582DBF635E475E114381AD4F9C93 /* FBLPromise+Async.h in Headers */ = {isa = PBXBuildFile; fileRef = 1731BEB8C2C3368DB5FDF5403C2F7DF3 /* FBLPromise+Async.h */; settings = {ATTRIBUTES = (Project, ); }; }; 84A553EC280593F64BE95B0978CB4AD8 /* RCTAsyncLocalStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = EC7F2D94E3973F2448BF2399A82AEAE0 /* RCTAsyncLocalStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84A56F291D661D21781412F8874C80F5 /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BE9C297AE3F56D077125FAF26B6B5DE7 /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; 84A5949021E42ADE6DA26A4E789E1A92 /* TurboModuleUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD1FD19EEAE5B49A97158541191BFCD4 /* TurboModuleUtils.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 84B1D5DC6C672026999BB7199AFDB7D4 /* REATransitionAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C62EE627611C937E0EEBF789C755F28 /* REATransitionAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 84C406170B2DBB5D07916C0193135586 /* React-jsiexecutor-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AD6BFF2AC7F77775631A869327EBF543 /* React-jsiexecutor-dummy.m */; }; @@ -1139,196 +1189,218 @@ 8528C33E5F8EF3D65FBA1C32A723CD15 /* RCTPickerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DE94B45B20EBA3A79B75B576DB1CE5B4 /* RCTPickerManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 852A8ED13AE3501F4B2C7DC7F2136F1F /* React-RCTText-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DD644175A669B738B4231111B5F113F /* React-RCTText-dummy.m */; }; 85455233A524A6D36F12FB9D3A3E6129 /* RNFirebaseDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = C0422BBB11687EFE612D490B8B0C77DE /* RNFirebaseDatabase.m */; }; - 8547302CC4693C69F676D0FAF738DF38 /* cost_enc.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B4C9226B4D3A7B6A7E8418CF95CBCC4 /* cost_enc.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8547302CC4693C69F676D0FAF738DF38 /* cost_enc.h in Headers */ = {isa = PBXBuildFile; fileRef = 89C6619CB1C1D1AE75ECCE9C2E6A35A5 /* cost_enc.h */; settings = {ATTRIBUTES = (Project, ); }; }; 85638C2F8D35FF711544888B12B5E6D2 /* REABlockNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BA134F0EA1537EF10FFF6745288AB2B /* REABlockNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 856CE7992389E734209C1F57A30ECF95 /* RCTMultilineTextInputView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBAE850177822CAAF0B0484BB32822C /* RCTMultilineTextInputView.m */; }; 8578BAA29528CC82DAB4676CFD9E8EE2 /* RCTComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = F5AAC602913992146864B8C3BB903AB4 /* RCTComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 857CFD7317D23D33D462842423F50303 /* GDTFLLPrioritizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 33446CC862D2173DA53D5E95665C24A8 /* GDTFLLPrioritizer.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8580667BEB1A20D2D2CA8B3E6C957324 /* BSG_KSCrashType.c in Sources */ = {isa = PBXBuildFile; fileRef = 91634D2EBBE9FF97B1E1D92DA46FB7CA /* BSG_KSCrashType.c */; }; + 858DF05CB9907C3E2A68BB29C4D60873 /* FIRInstallationsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = EE1AB32C49A2A285235B4FDC69A39BAC /* FIRInstallationsStore.m */; }; 85D7A7E1BABE0615BCBD1D86BA242DFD /* RCTErrorInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 24A2994EDB8FF27036011F13232C65E0 /* RCTErrorInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; 85EFF53BC2FAF2E9722CA6796A5C33D4 /* ARTSurfaceViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 369CB7A25D42618BA1B87244F710DAAE /* ARTSurfaceViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8624B3ACF76FA5C228BCE097FEC2BC8C /* RCTModalManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FF2321EA1129CD7B9A3C570468E6AD70 /* RCTModalManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 868C9EF47A976D5341C869EF6E4036FE /* BSG_KSCrashC.h in Headers */ = {isa = PBXBuildFile; fileRef = 29CA433545EC6BB3C9FD13334F15C7FA /* BSG_KSCrashC.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8691A04446317D7D3C7D3DC58CFEDF5D /* FIRInstanceIDConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = AC3787BF1E614D7EEDF5E1142F012247 /* FIRInstanceIDConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8693629097C6317357D73FBBC11B68DB /* EXUserNotificationRequester.h in Headers */ = {isa = PBXBuildFile; fileRef = A3CF70A53EF1E392D30C064F7E3F82BA /* EXUserNotificationRequester.h */; settings = {ATTRIBUTES = (Project, ); }; }; 869D6314267C36E72B3921B72B2CD745 /* UMReactLogHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E992D8467813492D50B1E61EBFBE6A5 /* UMReactLogHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 86BE3168916AEF95FCF9CE5C987EB83B /* BugsnagCrashReport.h in Headers */ = {isa = PBXBuildFile; fileRef = B312FE5691799113B85CEF8AE9BB6290 /* BugsnagCrashReport.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 874A19430FD98697B7C5E8E8AB50513A /* GULAppEnvironmentUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = FC5893DE036925F219400B1B91DDA49C /* GULAppEnvironmentUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 86C94F87667167DD05AB086C62038113 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = F7181E6712382186FEFE1FAEE124DC30 /* SDWebImagePrefetcher.m */; }; + 86F28EFD2EDCDEEA0133995833BC4BA4 /* GDTCORTransformer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = AA42C4E98C13EF33E441FE62148783CB /* GDTCORTransformer_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8709E4EE5B3FD0A526072D5F1C141722 /* FBLPromises.h in Headers */ = {isa = PBXBuildFile; fileRef = F581E835D4B745A1D287B2D9FAFABD0D /* FBLPromises.h */; settings = {ATTRIBUTES = (Project, ); }; }; 875DE806BC05CD6FBB5171B3684B1F2B /* QBImagePicker.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9D96339CB00FBFB4B25ED781F333A880 /* QBImagePicker.storyboard */; }; 87768AD792BACA0E657CEA3829636F66 /* RNFirebaseFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = C4D27DC1954AA7BF4D04B07CAA3A188F /* RNFirebaseFunctions.m */; }; + 8793DB9D4BC902335BFA665F3784AD8D /* GDTCORStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D6EDA25FA893D1DF91AAEA53BA75B9D /* GDTCORStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8798A8DBCF62D49ED95C6D34C83B126A /* RCTTransformAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B7A4880C2EE835771E9D06A2BD538F35 /* RCTTransformAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8799A7E7AF7D5000F6488DC84D14E692 /* rescaler_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 2CE8A788BAAD4C7C8CF9143DFD3B9506 /* rescaler_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 8799A7E7AF7D5000F6488DC84D14E692 /* rescaler_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = CBD554C9D80E29A82E56D1B7897C0E38 /* rescaler_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 87BFC3AD290F6A964063BEC334D53262 /* RNNotificationsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 68467E3CFE2F10ED67841ECFBB5F6447 /* RNNotificationsStore.m */; }; 87CB66C902F11F7A98F8495131A29A63 /* RNSScreenStackHeaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = A9A87A0830B20D2F1D739F76A9890AE3 /* RNSScreenStackHeaderConfig.m */; }; + 87CF39BC0CCA51CAB58590CF9A9B8FA4 /* GULReachabilityChecker+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D352643E8BC0C05FAD0BB5404F73E27 /* GULReachabilityChecker+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 87D1C8D0E94309AE54E7909240E8B83A /* FFFastImageViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4047D0C13164557A75A75548DC31B4AB /* FFFastImageViewManager.m */; }; 87E4061EC6086456381F928D935EE7B6 /* RCTUIUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C8F6E5BBFA697FF0669A137F6C69EBC /* RCTUIUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 87ECC4C043286D06A575B38448A0A66F /* UIApplication+RSKImageCropper.m in Sources */ = {isa = PBXBuildFile; fileRef = B8408F86535310EC07AD7AB9FE1B5212 /* UIApplication+RSKImageCropper.m */; }; + 87ECC4C043286D06A575B38448A0A66F /* UIApplication+RSKImageCropper.m in Sources */ = {isa = PBXBuildFile; fileRef = D996FB83753842B15AAE13001FED927E /* UIApplication+RSKImageCropper.m */; }; 87FD74168A6EB497B23A90B90518A5CF /* EXPermissions.m in Sources */ = {isa = PBXBuildFile; fileRef = 0260B1705B12BD97512D92AAB1D975A2 /* EXPermissions.m */; }; - 8809B9F0FAFDCD89CF323E1489AA3660 /* RSKImageCropper.h in Headers */ = {isa = PBXBuildFile; fileRef = B6B66C3CAF05853DB459D7E95B9AA823 /* RSKImageCropper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8809B9F0FAFDCD89CF323E1489AA3660 /* RSKImageCropper.h in Headers */ = {isa = PBXBuildFile; fileRef = 106194880B0291DBB2CB25096A7764E5 /* RSKImageCropper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 886ACD34E706C9B3CAA14BA718B15F71 /* RCTImageStoreManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BA906CC25277C293D1CFF35A617152B4 /* RCTImageStoreManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 886B4ABA16F159910D856C8690852078 /* REANode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B7460AE9B4CF1269C34BDB7CEA3867B /* REANode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 886EFC385AB165A47AC13C719BCFDA96 /* QBImagePickerController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7737694E9B3A951E07FF7E8C2E7C4880 /* QBImagePickerController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 887878B7F152531BC505CBCDD925D20F /* FIRInstanceIDTokenOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F234F18B2FBFFFCBC641916943E9642B /* FIRInstanceIDTokenOperation.m */; }; 888F4BB161122EEB45F0144A3B099A55 /* RCTSurfaceView+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F3263CC7CDAAC78D64ECE2AF8DF05354 /* RCTSurfaceView+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; 88902F9738770E60153CDC8566F6D068 /* EXAudioSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 02FAA2A82FF5E7F69641A48ACD60B8E9 /* EXAudioSessionManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 88A7546CD0CC5EF28061417BEF92362D /* filter_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 7B0A69B6FACD7C8A7159992BEA265099 /* filter_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 88A7546CD0CC5EF28061417BEF92362D /* filter_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = EA3786891CC282557AB2EF14638CDE2D /* filter_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 88E2D72A67C9FE9C1F481C71F68EEEF8 /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BB0025F1EC6EF96CB0113EBC33D3711 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 88FAD4E57380E26AC7F03BEAD2EAEF88 /* FIRInstallationsAPIService.h in Headers */ = {isa = PBXBuildFile; fileRef = A0EA3217B857F6515E5C3725E793D70A /* FIRInstallationsAPIService.h */; settings = {ATTRIBUTES = (Project, ); }; }; 88FFE10394F13353806F5AC527ABD0EB /* RCTPlatform.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9BA20ECA608A4F959F161F6314C07143 /* RCTPlatform.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; 890192B34648332B6C6C09A75D978B0B /* UMViewManagerAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 79617570F1EDFDB1750EBEF9D40FF152 /* UMViewManagerAdapter.m */; }; - 891E992D9EB633B92E3DF27F9B310C23 /* common_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = 9951AFB14B84D5988BFB7DC34F63160E /* common_dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 890F9DF78C90743B0CE5E2CC7E7AC4E6 /* FIRInstallationsSingleOperationPromiseCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 6129D17144193C727D68FFB158130674 /* FIRInstallationsSingleOperationPromiseCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 891E992D9EB633B92E3DF27F9B310C23 /* common_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = 72F2F55C8488AA7450E778BF58AD47EB /* common_dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 892CC8F163730004416A9E0EB66454A0 /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EE96081B960EB5843F26F6558A40730 /* UIView+WebCache.m */; }; 89305BD8FA22B9F773F80ED9B63F9DEF /* RCTDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 85DAF0ADF9D871D10FCAD5FCC5B53E0B /* RCTDisplayLink.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 893655588E502C049519BB8E65C6C606 /* BugsnagConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = B41590C1DCAAA35C248A956F2B3F7929 /* BugsnagConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 893A87DB2A3762C63B0FAC772BB3EDC1 /* FIRInstanceIDCheckinPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EAE9AC10C7125CB916DA112DF625F6C /* FIRInstanceIDCheckinPreferences.h */; settings = {ATTRIBUTES = (Project, ); }; }; 894F864B3D616AD9CA528A84CEAEF67E /* BSG_KSString.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C0AEECE68F91F9D53BF643359BA6740 /* BSG_KSString.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8992866FD890EAB7CCDC06AF809602BD /* FIRInstanceIDCheckinPreferences_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E697151248E9D0827AB6DF49ADAA73EA /* FIRInstanceIDCheckinPreferences_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 89BD4AA4D3B1EE870D5BC99EDB0FD812 /* UIImage+RSKImageCropper.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ABEBFC8AF8824A623B2CCBDA9B3EDD3 /* UIImage+RSKImageCropper.m */; }; - 89C3A612CD4ADB81C44209858A136F74 /* cost_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 222A34B911FF9FCFF752C596AE492C54 /* cost_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 8950571C071AFC5410328C4CA3D19B5E /* FIRInstallationsKeychainUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 01FEFA98B5E8668AD537CEE144C68D35 /* FIRInstallationsKeychainUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8990839281ACA886749C54D8CA07FA88 /* FBLPromise+Do.m in Sources */ = {isa = PBXBuildFile; fileRef = 86670E276CC761C5AD9108582C55EDC3 /* FBLPromise+Do.m */; }; + 89BD4AA4D3B1EE870D5BC99EDB0FD812 /* UIImage+RSKImageCropper.m in Sources */ = {isa = PBXBuildFile; fileRef = 65F4CD4AED2AC4EF14B118A58EDEE355 /* UIImage+RSKImageCropper.m */; }; + 89C3A612CD4ADB81C44209858A136F74 /* cost_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BB0CFABA51216D7A7818D5F5D3015E7 /* cost_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 89CBF65D46171399F0EAF5C79B09E6E6 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = B6DAE9177A3C3A2B93422B1382202FF6 /* SDImageGIFCoder.m */; }; 89DEAA3F2A400C8232EC97727C7D826C /* BugsnagCrashSentry.h in Headers */ = {isa = PBXBuildFile; fileRef = DE9504A2A6B1C25558882AE62B22F9A5 /* BugsnagCrashSentry.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A1373FBD88F35501478391992C5376C /* huffman_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = EEB2E8240966298FEA727263F58AF026 /* huffman_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 89ECCD7C01DDA71BC7FB896BB010E7C7 /* NSBezierPath+RoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C3136B59B61BB160560C616ED25BC08 /* NSBezierPath+RoundedCorners.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A1373FBD88F35501478391992C5376C /* huffman_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = FE1CC5E059EA91AFC5ABF8BF527E9F10 /* huffman_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 8A362B80D43E6603CF994D92EB2C52AD /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E818294C08CF5776BB1D71226C8C1B0A /* SDImageCachesManagerOperation.m */; }; 8A3B0328CB5DF41A39BCCB3899B34CEC /* RCTConvert+REATransition.h in Headers */ = {isa = PBXBuildFile; fileRef = B2EDF1DFD33ED220F0315B82842BA8C8 /* RCTConvert+REATransition.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8A8CC5BB726A951810D3CB4E255AFBB2 /* RNPanHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 95BBFAB8C771DD0FF985331B81372155 /* RNPanHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8A9D84B786AB2897A000D05D3AACB59D /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = B1151875A2C24A78423CC58505388627 /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8AA78E079D60E962A4BC282E265CCC88 /* ModuleRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 17C501E18A92D84749D865D5BC99708B /* ModuleRegistry.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 8AB9E32DAF6BDF9585F5205FA0736F63 /* tree_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = CF2CA478943CD6319CC326CBC7DCA605 /* tree_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 8AB9E32DAF6BDF9585F5205FA0736F63 /* tree_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 392B3106DCD1282949C544B07B1586E4 /* tree_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 8AEC824A51C85F20D2DF15E8BEB7DA26 /* RCTImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9983282CE3F72F1D2F8E5E39DD900556 /* RCTImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8B31804AAB0BCE87C153A3A661DDF9AB /* RCTTextAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E29BD840C7EEDF0C2224CAE90F3EF14 /* RCTTextAttributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8B43C248A2375B0F2B98B5157B1205DE /* FIRInstanceIDUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 51087434509AC9D80EDBA3801FBA46D9 /* FIRInstanceIDUtilities.m */; }; + 8B461725557EA6544B7B191BFDE8C1D4 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EDA6DF3A3B6AF0071D4A7A9742995B2 /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8B4A5EFA46C771631880F96C6D857763 /* EXDownloadDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 33EC0E5B8B9ADDB4838EADB7A50AE5A1 /* EXDownloadDelegate.m */; }; + 8BA04E1FA3708A51146E5A1218DA87B3 /* FIRHeartbeatInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 26C5912343F09FDEC67C47A7DD500AAF /* FIRHeartbeatInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8BB9AE1787FD9D7C8F5388013BBCD2DD /* EXConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 29111EDC9067117B4EA9376BF35DDAE2 /* EXConstants.m */; }; 8BDC780EFAEC1B9826D9B25A85BE47E2 /* RNCAppearanceProviderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 343F28199569171A7F9EEA6E15511B0B /* RNCAppearanceProviderManager.m */; }; 8BF75A8218C11BF3B0E8D88424BC5F47 /* RCTProfileTrampoline-x86_64.S in Sources */ = {isa = PBXBuildFile; fileRef = 9622F1F5AFBF1DC9D2609B287A97CC29 /* RCTProfileTrampoline-x86_64.S */; }; - 8C0A640F7F5FA4D7E162DE9284F16BAA /* vp8i_enc.h in Headers */ = {isa = PBXBuildFile; fileRef = 74FC2D6D369BA24B26EF115DD14D1CE2 /* vp8i_enc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C0C8D915DA3564FD6B5B7B18703D8C2 /* fixed-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = A7F28B7C648243F665EB4806AE5569F6 /* fixed-dtoa.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; + 8C067D43FFE92BEE92DF729871CB6737 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 19B4CD2BCA1F7FD16045A42310FCE9F0 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C0961F4BF06E2D6050B14C3292638B6 /* FBLPromise+Validate.h in Headers */ = {isa = PBXBuildFile; fileRef = 09F74600A3F236533A7364611CBCD0A9 /* FBLPromise+Validate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C0A640F7F5FA4D7E162DE9284F16BAA /* vp8i_enc.h in Headers */ = {isa = PBXBuildFile; fileRef = 754C1763718FE74C32CF806FF8384D33 /* vp8i_enc.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C0C8D915DA3564FD6B5B7B18703D8C2 /* fixed-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = B68868E9598353F7206899DB35AA264C /* fixed-dtoa.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; + 8C1FF88440B33D9481A72C8EB18AFCA5 /* FBLPromise+Reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = 616B59B78E41E0F8743C2A2FDFBA466B /* FBLPromise+Reduce.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8C2F0ADB9BED6CDF94AD4FDE98640AE3 /* REACondNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DD39E122714ACA80347AE0123C2496B /* REACondNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8C3EE4A40254A277C0F5663A900F4257 /* RCTTextSelection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F2C6B4E466B4DA131D5D01DABB9804E /* RCTTextSelection.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8C5D5340CC2350C17774207F4AFE339F /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 63F237C28969479FD39F0D8EB9063B79 /* UIImage+MultiFormat.m */; }; 8C7498211CB965AC43930070C50E5510 /* BSG_KSSystemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AE78D02DA919C9E41B39F91B858B386 /* BSG_KSSystemInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C947E3F75C661809C8E3BDBBDAB7593 /* FIRAnalyticsConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FAC33E8263E9BEFAC11A7DFF34AD0BE /* FIRAnalyticsConfiguration.m */; }; 8C97D51F2831AC4CE3018CB7626639AC /* JSIDynamic.h in Headers */ = {isa = PBXBuildFile; fileRef = B6577B973299B70BE40F64482567C803 /* JSIDynamic.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8CA475791C767C5F20E739483E327D34 /* BugsnagKSCrashSysInfoParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 28AD009D7AA520A7C1D6D17FD2291045 /* BugsnagKSCrashSysInfoParser.m */; }; - 8CA624564BD56CDA821A6C12FB87DF65 /* filters_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 62E3416996F9DBED8A49ADD5F352C1E1 /* filters_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 8CA624564BD56CDA821A6C12FB87DF65 /* filters_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = AAB27BBE32494400507F8652BE36111F /* filters_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 8CD195F8D4797EA381A36F563A0E5F0D /* RNFirebaseAdMobRewardedVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CC7A3F5A971D81FA783C0205E1D4005 /* RNFirebaseAdMobRewardedVideo.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8CD8228C936FD255CD294290118A29B6 /* EXAVPlayerData.h in Headers */ = {isa = PBXBuildFile; fileRef = ABDF8913C48CDFD3513678263BD2FD3A /* EXAVPlayerData.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8CF4FC48814A64166E0636CF7EFFBD83 /* RCTUIImageViewAnimated.h in Headers */ = {isa = PBXBuildFile; fileRef = 11C6FD394B6095FA5812033C28A9AFAA /* RCTUIImageViewAnimated.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8D24E27DD6BAFE194B066A1C0848899B /* React-RCTActionSheet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F31A0471859CCA5EAC081F7810DBB406 /* React-RCTActionSheet-dummy.m */; }; 8D3621426BFE501E721FF44E94DBA253 /* RCTDatePickerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 13FC99CB679FAF0B279975B449E1D487 /* RCTDatePickerManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 8D751CC4E9101960E0571131E2DEFFEF /* FIRInstanceIDConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 39D1DB7D0AB5BA90F8138F64EBA4323B /* FIRInstanceIDConstants.m */; }; 8DAA4220694B02480367F67459059F3A /* SystraceSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 25F03951255FA20CD20B62D3C45CFB53 /* SystraceSection.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8DCDE6DD377E7D735ECC89252CA639FA /* REAClockNodes.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AC5E3712E1C400257D80CFEA826DFC6 /* REAClockNodes.m */; }; - 8DEF96274F9BA17DDE42AC2EAE1EC1AE /* UIImage+WebP.m in Sources */ = {isa = PBXBuildFile; fileRef = CBBE0652EE9A9CDDA0DF797B7FDA8F59 /* UIImage+WebP.m */; }; - 8E035517C8AC7D884CBA5819743A15A3 /* endian_inl_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A4AB4466400E7177CD81A00D56EC7D /* endian_inl_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8DEF96274F9BA17DDE42AC2EAE1EC1AE /* UIImage+WebP.m in Sources */ = {isa = PBXBuildFile; fileRef = 84EC518D9D034614AA1F401DB6FF9D92 /* UIImage+WebP.m */; }; + 8DEFCD08EC9448EA4F746B9134AF4D65 /* GDTCORReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C40A67EE1D77C8674B2974823212EA0 /* GDTCORReachability.m */; }; + 8E035517C8AC7D884CBA5819743A15A3 /* endian_inl_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D8BCB824FD16FFB5D40146868CEB425 /* endian_inl_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8E0D9EFF36B98DCD095C2DB8123B6CC2 /* RNCommandsHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F5340F41B48EAB99948E68E58639D98A /* RNCommandsHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8E454B8C83F5A7240B00066734BF3DFD /* BugsnagApiClient.h in Headers */ = {isa = PBXBuildFile; fileRef = B40F0C3B301F32AC85B84546178CE0CD /* BugsnagApiClient.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8E773D494A272503191518A6FC9BCB01 /* REATransition.m in Sources */ = {isa = PBXBuildFile; fileRef = AA0B72A9927C8B436461731558241482 /* REATransition.m */; }; 8E842C89450F1F42FD0A472547D2DB91 /* RNDateTimePicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 6562F2DB054F9F4800DEEBF8FFAA8C95 /* RNDateTimePicker.m */; }; - 8EADE023E455AEC580E9BBF11138B13D /* glog-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 46B502B21F8455A7A211D7FB38182741 /* glog-dummy.m */; }; - 8ECAAD611878CFA4CA1E91A5ACC7FC41 /* dec_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 0143E920C1C46322DEAACDA3FEED6B7A /* dec_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 8EADE023E455AEC580E9BBF11138B13D /* glog-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8ECEDAD2A838321D345DEE9D05E6BB90 /* glog-dummy.m */; }; + 8ECAAD611878CFA4CA1E91A5ACC7FC41 /* dec_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 8C64106BB2DF7529C974379A31A7B6EE /* dec_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 8ECC32BE1D834E064B790DAB6A677280 /* FIRInstallationsLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = E2E3C8E6D99317CEB9799CEDC4EF10E0 /* FIRInstallationsLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8EECFE19160CD69752A9D17BE13A0549 /* pl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = B2AC5E2196CD9B6DD211636809906426 /* pl.lproj */; }; - 8F026D24EEBFE343FDBAC023E9D56938 /* quant_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 369C36A413EA1CD682B6C7998A87C369 /* quant_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 8F026D24EEBFE343FDBAC023E9D56938 /* quant_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C3170CE50BA839FD7FFABDF189D8F38 /* quant_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 8F040C2B11F6646DD48ACF0D9F806AC5 /* react-native-keyboard-input-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6868214DF95F6AE6EE828BF02EC30D78 /* react-native-keyboard-input-dummy.m */; }; 8F1DE929839BE811A4D2898796A205FA /* RCTGIFImageDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F0B94896794B69DE9ABBAF3A6A4531A /* RCTGIFImageDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8F2805AAE44444D081FFAD2274DE2242 /* RCTSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B69490D4E712916566E0CCCDF08953 /* RCTSlider.h */; settings = {ATTRIBUTES = (Project, ); }; }; 8F309961888112B2C0D486333FA4C7FA /* RNCWebViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BA03DD2917BE1F12B9532EDDE505149 /* RNCWebViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8F67D72452129D5639844135A9C40BAD /* logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = C45BBE85AD818400CB1A3129182DD6CB /* logging.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; + 8F67D72452129D5639844135A9C40BAD /* logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCB16C1702DEA720BC36211E43A6596E /* logging.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; 8F7658D209B9A78E163D3E9613B81255 /* EXReactNativeUserNotificationCenterProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 065695C3888176DAC6E68FE097DC6565 /* EXReactNativeUserNotificationCenterProxy.m */; }; 8FC5A3F42ADAA6A821A5C9674CEEB661 /* RCTBridgeDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F76035A1C60156C30D8C7AC85A25B87E /* RCTBridgeDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8FE94733E89900C932AD73103E1ACFE1 /* GDTClock.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AA4A743371045970B504A8B2B3C56BF /* GDTClock.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8FE0997788C0371B00C8923C3D935168 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 82C5CB61A36D2F0DDF60097EB08DBD66 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8FFCB0876C97E6E6A9BD192A5514E737 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DFCFAD3BB3A6A89D23F127637FA0517 /* SDImageCodersManager.m */; }; 9004D4CB6A142DF3AF78B638898B3088 /* RNCWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 735BAE5A99D22558195015309934BF9B /* RNCWebView.m */; }; 903E5806AB43CC9ECAD1243D2FC12279 /* UMUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 82CB5E38F32F0666135F8A6821A7FD7A /* UMUtilities.m */; }; 905873241B5AF3ED7969719250E32487 /* RNGestureHandlerButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 498A4FF6CFAD1B94EF7A4801EFEB3957 /* RNGestureHandlerButton.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9065DD549003066B9A069F40D2485CEC /* lossless_enc_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = 7336EA76552B82F831BCF41D5DBFC597 /* lossless_enc_mips32.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 9096C4C0065EF00C6C31D3B59172092C /* GoogleDataTransportCCTSupport-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECB58F32CD17FF9912C0569E7AAD5E3 /* GoogleDataTransportCCTSupport-dummy.m */; }; + 9065DD549003066B9A069F40D2485CEC /* lossless_enc_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = A1F0899513A15CABEC77801711DA43EC /* lossless_enc_mips32.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 90971B47C3418E340CF56D3D9E529587 /* RNFirebaseLinks.h in Headers */ = {isa = PBXBuildFile; fileRef = B60EAD97AC08615CF8BA89493710EA13 /* RNFirebaseLinks.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 90B80FD2A60F9E1D7768435E7B3FCEE4 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = F021A39527BED58621A6690E610B4A40 /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Project, ); }; }; 90CCBE59123D4345E7003437EFD73548 /* RCTModuleMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = DB1A81F1252B43F5F5ECB2C3F5872E62 /* RCTModuleMethod.h */; settings = {ATTRIBUTES = (Project, ); }; }; 90CE9D3E90CFF70CAC64D3FFA105AECF /* RNReanimated-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E921DC8EDE043AA484BBA1A749AC157E /* RNReanimated-dummy.m */; }; 90DF82F5A6FF02BA881F75FC3505DDC3 /* MethodCall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08ED12117BB4332C204661E3C9D293BE /* MethodCall.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 90F1C6C9EDDF2AE141098A4A5712A3C5 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D4A123FC94E7410BEA6E2DC48D0926F3 /* UIImageView+HighlightedWebCache.m */; }; + 90EEDAB80AD3D2F8B41E0C9F4C40CCF3 /* FIRInstanceIDCombinedHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 905B1BD1CB9FFBC1DD7770F2DBD5FD19 /* FIRInstanceIDCombinedHandler.m */; }; 910B1B0EF8C7E99CF568CD43FADC8CDB /* RCTMultiplicationAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 83DF81F714471EE2EDA81F05870FC7BD /* RCTMultiplicationAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 911D35D4C93E94049058BE6695C7FDC7 /* RSKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = CB747B3063C14FFE271EBE8037CAC091 /* RSKInternalUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9174043F2C5C946E391930C776A8F658 /* Demangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CA00F20CD47382A4E8F6B2B57C44447B /* Demangle.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 9178482012182F62E4C5BA3F50334C91 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 3600E8FD97B8F09E8E346C5FA16D9774 /* SDImageCoderHelper.m */; }; - 91C83C1367409A169B8F743002D07A4F /* GULMutableDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 69A4DE0309583DD90D1046C5499B1BF4 /* GULMutableDictionary.m */; }; + 911D35D4C93E94049058BE6695C7FDC7 /* RSKInternalUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 084DF8B81E62B3FA2DD1A9E2620122EC /* RSKInternalUtility.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9174043F2C5C946E391930C776A8F658 /* Demangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 192CCAEA3A7BD283727CC8F0076D4F1F /* Demangle.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 91BBF552A2FF6BB3042AA2B96075C326 /* FIRErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 514AE00CD420A8229A4F661330A06B47 /* FIRErrors.h */; settings = {ATTRIBUTES = (Project, ); }; }; 91E6B9ADEE505C21F59904D244812A29 /* REAModule.h in Headers */ = {isa = PBXBuildFile; fileRef = C9CD2D78E8F41D39A64B4383E335683A /* REAModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 920492D26B54A44DF36E54A858DCE72F /* ARTSolidColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EEAC5F08D6B4D9AF7534012B48BB559 /* ARTSolidColor.m */; }; 92067B4091004BF297FF15F7E163CF66 /* REATransitionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FC5241CCA8BB67252A090DE9D5C0CA6 /* REATransitionManager.m */; }; 92330D2E1E09F2AFC5169D9192A9143D /* BSG_KSSignalInfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 62EC6787AD86A09B5DAECF891CE39554 /* BSG_KSSignalInfo.c */; }; 923D51836B00BE5F3E8DB7194F6DA65F /* RCTInterpolationAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 541875FC146A3D4AF7C305C9CC783C28 /* RCTInterpolationAnimatedNode.m */; }; - 92855A1748072DD76EA73BD74B968795 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E01B3FF47FD4437F8126BA499140720 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 92761B113C01A55F1CEBA2DDD2495446 /* FBLPromise+Any.h in Headers */ = {isa = PBXBuildFile; fileRef = 93F8311DDBE0DBF0536063DB1283834E /* FBLPromise+Any.h */; settings = {ATTRIBUTES = (Project, ); }; }; 929D5F9A483CEDB88DFC5DFC3C3031DF /* RCTCxxMethod.mm in Sources */ = {isa = PBXBuildFile; fileRef = C18F74C4680E509627B27F971FFE7F07 /* RCTCxxMethod.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 92AA74D1F05BBE5402796AA8225D8834 /* alpha_processing_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 3DFF4DA664C9CAA3AE8F80888BBEE863 /* alpha_processing_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 92AA74D1F05BBE5402796AA8225D8834 /* alpha_processing_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 2A2F1FA0788DFD486412DD726FC1C595 /* alpha_processing_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 92B35C8BA7A9A5A1D207A3623008B14D /* RCTVirtualTextShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 89AFB173CF329C6B51A398514E06ECCC /* RCTVirtualTextShadowView.m */; }; - 92FD213052E29CA5F30B41AAB84AB5E9 /* FIRComponentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F057988909AE054F78191124C83EE28 /* FIRComponentType.m */; }; + 92D334C2D97FB3BF1C809606141C8024 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = E6D457DA870054C0D84E3800FDA55894 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Project, ); }; }; 93295B3F8E382C2029A4F4D51F70993B /* RCTDevLoadingView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AEC8DC13EE046F3C8DFBE136D8D798A /* RCTDevLoadingView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 932A63E4F9AB03993C4F2C40333884E6 /* UMAppLifecycleListener.h in Headers */ = {isa = PBXBuildFile; fileRef = E50F1BDB59560C2208BC53CD88107847 /* UMAppLifecycleListener.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 935C588017563AEFEB80DC42C91EC15F /* lossless_enc_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = D307D68C68FE4F52BA3146D3C90DDE83 /* lossless_enc_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - 93A0E9A6CC99BE8D70FD6F259C9D5891 /* quant_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 9360604531512771A9FD089A9837C676 /* quant_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 935C588017563AEFEB80DC42C91EC15F /* lossless_enc_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = DCADAF076921DEC4D671151F9E0C9584 /* lossless_enc_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 93A0E9A6CC99BE8D70FD6F259C9D5891 /* quant_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 0F838A60D7566E3ED6EAAAB29782AD39 /* quant_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 93B239D294DCEF6825977FE49136AE5C /* RCTManagedPointer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 48D13CE06914C02A51CA1D66E14B9F40 /* RCTManagedPointer.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 93C54730DD440D3D44E8805D830A196F /* BSG_KSMach_x86_64.c in Sources */ = {isa = PBXBuildFile; fileRef = FE5F61B11785B4AF3CB9741A37B367DD /* BSG_KSMach_x86_64.c */; }; 93EC8D424A6C585697CEA89C57ECB72A /* BSG_KSCrashSentry_User.c in Sources */ = {isa = PBXBuildFile; fileRef = 150C87055CDDB34CF656770A6785DAF7 /* BSG_KSCrashSentry_User.c */; }; - 942A1E450047CD3D7422D1A33226A320 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = A1392FB10E0827593617B7AA05394353 /* SDImageLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9410A9F0FCED080442B9A14D7811805C /* FBLPromise+Wrap.m in Sources */ = {isa = PBXBuildFile; fileRef = 070C05407939F9DFE5B7ED06A3FE346E /* FBLPromise+Wrap.m */; }; 9441E1E4797BF393BF269E3BA2EDB29A /* RCTPerfMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BCA58A32925A1E4400F2B1ADFEF0972 /* RCTPerfMonitor.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 945D6E8B65673BFBFF53BA7F7813BDB1 /* REAJSCallNode.m in Sources */ = {isa = PBXBuildFile; fileRef = E147E303AD172D0F1385F1896F47B2D0 /* REAJSCallNode.m */; }; - 947E227575A4E6B2587914526363901B /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = DB99F2676D30EF6AB07A50ACC6AD4D23 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; 94C039AE0D8233E82EBBF8CD60D104E1 /* react-native-webview-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8852B603985EABAC100BF0A6427C4ACD /* react-native-webview-dummy.m */; }; - 94C13AEE39D1D80619F968CCE5C35616 /* GULUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = E55949C58B399743C8A2FAF2397938F2 /* GULUserDefaults.m */; }; - 94D2057D96B17B5338176E0EAC6D6118 /* bit_reader_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 66BF521E492F11C1AAEE17475971CB70 /* bit_reader_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 94D2057D96B17B5338176E0EAC6D6118 /* bit_reader_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = D8ABBD704A725E7E0D996145CBF6F03A /* bit_reader_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 94D57D1F8087170D3C55D8BA061D1001 /* BSG_KSBacktrace_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C0A3B289A8E8C397553F8B5795D657 /* BSG_KSBacktrace_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 94FCD20E6A582DD3D5FE05BE22BBAC95 /* RCTMultilineTextInputView.h in Headers */ = {isa = PBXBuildFile; fileRef = 959628BA0DDBCCD75C7AC43F9F4BEF8C /* RCTMultilineTextInputView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9527E5A3C6DFA80BA2DB45EDB484763F /* RCTImageShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A58D7780B1E3A13BA1C9211FF6D72D1 /* RCTImageShadowView.m */; }; - 953B94BD133A7467F4F38C0B944D76E1 /* filters_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C993823267D96AA814B7C38AF6C7369 /* filters_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 953B94BD133A7467F4F38C0B944D76E1 /* filters_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 064078AF10DF91404B3DE14C08B4C6D7 /* filters_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 954737CAEAEE7CD10A8E82C893D3C05C /* RCTSafeAreaShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B40E769968DD2143FE155AD49707E9F /* RCTSafeAreaShadowView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 9551B84E7109A022EA783B45C2038FBA /* YGEnums.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EA144FF00D58E014F32E879A876E5E39 /* YGEnums.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++1y -fPIC -fno-objc-arc"; }; }; 9555FA1629B54E6CE10F84AD1CFEC491 /* RCTTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AEA1F7442A8A10E9F7719D981A6B89F /* RCTTextView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 955ED07B34A30576182FAEF37C32A120 /* RCTSubtractionAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AC31182A2D26CD330A9E68DDF5CAF70 /* RCTSubtractionAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 956A73A2DD9882EAF245E88865CC6799 /* RCTRedBoxExtraDataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 59DD6416FA43F3F675F005EF8FD3F328 /* RCTRedBoxExtraDataViewController.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 9576BC2AA57D548A446DF12601AC0D7D /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = AE786E2067197B64CADFCEB08C452C84 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9584C1D2A2B4338D79033DE1456BCB15 /* CxxNativeModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D0E03388EBACCF6E9B6F9671AAF2F55 /* CxxNativeModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 95B521FAD1DE325761C020F8AFEB4E63 /* RCTBackedTextInputDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = C6B5FE04EF96F3DBDA6FA2EACB05DA49 /* RCTBackedTextInputDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; 95B68C33D8A3CA6C685E64643173F8C2 /* RNFetchBlobProgress.m in Sources */ = {isa = PBXBuildFile; fileRef = 94880BFF0112585F7B888B90817CC653 /* RNFetchBlobProgress.m */; }; 95DB2DC3843A5A77097E2549512012F0 /* RCTConvert+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = 97BC1C8A76869E6D037D92F566BDDC8D /* RCTConvert+Transform.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 960B81835CCACE99EAF6D7301646A57D /* RNGestureHandler-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 687A41FEC3A047663FAB081DC2F60CE6 /* RNGestureHandler-dummy.m */; }; - 960BB6A747C122E41D0F93EEA6E0624C /* GDTTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = FA981CB894230861E709B35205EE9407 /* GDTTransport.m */; }; 961E178766FFC74BE8CC650BEB06621E /* BSG_KSCrashReportVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = D638C2BB3396581FAFA06A88C595108E /* BSG_KSCrashReportVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 962F246F4D86BCE82B9E3A33080D44F0 /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D1A278B5D9E61566522B152532F1034 /* UIView+WebCache.m */; }; - 9648DE8BFD642A580258906D5C4A72AE /* anim_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 784124C11142E87DB1D3FCA0F0DF8284 /* anim_decode.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 9648DE8BFD642A580258906D5C4A72AE /* anim_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = BC41853A6450E14F865A02ADC3D019D7 /* anim_decode.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 967D11E3ADB39D24F39D3D14FAEEBCD4 /* RCTModuleData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9B1701CE791ABE0B135B42558643BA83 /* RCTModuleData.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 96A00C011A72200F5C719AA69C379BFB /* color_cache_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CB01CE9E07412C5A22C1E15F8F4859 /* color_cache_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 96B1848EDA12E024991DC71441FB7728 /* lossless_enc_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 00F8B0C7A4D6446D5585DCDC4DEB566C /* lossless_enc_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 96A00C011A72200F5C719AA69C379BFB /* color_cache_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 726D3479A42B94820104FFB82565ADF8 /* color_cache_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 96B1848EDA12E024991DC71441FB7728 /* lossless_enc_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 669E2D815BA85AA4A6BB99088F534BB0 /* lossless_enc_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 96FEB709959204E0340B06DB34925CF1 /* RCTImageShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 86679E2183EABD35F9E8AB9DA3D2A5B0 /* RCTImageShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 96FEB9F17F3553A3EACC3D455D3DD5EE /* RCTConvertHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = F6C495F26CFBEFBC26967005E92B0173 /* RCTConvertHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 97094C87F27838DB2641D5B3F6F747AB /* RSKImageCropper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F3A1CF3578311FCD5BB2B8C51729FDB /* RSKImageCropper-dummy.m */; }; + 9704F9F1F14DAD1518EDEB3FAB732873 /* FIRDiagnosticsData.h in Headers */ = {isa = PBXBuildFile; fileRef = F9FDF1E88D043740EACFF1DC73E36B23 /* FIRDiagnosticsData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 97094C87F27838DB2641D5B3F6F747AB /* RSKImageCropper-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 52EB1989DFD74CEB5377A42F0481FCAC /* RSKImageCropper-dummy.m */; }; + 9723ED2F504638D6345AE9D73E21F620 /* FIRInstanceIDURLQueryItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 77028BA581AF00AEF7C147D7449E82B9 /* FIRInstanceIDURLQueryItem.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9736808E3A6D9D08A971A877C047E296 /* RCTBaseTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = CD1A41557D9711A38CCC49769B2E64DD /* RCTBaseTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 97A46257E974C4FCF70DD15A759720F5 /* FIRInstanceIDKeyPairStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E7AA5171F7BFA958025DC698C194776 /* FIRInstanceIDKeyPairStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 97C623DF2BD61587360EC3B26A8F5CE8 /* FIRAppAssociationRegistration.m in Sources */ = {isa = PBXBuildFile; fileRef = 417D73313E1EBA932B71E1DD4ED1E357 /* FIRAppAssociationRegistration.m */; }; + 9736BDADECA441A7D829AB881E1B8B15 /* GDTCORClock.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A5B8DD3BD08B970140758525F472335 /* GDTCORClock.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 979243DB7BF5C1BFB5966534EA7F7651 /* FirebaseCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ABFB99715FD05FB4DB35E948155D825C /* FirebaseCore-dummy.m */; }; + 9796980DC5E2693A40E90235CE55CA24 /* FIRConfigurationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB3E1A796EA4028EC6374B3EACD53CE /* FIRConfigurationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 97B4C27248C45EFA7B1613C6F8F83C79 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FF50E5ECFD2E8272C61A10AF4ED50A1 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; 97DEFB4339250260BD5B4EFF58006D2A /* RCTConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = CEB2BCA0F0DD370D4283F50B7F88290F /* RCTConvert.h */; settings = {ATTRIBUTES = (Project, ); }; }; 97ED312B0474017444E6379DC3C4BAB7 /* Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E63C65400C7C42AB2ADFD6A72C8D8036 /* Utils.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++1y -fPIC -fno-objc-arc"; }; }; + 980D90F8772164DA4D739F9A2811B7A7 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = DCA1074616EEF1BC09293FE2105C9CFC /* UIView+WebCacheOperation.m */; }; 9824466925699D70D12255531354CA4B /* Color+Interpolation.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B9ADB111EAAA20CF02AC1AC415BD12 /* Color+Interpolation.m */; }; 9842DA186F54F9D3BE5906663455016A /* RCTVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DB546F80EA4C8F664F7D34B6D539816 /* RCTVideo.m */; }; - 987941CF7049804341214F98475B275B /* UIColor+HexString.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4C342770D787159225FE9960204DBE /* UIColor+HexString.m */; }; 988D75C014F94B7584204ACED46F3975 /* RNFirebaseAdMobBannerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A821A52E6888BC7CFDBC1BC5865C0C8 /* RNFirebaseAdMobBannerManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 98A2DBABC7465D5F548708424FEC0D92 /* GDTTransport_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 01FAF80891432F62857FFDA6B6F8ABC8 /* GDTTransport_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; 98AB2900FAC5CE54700374DEF87D2603 /* REAClockNodes.h in Headers */ = {isa = PBXBuildFile; fileRef = F24F94A3FBFBBBA8ABCC077D41D91AFB /* REAClockNodes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 98BC38F964FA856EBFF4A1910983AD93 /* FIRCoreDiagnosticsConnector.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DB602E4418A6458062E66FDBE8939FB /* FIRCoreDiagnosticsConnector.m */; }; 98C4F8C2F74808C13CC9FBBC7D411999 /* es.lproj in Resources */ = {isa = PBXBuildFile; fileRef = F93E285BE4F106BF8932B2B288E0B96A /* es.lproj */; }; - 98D876A1A244F466F67E906E6E55EF82 /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A239E55139C2F75E79338C50AB6FC8D /* SDAsyncBlockOperation.m */; }; 990C114FE36C3BA307A4CEC634A01D41 /* TurboCxxModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 40D5ACF5208F52A2EC8E91E5268F9CCE /* TurboCxxModule.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 991C9DFB4E1EBB20D56E31715E457B50 /* lossless.c in Sources */ = {isa = PBXBuildFile; fileRef = 6608F2F8DDC7A9422458F90A885EA723 /* lossless.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 991970762AB939C8EF22E39E60BA98A9 /* FIRInstanceIDCombinedHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = CCE294EC7F18FA41E37CBBE707B45FEA /* FIRInstanceIDCombinedHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9919A951AA1C3643BC9A0FB4E7B89D34 /* FIRInstanceIDCheckinStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D7200E0CD187410B1D095CC51FF6E72 /* FIRInstanceIDCheckinStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 991C9DFB4E1EBB20D56E31715E457B50 /* lossless.c in Sources */ = {isa = PBXBuildFile; fileRef = 15B61266CE79A06337D4E2231EBAF1DE /* lossless.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 992CB0C6A03D842795BDF2045C33951E /* RNDocumentPicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 65513BC7EBF5BE3D92B67A6AB24F90B7 /* RNDocumentPicker.m */; }; - 993DEE091D2ECD262F17F281E60653C7 /* thread_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = F30855EBA5C5D5DF32296D69B4CAE212 /* thread_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 993DEE091D2ECD262F17F281E60653C7 /* thread_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 36F488E2824DFEFCE2DA5121F3EFF1AF /* thread_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; 995C56C42E9021CB2C821060C20D5AAE /* YGLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DFF6B66AD8BD4CED51BA0C7DB2168BC6 /* YGLayout.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++1y -fPIC -fno-objc-arc"; }; }; 995F57F6E3A8F8F3F0CB975427339ADC /* TurboModuleBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 361BA81519E68DE00DC1EE1C2CA4F5AF /* TurboModuleBinding.h */; settings = {ATTRIBUTES = (Project, ); }; }; 998FBF05A1D5B4142E092BF051F89BE0 /* ARTRadialGradient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AFEC36A329F7F411B66663877EE221E /* ARTRadialGradient.h */; settings = {ATTRIBUTES = (Project, ); }; }; 99F4ED1427EE4D62E5939F2D49FF3823 /* YGMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F83D90C0F4DB00C007D20D4EC47E4C0 /* YGMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9A3099BF1A3303D97FF4B77EE8FA453A /* firebasecore.nanopb.c in Sources */ = {isa = PBXBuildFile; fileRef = F7F1E72F15A3AF0C35DEF0C1A2BDD5F3 /* firebasecore.nanopb.c */; }; 9A538510B4D21C44538FDAEE7F25BA4E /* experiments-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = EF7332D22F963E1ABDF5B443A56C2AD1 /* experiments-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9A563C719409A7F1D2A79F1A491DCCB1 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = B9A1B0E64A972AF42DC39566FEE8C89F /* types.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9A563C719409A7F1D2A79F1A491DCCB1 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F373F964FD76A572A5BB6D473B3233B /* types.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9A5AE9F5B12B24817DC0CF360F3781A4 /* BSG_KSMach.h in Headers */ = {isa = PBXBuildFile; fileRef = FDE02055864DF5DC8FADA071B185C63E /* BSG_KSMach.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9A6584332A48346E435E1681FAF817BF /* alpha_processing_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 5E2A92E98E8DBDA927A8118442EA22BB /* alpha_processing_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 9A6584332A48346E435E1681FAF817BF /* alpha_processing_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = AF0ED6FD0E89DAD5362477D5AFF91A2E /* alpha_processing_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 9AD7C3DFE9A609436008F7DB4E0F1C59 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DAA01CE0749CD75B5D864D9C3DB8B11 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9AE25D78D388B01F02FAF32C7D81B390 /* RNCCameraRollManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0E90B7D6DE800A18779640EC834AA4 /* RNCCameraRollManager.m */; }; 9B0328A157A59821F094F7E47F1F3543 /* EXAV.m in Sources */ = {isa = PBXBuildFile; fileRef = 5298D6BD91CA975746993001F4AE1E6E /* EXAV.m */; }; - 9B328C7EB8E9F91C9E4940B976F51EDC /* NSError+FIRInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = FC2DD08031380836E714D119660B0C71 /* NSError+FIRInstanceID.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9B44C525E5FB5F51CCDE075656F184DA /* RCTWebSocketModule.h in Headers */ = {isa = PBXBuildFile; fileRef = E40D66AD3F0AA0EC528EA8FA8910211C /* RCTWebSocketModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9B5E58BCF1985EAC277DDBFCB91F0ECA /* ARTSurfaceViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 66459DEE8823BB0B8D11EA3D6DB2307F /* ARTSurfaceViewManager.m */; }; 9B8780B037E6D0A089E2EDDD8E87CDD4 /* RCTProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FFF74A046BF8D427EF7C90624577C41 /* RCTProfile.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - 9B8FF798D120C0131DAFE922F8FA3326 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = D68865F99A8F6659659285B0079FA045 /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9BA3070F2D82AB8E6B229971E126D4B2 /* upsampling_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = E1B228189E45D0324E55F165C73F0C90 /* upsampling_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + 9BA3070F2D82AB8E6B229971E126D4B2 /* upsampling_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = E10C2950FAF761DCACFC19CB9D52CF9C /* upsampling_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; 9C43EFFC945AFDD1BCA2FB1AF208CFA2 /* RCTTransformAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 65394E91B0674DD8D11B74FFC7530670 /* RCTTransformAnimatedNode.m */; }; + 9C616301E3564A11354F44BBC19779DD /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 76870B32976CD2CF19434FE44E4DAB9E /* SDWebImageOptionsProcessor.m */; }; + 9C8A0D00A5379B1414E3ECFAB83E213E /* FirebaseInstallations-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F3C820FC2BBE1761DA1AA527AA0093BF /* FirebaseInstallations-dummy.m */; }; 9CA68A554C6C2C6DCEEFB7A64389FCFE /* RCTSinglelineTextInputViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DCD7924BE0A9DE6A96D091A46DC54D9A /* RCTSinglelineTextInputViewManager.m */; }; 9CB9FE419E53CCA57DA123E4F5176E8E /* RCTTurboModule.h in Headers */ = {isa = PBXBuildFile; fileRef = A4061ACF38DF7CD0EBA4002BB78F6207 /* RCTTurboModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9CC8AF94995AE4B94A792BD1BEA1358D /* GDTUploadCoordinator.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D30A9F40B2A36F04D29DABB3C01B945 /* GDTUploadCoordinator.m */; }; - 9CE103A0E1FF2B3FAABC3B449BD8D735 /* symbolize.cc in Sources */ = {isa = PBXBuildFile; fileRef = ED36BC453E7E9F44D4DA76E824785DF6 /* symbolize.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; + 9CE103A0E1FF2B3FAABC3B449BD8D735 /* symbolize.cc in Sources */ = {isa = PBXBuildFile; fileRef = F1D65D982EF85292BB9FDEA34BBE516E /* symbolize.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; 9CED9EE5CB7376FF7FB07C9F43879FEC /* FBReactNativeSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E41231EFA93F8A6858FD06F87921644 /* FBReactNativeSpec.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9D1F18778A897B0C96D5297BA8104478 /* RCTDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 10781EC5358906306658F75464CEAB50 /* RCTDeviceInfo.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; 9D6AEC2BADA6415B32183279535FC3FD /* RNRotationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A1E96E54A74B0B1F1F972417852D401 /* RNRotationHandler.m */; }; @@ -1338,18 +1410,19 @@ 9DE9270C04172DD40D69B6D9546516B9 /* RNCSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = C9F29936E7E20B3CFD89B9C48AE3C54A /* RNCSlider.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9E00A71835F74BD9E7791965749B0D68 /* UMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F9101373978C3B83F589B7777250231 /* UMDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9E04D8058BC6847CAC65773EED54D05C /* RNFirebaseFirestoreDocumentReference.h in Headers */ = {isa = PBXBuildFile; fileRef = 09FB1013F78A7AF3DC2546F7CC3D152B /* RNFirebaseFirestoreDocumentReference.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E26D5D25561683EEEE343BA59A8D932 /* FIRInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = 241E57CE7B8A8A9A0C30B2F4727E17F5 /* FIRInstanceID.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9E35AF16FA811ED54521FD4E6352E394 /* REAEventNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2770744B1EE09E021F4D15CF3C5BBF74 /* REAEventNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9E3FDFA5FE43DF56A9E6F0E2ADFD0521 /* REATransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 725C9D7519C9246294964E65F09B5F2C /* REATransition.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E66453D10A11F0164593AD596E0E8E0 /* FIRInstanceIDCheckinStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C2A85A735F523B7B67CE1ED2DFDF5D8 /* FIRInstanceIDCheckinStore.m */; }; + 9E69C58844ADDABB79A1AF60899FB6AB /* FBLPromise+Retry.h in Headers */ = {isa = PBXBuildFile; fileRef = 933895F5689A726BB5DBED7880848CEA /* FBLPromise+Retry.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9E74CD4E4333A1722FF7057A7D841D78 /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = AC5BBA5FEB96505850A90FBE111B046F /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9E9C9344BE1DA6BBA542ECAD750A0B53 /* MessageQueueThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 103AF3B67564C17BFFE8AC3251B444C2 /* MessageQueueThread.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9EAA160F40B7AEA5F8323BF14AE1AD73 /* BSG_KSSystemCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 38FCC55495F3D29D189C63059801F701 /* BSG_KSSystemCapabilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9EB60143301349BE59FEEFAB98C50415 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = D57BF655F31F1339675D0B395963F052 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9ED53ABBF63AF508BF3A45A8055BF25C /* ARTTextFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = D798488795753C7103E292B908093381 /* ARTTextFrame.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9EF008BB17B5795A9CDE33AF1AA4EBE4 /* experiments.h in Headers */ = {isa = PBXBuildFile; fileRef = 81685809005A13FF186E65DA6FFB1463 /* experiments.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9F047DDB8969818C22E71086624790CE /* RCTTiming.m in Sources */ = {isa = PBXBuildFile; fileRef = DA46EC3F7B4ACC9EE9EFC228D62084F1 /* RCTTiming.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + 9F56E740FDB8B87EE194B5FC6DF23786 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = 5469BFF90FA3FA7460B0D79CE5197D1D /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Project, ); }; }; 9F608AE2E0848CE8858F19F0376F4B3E /* instrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9513FFCA869AD68880C9933062162BE7 /* instrumentation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9F69F8135343C51A14ECEC3DE3FEC05F /* format_constants.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D6BDAF7F393697F29CD3C449B02F883 /* format_constants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9F69F8135343C51A14ECEC3DE3FEC05F /* format_constants.h in Headers */ = {isa = PBXBuildFile; fileRef = 6638D4A39DF660C0D118FE1FB6420263 /* format_constants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9F6B4F752D0316DC0CC2C2E58EC1A546 /* FIRInstanceIDStringEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 580123A082788AF220ECF528D65896DE /* FIRInstanceIDStringEncoding.m */; }; 9F8CC158594C16A93BF79894AE652576 /* event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8ADD572631A373CB2207CC0B924D2E6F /* event.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++1y -fPIC -fno-objc-arc"; }; }; 9FCA0C85E502C92ACFA86EABD32B2224 /* react-native-orientation-locker-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A40D49376282675A8A1608198C4819B7 /* react-native-orientation-locker-dummy.m */; }; A02478583635DC43AF9D1BA278F4ABDD /* RNFetchBlobNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B4FBA22B542402775644ACFD00D2E66 /* RNFetchBlobNetwork.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -1358,238 +1431,237 @@ A0927C05EBC9079407AC005BC6E1373E /* RCTBaseTextInputShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = A5CAFA657156AFE1D21437C7A8D7F6D5 /* RCTBaseTextInputShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; A0AF090921E033135BA303A51E86C8D2 /* JSCRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = BDF7143096F238E5F373CE201997766C /* JSCRuntime.h */; settings = {ATTRIBUTES = (Project, ); }; }; A0BE197B645C6C6537575EAF6F1A8CDE /* RCTConvert+RNNotifications.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B54D91E86F56F1BB3D59F4544FB2B9B /* RCTConvert+RNNotifications.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A134CBE0553F5F3339A4A20A87F18E3C /* filters_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 8EC2141037CFBBAB3FA9E1072F9D6F23 /* filters_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + A11DF1263B7EBD23B3D95FF9A3F68E8E /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AA5FDE5D455838C40D597792B73FDCC /* SDImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A134CBE0553F5F3339A4A20A87F18E3C /* filters_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = D53A23815D628A7C3EFFC59488C8EA44 /* filters_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; A13E40901AA20224032AFB2AD4D04744 /* RCTErrorCustomizer.h in Headers */ = {isa = PBXBuildFile; fileRef = EA7D43AB936D50A81723BA9C97BB3326 /* RCTErrorCustomizer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A141899125367EFBDFABC1D40258574C /* GDTTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 950A1A041BCF19C89D591AA28F944791 /* GDTTransport.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A1AF2DBE1AA6CF8976C7C0407363E187 /* FIRInstanceIDKeyPairStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B17E24DB6A1D37F25B7A56EC2AD431E /* FIRInstanceIDKeyPairStore.m */; }; + A1A7D185D68859C10D0EE1DE4E8063B2 /* FBLPromise+Validate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1959F3ECFABC8A4D200C1715ED0696A0 /* FBLPromise+Validate.m */; }; + A1A8801E913E5175E5ECF693F318AA79 /* GULReachabilityChecker.h in Headers */ = {isa = PBXBuildFile; fileRef = 13BC4224F66908DB532F9B44C792439A /* GULReachabilityChecker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A1FA306C12F8FDC6C3E22551518871CC /* GULNetworkMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0383EBC057B08B3B4D8E2D06F7D33F38 /* GULNetworkMessageCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; A21455566701C95DA8DC8AD067452A21 /* CoreModulesPlugins.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EFE40F14A73EA2B443AA4CF44DAD50B /* CoreModulesPlugins.h */; settings = {ATTRIBUTES = (Project, ); }; }; A21AA461DFBE94B5DA7E5BEB211CE665 /* RCTConvert+FFFastImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 16E1B3D3F1C9A20AC3EE3B0DEF23172B /* RCTConvert+FFFastImage.m */; }; + A21ED806195A73620CB21657E05C7188 /* FIRInstanceIDTokenInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 5372D71E7AAFE0D044943DB958C2F428 /* FIRInstanceIDTokenInfo.m */; }; + A25FFD696888820B56D9C79F5B2EAEC3 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 336D56D9272DA9C7A6F5356D0DB9B248 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; A2A4D768671DD4976E9B00C5DD8A08DD /* RCTVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DB42004B240B79A0FF03409A8928664 /* RCTVersion.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; A2A70CD096FE24B7E48EA8C86BC112BD /* EXAudioRecordingPermissionRequester.h in Headers */ = {isa = PBXBuildFile; fileRef = 98A80535764F86459CEDD667CCB4F197 /* EXAudioRecordingPermissionRequester.h */; settings = {ATTRIBUTES = (Project, ); }; }; A2BB5FDD99C8D8A31F91D6698801CC6F /* EXAVObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DAEE0C9CA8E2893756B368AB756A956 /* EXAVObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; A2CBE742B99580CC13E8E18D61C8A9A8 /* BugsnagCollections.h in Headers */ = {isa = PBXBuildFile; fileRef = 87F09B22862988263200E4BCFAC2F8A8 /* BugsnagCollections.h */; settings = {ATTRIBUTES = (Project, ); }; }; A2DADC127EA39A90F16504C0F8D84DA6 /* RCTWebSocketModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 405CD50CB99B3F8DFEC76511A7B8A317 /* RCTWebSocketModule.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - A348E879FA3330E1712179F5B4FAC236 /* vp8l_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = EE1A35EFE4C42EFA941515040AF2489B /* vp8l_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + A348E879FA3330E1712179F5B4FAC236 /* vp8l_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 872F0037F0BE0480407ABDF7F96FBAF6 /* vp8l_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; A3514C01C8202F3027EFCBE7B89A26D3 /* RCTInputAccessoryView.h in Headers */ = {isa = PBXBuildFile; fileRef = A4F923DC4CEBD2EB6AAEA9D65B8BE85B /* RCTInputAccessoryView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A351627E81A36765AB4C00CFCECF3F17 /* GDTPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = D9C066C867C0E4440BCF224357AEA143 /* GDTPlatform.h */; settings = {ATTRIBUTES = (Project, ); }; }; A356543091BEC90DBF244D36660ECCBB /* RCTModuleData.h in Headers */ = {isa = PBXBuildFile; fileRef = 3023C9C83AB3D0B89E41DC5070F26651 /* RCTModuleData.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A381D018508DD7639E2FE4C1A93036BC /* json.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 729A38040F88573F71437BC50CBBB96A /* json.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + A361C7D8C652CE224BA016F8E6DD7432 /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 11C0A683D9914E0CCC77E6DCABB2816C /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A381D018508DD7639E2FE4C1A93036BC /* json.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 951EA411C3609031BB767BB3EC28580E /* json.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; A3A1C8CA04A1A2FBE630CD639DB3CF75 /* RCTSpringAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9754CCB1B41C75728B6A02F4FFF969B1 /* RCTSpringAnimation.m */; }; A3B33574C82F38A9087B056DF9CED726 /* EXRemindersRequester.h in Headers */ = {isa = PBXBuildFile; fileRef = EDDC8849FFF32858D86EF726C43EBADE /* EXRemindersRequester.h */; settings = {ATTRIBUTES = (Project, ); }; }; A3C05F4A0CEF28ED7D16AE2076889136 /* RCTBaseTextInputShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = A5CAFA657156AFE1D21437C7A8D7F6D5 /* RCTBaseTextInputShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A3CEEA552FEECF9935C60A49F2245451 /* GDTCCTNanopbHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 08605099D3DD551B75AE7B66CA074A26 /* GDTCCTNanopbHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; A3F9CB0656A0F4FB806F778CE4BB15DE /* RCTWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E1768101677ED3E062B092BABACCADF /* RCTWeakProxy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A4093BFD98499872C36D61188865A000 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 877F0D1D9A0A956008B6F07FD23EC8B1 /* SDImageCoder.m */; }; A415AFE0F17D1746DC4BD0CF3E588F4D /* REAPropsNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D5EB99574208D9F9DC8FB859A56BEFED /* REAPropsNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A42284BAEF9A5D75B15BF4EFC4E4C468 /* frame_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 8CD8755AF098A173E00AA86509262962 /* frame_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - A42C59477BEC3A7A4D2CEBD6BC4A4F1E /* yuv_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = CDAB2A362C37E561051D58E59B8C6295 /* yuv_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + A42284BAEF9A5D75B15BF4EFC4E4C468 /* frame_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 0B9BD3B6B09CD5A1C2631CF99883907E /* frame_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + A42C59477BEC3A7A4D2CEBD6BC4A4F1E /* yuv_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 574C5FDCBE394444827C0B4B3C7DE9A5 /* yuv_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + A42EF8F9C3AFFECF5B7DFEADA68539A4 /* FBLPromise+Race.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F5EDA23D6D2D1ACE2F5DFFCB0B53C29 /* FBLPromise+Race.h */; settings = {ATTRIBUTES = (Project, ); }; }; A4856E6938B9050ED0388C83AB428FD1 /* RCTRootShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 606613496D858DA774ED2305077A99F6 /* RCTRootShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A48A78367616FA23CDE0EE8BFD8C2870 /* FIRInstanceID+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DE96E733840BAB2944ACD371EAEE2C12 /* FIRInstanceID+Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; A4B467E40F7E342592B65F3AEC3D9E97 /* REAFunctionNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CFAE57E367A65A55C2FD1C7F38C1E2D /* REAFunctionNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; A4C63255CAB3DA53A9D697FD7FCC26B5 /* REAValueNode.h in Headers */ = {isa = PBXBuildFile; fileRef = BB201F23A57E266A0E92BEF7B46EB16E /* REAValueNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; A4DE80D3B1511941AF0D53ACF8AD1D72 /* RCTAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 77CAA27A0F211D519B85CBF3D079AADF /* RCTAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A50388445DF10ADD6B22876F3F69E902 /* ssim.c in Sources */ = {isa = PBXBuildFile; fileRef = 514F3A9AD50449219C6E0E6AF2186349 /* ssim.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + A4DF3AB01471BD888F4FD4EC2E9A21BE /* FIRComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 73DF275591A289869A037B732ACCE445 /* FIRComponent.m */; }; + A50388445DF10ADD6B22876F3F69E902 /* ssim.c in Sources */ = {isa = PBXBuildFile; fileRef = 2D591C821A51F0825209BC1C05DFFB03 /* ssim.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; A555C6E5ABAA5DB1F62A09D2BC49DA51 /* RCTTurboModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = CA1241D3B5EEE4FD5C20C761219A6335 /* RCTTurboModule.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; A55F73E73A81AB3E9F61D647CE2A0FFF /* CoreModulesPlugins.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3D0C5CD61A7E538AAC42D172FDE227FD /* CoreModulesPlugins.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness"; }; }; - A57DB7FFC1AA6AFF3337FCE567C2DFFC /* GULAppDelegateSwizzler_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4465E9E8D02F3CEEE80D33E736D98665 /* GULAppDelegateSwizzler_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; A584EA45113B1382E33AC5AA20103087 /* RNNotificationsStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 30905185B2307B24C83D044B5E756944 /* RNNotificationsStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; A5969DC380832572368B9D636242BD6B /* RCTRootShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C62A883CE89818A80C430CA55152373 /* RCTRootShadowView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - A5F7A295CE8D9AB5DE3F0B75200DD1A2 /* io_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = D2ACF36489C9B96840468D3F72ED2479 /* io_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + A5F411136D291A38CCB996E7E68DE213 /* GDTCORReachability_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = FF4A1A447F74EECB8C2AC14492FA6CA0 /* GDTCORReachability_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A5F7A295CE8D9AB5DE3F0B75200DD1A2 /* io_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = B5609AB6E46F0A418839F14921E70AE4 /* io_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; A624B26C6E8893F180544B2F414693D5 /* RCTWebSocketExecutor.h in Headers */ = {isa = PBXBuildFile; fileRef = 064AC547DFF8127EEE541F3A1B437236 /* RCTWebSocketExecutor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A65AB6AE536FAB89F8BD54D22A3270B9 /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 66EB73F92E6B3CAF9B57FF76C5040D0C /* UIImage+Metadata.m */; }; - A7721978FA34EA5CD4BB6F8FD361657D /* filters_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 7E96099942FD1BC96E81912D52A2DD99 /* filters_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + A702694C291529C5D08B2DCFB39628F3 /* GDTCOREvent.m in Sources */ = {isa = PBXBuildFile; fileRef = C02C313B7B5553296D2F7158CBE25081 /* GDTCOREvent.m */; }; + A7721978FA34EA5CD4BB6F8FD361657D /* filters_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 387FDB6229B2B5EDABF7EAFC7EB23979 /* filters_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; A7C6CA4554F58BB1C409F0F4A97C1656 /* RNVectorIconsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BE9428A6197F293955DE9F6417A0F5F /* RNVectorIconsManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A7FE4D8E743D00ECB115E087D53587C7 /* cost.c in Sources */ = {isa = PBXBuildFile; fileRef = E6F1D1E9706AB9D1DCDD8ABE42EB7FE9 /* cost.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - A817D669CAD6CC063C6C508C72A5D55C /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CAA2DBF00DFE036CB71047FCE811813 /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A820309FE601A2C8F95EEEAD890158B6 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6E180F517D3B5E97B2822EB303FCEE /* SDWeakProxy.m */; }; + A7FE4D8E743D00ECB115E087D53587C7 /* cost.c in Sources */ = {isa = PBXBuildFile; fileRef = 160856CCFCFA358DCF2AAC3EFA195712 /* cost.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; A826DA3137A89F1502F9B6696FFB8730 /* RCTInspectorDevServerHelper.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1B9853EEABB86B11759DFCB1EBCA3B8 /* RCTInspectorDevServerHelper.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; A851FE5B4FD2E5AC7FBC0358BAE014A8 /* ARTContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = F96DFC58F11AE0F9F57A856E86C307F0 /* ARTContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; A86E645D32DB04BAE7498AC89D9980BB /* RCTHTTPRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BC20A9871EB97B9E51FD4F2F6D7D33B /* RCTHTTPRequestHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A86F7C0A488320ED06BFA2B846DA26FA /* RSKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 773EFFD9502444FAACFF9DEAF0B811F7 /* RSKInternalUtility.m */; }; + A86F7C0A488320ED06BFA2B846DA26FA /* RSKInternalUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C78B03E18C3C58965E80B1E11C3CAC7 /* RSKInternalUtility.m */; }; A88BAD944CC973142AF9C9BF65280C54 /* RCTSafeAreaViewLocalData.m in Sources */ = {isa = PBXBuildFile; fileRef = FD38B2E5F8FDC009EE3930FE406607A0 /* RCTSafeAreaViewLocalData.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; A891EC8D3D003F2BA49992F3FD7EC76C /* UMLogManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CBD234B82B5CCAF78C77FA9DF5E9585E /* UMLogManager.m */; }; A896DBC8DEB8E8304EDEAA0F0AA15B1A /* RCTBaseTextInputShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DCAC04D657A2082E265DD6149414DB /* RCTBaseTextInputShadowView.m */; }; - A899878ECEAE82DA6084010973FF7F21 /* FIRLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = 479B38160D59438D69CC69BD7C3FCCB2 /* FIRLibrary.h */; settings = {ATTRIBUTES = (Project, ); }; }; A8B6D15DA68092B480483FE020894204 /* EXFileSystemAssetLibraryHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = CA21EDA115C0A41E286ADB005D6A38CA /* EXFileSystemAssetLibraryHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; A8B8BEB2134D3E68B9907C5A48A04A03 /* RNGestureHandlerDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 12EC3DD9CD28EBA910DC357466A9268D /* RNGestureHandlerDirection.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A8D70235F433DF4ECC825AFE0E7D5DD7 /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D5FBAB8AE41CDA37DFFF760ACFFB922 /* SDDiskCache.m */; }; A8D9C90918B779E9C1A91973D2AF29DE /* React-RCTImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BAE4E2BC7E0C20A3AA1DB5C880F2695F /* React-RCTImage-dummy.m */; }; A8E90F8A49540C9A192B44F1F7641426 /* RCTRootView.m in Sources */ = {isa = PBXBuildFile; fileRef = D7E4D46622518C9F84C86F8D27596A4A /* RCTRootView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; A8F850B0755D926B58BF8EA8DD0A7EF3 /* RCTPackagerConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 5503461EDC3D0BE3934EEE5DA1BB9088 /* RCTPackagerConnection.h */; settings = {ATTRIBUTES = (Project, ); }; }; A9102589774A3FD3F3808AB2F0F83ACA /* RNNativeViewHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = AF55E15E2C3E4E070679685042CA4096 /* RNNativeViewHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; A96BF195A93FBB2FDDC78135932BB359 /* RCTProfileTrampoline-arm64.S in Sources */ = {isa = PBXBuildFile; fileRef = 2ECDDCF7A859B3FDDDB907DBDCCDE589 /* RCTProfileTrampoline-arm64.S */; }; - A99D016A3588F636AF86A6D2FB1EC3CD /* GULAppEnvironmentUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 87668906696C273A559873C1EDF6F7AA /* GULAppEnvironmentUtil.m */; }; A9BD36E5B3038DFBDF1438B0D43F6E14 /* RCTModalHostView.m in Sources */ = {isa = PBXBuildFile; fileRef = B7E0EB48FBFC098528F3AFFD3FF860C5 /* RCTModalHostView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; AA4B2C35721761FB29A7BCDF53A358A4 /* QBAlbumsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28265B29D617FAAA311A5A948A405705 /* QBAlbumsViewController.m */; }; - AA7FCA9F298C4986D79923FBC1807573 /* FIRConfigurationInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F3A324E400A01F6B751011F6DE9698F6 /* FIRConfigurationInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; AA882B59899551990442E64FD68EBA93 /* NativeModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 75F364C673640804FB74B70CFC3E3463 /* NativeModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; AA89F071A632E2E5F4E3BE02B3F0345E /* RCTViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 36B4707E6C2B2E5939A8D58E98A7930E /* RCTViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - AA98E5E760C605F57551D3D6192E5225 /* mips_macro.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FEA399CF91DC9F45F91622F9ACFBB2D /* mips_macro.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AAA2E740FAE2A61A309C985C858588D9 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 623D5F4BD01E3D890087793ED0AE50C5 /* SDWebImageDownloaderRequestModifier.m */; }; + AA98E5E760C605F57551D3D6192E5225 /* mips_macro.h in Headers */ = {isa = PBXBuildFile; fileRef = B0C730BFACECB7606E3E03C1D15A4BA2 /* mips_macro.h */; settings = {ATTRIBUTES = (Project, ); }; }; AAA397302AB9735FEE54E85069DF673B /* RNFetchBlobNetwork.m in Sources */ = {isa = PBXBuildFile; fileRef = 0945BBC48C6E6DA34300929C868A3F41 /* RNFetchBlobNetwork.m */; }; AAC7FD892729AFECE270AE59C8812F5D /* RCTTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = F6B6688D83418759724326835A4BDDC9 /* RCTTextView.m */; }; AAD860080DE05A9DB492EA79E7A0059A /* RCTScrollableProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = CC612AEFC201E55CBF50D8F1C40E3C3A /* RCTScrollableProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AAEC54ADA9A9C0A6DD785E903782EFB3 /* ssim_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = AD02169BFC7C99B84A56BB3FE5948E4E /* ssim_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - AAF05BFDD102FD660418FD7AE198030D /* analysis_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 30EA317F2FE8EB6FA84DCD6525D08D40 /* analysis_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + AAE02A17D7A26ACCDA5DBF6A441CFE98 /* FIRInstanceIDAuthKeyChain.m in Sources */ = {isa = PBXBuildFile; fileRef = D9C3D3CC551D9381EB6D1805585CF24D /* FIRInstanceIDAuthKeyChain.m */; }; + AAEC54ADA9A9C0A6DD785E903782EFB3 /* ssim_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 0F2BEB3203326DA9994D2329F5515A34 /* ssim_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + AAF05BFDD102FD660418FD7AE198030D /* analysis_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 61AF1837C4C82F78744ED30517A5031F /* analysis_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; AAFC106D9A09F68152DD13A0B192D702 /* RCTVirtualTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 067D5D2C99221EB0A3B9E22F7DFD06BF /* RCTVirtualTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; AAFDC490C197A364E412E59DC6D18FA7 /* RCTImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A5BC46FD11ADF1251BA46820BA26460 /* RCTImageCache.m */; }; - AB0D233175695AD5A5CFF80D84E56874 /* anim_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = C78D47F722BB1CAF44A836ED125A9FD7 /* anim_encode.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + AB0D233175695AD5A5CFF80D84E56874 /* anim_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 96BA55D82ECFF1108092369C40805752 /* anim_encode.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; AB6B1C527596D3144A8E068B20847368 /* RNFirebaseDatabaseReference.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EBD648ADF08580A26F32BF867B6458B /* RNFirebaseDatabaseReference.m */; }; - AB6DA83EB836653E7E835FAE9744984A /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = ABB5C981E713091255D71AAE8FE466A0 /* UIView+WebCacheOperation.m */; }; AB71242585E87C1ABAFF732A17092713 /* RNGestureHandlerModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 776B81695F3B63E689B69A224988541B /* RNGestureHandlerModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; ABB159E31C767AE2BF6EE30DE4B7D346 /* BugsnagSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 9046E8F29610D14F5BFA1946206DA373 /* BugsnagSession.m */; }; ABB74B188C02A8D67A14B8EC8BDB5D08 /* RCTSinglelineTextInputViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 721871E7D8498F4B8672EC761AD2C99C /* RCTSinglelineTextInputViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; ABC211F1ED49935A5C4A363A6B7A4ADB /* RCTFrameAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4518AAEDC4391458D6489E7697479069 /* RCTFrameAnimation.m */; }; ABE4DD5FE579286EA84BDF53DF011F42 /* RCTLayoutAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = FB7CEE5036E73D34C54DE51B53DA7EE3 /* RCTLayoutAnimation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ABF126106FD8D877441956C3AF553EEF /* pb_common.h in Headers */ = {isa = PBXBuildFile; fileRef = C8441C7C956DD16F599D219757963B47 /* pb_common.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AC1391E438DA90477947F994A68517C5 /* GULUserDefaults.h in Headers */ = {isa = PBXBuildFile; fileRef = 63FD78AD9CEFB2DE5FF77E72C8C7A453 /* GULUserDefaults.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ABF126106FD8D877441956C3AF553EEF /* pb_common.h in Headers */ = {isa = PBXBuildFile; fileRef = B4E59C34733EDDB63352F51EA330CB81 /* pb_common.h */; settings = {ATTRIBUTES = (Project, ); }; }; AC31EC883CB7E5DBAF9998562725691A /* RCTRootContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B1F199CCF5EDA47DFCC987B9A28801E /* RCTRootContentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AC3905F52FE0809F628BCC0CF306E76F /* picture_tools_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 804AD74736151223ADA3BC5674D5EBD5 /* picture_tools_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - AC7E6E3BD2A7CD3A72D5C70405E31DB7 /* FIRInstanceIDCheckinService.m in Sources */ = {isa = PBXBuildFile; fileRef = BC76E2FBF45298FFC195C1BACE29276A /* FIRInstanceIDCheckinService.m */; }; + AC3905F52FE0809F628BCC0CF306E76F /* picture_tools_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 2691CB449C5A42D1964D19F13F61C0B7 /* picture_tools_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + AC54FD31827C5BDB2AD22BD2F275CB07 /* GoogleDataTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 66EF89ABD7B5DBBB462B12529A796D9B /* GoogleDataTransport.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AC7FAE73363B58CEA4FEC4E8471E4C9C /* FIRInstanceIDTokenOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 95F672D173395EBA22AF0884C6C8915F /* FIRInstanceIDTokenOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; AC9977754C40BF50D3477ADDE4182EBC /* UIView+React.m in Sources */ = {isa = PBXBuildFile; fileRef = 151FCAEAB01057A6DFAF66D7094DF371 /* UIView+React.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - ACA88DFA5AB4A617551CF5306214183B /* FIRInstanceIDKeyPair.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B18AB04CABC858BF04C827C6B5470F5 /* FIRInstanceIDKeyPair.h */; settings = {ATTRIBUTES = (Project, ); }; }; ACD5CDAB5F0724B498437299A32FECCA /* REANode.m in Sources */ = {isa = PBXBuildFile; fileRef = 414C5BD92F1BAAE19A219BC6610A5C77 /* REANode.m */; }; + AD2F0348979F6DEC73E66C0634B8D89F /* FIRInstanceIDCheckinStore.m in Sources */ = {isa = PBXBuildFile; fileRef = A3EF6DDC9ECF54BEBC12FEF5478C225C /* FIRInstanceIDCheckinStore.m */; }; AD66D2FD84BC116DD133347EACA99CC1 /* RCTStatusBarManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BA44C408D387162B22E4CD223D65C7B2 /* RCTStatusBarManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + AD7C3D9EC21B3A100F2D50A4D7158DAF /* GULAppDelegateSwizzler_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 2728A14783AB5E811E5251887AADACAF /* GULAppDelegateSwizzler_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; AD8F9EBA6262A36F5466A2B98B714CBB /* RCTInputAccessoryViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 170794365051DE61C2F27CA071918980 /* RCTInputAccessoryViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ADC8D3D65F0543D6DEB99FDE0CBAF90B /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = AEA0DC5B6845AB5B1AFD86B44151D246 /* SDImageCacheConfig.m */; }; ADDEA309B94CAA51E650B66DDB4CD3B5 /* BugsnagLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 73D798B4EDDC375384A075DD5D1B7403 /* BugsnagLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ADFB5CBF150ABD49A5569C139D2F926E /* FIRApp.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CE22CAD125F9462C815704C23AB8010 /* FIRApp.h */; settings = {ATTRIBUTES = (Project, ); }; }; AE14F028F54D612B4D48CC6CED8B76CD /* RNNotificationEventHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C67CC10494D314A41B3C2CEA9A697C /* RNNotificationEventHandler.m */; }; AE3C983FDA0774DA378C46B4CB8D4BD6 /* RCTCxxUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = DFFEB90D12B0A3D0EC41CA71AEDD6485 /* RCTCxxUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; AE696B4A35AF464F62260BA86B736EC9 /* RNFetchBlob.h in Headers */ = {isa = PBXBuildFile; fileRef = 562C20F9B0C661B7B7CD7311659AB2E3 /* RNFetchBlob.h */; settings = {ATTRIBUTES = (Project, ); }; }; AE7E5CEB88DE285A14B49E125734817C /* BugsnagMetaData.h in Headers */ = {isa = PBXBuildFile; fileRef = 748FC8EFDBC62C2C86AE00238C2E8EED /* BugsnagMetaData.h */; settings = {ATTRIBUTES = (Project, ); }; }; AE807CFC8F81EF3476F064B8E48C564A /* ARTNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ED6FAF56D3ABCA19813CBD037348E6D /* ARTNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; AE9A689C5BA6E8AF5535171D3922275E /* RCTBaseTextShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EB722BDDED6433A2C613BC46BF7D51A /* RCTBaseTextShadowView.m */; }; - AE9BAD5416D1788A60DA1E7F3ED08F51 /* dec_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = 07917CB28CC07843C9E23E4D4CB0FE07 /* dec_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + AE9BAD5416D1788A60DA1E7F3ED08F51 /* dec_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = F1A4FFD0829F895C7CB4CE1DADA8C124 /* dec_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; AEC0EC96C1A700516BB6BEB6EBEAEC63 /* event.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D2AE3583762C93008AC2DBF600FA03A /* event.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AEF4E05A1A05A4A91C9B5C88FF89DE11 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 65270F773D1F907E9E884457D88A1E97 /* SDImageLoadersManager.m */; }; - AEFF8C6DA7000185BFAB86FDFB63E0F9 /* GDTRegistrar_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C3B73D30EBF2384AD1F89DAE90DD80A5 /* GDTRegistrar_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AF077EFEC522E29FF8D788B663D300D7 /* GULNetworkLoggerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = EA8733A840E5BF5CB7160E71BC70F136 /* GULNetworkLoggerProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; AF28B147059D9D806FF35212F54804F2 /* RCTComponentEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 79C9A31269E81DF965C0EFADB2012AC4 /* RCTComponentEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AF783557C42133FF18F4E366E28EF300 /* bignum-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = EBDF0BB8287EE7675B3313716DA7CFCF /* bignum-dtoa.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; - AF79242E97FCF340E1D5266D69041821 /* GDTReachability_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A1CA7669FE65C9DB40A235FA8026681 /* GDTReachability_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AF783557C42133FF18F4E366E28EF300 /* bignum-dtoa.cc in Sources */ = {isa = PBXBuildFile; fileRef = 9A4D3B3B310D9827F2482B1F3DE8CC69 /* bignum-dtoa.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; AFA1747D7903B71E12ED58F61E2A35F4 /* BannerComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 965C8488F60641681C8FF2D2BBD2B298 /* BannerComponent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AFA5B2D16D48229861E4E5620792A094 /* GDTCORPrioritizer.h in Headers */ = {isa = PBXBuildFile; fileRef = BA97DE2A8EF2E1432F205EFE746D7873 /* GDTCORPrioritizer.h */; settings = {ATTRIBUTES = (Project, ); }; }; AFAE17A768C60A8299FB264ACD4B0205 /* ARTNodeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 26657F01A0E5510FEABAEBCE1DE12D1E /* ARTNodeManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; AFB15A6F36F4E7BED7571C30D284FE49 /* RCTRedBox.m in Sources */ = {isa = PBXBuildFile; fileRef = A61A2F8B6DF63BCB408BA44CF8062CE2 /* RCTRedBox.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - AFBB31CEBD7272995FBD79E1E4B97615 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = E003996EDDFC4DAC0E9DA2A7A151C5C9 /* UIImage+MultiFormat.m */; }; - B03C42B044033F100A1E04809ED61FD2 /* raw_logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = 05C2010B25DD2DBB84A02AD7D9CC3D4E /* raw_logging.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; + B03C42B044033F100A1E04809ED61FD2 /* raw_logging.cc in Sources */ = {isa = PBXBuildFile; fileRef = C75A86B18664AF17C832083530EBC07C /* raw_logging.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; B04CEF80BEC79CF16F7F02CE5721C583 /* RCTSurfaceRootShadowViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 22F389B285F0B865DEAD7629FED2F9AC /* RCTSurfaceRootShadowViewDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; B0649287E8C6F9F4101DB57FDFBDC5E2 /* REANodesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0929481204407C90D1661AFC8B0305EF /* REANodesManager.m */; }; B08723295CF1ABDFD21CDF13AABF493B /* BSG_KSCrashSentry_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B3BB883D8A8C3E696C572EF6EAB59284 /* BSG_KSCrashSentry_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; B09A5710D9729BFB90BA5D44E43882B9 /* RCTAlertManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B038F44ABE2A3C6093324D530ABFE312 /* RCTAlertManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B0D9EA67A437C2D4F14606D128C1A666 /* diy-fp.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AF26D3C24076E62CEE06B987C6D1D6F /* diy-fp.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B0A3C69022AD615CB02C44BEF92F0456 /* FIRInstanceIDTokenManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BD2D19249B0E5F20B228D7924697E712 /* FIRInstanceIDTokenManager.m */; }; + B0D9EA67A437C2D4F14606D128C1A666 /* diy-fp.h in Headers */ = {isa = PBXBuildFile; fileRef = 19C61133E42FEBE0031138AEB2C96709 /* diy-fp.h */; settings = {ATTRIBUTES = (Project, ); }; }; B11CA48DA91BE9D78A09D892242DB4C8 /* RNJitsiMeetViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = EF2A4E69D80B6EDB5E27EAD8CF0618BF /* RNJitsiMeetViewManager.m */; }; B1208ABEFA22504998B800C8C953EEED /* RNTapHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = BA407E1C13578F7B43F9461BB02A73C4 /* RNTapHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B19E284EEDADC2AAEB838E15A544C93A /* demangle.cc in Sources */ = {isa = PBXBuildFile; fileRef = 081DBE46ED8562B7ECAEDB8FBF8206C9 /* demangle.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; - B19F2B637F6B23E5352C351E7F9D5AEC /* GDTAssert.m in Sources */ = {isa = PBXBuildFile; fileRef = A35FD940F25DDA9B77B7AFCE50EF51FB /* GDTAssert.m */; }; + B19E284EEDADC2AAEB838E15A544C93A /* demangle.cc in Sources */ = {isa = PBXBuildFile; fileRef = 001B7F2F6A312651D3606F252836C2F5 /* demangle.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; B1DB90F700D05E9EC43D79B1399D0EC9 /* BSG_KSObjC.c in Sources */ = {isa = PBXBuildFile; fileRef = D9BE4D1608A09FE10A9E3B412A392C07 /* BSG_KSObjC.c */; }; + B20F5C555A167E5A8977D22CD4C73279 /* FBLPromise+Recover.h in Headers */ = {isa = PBXBuildFile; fileRef = 81CE6C1BD2CD84627ACB2375ECEDDBF0 /* FBLPromise+Recover.h */; settings = {ATTRIBUTES = (Project, ); }; }; B21256C8EBEE862EB6882960A9A8FDA8 /* RCTUIUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D8D6E02317F787EC529CB53BDD23902B /* RCTUIUtils.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; B21ED47165915C21EF394F4CA8C6DE71 /* RNFetchBlobRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = FB7BCEFC749CA8C6FC0E8F8A35708B1C /* RNFetchBlobRequest.m */; }; B22B2FBBAE4A514F037B5880645E56BD /* RCTUITextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F3001C57F8CC737DBD4A431068E0CC5 /* RCTUITextField.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B263A4FE744BB18A7C7B543C66725FA1 /* GDTReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = FE63103F5165EC0A1900FC6BD658D52B /* GDTReachability.m */; }; - B2698816BE03D78D782DF5520083AA26 /* MallocImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3751758E274BD3C87E1AAE2DE4C1B366 /* MallocImpl.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + B2698816BE03D78D782DF5520083AA26 /* MallocImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1E98A139B0A1E84E12ACFECE2DCC7BC /* MallocImpl.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; B27BA7F21D6F636713330F5EC0FD8633 /* REAConcatNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F865083282FF0E3E2499A9C3C003673 /* REAConcatNode.m */; }; B2AC693FDD557631F17664DA2A56B3DE /* RCTAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = DFFA4E87052B6065E039BA191735CB91 /* RCTAnimatedImage.m */; }; + B2ADBA919A83F3489D1643A24A241C8B /* FIRConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = A85363A0C59C12E9ABF0D991127F666D /* FIRConfiguration.m */; }; B2F9BCDF64953778607DF09F5E955CEC /* Compression.h in Headers */ = {isa = PBXBuildFile; fileRef = 98EAAA5831E0ADD5E9E3BF6BD82CACBF /* Compression.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B2FA0A7642EEA39E75D3D03EF2E15B4C /* FIRConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E7B62E6910F30CA5877D34DC7AA5887 /* FIRConfiguration.m */; }; - B350DA3DF951BFDFC56331C90C01E200 /* FIRInstanceIDConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = E715A7145663F9339D4E7F52DA5E3932 /* FIRInstanceIDConstants.m */; }; B3547BB056E15E18329646D317844CFF /* KeyboardTrackingViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CD6A04E34E320C574D92651833E61C62 /* KeyboardTrackingViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B35D3DBB0E94D8ACB23B7012751A55A6 /* GULSceneDelegateSwizzler_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E73C501A0EB747305BB4AAD7978E3E0E /* GULSceneDelegateSwizzler_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B36EBDF74E3D52A6C4D123C1561A79A8 /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EE8ED7B82F5E3A7EF109FDD2E17A97F /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; B38F0F004105D71E61A479969F1D0E00 /* RCTSafeAreaShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2860113F8A165287F78B379A7E7735F1 /* RCTSafeAreaShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; B38F532404A131A6F67FE5B32AFFB7FC /* RCTBridgeModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA02F2BDAC2181FFE353B2B8F23A3CB /* RCTBridgeModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B3B8A27F13994D822A962EAD1C8EA1F2 /* FIRInstanceIDCheckinService.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DF066F20D14665E0A04D678CAD81F85 /* FIRInstanceIDCheckinService.m */; }; B3C7D46AE1B201A79C73C5CDF1F4BAF8 /* RCTBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9D7CFECF0E1016A7AC15B8E44E1539 /* RCTBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B3DA463FE22DD22C783EA37F931CEFC9 /* FIRLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = A38D33F827E62F685D432C9A01C918E6 /* FIRLogger.m */; }; + B41645C71E5790030A867FFC4BC9BB6A /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = B7619685EB70998E0F7EC8865DDD7D94 /* SDInternalMacros.m */; }; B447FD3316D3F3F80C80681F17A5014C /* React-Core-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 60E41D6EDC00DE5F7FDFD06E86F1A2C5 /* React-Core-dummy.m */; }; B4681C085E07706AAD0AC18E0183E0ED /* RNGestureHandlerRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = D63D5DE507EB9E643CA55FF3A3F4B965 /* RNGestureHandlerRegistry.m */; }; B46D8BAE4C9ACE396EE6E38D21C53C39 /* FFFastImageSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 734AEA6C4CABB5DD9F8F3707C6300538 /* FFFastImageSource.m */; }; B4739208CCD185642B0D5DCC2FC489E0 /* DeviceUID.m in Sources */ = {isa = PBXBuildFile; fileRef = F8752475D668F72AEAB301382F7113DE /* DeviceUID.m */; }; B477E0D3D5EAB635D2E8C8EE9E00B846 /* RCTPerformanceLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = FBA0A0A797AF05C4739D1E5917DD321E /* RCTPerformanceLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B4AAF4E42C54B9F9F4FC2D9F8A46B29F /* GDTDataFuture.h in Headers */ = {isa = PBXBuildFile; fileRef = EBF3A066DD720BB3B76A4D77BDF40D0F /* GDTDataFuture.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B4BCAA9AED1573D9C7E81E425A8973F9 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = AB686584E542E1751A41715CD307E524 /* SDWebImageManager.m */; }; B4BD045C0010A019A59B05DB94275A55 /* REAJSCallNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E014ACDCE6AE8C590470F9FD99628A5 /* REAJSCallNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B4C3A72600CB8D619C537CCA7E59FFD7 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B8E0F7766A408C07F547DE4D5D2B2979 /* UIImageView+WebCache.m */; }; B4E253A8AA7AE36273D3CF133550408C /* RCTNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 696551F58422F0488F0E1AC2D3222089 /* RCTNetworking.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B50CA038F8C99B2EBF848F62A29A94B3 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 63B31FE76518F6AD1B9C7FC4FC3BE0FD /* SDWebImageIndicator.m */; }; B50E9E916BC2CAF92872002BCDF0158A /* BSG_KSSystemInfoC.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FA243F65BEEED50FE367D2DA9EF79D8 /* BSG_KSSystemInfoC.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B53803E0BA4AF13B0CAB686D6FE5D0FC /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D131A8E4A5603427F19241AF701AF94 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B5491FA6F24FB43A5BE1DADD8C492452 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 3912963231AA3AA7436B53843E64EE76 /* SDWebImageDownloaderRequestModifier.m */; }; + B54FD5F975C9E75EA67F9D0E1939C9B5 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 34ACC90522BF9626ADB3630C6DD72733 /* UIImageView+HighlightedWebCache.m */; }; B56C853A088A0C2731C209C818076B37 /* RCTJSStackFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = A2128DAA3DAC64937C1E6568A67A7439 /* RCTJSStackFrame.h */; settings = {ATTRIBUTES = (Project, ); }; }; B5B429926449C953C72330919CAF8420 /* RCTProgressViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FFBBF90E279EBAC6C6E5B68B7943051 /* RCTProgressViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B5BD49BAFD353D954E0840F64E4A2821 /* DoubleConversion-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 11B31E00DF16B6278B172C44FA57D3DA /* DoubleConversion-dummy.m */; }; + B5BD49BAFD353D954E0840F64E4A2821 /* DoubleConversion-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F78C3AEA250BDD82BE7FE666904B87A3 /* DoubleConversion-dummy.m */; }; B5D8DB98F0DBB6D20242F47C2F812144 /* RNBridgeModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FC051E8E39A958D85281DA2232549E0 /* RNBridgeModule.m */; }; B5E9E6F752E4EDE32AC15703C13715AD /* ARTNodeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 10F3C58AADAD3BF820F4B6EA52544515 /* ARTNodeManager.m */; }; B5EB4E5FE1155C1296CC6743D69A3316 /* RCTImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DDDBCF3CD0C36D993D2A9B90128F76B /* RCTImageView.m */; }; B61FD3AA8214DE7386C1FC11C8D29267 /* RCTConvert+UIBackgroundFetchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = F07161B28792B01620ED2BCCF6E0BF02 /* RCTConvert+UIBackgroundFetchResult.m */; }; - B64FA42E184A0EE28D65B959449C49FA /* GDTPlatform.m in Sources */ = {isa = PBXBuildFile; fileRef = 04BCA88F7ADC8587075F74C4BF52094A /* GDTPlatform.m */; }; - B65ABCAEC3B324AFF74CFC314E05D488 /* raw_logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DFBB6DEF544E77BA121C1D1031EC0DF /* raw_logging.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B65ABCAEC3B324AFF74CFC314E05D488 /* raw_logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D2804B1DCF18B3386453877783E3BBC /* raw_logging.h */; settings = {ATTRIBUTES = (Project, ); }; }; B6842E62885EBBE6CA0C133734CBD26A /* RNFetchBlobReqBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 27099028B8D9CD2C8368F70BDADC79D9 /* RNFetchBlobReqBuilder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B6C5B18E7D63F47D4127BEFAEB0E082E /* FIRVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 41F62D04DF20EF8EB64F38D9EEEE02A9 /* FIRVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; B6E651E12D06D37F4E6F162FAB03724B /* RCTInputAccessoryView.m in Sources */ = {isa = PBXBuildFile; fileRef = 604A3C8D67086E9A3ECCB0B7BF40E782 /* RCTInputAccessoryView.m */; }; - B70FD1F085F4B1DAF7EA12B132D71569 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 18765F99260DDACA363C4D54C9396C3C /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B719B6CE8FDBC80C42048ED1A4510024 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 36980163009EA4BB2A710FDB6500AE39 /* NSData+ImageContentType.m */; }; B72B789755169C410B1BECF061D3F9AF /* RCTMaskedViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7521D31F3A9E79D6E0C978B3EEC1436A /* RCTMaskedViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - B72B9DBE5446E5510A628F76A191A0C7 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC3F7B47F6DD538B443A895DD5D9591 /* SDWebImageDownloaderOperation.m */; }; - B79379EE30EB5B9FAB3B9E5DDFAF509D /* lossless_enc_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = 78F3FBD7C471BA4C5B6D151E01926216 /* lossless_enc_sse41.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - B7B1C326E18E2566E54AA59FFF788C28 /* vp8_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 863D399BA928C8368D2AC66969BA7496 /* vp8_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + B79379EE30EB5B9FAB3B9E5DDFAF509D /* lossless_enc_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = 27DCBA8B031ECFD777996CDBB53368B9 /* lossless_enc_sse41.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + B79E683059398347D30F641EB0D6D947 /* FIROptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 52C28AD783EE3A1E4AB2B1A936CBEC0A /* FIROptions.m */; }; + B7B1C326E18E2566E54AA59FFF788C28 /* vp8_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 0605FB329064F4B740AB3DA84343A94A /* vp8_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; B7C947F92EB5B94DBE1C2920A060E0E9 /* RCTMultipartDataTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 6902BF644B6D22E65F917FE0AD95F867 /* RCTMultipartDataTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; B7DFA107ED277F43F7F2BAC8F7E62403 /* RNFirebaseMessaging.h in Headers */ = {isa = PBXBuildFile; fileRef = 243C7E6E9AAD9EA0A3101707AE96006D /* RNFirebaseMessaging.h */; settings = {ATTRIBUTES = (Project, ); }; }; B809511BC0E992CA4B37C5D757DD2C64 /* REATransitionAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = B9F9868FE878EA3D72E95B136344BEC1 /* REATransitionAnimation.m */; }; - B8317134B45F9440FFFEFF835F1613A9 /* common_sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = A942963ED07E6DEB650FA128366D8156 /* common_sse2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B8317134B45F9440FFFEFF835F1613A9 /* common_sse2.h in Headers */ = {isa = PBXBuildFile; fileRef = EAB62C963029E8092CA65348E89AD1C6 /* common_sse2.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B857674D187E7ABB87D048F32DE47BC6 /* FBLPromisePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B1E3B9B644AA67562AB8AF3F6ADB7F0C /* FBLPromisePrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; B8617288EFCE468DB38E1199D2D60E6D /* RCTSafeAreaViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A4C3171701218F19BA57771E76E4453E /* RCTSafeAreaViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; B86839393350454EB6F1E7EBA54DAE28 /* RCTModalHostView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0060ACFCB7F4DE84A9C2625491EA6A6D /* RCTModalHostView.h */; settings = {ATTRIBUTES = (Project, ); }; }; B88B8A0DA96440AC08B05788BE89D5FD /* EXAV-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 76443512452314B81C8DF7C0C0027E31 /* EXAV-dummy.m */; }; - B890C8FA91883956E89ADE3B6B17679E /* GULNSData+zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A43A3193B00F38A7A85002BB97B1AC5 /* GULNSData+zlib.h */; settings = {ATTRIBUTES = (Project, ); }; }; B8D8C37B58433010A2274C85315B9083 /* RCTBlobCollector.mm in Sources */ = {isa = PBXBuildFile; fileRef = 31A1E826694B6213C448735FA7D15E1F /* RCTBlobCollector.mm */; }; - B91E70B671250005FA74AD2BC312CA08 /* libwebp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 567FF870D1397FAA1691FB0CD6CB3562 /* libwebp-dummy.m */; }; + B91E70B671250005FA74AD2BC312CA08 /* libwebp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7290A8B4E4F31EF8E2A4BB18F88F59D6 /* libwebp-dummy.m */; }; B9405D10CD2B01033E11D8E45E3994EE /* RCTVideoManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 200B410FC52ED1D49FB3C784185B8F03 /* RCTVideoManager.m */; }; B943D1C92F92A10B5D06036C8BF5BCD8 /* RCTNativeAnimatedModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 57D32BB2DCB9D84442AFA5534DF2D526 /* RCTNativeAnimatedModule.m */; }; B983A666B5D2EE8BD85B91218A9E9A80 /* RCTSinglelineTextInputView.h in Headers */ = {isa = PBXBuildFile; fileRef = C4ACA86B0CE6802F5303BB625FF3E0F4 /* RCTSinglelineTextInputView.h */; settings = {ATTRIBUTES = (Project, ); }; }; B9AE047C64E85E86C1A3F245A7DE3FAB /* Yoga.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0C99EE7CEEF2ECF943384B07DEFBF58 /* Yoga.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++1y -fPIC -fno-objc-arc"; }; }; - B9C1E38AD3D1F98B5403FB50A6003E43 /* FIRVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = A47B0FD5533369CBB8D4F5907D6C95B0 /* FIRVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; B9D1154CD997F0702268F81D59B6406C /* RNFirebase-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2870DD1B6E957DCCFFE20D03678B0CAB /* RNFirebase-dummy.m */; }; - B9D989270BF39444739B9D53F28332CB /* cost_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = DCB22A38791F748AE8290C77D99CCC56 /* cost_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + B9D989270BF39444739B9D53F28332CB /* cost_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = B59C6445493BACD5876AA3D8176366EB /* cost_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; B9E9A4C8414CC010B04907511592478C /* RNFirebaseCrashlytics.h in Headers */ = {isa = PBXBuildFile; fileRef = 9603D56149DCC0F2A9E3930B1929F72A /* RNFirebaseCrashlytics.h */; settings = {ATTRIBUTES = (Project, ); }; }; B9EDCDF3FAC046611DB90A9950FC0F52 /* RNFirebaseFirestore.h in Headers */ = {isa = PBXBuildFile; fileRef = 607C651864B81834E926AD131165E5D2 /* RNFirebaseFirestore.h */; settings = {ATTRIBUTES = (Project, ); }; }; BA2BC83095E22C1245FE705A08439438 /* EXVideoManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AF370F773F98172EBCFDD5981186996A /* EXVideoManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BA320783C2C9624896E06C34E9BF688F /* vp8i_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B1B6D5299F4C34E1103231A3B70571 /* vp8i_dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA320783C2C9624896E06C34E9BF688F /* vp8i_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = 37AECEE6AC0671E260C2B1BE9B3738AD /* vp8i_dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BA5E0CA71A36D82490FA1A0B3127E89D /* FIRComponentType.h in Headers */ = {isa = PBXBuildFile; fileRef = FD463EFB922CF38263587F78A3E403E1 /* FIRComponentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; BA9BA30EE97ABF955C4E454A06AB1466 /* RCTConvert+CoreLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC5EF86275F965D3421C5818AB69340 /* RCTConvert+CoreLocation.h */; settings = {ATTRIBUTES = (Project, ); }; }; BA9E8B725B9A8CD23FBF15614C59F41F /* BSG_KSMach.c in Sources */ = {isa = PBXBuildFile; fileRef = E1468AC437F1F375A17C5232350DF95F /* BSG_KSMach.c */; }; BABE71176BCA0F6279AA9F637CA91055 /* RCTURLRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 920F14D05D427385C4CFA10C28574833 /* RCTURLRequestHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; BAC64044E2BC58CB9EBE5EB147C69F81 /* ARTShapeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E320C50D0CCAE45C2D45611E61C085EE /* ARTShapeManager.m */; }; + BAEEE054038206EBD438E6D6B42BF6A9 /* SDImageHEICCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 264FC1F2B694A07F9E99ECECA1434258 /* SDImageHEICCoderInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; BAF0F3643FF6537D18C0C4D20C0DBB98 /* BSG_RFC3339DateTool.m in Sources */ = {isa = PBXBuildFile; fileRef = 57128606D41041DE0DE7DE6C3FB04801 /* BSG_RFC3339DateTool.m */; }; + BB02801B51A949379B60DD90295B9ECE /* FBLPromise+Await.h in Headers */ = {isa = PBXBuildFile; fileRef = CDAD3963A0F8EA40EAE6B916D5AA0A1F /* FBLPromise+Await.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BB0C45D3B6615D75A9A0E3E3B31D5F63 /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C366C49F593DF61C1B36CA3537E513C /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; BB5703CC5A171DC2B6CEDF71E4748D94 /* RCTEventDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = C9C25D35DBEAD6FD160BAA8C91BC077A /* RCTEventDispatcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BB72C52113C41EE2194D3A3EA913DC69 /* webpi_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = 47F13B34B5F0D50BE1C2DECA8367236B /* webpi_dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BB72C52113C41EE2194D3A3EA913DC69 /* webpi_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = D91483DC2ACFBE14D934FB42131A0745 /* webpi_dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; BBA5C37A4DA22F35E2BFE079AF8D4D97 /* UMViewManagerAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = DBC55BDAFCF76EF408F711747E2104F6 /* UMViewManagerAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BBB9BBD85FD78B7232142ADE3AD15BD0 /* SDImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 68CE49DDB2DF81CFFEFD9BBCC492FEEC /* SDImageWebPCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BBB9BBD85FD78B7232142ADE3AD15BD0 /* SDImageWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4539E3108AC9825410E6FE95CBEB6EA7 /* SDImageWebPCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; BBDB8085D34C1BA129E1735348672A38 /* RCTMultilineTextInputViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A6843A5A11A1F90BF27E91E750F962B7 /* RCTMultilineTextInputViewManager.m */; }; BC323EC0EB4DA913977AF3EBC1C66254 /* RCTModuleMethod.mm in Sources */ = {isa = PBXBuildFile; fileRef = 783B06CA56E7F31AAD0E0144F28CAEDA /* RCTModuleMethod.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - BC39A14139D09DA09D179898A87CF021 /* GULLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 7138C521F354FCB1A269DDA495C7D2FB /* GULLogger.m */; }; + BC383056F1DB2F7478B30CCF6FFE5F60 /* FIRLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 1999800C3B5B4E5C0A32818F3D47D45A /* FIRLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; BC6530F3F8CE6345A867199080359250 /* QBAssetCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 945812BAFCFBCA799CDA6828A3F43720 /* QBAssetCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; BCE4A2AF4D01811C7693014AE1612E24 /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 8D6D629A6E640F6D69B60F695979A2FE /* en.lproj */; }; - BD1D9E289B85888E5A0DA85BFDB7A306 /* common_sse41.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BC69F9FE2E8DBE28E99666C455B61BD /* common_sse41.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BCED26E631DA2A5593A277A7D1E02963 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D9558B896F99A90A93DC099BD7C8D88 /* UIButton+WebCache.m */; }; + BD1D9E289B85888E5A0DA85BFDB7A306 /* common_sse41.h in Headers */ = {isa = PBXBuildFile; fileRef = B298AD16DF9C7781D252AE8F6F69B0B4 /* common_sse41.h */; settings = {ATTRIBUTES = (Project, ); }; }; BD4338E90B5A16B6947BCA512B8F86AA /* RCTRawTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D75317127DCA2E50611CDFF673C98CB /* RCTRawTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BD5367AA54AEAA782DE3C4CA57CFECD7 /* GULReachabilityChecker.m in Sources */ = {isa = PBXBuildFile; fileRef = A2894FAA81841C7DE26398644B1F3ACD /* GULReachabilityChecker.m */; }; BD5CFC11C49F0BB6ED6DE6C3B88A3B5B /* RCTSegmentedControl.h in Headers */ = {isa = PBXBuildFile; fileRef = F75E382715FBE5250A79F0C98DE6E678 /* RCTSegmentedControl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BD65B77B25285655EFA60B4C9F3F23F9 /* GULOriginalIMPConvenienceMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F51256112D9CF93FA314D5523249742 /* GULOriginalIMPConvenienceMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; BD79F6B65349C921CE308EDC53DBFED7 /* RNCWebView.h in Headers */ = {isa = PBXBuildFile; fileRef = EDAB014F5408461B18E0134D71B273FC /* RNCWebView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BDAE1642C9CF0B63DF602E868A7970E1 /* FIRInstanceIDUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 9265904108AB9D3393DC3CE7F91A9B47 /* FIRInstanceIDUtilities.m */; }; + BDCAFF93C7C58C8AD26A612B7F4D8512 /* GDTCORReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 78A5E4508694C25663685CE163B7A18D /* GDTCORReachability.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BE1ABF05189FFE8D346CC00A9F85EAEF /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ECC10905A36138211973FA8BFF62640 /* UIImage+Metadata.m */; }; BE1EE1B1FACDC3A698B499BB6B844904 /* RCTTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8494ADB2C4035D2B22513419C51B5517 /* RCTTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE37FB1F5349BFBD966F5B1CBB9B24B0 /* GDTUploadCoordinator.h in Headers */ = {isa = PBXBuildFile; fileRef = F416804666984323CB6BE6671AB4FE08 /* GDTUploadCoordinator.h */; settings = {ATTRIBUTES = (Project, ); }; }; BE39F1DC3D3F1C43D2DCD3DBCCF32E5D /* RCTTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AEA1F7442A8A10E9F7719D981A6B89F /* RCTTextView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE40EDBCF4471381FF28E7701C8FEA69 /* bit_reader_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = AC615868BE8E9F48A3A6A126EAA7DA56 /* bit_reader_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - BE4F13C44F376AE339DD73231DCFBACA /* FIRInstanceIDVersionUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = F5EE710F6055B8126303056B0BE1B60B /* FIRInstanceIDVersionUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE5DE257A36811BEFB4F2626DFDBD03C /* GDTConsoleLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 2497D5165EC0A35BD96AD57FC55949E6 /* GDTConsoleLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BE40EDBCF4471381FF28E7701C8FEA69 /* bit_reader_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = B491F35981D199A9F597FA6ADB1CDADD /* bit_reader_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; BE66A472C87FB28630F530C61341D91D /* RCTModuloAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 881868D218B5223A2DF347CA1DFCFDD0 /* RCTModuloAnimatedNode.m */; }; BE81EB7D0762FF06B9148922F597CE73 /* RCTCxxConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 08F60035D9582D5CA9D282FC2589628D /* RCTCxxConvert.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BE904FB7BF17A7C1AED62EE3079A1950 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E395510D11DCC7395A036D8E1F57BA3 /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Project, ); }; }; BEAE2BC124DD18BB39D4A17D118FA151 /* RCTReloadCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 272EDD435D37F6C2EFA2EC5FB49D400D /* RCTReloadCommand.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - BEB8A46866B0036585164D48371F67F3 /* rescaler_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = 3653B913D7CA70CA4C51EC4C9CA27F3A /* rescaler_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - BEE4B0E524B825FBF453B242122800F6 /* FIRInstanceIDCombinedHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = FFA8CB977BF4AD6E90224C3F5F650B0A /* FIRInstanceIDCombinedHandler.m */; }; + BEB8A46866B0036585164D48371F67F3 /* rescaler_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = 476178CDB7F6A524306920EEDD3D60DC /* rescaler_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + BEEB788D1743D4D1D9AA52C31C528B19 /* FBLPromise+Any.m in Sources */ = {isa = PBXBuildFile; fileRef = BD58A224BC63CD1E1BB8C5E6A0AC8AD7 /* FBLPromise+Any.m */; }; BEEBCB09A0A2EF83877848B92D64AFBE /* BSG_KSCrashReportStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B3370FC1317B276B98782F87182B739 /* BSG_KSCrashReportStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF23FDD138C85BBD370A5B2154CEA590 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 55172F9BCA61ED8903813A0BE84F0A81 /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF2CC947A4C41569B3A195A9B21F9713 /* RCTVideoPlayerViewControllerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 834E201ABF2061E6D473BE35CAB450C9 /* RCTVideoPlayerViewControllerDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF3A2F2133AD7A3B2ACE6D1E132BAEDE /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F8611F8EC76BA0AD83706FBD552AEFF /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF545957D6AC7F90C6B1273591A96A42 /* RecoverableError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B56838A8EB055CC8F57F87833A58B50 /* RecoverableError.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF65D2EA4B15FB41B542CC4ABEF114F6 /* RAMBundleRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = BD8E04118ED59087038A3197896170AE /* RAMBundleRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF6A5880435F00A13B94E354AD1306E2 /* RCTDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 665E4D5175A646C08F3D216295A530A2 /* RCTDisplayLink.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF6C73488638D5E9B195DC5890E36369 /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 617CCEC26BE49CEAB04CC0C3BD375E6C /* utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF6C73488638D5E9B195DC5890E36369 /* utils.h in Headers */ = {isa = PBXBuildFile; fileRef = B2BDA968F3FED747EC612A14381CAFCB /* utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF91C4FB47A214A702EF83BCCEA1FCEA /* GDTCORConsoleLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E711CC040CB2C9B6660541E7C73B310 /* GDTCORConsoleLogger.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF9530B10724263A128DDA21ACFFAD41 /* UMReactNativeAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = B54554CA08243B0445BEE89CEC127C6F /* UMReactNativeAdapter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C003FCC72FC7B55D846E71062A6AF1CB /* GDTStorage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = F08EE550D1AEB06952E8879746FC9947 /* GDTStorage_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C00BC444C909EC94EB7A0B9972BE02DE /* GDTAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FB7AC3B2DAC233057078CA6A102339E /* GDTAssert.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C06E0853195162D78F258D0F541B2CAD /* RSKImageCropViewController+Protected.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C698118A106815F6AB507E9C315C27E /* RSKImageCropViewController+Protected.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C0A325EF483D590E330CAE0754811F0E /* yuv_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = E9EDB57C8A7B9A567D2B7E1DFD51750A /* yuv_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + C06E0853195162D78F258D0F541B2CAD /* RSKImageCropViewController+Protected.h in Headers */ = {isa = PBXBuildFile; fileRef = 068267BE04ED7FFA08E2A827F9406A85 /* RSKImageCropViewController+Protected.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C0A325EF483D590E330CAE0754811F0E /* yuv_neon.c in Sources */ = {isa = PBXBuildFile; fileRef = FAEB584D2FCC43846A157044BC9D5E46 /* yuv_neon.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; C0ACB39A2A62B6BE2B02F8A7AB97A14F /* RNFirebaseLinks.m in Sources */ = {isa = PBXBuildFile; fileRef = D7009140009F7E9B686F2ADB91FDB555 /* RNFirebaseLinks.m */; }; C0CB7350BAE204A6BD9FAB47CE2FE34F /* RCTImageUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CABE6C371A0BFD0444B9F27A64F4F11 /* RCTImageUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C0EF38E2CC4F5D1AA2CE7684E58C542D /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 830A9E503A916D0977B7C704E7CDDA7D /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Project, ); }; }; C11E5987EE418D21E6B1CF2AB4703EF5 /* RCTInputAccessoryShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = F983C121F9E77FD46B5A5C230669F6BB /* RCTInputAccessoryShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; C12CECE1BFC62D60E7A7F28CFEB07FA7 /* RCTInspector.mm in Sources */ = {isa = PBXBuildFile; fileRef = E4FCD746909AA36FD59C8BE52573CC6E /* RCTInspector.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; C13607802A82E097C94614A6F16A33AE /* RNVectorIcons-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E13103EBBAC3CC02469B4EE37E8FCDE /* RNVectorIcons-dummy.m */; }; @@ -1601,151 +1673,176 @@ C1B699A7F2B98F0236BD674973A9BAC0 /* RCTTouchEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = D9515AF621FACD624F464EB9B8404E4F /* RCTTouchEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; C1C07EA90BC7C396D73BFB7E2876A20C /* RCTUIManager.m in Sources */ = {isa = PBXBuildFile; fileRef = FA3C9C05A2745796C90E164493003F98 /* RCTUIManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; C1C42D2A161E005AC9884543F93F9990 /* CompactValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F6BBD2D4446D917DBDE428BD8190405 /* CompactValue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C207569F8719A271C767D198587CFF0F /* FIRBundleUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D280BD85D66E4E6F08E9D7AF3638731 /* FIRBundleUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; C20D3318B5E9CD84E1EE98ABED9ED88C /* JSDeltaBundleClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AE049BEA86652F24D0A2D756241E35EB /* JSDeltaBundleClient.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - C22841039EF7FCB0A38C0A4BEF6E233A /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = BB9490D5D6C2A4D58F4DE53CA64B65F4 /* SDWebImageDefine.m */; }; C244C4AEF749407B55BEB89F8A908791 /* BSG_KSCrashSentry_CPPException.mm in Sources */ = {isa = PBXBuildFile; fileRef = A598C0208EF4B24378EBB0A461F36DF0 /* BSG_KSCrashSentry_CPPException.mm */; }; C2684537D71ACDD166474EDB26F48E95 /* RCTNetInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = B0A3DAD382322F1A249BFB52E044950B /* RCTNetInfo.m */; }; + C26A8A38E4FCFA0A1C3BE2AFC067F378 /* FIRInstallationsVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 81B9283887252C3A5BFACBC794BD9596 /* FIRInstallationsVersion.m */; }; C26D1A4CB64ABB25355919733FA07F67 /* UMModuleRegistryProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F3869402970ABB5803B20BF44D61D87 /* UMModuleRegistryProvider.m */; }; + C271EC3CEE125456B9023EF221D3BDF2 /* FIRInstanceIDTokenDeleteOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = D00145960C57E93C0FE7769437FEFA04 /* FIRInstanceIDTokenDeleteOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C286C22537607F78CDEA71274AFEA354 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F19DADEA197E3EB0A522E8E1D520775 /* SDDisplayLink.m */; }; C29A733CDEBD3A9A2574F947537CEFB2 /* RCTEventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = A798D3BC0A968E1D468B9F1BE57782DE /* RCTEventEmitter.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; C2DAABCFA14AF3B14F81C7763C0E9B44 /* REAAllTransitions.h in Headers */ = {isa = PBXBuildFile; fileRef = CCEBD8208E1F25947DBF57D76B5C55C5 /* REAAllTransitions.h */; settings = {ATTRIBUTES = (Project, ); }; }; C2FE5A4BD90912BBC15DF5CC9C172146 /* JSExecutor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 951C3D1141215236BF3E717E98972F20 /* JSExecutor.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - C3349FD62950CE68B534E08E98989248 /* filters.c in Sources */ = {isa = PBXBuildFile; fileRef = 353D6BB05EF772EEB577A534B8E2C1EB /* filters.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + C3349FD62950CE68B534E08E98989248 /* filters.c in Sources */ = {isa = PBXBuildFile; fileRef = E154067690FE650334C7C3D34DA323A1 /* filters.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; C34CB0B8FFE337C549DD2A9F0D84B82A /* RCTRootView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AD8727BFD3898AB37FF5C02D3A2019C /* RCTRootView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C3D1000FE91F1ED6637A85A0B3393FAE /* GULNSData+zlib.m in Sources */ = {isa = PBXBuildFile; fileRef = B2735CE302680854AA3529AFCC29CA03 /* GULNSData+zlib.m */; }; + C376B5C079A3D667D292AFCE36995859 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = BE710B81BB8CB34A3D44E178C59ED0D3 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C3A358A8B68EB87FA331A54416E3E092 /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F09D66808FCE05691A438366BC25B746 /* SDWebImage-dummy.m */; }; C3EAD7F273D022D02D3403E9015A8523 /* RCTProfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F4BF29BFB9DBF4D660B3789F5576D82 /* RCTProfile.h */; settings = {ATTRIBUTES = (Project, ); }; }; C426E7406D39F8B9DC748D66406DE5D9 /* EXAudioRecordingPermissionRequester.m in Sources */ = {isa = PBXBuildFile; fileRef = 9982F863CF3571B41EC3DB02755C53D4 /* EXAudioRecordingPermissionRequester.m */; }; C45AD96F1A0B37D92B6961C3CE437CB8 /* RCTModalHostViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 50980AAB9368C75899714BEE65A19973 /* RCTModalHostViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - C463903550363F2EC8E73556C301C2CE /* FirebaseCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AD6F0184C9B0D921A0733BB5A058FF11 /* FirebaseCore-dummy.m */; }; C46CABA6A326F70D7624EF26233C77BE /* UMCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D4D3029D489B9CC30FC5E9DFF1C63994 /* UMCore-dummy.m */; }; C479D38C287606B149EAD8AF8F0532B2 /* QBSlomoIconView.m in Sources */ = {isa = PBXBuildFile; fileRef = 94249BEAC1A4D633C6807346A8070F3D /* QBSlomoIconView.m */; }; C4A2F95818E70C18AF66DFAFDB40D431 /* RCTDeviceInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E13BA75043295B8C6EA26BBCE451CC9 /* RCTDeviceInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; C4C0690D0CC7D0EFC458CE9E1C67B9A2 /* RNJitsiMeetViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 06CB3C0F55397252230780C99F95841B /* RNJitsiMeetViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C50BBFD660177E04410B43D6C45ABBE7 /* GDTEvent_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBB7D5FBD7D716F754F9E1C34C1EC74 /* GDTEvent_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C51C3D70CCB9260030FA831AF35788CC /* pb_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = DF9802471B3C38BE71E6DFC462B60585 /* pb_decode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; + C4EBF0D56475CB1644E5164352A24BD5 /* FIRInstanceID+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 36585169EB94500CF044692BF107C3A0 /* FIRInstanceID+Private.m */; }; + C5114FB6C46BCF309214DF7E7D17C471 /* GDTCOREventTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DBFEEEE8490B0AEC5A93E092F2857A5 /* GDTCOREventTransformer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C51C3D70CCB9260030FA831AF35788CC /* pb_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = B72D2A1AFE5D8CB8AE76AADD8B87B42B /* pb_decode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; C54354698BDAC62A3BD74819A4F3A2F8 /* RCTSurfaceStage.h in Headers */ = {isa = PBXBuildFile; fileRef = CDCB0F44C93968319F5B2F7B8EBC8DEA /* RCTSurfaceStage.h */; settings = {ATTRIBUTES = (Project, ); }; }; C546F80F28448E4840B54656FED5B9C0 /* jsi-inl.h in Headers */ = {isa = PBXBuildFile; fileRef = A4B5D99728B4D33D9FCDDC665DB25379 /* jsi-inl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C5B18DC66089E744774E2B7348260CAD /* GULNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = FF93806C208335D001155DDC1F559DB7 /* GULNetwork.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C5A7EA3714C687D6888782149F9AD31F /* FBLPromise+Always.m in Sources */ = {isa = PBXBuildFile; fileRef = C06F60B264CEB19482C4DFD3476D64D2 /* FBLPromise+Always.m */; }; C5B6D6D972FDFA5C328D46C038C831F0 /* jsilib-windows.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04F043ADCBA901864BB2FAE209E915BC /* jsilib-windows.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - C5CEDA86340AD47E9F861BA2E90C0098 /* FIRInstanceIDAuthKeyChain.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B1A1C95AA27C1D36C6270D41774B010 /* FIRInstanceIDAuthKeyChain.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C5D9146DE660B22941C6086F34A47E37 /* GDTCORUploadPackage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B6AE09786B2423B11C27D00079FCE17 /* GDTCORUploadPackage_Private.h */; settings = {ATTRIBUTES = (Project, ); }; }; C5E72E14D8CFFC9470A4CCF50E4F7446 /* BugsnagReactNative-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 55B2F2858776435BA97A8EB0ABD8287F /* BugsnagReactNative-dummy.m */; }; C61D07BBE1FA5ED2C4AB03C96D9A2F8A /* RCTSegmentedControlManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AE1C1F5B1636218DCEC267CBFC409026 /* RCTSegmentedControlManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; C6392E335499D2C84212964C3C05A577 /* BugsnagSessionTrackingPayload.m in Sources */ = {isa = PBXBuildFile; fileRef = 97B0C12188F70CE990D5D85626F3C361 /* BugsnagSessionTrackingPayload.m */; }; - C65E95799529526B6E7D878BE5A8C15A /* logging.h in Headers */ = {isa = PBXBuildFile; fileRef = 313C94AD1D24DABED4DACECE329E5171 /* logging.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C679826BA06A7E8AC3F0C873125401AB /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BB41289CA45FAD1326154C61667467B /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C65E95799529526B6E7D878BE5A8C15A /* logging.h in Headers */ = {isa = PBXBuildFile; fileRef = EEE7EDE32D47E34C402A333EA97DECAB /* logging.h */; settings = {ATTRIBUTES = (Project, ); }; }; C6B6684C3D88C826389C24634EC328EC /* RCTTypedModuleConstants.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2F41EAF7D54D08571323E5F785BD3EEE /* RCTTypedModuleConstants.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; + C6D0C80B1F5469299A9914D27C84BD2C /* FIRInstanceIDURLQueryItem.m in Sources */ = {isa = PBXBuildFile; fileRef = D53CE5F9F1B3C1396FB3444A3DC670B0 /* FIRInstanceIDURLQueryItem.m */; }; C6D1392176223C7A48AF027E57177FE9 /* BSG_KSCrashDoctor.h in Headers */ = {isa = PBXBuildFile; fileRef = 086682E66D534C5C4E564B6A5873DEC0 /* BSG_KSCrashDoctor.h */; settings = {ATTRIBUTES = (Project, ); }; }; C6DEF164A573F8287A635565DD249709 /* UIView+React.h in Headers */ = {isa = PBXBuildFile; fileRef = D88A8CB93215FC62B8F7F4B729D1A2D3 /* UIView+React.h */; settings = {ATTRIBUTES = (Project, ); }; }; C6E12490D93786594E537BE98FC35205 /* RCTNetInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 455FAD484583221C129C0EBC0EA0384D /* RCTNetInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C742507D7BE5A255918244DACF09664B /* FBLPromise+Await.m in Sources */ = {isa = PBXBuildFile; fileRef = 459EF69C87F0423DE3DAFA049CEC05EC /* FBLPromise+Await.m */; }; C75E4435E4A6F4E4F77E7B11B6B93DCD /* RCTNativeAnimatedNodesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB77BF2CDF722B873EF17E6A605E2E5 /* RCTNativeAnimatedNodesManager.m */; }; C78C8A90CCE1F00A747F50135C11A8BE /* RCTLinkingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B2AC099629C46CC93F0E91ADFEB8830 /* RCTLinkingManager.m */; }; C79294613B7092A89E272A0F5BE8FE3A /* RCTSegmentedControlManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BAEFD4C4562C5D193B2D14D21D30A0A /* RCTSegmentedControlManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; C7A978DE2F048385786BB530A47BB2DB /* RCTTextDecorationLineType.h in Headers */ = {isa = PBXBuildFile; fileRef = ECF350EEF9D4CB89A936158E831C3E76 /* RCTTextDecorationLineType.h */; settings = {ATTRIBUTES = (Project, ); }; }; C7B3587D484D82AF3247A699972D2A1A /* NSDataBigString.h in Headers */ = {isa = PBXBuildFile; fileRef = 247F1B869B8C5B1B67219E38EFA3D3BE /* NSDataBigString.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C7D3C394C908F36CAD5033116E989AAD /* GDTPrioritizer.h in Headers */ = {isa = PBXBuildFile; fileRef = E1EEF36D6AEB82A30BC411B8B360BF77 /* GDTPrioritizer.h */; settings = {ATTRIBUTES = (Project, ); }; }; C8294A3AFB454918E426906BBF91A803 /* RCTAppState.h in Headers */ = {isa = PBXBuildFile; fileRef = F8B7263BADCFD744E32F1CC23ECA5549 /* RCTAppState.h */; settings = {ATTRIBUTES = (Project, ); }; }; C8366575C514F3D18B718B19878DDFCB /* BugsnagBreadcrumb.m in Sources */ = {isa = PBXBuildFile; fileRef = 66FBDAC9AAE6212A5C0524E6F1220950 /* BugsnagBreadcrumb.m */; }; + C856EFB68D99D6BCB7520D35888D15A3 /* FBLPromiseError.m in Sources */ = {isa = PBXBuildFile; fileRef = FE99DA2A671583AFDB9A25490E656721 /* FBLPromiseError.m */; }; + C8A1E2B5B461F13C1F45D6B15FFD6DE8 /* FIRLoggerLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 5844E9E8BBD906339EA96EF1BD79326F /* FIRLoggerLevel.h */; settings = {ATTRIBUTES = (Project, ); }; }; C8D012D66025AB92F9FDC8208D69D2FB /* RCTMultiplicationAnimatedNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A7DBD047D8132A53973B81E8A3B6CF4 /* RCTMultiplicationAnimatedNode.m */; }; + C8E92C9357E3EC80CA4AA1FE9C8A3E35 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B8C2145C378EBCD15C3B414625FD2D0 /* NSButton+WebCache.m */; }; C8F5AE3DE1F7A264D3C7EB9F1168625B /* BugsnagKSCrashSysInfoParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 13779FADE8C2EEA8185E90141DA3E5D4 /* BugsnagKSCrashSysInfoParser.h */; settings = {ATTRIBUTES = (Project, ); }; }; C91A80302343239A6EF2EA1AD3B2D760 /* RCTSafeAreaView.h in Headers */ = {isa = PBXBuildFile; fileRef = 767E6879FB85AE1BD7163A0997745F42 /* RCTSafeAreaView.h */; settings = {ATTRIBUTES = (Project, ); }; }; C940D03C9052AA2516156A393AFB5D41 /* RNFirebaseRemoteConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 046EAA9D5C971AB9315DEC235D649530 /* RNFirebaseRemoteConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C94DC516C2F48A7868DF9193BAB277CA /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = 32AC64561B534482CCA37BB93EC068B7 /* UIImage+Transform.m */; }; C95C8066C336E2C233D889A4AA7BF555 /* BSG_KSCrashSentry_CPPException.h in Headers */ = {isa = PBXBuildFile; fileRef = D02317A1264D11D9C88D834F0437492E /* BSG_KSCrashSentry_CPPException.h */; settings = {ATTRIBUTES = (Project, ); }; }; C98B27F94C0BFAA23B39DF31B94E96C2 /* EXAppRecordInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 3421F26D424268F958AC092714AE40E4 /* EXAppRecordInterface.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C9C06DB7739CC4EDD00EE60BD45AB526 /* FIRComponentType.h in Headers */ = {isa = PBXBuildFile; fileRef = C46905CBF59E505239D2FBEE8A2482ED /* FIRComponentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; C9D6F1DEFE0BC49C87D941B8CEDBCD01 /* RCTShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AA8BCB483CB0B37699373BE5950DB82 /* RCTShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; C9EB3B7BD3C03FE53AD3B843B3B6B185 /* RCTConvertHelpers.mm in Sources */ = {isa = PBXBuildFile; fileRef = EDBAC99A7274E858D9F6D3A2910C2E1D /* RCTConvertHelpers.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32"; }; }; + CA19A520589C9D812CE9D3F6369629FF /* FBLPromise+Do.h in Headers */ = {isa = PBXBuildFile; fileRef = A05BCBED3EF0DF896274C0F7F49E194B /* FBLPromise+Do.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CA1E3C6D7EF76F233CB84BE0B847FE55 /* GDTCORUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = E843DB2D9152A6891CEC690C8919CC3A /* GDTCORUploader.h */; settings = {ATTRIBUTES = (Project, ); }; }; CA28EB9031E5E5659B2CA1F6BF10E4A2 /* RNFirebase.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2680792DF7834893B2F58F450A3ED6 /* RNFirebase.m */; }; CA5793F28513936E05309A9CBDC43D43 /* BSG_KSCrashIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = FBCD9EF2870E34294630AADF03530B74 /* BSG_KSCrashIdentifier.h */; settings = {ATTRIBUTES = (Project, ); }; }; CA67199CAF85BD631A173567EACB114D /* Orientation.m in Sources */ = {isa = PBXBuildFile; fileRef = 58CF79F99A87A127F56E24875D1F96BF /* Orientation.m */; }; - CA6E8BCDD8BA3F3A19D47CFD4CA9E6E0 /* msa_macro.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B1AE985C329624758A2E5C9F691D7D1 /* msa_macro.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CA6E8BCDD8BA3F3A19D47CFD4CA9E6E0 /* msa_macro.h in Headers */ = {isa = PBXBuildFile; fileRef = 9602665ED7A4FCF32AFDE7F8439C8C55 /* msa_macro.h */; settings = {ATTRIBUTES = (Project, ); }; }; CA82E137ABBD7249B72E92F7D52A1A2F /* ARTRenderable.m in Sources */ = {isa = PBXBuildFile; fileRef = 86E1E63B15248196AFB2230744A465F8 /* ARTRenderable.m */; }; CABED76FF5610C0534B090E89EA3B2FE /* BugsnagNotifier.m in Sources */ = {isa = PBXBuildFile; fileRef = C1F15DAD777D61E47556A49390A2CB1C /* BugsnagNotifier.m */; }; - CAF7B83A9944FC42D125FD8531A69A20 /* FIROptionsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 080E2FD90E9D759670B5110850479F74 /* FIROptionsInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CB451FBD339977E44FF2FC313068B5EC /* GDTStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = B9229E59D5CCD6CED8B744A44D0EC198 /* GDTStorage.m */; }; + CADE8DAB6C036105B2CDB8BB6E0718F6 /* FirebaseInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = 50D7273241DE97D0F9D835E4AFD14299 /* FirebaseInstanceID.h */; settings = {ATTRIBUTES = (Project, ); }; }; CB53CB8940FA626EDC9DA002C71F0199 /* RNCAppearanceProviderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AD1E67D6C1F41C818BB20DE61AAF67E /* RNCAppearanceProviderManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CB58C69E5D7000D8AE64ECC794C216F2 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 9697CB449E3F9E17D2460CE1D27DDBEC /* SDAnimatedImageView+WebCache.m */; }; - CB64648C0E1E4414FD4489211DD002D7 /* FIRInstanceIDStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 685DFF57A1534B9C433EDBE0B2A0B0D3 /* FIRInstanceIDStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB600AAB35D900E3F6F6E38BD6D90D47 /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = FA4ECAC99B83A66CECD026177446CB77 /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; CB6FE39436E925E77F12794C3460AB4F /* JSIDynamic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 13CBC0BC2FB3CE717B2C0EAE3A88C1A0 /* JSIDynamic.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; CB75321A593E9F9CF14DC01E77D2B71F /* RNFirebaseFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 01FD177916C7B57614C5F4BEA61F8CE9 /* RNFirebaseFunctions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB97955D7E935F4B372A7198701979E0 /* GoogleDataTransportCCTSupport-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E5A82E2D83D68A798CF22B1F77829FC /* GoogleDataTransportCCTSupport-dummy.m */; }; CBC3C8CDC98A30E9165A60C0AEC4C6E6 /* RCTSurfaceDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C840FED49BB6E4503D0250D4C7345A7 /* RCTSurfaceDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; CBE71DAFC11B03D9525FF1D9A22DB7EF /* BSG_KSSystemInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CAFE524CDC0EDA7E418B7CFA9669422 /* BSG_KSSystemInfo.m */; }; CC1D981A4F68A1E01BF9083FFC270693 /* React-jsi-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B3036C135F1DFCE419D5AA9B4DFDEC42 /* React-jsi-dummy.m */; }; + CC22415C6197490967F46F17797B9AF2 /* FIRInstanceIDCheckinPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 340F8DC0B45AE963FE9FEB6290B2F0BA /* FIRInstanceIDCheckinPreferences.h */; settings = {ATTRIBUTES = (Project, ); }; }; CC39BA71608BA9FFD62F8C5AF65B227F /* LongLivedObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B96C2FB80F4A61F7610D6663DB9DC0B1 /* LongLivedObject.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; CC5C5748F588ED764B57214FD01FA6AF /* RCTSurfaceStage.m in Sources */ = {isa = PBXBuildFile; fileRef = F0171EC8BC3009153E594A4B4AEF8326 /* RCTSurfaceStage.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - CCB6F59AABF0E21BC0F9A4A9021C9181 /* alpha_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 56326E64636C5860ADD9D8717D8B8C9B /* alpha_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + CCAE7BA7471BB1DF772B3E823C61E0A4 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 975D51C22494655692ADF60A40FC9F94 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CCB6F59AABF0E21BC0F9A4A9021C9181 /* alpha_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C5D630EAB7ED6E3B3B8A2DA57CE8B0C /* alpha_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + CCC12688626556FC8D8945D5A6922E8C /* FIRInstanceIDStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 608E4B0589801079221FEB94B6D394AC /* FIRInstanceIDStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CCDD9B74F7A6299EF3EE5DFB9338D5D9 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 31D19F7F78897D1BC258DE9692B90D33 /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Project, ); }; }; CCEE7F22ED3AF3050046C3DA5CED35EF /* UMViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BEDC16EA249B3BA4903141B600E8AD4 /* UMViewManager.m */; }; CD20FB8B82F46A41B46BE2243C2207A6 /* React-RCTNetwork-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D463BCADAB0CD3FA585E82382C4841E /* React-RCTNetwork-dummy.m */; }; + CDBD7932A97BB1C7CC97098EBFE7355A /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = EEC39363574592DDD2C4DE7211730B12 /* SDImageFrame.m */; }; CDBF9E5042AA209F0DC26458C3E0A33A /* EXConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 21A88474A311493C0251BB4E0C560C13 /* EXConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CDD692D5774C8B76FF85B8E5A7750AFE /* FIRInstanceIDUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = D2339AD0FFA27A5E25CA38B3E89E724E /* FIRInstanceIDUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CDDC70305F86BE613774D29DC70EE791 /* GDTCCTPrioritizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C90CBA13EADC2DE8CBA3C3E38DBAD8D /* GDTCCTPrioritizer.m */; }; CE05E508D9AC27EE29A29EE19C9818EF /* Compression.m in Sources */ = {isa = PBXBuildFile; fileRef = A2551752B23876F7D9DC4F441A5A45F9 /* Compression.m */; }; CE06FC0B40399ED9AC1D7CE1291D0C35 /* React-CoreModules-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 237B12B1A4532AE980B5562F14F00BD3 /* React-CoreModules-dummy.m */; }; CE25C95BBF3F1E5830A8EF8E1F7A9929 /* RootView.m in Sources */ = {isa = PBXBuildFile; fileRef = 600CDEED2BE217BF314CB38BE1A0B171 /* RootView.m */; }; - CE2605D3A74C9DCC6A5A1C6ABC04ED98 /* FIRInstanceIDAuthKeyChain.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC329653A5CE5C65DB4A68C3E2D5C2D /* FIRInstanceIDAuthKeyChain.m */; }; + CE287884CA61A8B9A4C533CB271E2A24 /* GULMutableDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 545D3B715E5AF6AFEC5AE16325F9E898 /* GULMutableDictionary.m */; }; + CE31B8148A79CC3614A539EE1BD61A0F /* FIRInstanceIDKeychain.m in Sources */ = {isa = PBXBuildFile; fileRef = E97C6B62E60E3076A98791068DE7D7C1 /* FIRInstanceIDKeychain.m */; }; CE6B545FD5F8B9D7C9CDB838BCA0DE96 /* RCTSurfacePresenterStub.h in Headers */ = {isa = PBXBuildFile; fileRef = 118A76D5450D2D9A30DAD8E065C92CCB /* RCTSurfacePresenterStub.h */; settings = {ATTRIBUTES = (Project, ); }; }; CE8503B88DEE00283F39ED2D5DDB41BA /* RCTSurfaceHostingProxyRootView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F7F3D2B934D43010E5A45CCE146A345 /* RCTSurfaceHostingProxyRootView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CE8852AFA15D70A5DE566026EFDFC2F3 /* FIRInstanceIDAPNSInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 59B76FA92742AFE4EC1B07FB04CDCEFE /* FIRInstanceIDAPNSInfo.m */; }; CEAA8BE4C689E3421CF6258FEE5858B2 /* RNPushKitEventListener.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A2FB31784E1ED7F7C9238D0C311015A /* RNPushKitEventListener.m */; }; CEDAFDB3B3EA3DCE1E62FF82FCD516E3 /* RNFetchBlobProgress.h in Headers */ = {isa = PBXBuildFile; fileRef = F8ED706A6936A4268543107344BFAC7A /* RNFetchBlobProgress.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CEDCA25A4B55E64D9A49FDE6D20C638E /* Assume.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51C0EC44F93E37F2F7956B7F1CF1BD7A /* Assume.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + CEDCA25A4B55E64D9A49FDE6D20C638E /* Assume.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D66719B7E0573E532519532723F67812 /* Assume.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + CEDDF9FB89DDC0ED7701D06BB578CAEC /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1246B4FC24C785047CD95D5E8BB7AE12 /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; CF138048B1839E5ADDD579CED7E00DAC /* ARTGroupManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC8958D94FEB92227099ACBE9C9FB36 /* ARTGroupManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CF2DBEFC8F676A6C89BCFA1DCBC02491 /* fixed-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E1205BF8DB94D1E1D3698CBE66EBF47 /* fixed-dtoa.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CF2DBEFC8F676A6C89BCFA1DCBC02491 /* fixed-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 15762D6096B65B02F92828DF3C3101E4 /* fixed-dtoa.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CF36B5C643DE055F1F75230AC8915277 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = ECF6CDD59A57C47D27B4C64E3C83F6EB /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CF76AB411D4BD02C37E3BC20848E9E28 /* GULNetworkURLSession.h in Headers */ = {isa = PBXBuildFile; fileRef = DD709B78F7B831FDC9366D13746333E0 /* GULNetworkURLSession.h */; settings = {ATTRIBUTES = (Project, ); }; }; CFCFD3BD78FC19E128EA473DF18214A1 /* RCTSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = F20F066B0F018C6B2B233B5AA947D408 /* RCTSwitch.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - CFEA96EBFA4939A78536A1C1A6DD63D7 /* lossless_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B2535034DE2FFF715358C483D50EC8C /* lossless_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - D02279BA02BD4E067A2468A5B6213A6D /* GDTCCTNanopbHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = B80484046E542C11B4649FCC8CAC9C52 /* GDTCCTNanopbHelpers.m */; }; + CFEA96EBFA4939A78536A1C1A6DD63D7 /* lossless_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 7E1CF3BEFF840D7071D158D044A4E745 /* lossless_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + CFFF4D24501DD722D267B98FC18CC4FD /* GDTCORPlatform.m in Sources */ = {isa = PBXBuildFile; fileRef = BCDC1F0FF0B1E2E4C213D78D24F0F9CD /* GDTCORPlatform.m */; }; + D047DEFE3ACFD17E4D2C74AE4C477949 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 06E1729FCDB517FF8E598520953361E3 /* SDImageCache.m */; }; D05B74D99B907FAA33240B85E01AFC46 /* jsilib.h in Headers */ = {isa = PBXBuildFile; fileRef = 3AE900AA535F0A0D529C23A0FB77C1D0 /* jsilib.h */; settings = {ATTRIBUTES = (Project, ); }; }; D062A8C245F8153467102568B63FE46A /* RCTReconnectingWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = DBE6E85653366321A31E90396130F69E /* RCTReconnectingWebSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; D07B97742E6D42B8DAE45A4EBEFB3A13 /* RCTNetworkTask.h in Headers */ = {isa = PBXBuildFile; fileRef = E0EA2AA36E21EDB27E8CBCE76EC31EEC /* RCTNetworkTask.h */; settings = {ATTRIBUTES = (Project, ); }; }; D093A116E9E3D56CBC4CCA3FB53A374C /* UMLogManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FC6AFFF17DED4DDFD06E638BD2D35B9F /* UMLogManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D0D1E7C0D38F8F07555211A4AA20537B /* GDTRegistrar.h in Headers */ = {isa = PBXBuildFile; fileRef = 130BEEABCFE093EE423DDC47BE879AA4 /* GDTRegistrar.h */; settings = {ATTRIBUTES = (Project, ); }; }; D0D2428916EF61E41BD76DD1CD720A97 /* RNNotificationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 78503CA382C9D43329DC817BF54894EF /* RNNotificationUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D0D43A09965B7EEC94C970B16EE208B7 /* FBLPromise+All.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D7591D0402DD814820F0F732E55134A /* FBLPromise+All.m */; }; D0F5A66EBCE6C63428203D551465C9BC /* BSG_KSFileUtils.c in Sources */ = {isa = PBXBuildFile; fileRef = 92B78D29037CAC24AA19C7CF8C13DE91 /* BSG_KSFileUtils.c */; }; D114C36DE2B965A7696D1BDCFE2FD45B /* BSG_KSCrashIdentifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A9A3DE004CEEA3336DB958021E968A3 /* BSG_KSCrashIdentifier.m */; }; D13952929E050B80F1F6F52086E7C7BD /* React-RCTLinking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C46431CFE02C9A38B7F8ACD3747A235B /* React-RCTLinking-dummy.m */; }; D1503EF664C957A47671F960BBCE5C55 /* RCTShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CF13AE017A0A23961BB8B7EB170F98A /* RCTShadowView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; D1531DF670F8F9F3756453F2D690D5C3 /* RCTFrameUpdate.m in Sources */ = {isa = PBXBuildFile; fileRef = B250BD041FB5381BC6D982CBE9174EB7 /* RCTFrameUpdate.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - D15B1D25AFE4F0CB60215790F195A38D /* quant_levels_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = ECEDE0D5F2E5C9837501F2C507064EC3 /* quant_levels_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + D15B1D25AFE4F0CB60215790F195A38D /* quant_levels_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = 36437C1B03AC2005FE5AE9B6ABB4A399 /* quant_levels_utils.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; D19105904195D17C5769DDAC4A0E857C /* YGConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 520DD62AD62FC1C83839377841D5519E /* YGConfig.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++1y -fPIC -fno-objc-arc"; }; }; D1E312DB375D99286F30D9A1B11166DD /* NSValue+Interpolation.h in Headers */ = {isa = PBXBuildFile; fileRef = E569D86CD050677F1EF7A85AF453CFA7 /* NSValue+Interpolation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D20CB1F465B6DEC72F0A0FB85325E552 /* yuv.c in Sources */ = {isa = PBXBuildFile; fileRef = 39DC876762D2607F9452231B276AA8AD /* yuv.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + D20CB1F465B6DEC72F0A0FB85325E552 /* yuv.c in Sources */ = {isa = PBXBuildFile; fileRef = 82C307D1CC81EE4425E3DE4DFA23E2F3 /* yuv.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; D21EB307CB91F199FA4CB0465AD242C6 /* RCTImageSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 77416528506225EE2972EBF70D15691C /* RCTImageSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; D2258A291CF8E9E8C9A366DF12F38F7F /* REAOperatorNode.m in Sources */ = {isa = PBXBuildFile; fileRef = F8F307FF3CDA1C47B9333A1B34AEAEBC /* REAOperatorNode.m */; }; D29F28485DEE738B6FA3CCF80F59FAB2 /* RNLongPressHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = B3EA2ECAF632E137336F97437D3E6ADC /* RNLongPressHandler.m */; }; - D2BE8317E9EBBE5FD4ED18BA5C53794A /* cached-powers.cc in Sources */ = {isa = PBXBuildFile; fileRef = 27471F34AEEB9F553D525EC2E01F3CE5 /* cached-powers.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; - D2E11DF07AAD7072CC507F7E383B4FE3 /* pb.h in Headers */ = {isa = PBXBuildFile; fileRef = 00FFEC094BBA2326B97D61C8A235B8CF /* pb.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D2BE8317E9EBBE5FD4ED18BA5C53794A /* cached-powers.cc in Sources */ = {isa = PBXBuildFile; fileRef = A6279E1E2E3335F1103BFA5A97B32CAA /* cached-powers.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; + D2E11DF07AAD7072CC507F7E383B4FE3 /* pb.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D469EED379CDAF76B456D41CE1D789E /* pb.h */; settings = {ATTRIBUTES = (Project, ); }; }; D2F766BDCAC9C07A3066A4987FB586BF /* RCTLinkingManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 2896DB1C66C7E0D6CEA401311DFC3CE9 /* RCTLinkingManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; D3191A4541B60D766573C867948163D7 /* UMSingletonModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 5990557900A945AC96315DA636E0AA47 /* UMSingletonModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D3427935755BF962371D067EFC408DE4 /* FIRInstanceIDKeyPairUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = C52620374CCE79F63474832E84684EDF /* FIRInstanceIDKeyPairUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D35CFE42161E05CBCCA4AA4C32CF3661 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BEAA4F63A52753F14D4888D08369618E /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; D37AE5F466D1D7BE1CDC2D645ABC48B5 /* RCTBackedTextInputViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC7D9587DCAB7397F8A9650E3DC500 /* RCTBackedTextInputViewProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D39505AA86E323C96932E3A04B1A0351 /* alpha_processing.c in Sources */ = {isa = PBXBuildFile; fileRef = 6CF1F51F10F527FFA49F8C35BCC08D4A /* alpha_processing.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - D3B16597778203DE6EDD2C915FC363E2 /* yuv_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 922FE223C439FC87898DD0C6C980A908 /* yuv_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - D3E2973E1A77B52217E5151ACC4C40F9 /* Demangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F60981B496FE1E2C360A984FD512294A /* Demangle.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + D37BA13E56AB4047C4D544DC931A7111 /* FIRInstanceIDBackupExcludedPlist.h in Headers */ = {isa = PBXBuildFile; fileRef = C33B5059A86C095F0D92336CBCB1F51B /* FIRInstanceIDBackupExcludedPlist.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D39505AA86E323C96932E3A04B1A0351 /* alpha_processing.c in Sources */ = {isa = PBXBuildFile; fileRef = 8816AC006C3D22F054F7BAB4EA2511ED /* alpha_processing.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + D3B16597778203DE6EDD2C915FC363E2 /* yuv_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 3967559F2F789C16C8ECC9F64D330D0F /* yuv_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + D3E2973E1A77B52217E5151ACC4C40F9 /* Demangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 47667B177B8F7040093014A945593A04 /* Demangle.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; D3E31C7333A9AE3971A60CB70949C92C /* RCTScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 789B2C68D8DD160298CF3C4290405EF4 /* RCTScrollView.h */; settings = {ATTRIBUTES = (Project, ); }; }; D3FC99851794FBF244FFCEB31750F0FE /* log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18D46CE6DE6E232560BCA20F7347F9C9 /* log.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++1y -fPIC -fno-objc-arc"; }; }; D411D4F1C26BDD8CF0801FB3DCD7930C /* REAStyleNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 57AF6757550CBA0DA8B885582F80FCBC /* REAStyleNode.m */; }; D4492AA35116BD68F0668FD3DBC22437 /* RNGestureHandlerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 696BBA70437E1206B8EEEA5A283B2A2C /* RNGestureHandlerManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; D501D5C43EEF4B1458C136411F3233C6 /* RNCWKProcessPoolManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DC0503DB47829A176423B81E76574DC /* RNCWKProcessPoolManager.m */; }; - D5459FA80234303AA34ADFD42867D41A /* FIRInstanceIDKeychain.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E84014E280F5F6717F909372864D169 /* FIRInstanceIDKeychain.m */; }; - D548578B0B4BAB40AA2F67986DD948C2 /* upsampling_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E60844790501A0F180987D73BF7982A /* upsampling_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + D548578B0B4BAB40AA2F67986DD948C2 /* upsampling_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 73D1E0BDB42EE2F595BCB0C3E231490F /* upsampling_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; D57B25CD40E3EC19D45D1DA315B29F34 /* BSG_KSCrashReportFilterCompletion.h in Headers */ = {isa = PBXBuildFile; fileRef = 621A33C1A0AB8647038FFB213B6A9135 /* BSG_KSCrashReportFilterCompletion.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D5D452E5668A65252CBD1865BF47312A /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = DA4A37B4969CB37F3A28EC8850F7C400 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Project, ); }; }; D5E171BEB835B46B99500DEC036AB7FC /* RCTRefreshControlManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CCA75C4910342977B6F64CA73A753E66 /* RCTRefreshControlManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; D5EB936081DE1ABD23F6EF6E9A31D4A9 /* RNGestureHandlerModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 14731FC3B97E813560708C5159C23846 /* RNGestureHandlerModule.m */; }; + D5F006702C228499C976E45954BA7142 /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A54A0AB081F02B68C732C27229CC546A /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; D5F01B05595BB83EFB74E80121CE3C25 /* NativeToJsBridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C71C5AB1403BC17521FDEF0FDBF14CDB /* NativeToJsBridge.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + D60E40B4C45EE0ABDDDB310B1906F067 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = B49950F25B4587A0F1428A0FF4D062F1 /* SDWebImageDownloaderDecryptor.m */; }; D6103FEA120EFB22A9CBCE782B698E5A /* BSG_KSCrashSentry_Signal.c in Sources */ = {isa = PBXBuildFile; fileRef = 3BEF46DC557E56530FC987ADAAF32C09 /* BSG_KSCrashSentry_Signal.c */; }; D647A0F7425911DA56628C08A2C06F1E /* React-RCTBlob-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D7ABCAC09C0A0EA009BA1246F79595CB /* React-RCTBlob-dummy.m */; }; - D69223C42741872E5B2A529FA5828F8E /* pb_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 62F518EAE564CDB7FE22608053F08839 /* pb_encode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; + D69223C42741872E5B2A529FA5828F8E /* pb_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 6F2B281A5C5A6DA83EEDED90A470812A /* pb_encode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; D6AD419ACD3BDA8CE50C3335BA8C9621 /* YGNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 361F842C0A5EF8D666D840B6B25D594F /* YGNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D7182C0FDCAE8B97CE1BCDC7866C69FE /* GDTEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = B843C0444B6E7D0D440EBE7179AB662C /* GDTEvent.m */; }; - D72C629D929E02F506B34837A3FEFF23 /* Pods-RocketChatRN-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A03EB9B87FF49512AC6907C1B9AA221 /* Pods-RocketChatRN-dummy.m */; }; + D6B1A1D99FDE6C30C456AA3E8AEB99CD /* FIRInstallationsStore.h in Headers */ = {isa = PBXBuildFile; fileRef = E146C49FCEE4ED98740C53D8AF16B54A /* FIRInstallationsStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D6F319CF127DCB6034758EBB926BB032 /* FIRInstanceIDTokenStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CA2FA4336B15BA4DCCD78A997AEC892 /* FIRInstanceIDTokenStore.m */; }; D74FFDC85A25F62F1B5AE4B8AB0B65D0 /* RNGestureHandlerRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 01AB176D8CCC282389777CB23AF55DBD /* RNGestureHandlerRegistry.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D7690664E9554486C6A08570CCA16219 /* alpha_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 489E83582CEC6E57822FE6F259E47CE1 /* alpha_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - D7ADEF068518F7CE4F646F7EBB7F384B /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F45975E2E2B867B4476E71F8FF0F6EC /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D763A2B754500831DDFCD0B3155211C3 /* GULNetworkConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 67495001F5CD5835C2BB0CC49D35E686 /* GULNetworkConstants.m */; }; + D7690664E9554486C6A08570CCA16219 /* alpha_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = B1481C8FC99F5FE787F9FBBE96DD5E9F /* alpha_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + D79CB08B6BF6AE52B703A14D2E5EC289 /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B75AFFDAD90901B97B9F59583DB4E96 /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D7C9818EF31B52BF15F5A3DAD128D970 /* GULSceneDelegateSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = 360D859E4F26E0D45AC34F09DA57FE65 /* GULSceneDelegateSwizzler.h */; settings = {ATTRIBUTES = (Project, ); }; }; D7DF907042402355DADB8F17FA3F1405 /* BSG_KSString.c in Sources */ = {isa = PBXBuildFile; fileRef = 6712574FE9AB8B30436ECA7A7C94F647 /* BSG_KSString.c */; }; D811B574E795DB5E3BBD364643701297 /* ImageCropPicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 63CA9D423FCE56F4D01566C1F2DE4FA9 /* ImageCropPicker.m */; }; D81AC0C4DC01BB7B898EF80BA080B002 /* RNCAssetsLibraryRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 97972524746DA8617FCA6204735F0A0A /* RNCAssetsLibraryRequestHandler.m */; }; D8381F8F51F652DB757C7CF69E9B33B2 /* REAFunctionNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AA3DB01D4A037FAAA90E9701AD29232 /* REAFunctionNode.m */; }; + D84EB10E3D309D71F1E4D8230535B1F4 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0695A738C7F41C79A285AD67DCD00EE2 /* SDAnimatedImageView+WebCache.m */; }; + D8518E5BF3021B461942AA4A1DF9896C /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 435C84BA7D4AB3EB7649F9B26277DA8E /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Project, ); }; }; D854B8FA66DD93A12832A8A313105AD7 /* EXCalendarRequester.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AE285F585889CD45B47600280D33AB4 /* EXCalendarRequester.m */; }; - D8657431950ACD09CD921390BC208E99 /* utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 1F108CA515F3E008514F1B556040E00C /* utilities.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; + D86384B27334C1246523F688494DE7DD /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = EF173724C22DB7D2C3F88CAA10675F80 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D8657431950ACD09CD921390BC208E99 /* utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = C75F6B7CCC80F365375AE3D64978BE9F /* utilities.cc */; settings = {COMPILER_FLAGS = "-Wno-shorten-64-to-32"; }; }; + D8923CC2D680348D04C0B5B01CF695A7 /* GULNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 899A689BA65BA61151C1DDFB19F5BE93 /* GULNetwork.h */; settings = {ATTRIBUTES = (Project, ); }; }; D89934B15D0E9D0E016816D7FC0AEF3C /* RCTImageSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C5775E7F823B6BF19C0FBAAD82D5A41 /* RCTImageSource.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + D917491E5DD9992DFF39CCF944C2D549 /* GDTCORStoredEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = E06128CB543E05DF7D4F8B8A3EF8EEF2 /* GDTCORStoredEvent.h */; settings = {ATTRIBUTES = (Project, ); }; }; D92CAE62ECAFE549B7CADB800BE130C3 /* RNJitsiMeetView.m in Sources */ = {isa = PBXBuildFile; fileRef = F72659CDABBCCB4186E4ACFCED8EC514 /* RNJitsiMeetView.m */; }; D942F947E98B998E31292371B94924C1 /* RNFlingHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = C6195A96E3126C5962D909EFFAE81ACC /* RNFlingHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; D9804C6D34DABDB222B6374C28AD9317 /* BugsnagSink.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D0FA4CCB2D15F90D716627CD0615088 /* BugsnagSink.m */; }; @@ -1753,263 +1850,270 @@ D9A1F3B4736C2AF9FCEA83028434E03E /* BugsnagMetaData.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C0075391F3315DD5C0B9E7632576E32 /* BugsnagMetaData.m */; }; D9E8EF785F0508D50522BF668E520107 /* EXHaptics-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EE8FD87FC265122514D84E9883251CDD /* EXHaptics-dummy.m */; }; D9F43B12E9310E1070D9ACA28E595ECB /* BSG_KSJSONCodecObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FDAB07C74E234EDFEA1553BDC5637B9 /* BSG_KSJSONCodecObjC.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DA3E756FDDBB22F63B92675EE270BFD9 /* cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 52EA42A6C8276F0CBCB74687737707C3 /* cpu.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + D9FBFE38219EEA722C7D011D1F510DCD /* PromisesObjC-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C6C1424961A6648F4F404DB4D5B51284 /* PromisesObjC-dummy.m */; }; + DA3E756FDDBB22F63B92675EE270BFD9 /* cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 352467F523D37BA242FF792076C4BBA2 /* cpu.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; DA553EAB5D6042B76746804E1EAB9AAC /* RNSScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B83181F58997E709D2CF0ABFA639CB6 /* RNSScreen.m */; }; DA91CBB04309BF6A2F67578889C95CC0 /* React-RCTAnimation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F9B0E187AE7B7F3A377AEDB612C6525A /* React-RCTAnimation-dummy.m */; }; DA9EE774CF939AFC136CFF0C1418CBD4 /* RNRotationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F02B6475E7D1C3486094F8F388E148 /* RNRotationHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DAB5F47E749603B8C537105E02546533 /* cct.nanopb.c in Sources */ = {isa = PBXBuildFile; fileRef = 1493995A8BFB7373CDD744F29FB45E51 /* cct.nanopb.c */; }; DAB77630ECE8FFDE64A9BEFBD0B44DFF /* RNFetchBlobFS.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EB0F6B7E8EBD84A141C3AC167835CD7 /* RNFetchBlobFS.m */; }; + DAC13692DC590E6044ED75FE6C7A2D99 /* FIRInstanceIDTokenInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DC55014AFA153FD4E3CBC4A4A6CEF69 /* FIRInstanceIDTokenInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; DADDBED583C14F757CE0486E2BF43730 /* RCTAnimationUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 10E726AD9B950953523428C107B73363 /* RCTAnimationUtils.m */; }; - DAFC2F91BEA931FB9BA022CB9B77CA90 /* backward_references_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 358C919544CAD4E88269535A33E18FBE /* backward_references_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + DAFC2F91BEA931FB9BA022CB9B77CA90 /* backward_references_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 645432A1DF9B3036F4D66BBB89CBAA89 /* backward_references_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; DB1BEF5BA047C09D96609A853E646798 /* RCTSurfaceSizeMeasureMode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 02B42F19719F9070E89F655242EBF98B /* RCTSurfaceSizeMeasureMode.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + DB5A7C7920EAF6928FBD7479829670B3 /* FIRConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 31CCEDC883A767472D9DE6E98B55225A /* FIRConfiguration.h */; settings = {ATTRIBUTES = (Project, ); }; }; DB7453AA7276EAE43F16788C031FC022 /* RNGestureHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 61CC90A251F8AF95EFDC9FD2376EB1D0 /* RNGestureHandler.m */; }; + DB7DE91DCA6700F151D98F200ED5D276 /* GULNetworkConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AB0FF969520EECB0B36AF7E6D88CD2D /* GULNetworkConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; DB802AF253B585166A65DE3AF2807ACA /* IOS7Polyfill.h in Headers */ = {isa = PBXBuildFile; fileRef = 31DA2DEAFF7CA55FF764092648AD9567 /* IOS7Polyfill.h */; settings = {ATTRIBUTES = (Project, ); }; }; DB9717086AE45CE81AA97C3D12CDE9C7 /* rn-fetch-blob-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F6CC27D06C2F4E622045B5742E243A4 /* rn-fetch-blob-dummy.m */; }; DBAC39F36BF2EACC60A1426124747D6C /* UMLogHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = AB152A216EE0183A2D0E61D446A9F071 /* UMLogHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DBB2215A03529D784DE3DE650A02FD45 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = CCD312A444D75714EE72AB0FD34CE7F1 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; DBB5DF09AA103C6B5C2410567FC0F306 /* RNGestureHandlerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 589776A89332278D423D6755E1271325 /* RNGestureHandlerButton.m */; }; DC236F473EAB0803CB9FA676FAEB4377 /* RNFirebaseDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 49FCA9266B011C55C9974E9B7F4FE352 /* RNFirebaseDatabase.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DC28E96BA8BC8E051CA66420F836DDB5 /* idec_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = C49BB1DB9017B92D7A60FF49B674F10E /* idec_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + DC28E96BA8BC8E051CA66420F836DDB5 /* idec_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = AB976C1FBBC26BF65B263E79ED2A0E2D /* idec_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; DC4053211CA5A4C360EBC1B27C3ECDDA /* RCTJSStackFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 45202BBAAEAF335F1FB60BBFC69380C2 /* RCTJSStackFrame.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - DC68D05D6350E5C93111DED36C4508F9 /* GDTStoredEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CF2534628CCC7E0CB60511001A24B96 /* GDTStoredEvent.m */; }; DC83F9A19E21E99237CA1E1903EE6DFD /* RNBackgroundTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 958A538964B046F5FC63A884FA9D441F /* RNBackgroundTimer.m */; }; + DC96C9309C507BC3469D0CF4CC8D702E /* FBLPromise+Then.h in Headers */ = {isa = PBXBuildFile; fileRef = F603F708AE1BF751B3ACE89E154E4673 /* FBLPromise+Then.h */; settings = {ATTRIBUTES = (Project, ); }; }; DCB2CC92DA3D38F80AD358E0E1F41FA5 /* QBVideoIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B177BBB89F7A58B6A2340B1CE785CF7 /* QBVideoIndicatorView.m */; }; DCEB3F8CF0A4F09EC1E67ECA1B09C86E /* BugsnagConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 64F18790A50A2179CC7BE6090135313C /* BugsnagConfiguration.m */; }; DD14A2612F2B64801D9FFC36B588BE89 /* REAPropsNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 07C973C976DABFE0D0D35D45FD5F1D8A /* REAPropsNode.m */; }; DD355E73AD18C234879AF3950D6CE93F /* RCTVideoPlayerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 84A709674F346A7BEAE13B2A5EE18C22 /* RCTVideoPlayerViewController.m */; }; DD631AAE5B18CDDA00ED19CF2081DDB3 /* RNFirebaseInstanceId.m in Sources */ = {isa = PBXBuildFile; fileRef = 6584C61C82381EB1B1004D7753C0212E /* RNFirebaseInstanceId.m */; }; DDA26EF3720C9461304F12664EC2308F /* LNInterpolable.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B0CD88C65A8CB1C23C2AEB4992F49E0 /* LNInterpolable.m */; }; + DDBB5BC0602A84CE59DC6778A632ED69 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = ED5D4ABF81DB0F6F91E1A25F93EE1DEB /* SDWebImageDownloader.m */; }; + DDC299E5753D48F2A7081D27F73ACFAF /* FBLPromise+Async.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7BE8D11D0BE425A162D262300BF5D5 /* FBLPromise+Async.m */; }; DDE368F0AC94152AAC8660C018179335 /* ReactNativeART-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 76037B0C94833300AFE005BC53E81964 /* ReactNativeART-dummy.m */; }; DDFB2252C0D8075A2E4C47B1F50BBBC0 /* RCTBaseTextInputViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 51D8FBC70FC85BD127175A57572F50D1 /* RCTBaseTextInputViewManager.m */; }; - DE2209CDBBB1FF739DD3AFE8D7EDA04F /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 9397687440D5BA05368492717B39B5C6 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DE124FC4A0EC768A4686D70F6B4BFA58 /* FIRInstallationsItem+RegisterInstallationAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E8C019C75FF4F789E40C8784D2EEB25 /* FIRInstallationsItem+RegisterInstallationAPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DE4FD7EF6E7A5FDEC42D181E800ADA04 /* GULApplication.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FE78D699DF0963CA715538E756C4EE2 /* GULApplication.h */; settings = {ATTRIBUTES = (Project, ); }; }; DF7090744256ADE687EBA55BC5FE8ED5 /* RCTAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB2FAFE4C12BA32A8EADC9720F53E34 /* RCTAssert.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DF96AB8684D15E8B522B32E3C4C0040C /* FIRInstanceID.m in Sources */ = {isa = PBXBuildFile; fileRef = C31E5FC96B7E9A28293CF0E6C071B867 /* FIRInstanceID.m */; }; - DF9AF82CFD185E9405454B58BFB1F031 /* FIRVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 73E49B69B89A89D1209D071D4F21208A /* FIRVersion.m */; }; DF9CDE086F36000D7C8E6834838EAAA6 /* RNFirebasePerformance.m in Sources */ = {isa = PBXBuildFile; fileRef = CDBBCFB76DC32DEC120D50C17B098C0E /* RNFirebasePerformance.m */; }; DFA67D9152D6A8AD4D4C5B01F061DB6F /* BSG_KSObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 395C8CCD6F5671524B172C22324D82EE /* BSG_KSObjC.h */; settings = {ATTRIBUTES = (Project, ); }; }; DFD82A631E84CF574DC68FA7DCD113BE /* ObservingInputAccessoryView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EFF40EF46C84AD329EFE673DF5CC841 /* ObservingInputAccessoryView.h */; settings = {ATTRIBUTES = (Project, ); }; }; E00AE219C77E8D17BBBF9A091E04A29D /* FFFastImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0776128501F7C2B856FEFE2DF2F62C93 /* FFFastImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E03B2983E6A3780B1E33F86C0B6727E8 /* GDTCORStoredEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 00A08DD362055E20F1FB0559D19644E4 /* GDTCORStoredEvent.m */; }; E06AAE1518AEA2562A0D7137B157DA37 /* RCTSafeAreaView.m in Sources */ = {isa = PBXBuildFile; fileRef = E7855F1C527C5192F72CFF6A5D46C931 /* RCTSafeAreaView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - E06FF2EA4D8E7057808DAECF514487B2 /* RSKImageScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2132ED6BB290718E77492CADF518EEAA /* RSKImageScrollView.m */; }; + E06FF2EA4D8E7057808DAECF514487B2 /* RSKImageScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = C9C21A13DD4599456884602B0D4C6757 /* RSKImageScrollView.m */; }; + E092937984315305C4F482FDC1AB25EE /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A63FCD6FAFEE69391E5C3FC275512F /* SDWebImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; E0C46A52452ABB7A82187CF8BADC033D /* RNDateTimePicker.h in Headers */ = {isa = PBXBuildFile; fileRef = 17341144B555A03C5EBEDD81B0B832E0 /* RNDateTimePicker.h */; settings = {ATTRIBUTES = (Project, ); }; }; E0D3705D832446D3FEB5C2823DCFEB8A /* REAOperatorNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 36999B1C693A37D0A3DF3636859D8874 /* REAOperatorNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; E0F5927CF8044CD7C525F063BB91C410 /* RCTSRWebSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = A472BB9384B83E73AFAE0B367EE088AD /* RCTSRWebSocket.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E0F9AB2F0F827441784FE65F9DEA24FC /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7F7DEEE1B431B212DE4B6E85BFD120 /* SDImageTransformer.m */; }; E0FBC07A277E9FA12F6964DF7C385E64 /* YGNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3160870786078A4A7F5F633B5D8BD57B /* YGNode.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++1y -fPIC -fno-objc-arc"; }; }; E11D90E3A741AFE59213CF41F60AAFC3 /* RCTPackagerClient.m in Sources */ = {isa = PBXBuildFile; fileRef = C3A398FB2047D8FB5C115BB7C9C44E07 /* RCTPackagerClient.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - E1266E09810540E459FD7D39AEA1D7BA /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 1874FFEDFA6B268EFD16DEDF5C0ABF72 /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Project, ); }; }; E13446308B20AADCEBAF1C8EA38E3EBC /* YGNodePrint.h in Headers */ = {isa = PBXBuildFile; fileRef = C189945D9B7E0350FFF117B433DA54FA /* YGNodePrint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E136DCA9404C6709A708A1CDE213306C /* FIRInstanceIDCheckinPreferences+Internal.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E44F680ED7C0AF205ABF2F732D5BF1E /* FIRInstanceIDCheckinPreferences+Internal.m */; }; - E18AF3DECBA29CA26E94E3AA78232910 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = E6ADD528E5DC12441ED796F0C6E118D6 /* SDAnimatedImageRep.m */; }; - E1C16957DAAF0BBC2BA568CBA21CB60D /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = C8F458DAF6DA4D546BAC86772B2CDF26 /* SDImageGraphics.m */; }; - E1C350EB67C41B14911972FCE699FCA5 /* F14Table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3966AA9F1E79E5A7F4EBC038DB4558B6 /* F14Table.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + E19F094AEE34A8B92913D6BDD5E9A718 /* GULReachabilityMessageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 464C3A02594F9D69187EC87E695B4726 /* GULReachabilityMessageCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1C350EB67C41B14911972FCE699FCA5 /* F14Table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AE6009DB9E0286F743D5CFA5415F06EF /* F14Table.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; E21AAEA8465DD61EEF9AB43C823EC425 /* RCTPickerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F174D9CC21F0D1762B87F5D148999515 /* RCTPickerManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E23132F7114B73DAB797C1605129F8FE /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = AB59CAFB02638F9819664583A263EEC6 /* SDImageGIFCoder.m */; }; E265276741F6CCD0B0197C40C1EBA401 /* RCTVideoManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F2025517BC8D557FB99809407956CB6 /* RCTVideoManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E272409F0AB241D83659D93F160A6BEA /* FIRInstanceIDCheckinService.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D1BFEB2857C8000A201EFA5B2A22488 /* FIRInstanceIDCheckinService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E27FEF47747D16413DA5F5E3DB760E17 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E5CFD24886A762C411A37478D6B0296 /* UIImage+MemoryCacheCost.m */; }; E2A6689C380DCEF64FA16056E84D8149 /* BugsnagSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 9073F0DA69D25921E861A82C234697E9 /* BugsnagSession.h */; settings = {ATTRIBUTES = (Project, ); }; }; E2BF9B26DC83D490DA1578C1C984489C /* Bitfield.h in Headers */ = {isa = PBXBuildFile; fileRef = 13A2EF3CE7CCD3FD7FA53533E22C686E /* Bitfield.h */; settings = {ATTRIBUTES = (Project, ); }; }; E2E490B23FB206AE0B3CD336767D0DC4 /* RNDeviceInfo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 24CD51144600B32C8331D79B7265324E /* RNDeviceInfo-dummy.m */; }; - E2EE20BD16B60C9E9C8F5745895E4CEB /* RSKImageCropViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 02C05262BFECC90910E7E70E31AD9520 /* RSKImageCropViewController.m */; }; + E2EE20BD16B60C9E9C8F5745895E4CEB /* RSKImageCropViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 481BAF2737C4B9EED2882A2C4CB20C17 /* RSKImageCropViewController.m */; }; E3258A68B76FE2FCC58C4C633E400B8C /* RCTBaseTextViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BC9D529BF5731E3078C6EECBDF867328 /* RCTBaseTextViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E32657D4D707837BE7FF65E4541C0078 /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = CD8C1567FE91AF3DC28C2CCDF841BCE9 /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E36F85C2049E33D0D5568D05E95D01C9 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DB46ED09C638AB50343B0949E766343 /* SDImageAPNGCoder.m */; }; + E32C9EE312F7082CA358C8DA02112A8E /* GDTCORLifecycle.h in Headers */ = {isa = PBXBuildFile; fileRef = E0E17F86AEE63B4E96B07B6417885A38 /* GDTCORLifecycle.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E366DD0852E04C44719F436504C65C5F /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A65228A597C9CDF1630D3E33E79C2E7 /* SDWeakProxy.m */; }; E39E3634C4CA7E2E69BB72A8AF9DF0DC /* RCTKeyCommandsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C558069696C77025B946DE8910693620 /* RCTKeyCommandsManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E3B7CADB949FD1E05DE1D804627D396F /* FIRInstanceIDAuthService.m in Sources */ = {isa = PBXBuildFile; fileRef = 8492A0BD43CFF65B38C003A996898AFA /* FIRInstanceIDAuthService.m */; }; E3D8D8CEE66A0FC7506029A673BE066D /* RCTImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = FEB4A88EF0391F3499D3CDDF99BA1B8E /* RCTImageLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E3DA0536FD69192110548E00EF3BE7FC /* GULNetworkURLSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 1876F2F1E1CB7222FA2BE64E89BC0A68 /* GULNetworkURLSession.m */; }; E3EE9ED3F0DE7971647E51C981116F70 /* EXAppLoaderProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 65D183BDB3EBB6B36FE89D8168848CA3 /* EXAppLoaderProvider.m */; }; E3F4BCEBE73BFC628C5F5AA0EF0016EF /* BSG_KSSingleton.h in Headers */ = {isa = PBXBuildFile; fileRef = 6249B422C72D40D5A073CF71C0AA86A2 /* BSG_KSSingleton.h */; settings = {ATTRIBUTES = (Project, ); }; }; E3F69F9F53C3AF391D03FE780AD7E764 /* RCTClipboard.h in Headers */ = {isa = PBXBuildFile; fileRef = 801E99A21664D8D68B2DACB0704F68A0 /* RCTClipboard.h */; settings = {ATTRIBUTES = (Project, ); }; }; E4371B1E44E185F3F7756EE3FFC0D0D4 /* RNLongPressHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = C75D6141B889C90F12173F1E3786508E /* RNLongPressHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; E448A5F8D630963A29733720AB2830D0 /* BSG_KSCrashReportStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 2980F44EC4FCC6EA8AC5C12779A3544E /* BSG_KSCrashReportStore.m */; }; - E47C254AD48009FE84A72BF9BD0A2013 /* FIRInstanceIDTokenManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 43DBD59E9011A4508B947E00654A82BF /* FIRInstanceIDTokenManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E4BBDC1C561DC471AB6A780C063BBCC1 /* GULReachabilityChecker+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = E9377C29F942AF66A3D72A0AF35997BF /* GULReachabilityChecker+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E448F434853BB876889DEDECD8355860 /* GDTCORRegistrar.h in Headers */ = {isa = PBXBuildFile; fileRef = 147CFFA41FD70FB3BEA2696A188FD294 /* GDTCORRegistrar.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E49C99B16AE53555FE7A7CB8A8BE5382 /* FIRComponentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = ABBAB6A3B14167BE15806D2D4C391430 /* FIRComponentContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E4DF0038F580620277B1D09CFAEA7194 /* GDTFLLUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D6E08DDF45483F5A4732B16AF971B03 /* GDTFLLUploader.m */; }; + E4F2A48E51116B466E81C84FFB3C33B5 /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = F08B0F9A4D8A738B0F5EF58D5545D0A9 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Project, ); }; }; E4F57F221918EF831DFF3968C9B44936 /* RCTSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CA0C9A7CC0AC4898AE2F9A566726C4C /* RCTSlider.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - E5216B6E62473377EA6E284532506268 /* Folly-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AE0B90E0468091ECE32ED3647927E0A0 /* Folly-dummy.m */; }; + E5216B6E62473377EA6E284532506268 /* Folly-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FA8915E0D8D275C898AC3CC45B0C183 /* Folly-dummy.m */; }; E552D26DBE5A715DFF524CE675331BC6 /* RNPushKit.m in Sources */ = {isa = PBXBuildFile; fileRef = E383A34BBE4DF7BC8C5EC68FB84DE350 /* RNPushKit.m */; }; E554598FD317EE9149AB8454AA9059F8 /* RNScreens-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A389A9A7F2B314A8E20CB931728247C5 /* RNScreens-dummy.m */; }; - E56A382EFCB1212FE0C79493D0A3A9E2 /* GDTClock.m in Sources */ = {isa = PBXBuildFile; fileRef = A1D610CA53E44198C6CF77461DF107ED /* GDTClock.m */; }; E575B82987686FB278B44B3EB095A37A /* RCTAnimationDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 36A3EF72729A0AE82B9E51807A201E88 /* RCTAnimationDriver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E5782D8BD91896AAF55C1CBCBEF37684 /* SDImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = DEB68940C750201971089751E74F2668 /* SDImageWebPCoder.m */; }; - E590557528529B8071B97A4AB8EDF4CF /* FirebaseInstanceID.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B9E8FDC0BB235B05F6736A33FD68B8 /* FirebaseInstanceID.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E5B91C01861A4322F7F66723B878316E /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 37A87692EC0A3E0DAF1F246BF8094715 /* UIButton+WebCache.m */; }; + E5782D8BD91896AAF55C1CBCBEF37684 /* SDImageWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = F15A1B308313E7B51B2753B9D83EDFA5 /* SDImageWebPCoder.m */; }; + E5CAC048154072FBC7D33C3C690D1666 /* FIRInstanceIDCheckinPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = E728B448CD6DE78410A3FA3D7DFFAF58 /* FIRInstanceIDCheckinPreferences.m */; }; E5F11EB51F68D959C8291875C93E4B1A /* React-jsinspector-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 67540560D918C61609D9DD135A728D53 /* React-jsinspector-dummy.m */; }; E5FB31F6C23D375DE5CBC98123BE9B8D /* RNGestureHandlerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A2B979B49F7F0FD5CF0AFDC0EE85677D /* RNGestureHandlerManager.m */; }; E5FC836186D971C23AE7EA2BBD891DA9 /* BugsnagSessionFileStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 16839A17E6F24246EC83A9E32C3C3AA7 /* BugsnagSessionFileStore.m */; }; - E5FFDAAF26DC2A5EE78AB195E68D7A6C /* FirebaseCore.h in Headers */ = {isa = PBXBuildFile; fileRef = AEB04230EF187F0097DCADD95323A008 /* FirebaseCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E65C399538D7D89567465C7B349F2C04 /* FIRComponentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = DDD8773720268ECF1673636082B7B0D9 /* FIRComponentContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E64DF891F62A7CC6064235FD1A9DCF5D /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A50C6F190916F34A6C994F0FA9A369F /* SDImageLoadersManager.m */; }; E6672788C9A13BEF81FB7F5821C0B79E /* RNEventEmitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 04AF3C51F7F66ECAC396AFBCE9033846 /* RNEventEmitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; E67CC774BCC800FC2518913B50739E55 /* ARTLinearGradient.m in Sources */ = {isa = PBXBuildFile; fileRef = D87EC78B85E8485FBD61F0D265007A55 /* ARTLinearGradient.m */; }; E6ABE72B7BC5B02D311C204E250FA5F3 /* RCTLayoutAnimationGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 62E11190F74476BB4254611B685A5685 /* RCTLayoutAnimationGroup.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; E6B28EC2EAA76DA7CBCA209D55786E4C /* RNFastImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 91B847B706F1F1C054508E9D7DCB57C7 /* RNFastImage-dummy.m */; }; + E6C3AC1533E09AB22822D392C9B9CFCC /* FIRDependency.m in Sources */ = {isa = PBXBuildFile; fileRef = C460DA70768C93ED1BE2D6D8F8EB4963 /* FIRDependency.m */; }; E6C8BD53A9389792CDC6E69D7FEB223A /* RCTResizeMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 19D3732BCBA5628433B833B5D52F0700 /* RCTResizeMode.h */; settings = {ATTRIBUTES = (Project, ); }; }; E6D227640A6B27493E6D63BAF5C6F11E /* RCTGIFImageDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AA160054F5AE778946C6632CD3512B0 /* RCTGIFImageDecoder.m */; }; - E6FE2807B85DDFB3EA91EEF768018D80 /* dec_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 55C0E8840659DD2BA9398CCE45C84796 /* dec_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + E6FE2807B85DDFB3EA91EEF768018D80 /* dec_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 4DF0BD63D7D4CFDCC663E62D0F856294 /* dec_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; E7171E9DE4E1C13572715CB434C0B5F2 /* RCTDatePicker.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C3F265E963792B616A869437DF3D6F /* RCTDatePicker.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E77893AECA58C42BEFB11A9F3D0F0E89 /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 378C25F0844A70F6AF0AD604D5B04960 /* SDAnimatedImagePlayer.m */; }; E77AD62D1F1A5ED37D541E208A1B6545 /* RCTMaskedView.m in Sources */ = {isa = PBXBuildFile; fileRef = 15C1E533EFB2551229D5D8018377F547 /* RCTMaskedView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - E7C43AA674EF98DB10295D5A0FDEF294 /* UIImage+RSKImageCropper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2238DF0F9A33FE9E1C8F07154BC375B0 /* UIImage+RSKImageCropper.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E7A53AFEB6F93AA9F66679AFBF68CA43 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 88FB1508A1C9E9DF1C4FCF0644BFB25D /* SDFileAttributeHelper.m */; }; + E7C43AA674EF98DB10295D5A0FDEF294 /* UIImage+RSKImageCropper.h in Headers */ = {isa = PBXBuildFile; fileRef = 631C18F49615412D4C905B1C37D9ADA9 /* UIImage+RSKImageCropper.h */; settings = {ATTRIBUTES = (Project, ); }; }; E825EB7097FB4979649C593B3A86B567 /* RCTStyleAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A6DF1FEA62063EE8DE21E0184A2F1A1 /* RCTStyleAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; E84B9D70F5DC04842F89B53195E9D52C /* RCTTextShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5920DE566BC7258D40EEFD900C8AF8A0 /* RCTTextShadowView.m */; }; E853513BCE291CEE0B0E1CA5D20B1809 /* RNFirebaseAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = 358BD7B832116AF70901ECA85F519623 /* RNFirebaseAnalytics.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E85404923CD3A01CF558D3850CFE3679 /* GULHeartbeatDateStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 16FB6D1CB6C00FD26DF39F79C94A3B7C /* GULHeartbeatDateStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; E893729E87251274E6D1D3B51566E3B4 /* RNCAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = 21199E18BA11E7D9DFB4E16A495239DE /* RNCAppearance.m */; }; E89D6302F9CD369994133101A1FCE6B9 /* EXAudioSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6203E9A58EE92DF8A28EAE1798542BAF /* EXAudioSessionManager.m */; }; - E8ADD9FF1D22894886D0DBD93EAB58F6 /* FIRCoreDiagnosticsDateFileStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CD44221A26E3F51CDD22BABCB58B202 /* FIRCoreDiagnosticsDateFileStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E8E1EDE9F3E6489979B88DD4A1772C5A /* FIRInstallationsHTTPError.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A09F908C75D99E518BBF382A235C2DB /* FIRInstallationsHTTPError.h */; settings = {ATTRIBUTES = (Project, ); }; }; E8F7886CF346A4A59D5620CEAA69B8D7 /* RCTI18nUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D4ACA40E9618BFDDDAB6169A365CC8D /* RCTI18nUtil.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; E947B8EE3C12F59A7BE6DA22F4E43AC9 /* ARTNode.m in Sources */ = {isa = PBXBuildFile; fileRef = DD854D6DCDCAC32BB6D0CAA3C459B62D /* ARTNode.m */; }; - E98690E099869FCA322CDB7C8AB9B323 /* webp_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 14A2693CDD9952524E83AD5C56A37DD8 /* webp_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + E98690E099869FCA322CDB7C8AB9B323 /* webp_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 369513EEA056867CD6A5F02835B302FE /* webp_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + E98CCDCFD26438DD750B626B558080DB /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 55331CDCA3E4E9F322A2CA7CE5915A6A /* SDWebImageDefine.m */; }; E99670DE6BBAD7C09E618409533D1080 /* EXDownloadDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = D02DEFE53D76538671483BD6ABAFF332 /* EXDownloadDelegate.h */; settings = {ATTRIBUTES = (Project, ); }; }; E9ACBB81BB2D21567E75CB08C2B132A4 /* RNLocalize.h in Headers */ = {isa = PBXBuildFile; fileRef = 14C97A8650B918816C5DB9E8D08249AD /* RNLocalize.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E9BEC3539C84BEBAE9C56DD82FE4AE08 /* GDTCORConsoleLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FC1353AA6CA2364871614AD5734013C /* GDTCORConsoleLogger.m */; }; E9D7ACE54F298811EB74DFBF05F996D5 /* UMBridgeModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 61D68ED0DFDE8178B98F79C56AAF6735 /* UMBridgeModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EA04E96F998EF83B5CA813705CFFA952 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B2AFFB16527B8EBEC2327785BCE1654 /* SDImageCachesManager.m */; }; + EA92BC0787BF825827888594F2AEBA4E /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 7480B7F4FAB96A496173DE0E7C617B9C /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; EAC3645D8AC3873C347FC01F30F07184 /* BSG_KSDynamicLinker.h in Headers */ = {isa = PBXBuildFile; fileRef = 28F65205BA8970F406183AF22BD3D344 /* BSG_KSDynamicLinker.h */; settings = {ATTRIBUTES = (Project, ); }; }; EB0B31B8287F6C7F98F99A2AF00CACB4 /* RCTJavaScriptLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = C1BDAF7514D177B767F3850F0608EBF3 /* RCTJavaScriptLoader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EB2C44784270DFBA3B582FB79FB0B4CA /* alpha_processing_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 83F1B2BD4B45BF9CD1B13B3F8EE023A3 /* alpha_processing_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - EB3E24580BE08E5B95D8B26751FD5B75 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 939A7FD22EFE867355B9D8C52DC10ACF /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EB2C44784270DFBA3B582FB79FB0B4CA /* alpha_processing_mips_dsp_r2.c in Sources */ = {isa = PBXBuildFile; fileRef = 3E30B8CCF8842538B301F60452DFD5E4 /* alpha_processing_mips_dsp_r2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; EB5FDE0900500D251E2A58D288202037 /* EXVideoView.h in Headers */ = {isa = PBXBuildFile; fileRef = 60EEBF389C391162FA269F8E7D3FCB15 /* EXVideoView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EB9924D58B07EE3EB3287F501A3E8DDE /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = FF7126802A814DA73C4EAE011D1333A2 /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; EBA14ECF6325AE246FF34646A5D8CA77 /* RCTTypedModuleConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E7C9A1C152FB2C9A1CBC1BE0C1D48F /* RCTTypedModuleConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; EBA79B0AE533BE87BCF47925BEEF5A58 /* RNGestureHandlerEvents.m in Sources */ = {isa = PBXBuildFile; fileRef = 38FA3FE49F8B797FECF2B05366D47C3A /* RNGestureHandlerEvents.m */; }; - EBD07BB27B77720C17D34C923052FCF8 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = C33CB5AB34B70CE551120CF7195044D9 /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; EBD86108D11313816DA5380B28BDF659 /* EXAVPlayerData.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CB27FF0D9774D66C8B17F15F7EF975B /* EXAVPlayerData.m */; }; - EBDA10C96D8A27B909F8DB3B0A7C32F1 /* pb_decode.h in Headers */ = {isa = PBXBuildFile; fileRef = F2CD43E6A24897BE60EF619B608BF7DC /* pb_decode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EBDA10C96D8A27B909F8DB3B0A7C32F1 /* pb_decode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E9D30B663A082E804F4CAA873DD3822 /* pb_decode.h */; settings = {ATTRIBUTES = (Project, ); }; }; EBFD540945522362ECEE6BE93F273482 /* RNFirebaseAdMobBannerManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A74F82E6AB2138E825235952F1EB9D0 /* RNFirebaseAdMobBannerManager.m */; }; EC08AB594C6A1EE421C0F7221243CB62 /* RCTBlobManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2F2902D76123CD82980C10B19C6B2894 /* RCTBlobManager.mm */; }; EC0BF2510F9ED9AF098DD223FC443285 /* RCTBaseTextInputView.m in Sources */ = {isa = PBXBuildFile; fileRef = 51BB9A3334F8058B9CABF455F7363AFE /* RCTBaseTextInputView.m */; }; EC9004FACF5144E188B844C9527904D6 /* RCTMaskedView.h in Headers */ = {isa = PBXBuildFile; fileRef = C72F668DD60E0AAB30EDB1330EFA94FA /* RCTMaskedView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EC948F82EF1983AA5BEB6AF4EA40501B /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = D3FE0D74F6529795B2FC779F7DC99CF2 /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Project, ); }; }; EC99C50385781477A8923300E8BC421B /* RCTTextViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E7073A9FAFCF672D8D03A15D3BB32D2 /* RCTTextViewManager.m */; }; ECA780FF54FE7C9F647A4D72E95010F7 /* ARTLinearGradient.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AD4CB6111497F53E4A5BB288BFD3461 /* ARTLinearGradient.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ECB28850CF749899A41813E488AE29E7 /* GDTCCTNanopbHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 06F15669F5B860FA4E51821B5C31DD25 /* GDTCCTNanopbHelpers.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ECF5EE9A8CBB6789B7B126A9A26A5F1F /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = C4479616B9A8800084821451D7E8362A /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; ECFB29DE3E310D2CF27F7C2D40F93A9A /* QBSlomoIconView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6708E35DBB3D103F8267F825E34A5657 /* QBSlomoIconView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ED62691B003B2C54B15DD706EBD7FA6B /* histogram_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = DD9132B64FBE45A4C87A571D30B33B93 /* histogram_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - EDC7C6753DD7336A6DAB5677E860B474 /* FIRComponentContainerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 850EC46C044A0D75CF74813A69913DEC /* FIRComponentContainerInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; + ED62691B003B2C54B15DD706EBD7FA6B /* histogram_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = DFC6BCB3B33D02DBB888628D1E52A351 /* histogram_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + ED6F8B6CE9CEFC1D4CD6E21DF8103BCD /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 436BEED2A30591A8D4E5DB90E45FC2FA /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EDA6631D3EB50C35BD2E88DEAEECA297 /* FIRInstallationsVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 668DB3196C8AC5E9F322863CBC018C56 /* FIRInstallationsVersion.h */; settings = {ATTRIBUTES = (Project, ); }; }; EE23B71AEA719ECCE99E89E393DAE6B1 /* UMNativeModulesProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BCA613E270465CAFFEFCFAB5AD0872E /* UMNativeModulesProxy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EE4BDF8FB4021FDA1409408B21AFABCE /* GULLoggerCodes.h in Headers */ = {isa = PBXBuildFile; fileRef = CE88AE68164F8E5A2B29F0E225DD861F /* GULLoggerCodes.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EE273A1922351D221CFDAFFC3FC1BEEE /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = F3AD925B23A79ECA6E6EBDF8DB7412D2 /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Project, ); }; }; EE5A08FA36B0D47C84E6173B27CA2152 /* YGStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 80E3C559E928DBF9CC5352937D0D85BE /* YGStyle.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EE5C2C00E8185B79989EC2EB1A7A1FA5 /* FIRInstanceIDCheckinPreferences+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B87E79843B4EA59AB699E20F9EB2ECD0 /* FIRInstanceIDCheckinPreferences+Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; EE6C34D5DC88F870B40D305A75D38553 /* de.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 4AC37404E19DE4B79D6A09FB3B4D274C /* de.lproj */; }; + EEBF8313CA8F65F42F85E698A4170BB3 /* GULLoggerLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 63FC874B85C176CC532B90BB75E6546F /* GULLoggerLevel.h */; settings = {ATTRIBUTES = (Project, ); }; }; EEE7B9655AA3FCF1C1B0294133926C5A /* UMModuleRegistryConsumer.h in Headers */ = {isa = PBXBuildFile; fileRef = F8BED19E476483C03DEC417A2219CFE7 /* UMModuleRegistryConsumer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EEF97C679BEE5F2A9C7F7D95720C9AF6 /* lossless_enc_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = 8D29688C643B920F82DE60C7F438D732 /* lossless_enc_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + EEEE2F8856949DC3AD8768907BC1155B /* FBLPromise+Timeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 812DCB2F8F49903836E6EBBDD65655F2 /* FBLPromise+Timeout.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EEF97C679BEE5F2A9C7F7D95720C9AF6 /* lossless_enc_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = 9E97258EDDE1B0FF09F0FC66346AD27A /* lossless_enc_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; EF2C4FB84AFC8710114EB87DF542FA40 /* RCTAnimationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 5414AE6DDACD6C4C27220E5FF9C96EE1 /* RCTAnimationUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EF627458DF9DF92352237F2364F8D8B7 /* FIRCoreDiagnostics.m in Sources */ = {isa = PBXBuildFile; fileRef = BE9A40D3A7B0498886FB7048EF92990B /* FIRCoreDiagnostics.m */; }; EF686B36ADD04B852E545DE24FC4ED46 /* RCTSettingsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2263F17BAE0AB4165F7B27DB8998D0EB /* RCTSettingsManager.m */; }; + EF6ED61C297982CF31DF19548C24548C /* FIRAppInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 14E9D8CDCDCDC635008003D55AC6728F /* FIRAppInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; EFCBDB29A0854F4C329462E88F5FB5EF /* RCTValueAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 167001BB542F875BB6AE6374CBE2F8D3 /* RCTValueAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EFDDDA86D58A5A3B5A5C52CD2E4684D8 /* random_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = E94CCAA4B5D0B31346AD905F24B5C788 /* random_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EFDDDA86D58A5A3B5A5C52CD2E4684D8 /* random_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BB4E471066205C1B9F8413CE80BAB3E /* random_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; F017287C4E1183CC83C54BCDF409A28C /* RCTInputAccessoryViewContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CEEB6FAF21D0BA92AC0A04AE4DDD428 /* RCTInputAccessoryViewContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F026131495373C5DE569B201034D9101 /* cost_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = 67D1334CEA80F39AAF27FF022F320928 /* cost_mips32.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + F026131495373C5DE569B201034D9101 /* cost_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = 3C4BE532E284D6FC858B445EBCE54BE5 /* cost_mips32.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; F02C80E50A42C5C5D22B26EC7C971239 /* RNPinchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = C8C38C11207926949E1F8094DFCEE99F /* RNPinchHandler.m */; }; - F08217569EB41ACFAEBB6EA9A653124A /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DEA0269F260ECF8399E22CDBCE670D9D /* SDWebImage-dummy.m */; }; F091BB9661A4345D85F945ED606B30FE /* EXSystemBrightnessRequester.h in Headers */ = {isa = PBXBuildFile; fileRef = D9170605CA60EF92BD30F13A4F040A04 /* EXSystemBrightnessRequester.h */; settings = {ATTRIBUTES = (Project, ); }; }; F0AB1EAEB67FA9F7F0EAC55737D635B8 /* TurboModuleBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CCA0576919667EC33DF985E4FC2910DE /* TurboModuleBinding.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - F0CCBD5B1560D8D8B467FBFE07DF74A4 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = AA16F20ABE77B8DD649F24D5CD6DDC3F /* UIImage+MemoryCacheCost.m */; }; + F0B46213F4296B9F86E89D13B3812DA4 /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = 395775162350335AB985C2E53A0F2AFA /* UIImage+ExtendedCacheData.m */; }; + F0DDCA31D954C30755FAAFC075C96D5C /* GDTCORPlatform.h in Headers */ = {isa = PBXBuildFile; fileRef = CE71CD3D3C773A121030FB81AB751D1A /* GDTCORPlatform.h */; settings = {ATTRIBUTES = (Project, ); }; }; F0F6FF2BDBAEAE1AB3B9FC5CFB1DD69B /* RNNotificationCenterListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A5AA89B3283F17AD3F4DDD55C37A94E /* RNNotificationCenterListener.h */; settings = {ATTRIBUTES = (Project, ); }; }; F0FCF80EBEDFE45F3FE19DEEE0A94D56 /* RNNotificationParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 4009C1F0F5E09AED73CBD13150E7352D /* RNNotificationParser.m */; }; - F128E5421AFDD733B6EA5E6DC0BDBBBF /* dec_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = CDABE96C15F9B4FD9B3FA2B5448EFF61 /* dec_sse41.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - F19BF0C7860B5391D62C5E675AB146B4 /* bignum-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 62D58564597AD3FA1680CA444EE3153F /* bignum-dtoa.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F128E5421AFDD733B6EA5E6DC0BDBBBF /* dec_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = 2FC5C1273D1024C325327DCD080C4650 /* dec_sse41.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + F15DE35EBA4CB4B476438C0692A0950A /* FIRHeartbeatInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = FFE34689D2E3DE37AC652BA9C6743AD3 /* FIRHeartbeatInfo.m */; }; + F19BF0C7860B5391D62C5E675AB146B4 /* bignum-dtoa.h in Headers */ = {isa = PBXBuildFile; fileRef = BF0E8DD8BC7FDA879032926A40B37AA3 /* bignum-dtoa.h */; settings = {ATTRIBUTES = (Project, ); }; }; F1A4EF081FF2A5D0C5CA12DA474211AC /* BSG_KSMach_Arm64.c in Sources */ = {isa = PBXBuildFile; fileRef = FBABE6A668BF55191A9D843480C414A5 /* BSG_KSMach_Arm64.c */; }; - F1CFAD1BBFF7E0BDA26021957C170257 /* vp8_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = 133986823449A7882523C4DF4CDAB704 /* vp8_dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F1CFAD1BBFF7E0BDA26021957C170257 /* vp8_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = B0D7F4389F6E6CC404907A69EE8797DE /* vp8_dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; F1DBD2564FDBAE92A9E4AA8D7CCC7E01 /* RCTModuloAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3406114BB84016C3BF3C6DD7AEF5D054 /* RCTModuloAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F253676650181C9AB4472384CDCFE3B9 /* CGGeometry+RSKImageCropper.m in Sources */ = {isa = PBXBuildFile; fileRef = A6E0D58232EF1BE4057DF65FDD108841 /* CGGeometry+RSKImageCropper.m */; }; + F253676650181C9AB4472384CDCFE3B9 /* CGGeometry+RSKImageCropper.m in Sources */ = {isa = PBXBuildFile; fileRef = A1EC5104042BAFCD052B353B775968D7 /* CGGeometry+RSKImageCropper.m */; }; F2678A8C2C1CC5973FADEE574737BDCE /* RCTInputAccessoryShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = B02DD65D05D4FFEE128900D4F7D0DFBC /* RCTInputAccessoryShadowView.m */; }; - F2826D6E1658277DA089B70D6A8EE819 /* vlog_is_on.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BFB30ED854B8C01AD34F0014DAF9AF4 /* vlog_is_on.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F2826D6E1658277DA089B70D6A8EE819 /* vlog_is_on.h in Headers */ = {isa = PBXBuildFile; fileRef = 03D64694CDD23D5AA5D2926DA6659EED /* vlog_is_on.h */; settings = {ATTRIBUTES = (Project, ); }; }; F2DC4D68D95807B1FAB1279790CB7918 /* RNTapHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 94DA588A88B35CE185D80006E62DBC42 /* RNTapHandler.m */; }; + F2E8A9FD857BB35C68640079AC2A68AB /* FIRInstanceIDAPNSInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7121DEBABF2BDFF8481B59788B8C759F /* FIRInstanceIDAPNSInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; F30AE70097060CD9BC8221D42344048D /* RCTInterpolationAnimatedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 740C19CBAF1B7128836A086F6F400C7B /* RCTInterpolationAnimatedNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F34C639FB1271BA9041CE7D33BBB6859 /* FBLPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E1351AE14BC4DCE7B93E301AA99026B /* FBLPromise.h */; settings = {ATTRIBUTES = (Project, ); }; }; F358B6463CF3BC773C24CE612205CF12 /* BugsnagNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = EEC0E6E9AC18BBFC719102A5C56D9AAD /* BugsnagNotifier.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F3A009B81FF8A92B347826968ED9AF1E /* demux.c in Sources */ = {isa = PBXBuildFile; fileRef = 281C56FBABFEE9C04A3535E9790A9120 /* demux.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - F3D627DC15CA09424071F3BC53A106D0 /* FIRInstanceIDKeyPairUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = E33417ACBFBAB178C661615BA5AB68FD /* FIRInstanceIDKeyPairUtilities.m */; }; + F3A009B81FF8A92B347826968ED9AF1E /* demux.c in Sources */ = {isa = PBXBuildFile; fileRef = 66BE2E56E1110F499C048713FEB1CE2A /* demux.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; F3E90E8C1586DE0BC8F64B440C00EF15 /* RCTSurfaceRootShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = C046E8B167E889528CF9671EC0A9C7CD /* RCTSurfaceRootShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; F3FF0E6A7EBEC4415BE364AC9798CBC4 /* RCTBaseTextInputViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B06766EBC90E7AB98A11548494111AA /* RCTBaseTextInputViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F40EA7396762A710141555DE1EF792D0 /* ScopeGuard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 983D468F8C9A0B2C350475DFE638F4C6 /* ScopeGuard.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - F4227A5A22C299DB2F673D8875C42BAD /* picture_psnr_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 492152604E4FD300199AC37801C7C124 /* picture_psnr_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - F42576E538BA4EAD61737ED1918F7E19 /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 63F33ED36C0322764AFBD658D2E32149 /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F40EA7396762A710141555DE1EF792D0 /* ScopeGuard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9AE4C4F557F4921C9D27A6E75DDB9A1A /* ScopeGuard.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + F4227A5A22C299DB2F673D8875C42BAD /* picture_psnr_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 54D0A0D72E5409D9555B3AB6C444425A /* picture_psnr_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + F4604D394027188B0F18448BA46914DF /* FIRInstallationsLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 999C11E9F0B6529BC62034D8CCC9BC0B /* FIRInstallationsLogger.m */; }; F4640C0CE6B316988B18BF1105985E43 /* BSGSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E3F2CC88D9C0D9C761BCBC536541DF3 /* BSGSerialization.m */; }; F481E164606508264C13898ADAAAE788 /* RCTScrollContentViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 34D3BA6E5E4F5BB82DBB4FE14B8AC264 /* RCTScrollContentViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - F49F1B5A4B1DA201D133771E9923D648 /* webp_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 254440D91C3A7ECA89F32B4582B454A5 /* webp_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - F4F2AD90553CB120BC682940433493B8 /* lossless.h in Headers */ = {isa = PBXBuildFile; fileRef = E7DBE578144365956009AA5CE27574C9 /* lossless.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F49F1B5A4B1DA201D133771E9923D648 /* webp_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 8D7029D8FB8076E86500FDD8484FDDD4 /* webp_dec.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + F4F2AD90553CB120BC682940433493B8 /* lossless.h in Headers */ = {isa = PBXBuildFile; fileRef = DB4059D2FB364A28E6585D247CD47FBA /* lossless.h */; settings = {ATTRIBUTES = (Project, ); }; }; F4F36A29C561D301C91A59338D5E8744 /* RCTKeyboardObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E5496FD4962BCDE6FDFEF4257C4A257 /* RCTKeyboardObserver.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; F5100582E3FCC4BD8A1031EFC2E7CF14 /* RCTRedBox.h in Headers */ = {isa = PBXBuildFile; fileRef = D32FD2DC67C23F6E6A8180188AD1592C /* RCTRedBox.h */; settings = {ATTRIBUTES = (Project, ); }; }; F515A6E7B426BDEB13B544686F7E09B5 /* REABezierNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 32BB45A38D44180DD5E2F32738B46DD3 /* REABezierNode.m */; }; F518CDF6FC7F5085F4C33D36E71E6B35 /* RNCAppearance.h in Headers */ = {isa = PBXBuildFile; fileRef = FFC5D879ED9F5C124C1039F164C7B009 /* RNCAppearance.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F555F8C238747A97FF295FA277B84567 /* lossless_common.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FAEBE5D58863C9A3B5B59A94EA01F80 /* lossless_common.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F526E360D7A60F00F7F67F7885804263 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = B101A21C2A5287012254B056CFA7D4FC /* UIImage+ForceDecode.m */; }; + F555F8C238747A97FF295FA277B84567 /* lossless_common.h in Headers */ = {isa = PBXBuildFile; fileRef = 21BBC4149E367B15994D55B0BE6395A3 /* lossless_common.h */; settings = {ATTRIBUTES = (Project, ); }; }; F567ADBF1B3738DBB51490CA6B7CE24E /* QBImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1068FEF6E9F10FCEC7F7A0F102077F7D /* QBImagePickerController.m */; }; - F56B25509F8FD04924C91D993984B005 /* Conv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6D764A8FFC016671C8031425E8EE2F5 /* Conv.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + F56B25509F8FD04924C91D993984B005 /* Conv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 54EB650E96F37C37F0F35851F8C12BA6 /* Conv.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; F588489733C335360B5422279F3C2969 /* RCTFileReaderModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CBD5251F075596E6EFD5A97D4DC0209 /* RCTFileReaderModule.h */; settings = {ATTRIBUTES = (Project, ); }; }; F595927E48BC68499910B400D64A825A /* ARTShape.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BEAE0D1B153AF1E495632C5F9B28B59 /* ARTShape.m */; }; - F5D27F49E8DEC09ED4DF62A5F2975463 /* diy-fp.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8C702ABF343F6407668963298BF734C7 /* diy-fp.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; - F60AFC502521A8956123317B2306FA2D /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = D4FD56965FE3FFBFD0C50087FDE7D6F4 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F59622D0F09DEF59155C8969D1B74946 /* FIRInstanceIDCheckinPreferences+Internal.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC3251FDA9E9F879B68C261CF445809 /* FIRInstanceIDCheckinPreferences+Internal.m */; }; + F5D27F49E8DEC09ED4DF62A5F2975463 /* diy-fp.cc in Sources */ = {isa = PBXBuildFile; fileRef = 842C1C29367F774BD441F53EB6BD4437 /* diy-fp.cc */; settings = {COMPILER_FLAGS = "-Wno-unreachable-code"; }; }; F60DB066439D039A0455DFA72FCFD83F /* QBVideoIconView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A67786461370E185AF7874C96314135 /* QBVideoIconView.h */; settings = {ATTRIBUTES = (Project, ); }; }; F6730E7A3A36F244F62EB6480A1E6304 /* RAMBundleRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FCD506D4980CB5795E9063F3B3B82A4 /* RAMBundleRegistry.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + F678D6DF5474A127E8A5C548654BDE5C /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 108BA2E99330882B915006784045B5A9 /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F6835F579A7F608E9D9DF7936BD0B6E5 /* cct.nanopb.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EE448D03DC1030CB1623347E60A913A /* cct.nanopb.h */; settings = {ATTRIBUTES = (Project, ); }; }; F69EE9565EC9739DCBEAECC9B2096D35 /* RCTCxxConvert.m in Sources */ = {isa = PBXBuildFile; fileRef = AC4FDBC85BDB8D7D488E2A0A3D48D552 /* RCTCxxConvert.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; F6B89787B48EB4A234BBEAD9D7FD761A /* RCTRefreshControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 242B18E8C5CE1CDEE3BF9A0CCB1AC607 /* RCTRefreshControl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F6BC3D6090988DED79B6F5CC48074FEF /* NSBezierPath+RoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = 273439589765A5A66AC272F5E174994D /* NSBezierPath+RoundedCorners.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F729FF2845CD5C8CA9F83BC033C4A4D5 /* FIRDiagnosticsData.h in Headers */ = {isa = PBXBuildFile; fileRef = E7CE121DF2DE02220806316553608552 /* FIRDiagnosticsData.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F72BF847412E0FAF84E1A7E16EA97A46 /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = F27020B27DE70C7188CEEE5F520684FA /* UIImage+GIF.m */; }; F7305542A490B6F40F96281B25C15D50 /* RCTMultilineTextInputViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 991F63888F0DADE5B74E325A8A6BCCE8 /* RCTMultilineTextInputViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F75DC605FC8D1F7681541CE667AB7CB4 /* huffman_encode_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = CC306A91677E008B485C2693BBF1C7BF /* huffman_encode_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F75DC605FC8D1F7681541CE667AB7CB4 /* huffman_encode_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 102D559173B1A82E75F05608FC7771F9 /* huffman_encode_utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; F7957488A7E05B294D0FDCB86F08DE8B /* react-native-slider-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CC034D566D928405177A6168FCC656C5 /* react-native-slider-dummy.m */; }; - F7AA02141B7C9712F22D1023EE2FA272 /* syntax_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 09597B21C975650436C74DFFD48A1EF1 /* syntax_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + F7AA02141B7C9712F22D1023EE2FA272 /* syntax_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = E5BFD2113CD9F64E3ED9DA735B433731 /* syntax_enc.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; F7B792DEEF85A28A3315F3307DCB1A9E /* LNInterpolation.h in Headers */ = {isa = PBXBuildFile; fileRef = 39AD9D7041B853DF12888ADCD3801AEC /* LNInterpolation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F7C3B037B97B6C77B9C02AA6E6A366CE /* FIRErrorCode.h in Headers */ = {isa = PBXBuildFile; fileRef = B1FE0D366F6E3BEEE492394D7E4FD699 /* FIRErrorCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F7E5C972E05E7175549D6B5131A4AB11 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = C3316057687A0E4CB96C6EADC68B8584 /* SDImageCache.m */; }; + F7B8AA8AD5C283D228877B2FC07E7E98 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = CAB97B058E412E0CFCBF16E6AD07DCA2 /* SDDeviceHelper.m */; }; F7EDF44CF901CFAE15E5A31C4B31A19C /* RCTWrapperViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = EF1F0F24D6B249F14C0FFA5C73F33D1C /* RCTWrapperViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F7FAC1E73D94665C2A71AF67FE7A9930 /* FIRInstanceIDTokenInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = EF27139234F208AEE736571E47FBD2B5 /* FIRInstanceIDTokenInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; F7FC446C7B196854DA9D5F0CCB37460B /* RCTTextTransform.h in Headers */ = {isa = PBXBuildFile; fileRef = BE09031574CDEACBB49CE1AC66544EDB /* RCTTextTransform.h */; settings = {ATTRIBUTES = (Project, ); }; }; F80534B97F3B0762396355EE60A3D145 /* RCTScrollContentViewManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F1FAFECEA2BB7BEB6BDAFAF39FC426C6 /* RCTScrollContentViewManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; F81E2DFA7E076498AEFA487459C13FCF /* EXRemoteNotificationRequester.h in Headers */ = {isa = PBXBuildFile; fileRef = AA9F3BA91EFD2DFD1E498DEC5DA20721 /* EXRemoteNotificationRequester.h */; settings = {ATTRIBUTES = (Project, ); }; }; F831BA67263E221FBA278D7508C1607C /* RCTTextShadowView.h in Headers */ = {isa = PBXBuildFile; fileRef = 00F141C90BDC5ABFB362C6A910458B2E /* RCTTextShadowView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F83D6DC16A3DDE2C67D8E9F41EF111A9 /* yuv_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = C222210BC14529A331E3ECF70A2EED5E /* yuv_mips32.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + F83D6DC16A3DDE2C67D8E9F41EF111A9 /* yuv_mips32.c in Sources */ = {isa = PBXBuildFile; fileRef = FF92B16CAA4A7AFB4FC58207B113E26A /* yuv_mips32.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; F87498071918FC238AE4EC261728F5A8 /* RCTCxxUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2DC1EB1095D3E80B97EDC6B974E66CBC /* RCTCxxUtils.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; F891A17F467C8B71420B0B6FC1B505FD /* RCTSurface.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D49F55D4CD4364E4649FFB0945D8B85 /* RCTSurface.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F903E89A908134BAC586C99F1EFB8F92 /* FIRInstanceID+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = B956A57AB40A828151E2DDC55448CCB3 /* FIRInstanceID+Private.m */; }; + F8F23B650278EC92BD4E1D20F5F3084F /* FIRInstanceIDCheckinService.h in Headers */ = {isa = PBXBuildFile; fileRef = CF993D633A32BC1ADCF4B996EA47AB13 /* FIRInstanceIDCheckinService.h */; settings = {ATTRIBUTES = (Project, ); }; }; F933C60C18D983D25A94CD31A49C9954 /* RCTProfileTrampoline-arm.S in Sources */ = {isa = PBXBuildFile; fileRef = 6441110A52AC72F1F219FFC618E5E4C5 /* RCTProfileTrampoline-arm.S */; }; F94498F57D718CB7AC71CD5A40393BD6 /* RCTPackagerConnection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0CB3CBDAF4A37F5F1F72C5D9F58E4A34 /* RCTPackagerConnection.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; F99C6EF148A5F929C6714A10414821BB /* react-native-jitsi-meet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 40F7FEF0E1BF9BFF10FAEC98C231FD26 /* react-native-jitsi-meet-dummy.m */; }; - FA0980CF93ACFCE4817D2934112E098E /* ColdClass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C35E7FE27DAB66CBC23CF55C160F9F81 /* ColdClass.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - FA14342E79B4712BB89BFD6F442A6A64 /* enc_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = 8DDE75E72B2E19F5B9CA9F1434A1B294 /* enc_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + FA0980CF93ACFCE4817D2934112E098E /* ColdClass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DC3FBA3E5B2AE0036A215BD1C8E37D31 /* ColdClass.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -DFOLLY_HAVE_PTHREAD=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + FA14342E79B4712BB89BFD6F442A6A64 /* enc_msa.c in Sources */ = {isa = PBXBuildFile; fileRef = 782DC576EA301487BA3AFF6CDF22C7F0 /* enc_msa.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; FA261EF55BDA4678D08512DF89105B12 /* RNSScreenStackHeaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 78BD83D02F69F9B51DEF7E9F6F62829F /* RNSScreenStackHeaderConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; FA41B3CEA87D34E244EA46A8F06EBCD1 /* BannerComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 444142B1C689CED6755F59CE2C7CC1E4 /* BannerComponent.m */; }; FA44144AF28DD8451DD209C556DCD1BF /* RCTTouchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = B234A34E47BD553B1BBB16FE8E4232F5 /* RCTTouchHandler.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; FA6CDEB2A292F61C8FA52F4239629B79 /* RNVectorIconsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D25CB0CC8CE447B4C42427B04DFA8320 /* RNVectorIconsManager.m */; }; FAA84D230376CBFEFBC366FE93E11B41 /* RCTFollyConvert.h in Headers */ = {isa = PBXBuildFile; fileRef = C211084854232733B6106F84F2060236 /* RCTFollyConvert.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FAF4E061760C22B95BE08E8A7CB52005 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C12A2CAC51F8034811D57FAEE5A3A459 /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; FB3F4050BDAAD6BDCFAEA8A02A706358 /* RCTBackedTextInputViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 86EC7D9587DCAB7397F8A9650E3DC500 /* RCTBackedTextInputViewProtocol.h */; settings = {ATTRIBUTES = (Project, ); }; }; FB5F17821545A8F999EB39EDE058612B /* BSGOutOfMemoryWatchdog.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EDBF66A927B5F8A8DE3756BD792B701 /* BSGOutOfMemoryWatchdog.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FB622B6F25A8FB70B8156427BB2963BB /* FIRInstanceIDKeychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D68CBDDD5A7D610F9E436686A07B74A /* FIRInstanceIDKeychain.h */; settings = {ATTRIBUTES = (Project, ); }; }; FB82A5DA6674B7D813DE2686C03E2CC0 /* RCTScrollContentShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E9F56F343F2173D1A070E0EAE2A6A4E /* RCTScrollContentShadowView.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; FB8A58CBBA5D6FA69A71DD1E1075091C /* BSG_KSFileUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 226C067E41BA7EAEDA042F0161EBF418 /* BSG_KSFileUtils.h */; settings = {ATTRIBUTES = (Project, ); }; }; FB97B1AE771BD3BCB2E5A6D924D3A9F2 /* NSDataBigString.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8CE45688575FF0AA028895BFDD852F2F /* NSDataBigString.mm */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - FBA3AD3723EB355128F93C3892B5514C /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = AD4C5E8F109E5073C9334BC16646134A /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; FBA62BAE57B920681ECCC87E951DD37B /* RCTModalHostViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D7233787C00DF7D995ABCCA5B3EB617 /* RCTModalHostViewController.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; + FBBA7842602DADBDAE57A0FC05A97B85 /* FIRInstallationsAPIService.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B019F88D183D8F0E9D8BF083F3699B1 /* FIRInstallationsAPIService.m */; }; + FBED05764440E7FEF17C007B2437FB0D /* FIRVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = FA6C315437C3214205593E74AB412E48 /* FIRVersion.m */; }; FBFF630974B4E7F16EF2281009230DC5 /* RCTInspectorDevServerHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC07A691B5C1F74884E31973463A763 /* RCTInspectorDevServerHelper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FC3D97DAF0161899EA3D1DAD4BC63767 /* FIRLoggerLevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 407248094230C4CB540340AFC5FDF3B3 /* FIRLoggerLevel.h */; settings = {ATTRIBUTES = (Project, ); }; }; FC43075F446DDCBCB3BEF943699C2806 /* RCTImageBlurUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 812AA095C1331B37CE0472F217A4945B /* RCTImageBlurUtils.m */; }; - FC7637AE23AF20DDA06CE6C7CD5BC193 /* FIRInstanceIDBackupExcludedPlist.h in Headers */ = {isa = PBXBuildFile; fileRef = F913CAE0697648283B36B0E6B9F9E0E8 /* FIRInstanceIDBackupExcludedPlist.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FC775095597914294ABF7C56BF70052A /* FIRComponentContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0723D9254A0FF8AAD5189C6A5CDB013B /* FIRComponentContainer.m */; }; FC8C65A5DB73DEDB0A5DD8610959D4CF /* UMExportedModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 80E600CBC8D78EBFD0015D5E8839B40F /* UMExportedModule.m */; }; + FC8EB7790089B59A9534F58C07FCF438 /* FIRInstanceIDDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = EB3D678D3F78C857A36FCEE91C3A72E5 /* FIRInstanceIDDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; FC98D260B0CFC32AFF56A78B6D25EEFA /* DeviceUID.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B21B0CE90EC97B3E7396A49F2FD743B /* DeviceUID.h */; settings = {ATTRIBUTES = (Project, ); }; }; FCA9B32C098008A8220242E8353046E7 /* JSBigString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9BD0857EE43DA88E1FB5A23EE203CE5 /* JSBigString.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; - FCD79EFFF5C8B0950B52990E332E637E /* FIRInstanceIDUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = DA29FECAE359C2F2950641F461432B96 /* FIRInstanceIDUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; FCDC5F5AF807DB5781447F7EC845B581 /* RNDeviceInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = F5E5B8A6650D84ACBAF57A8E248E85D7 /* RNDeviceInfo.m */; }; + FCFBF36506CE48E9AD3D878FCD18ED4F /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BA675DA25C52E2FD5633ACE43240432 /* UIImage+GIF.m */; }; FD4EFA8CC12FE490181AB0F8F45FEA83 /* Bugsnag.h in Headers */ = {isa = PBXBuildFile; fileRef = 56539446BB3AB5B151AB3B63CDFD213C /* Bugsnag.h */; settings = {ATTRIBUTES = (Project, ); }; }; FD51669FC205662481C7CF2DA4AB6748 /* RCTSafeAreaViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 06697F35D65B5CE61A7219DE075D036C /* RCTSafeAreaViewManager.m */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-documentation"; }; }; FD93A07171842B9645ABA0BDD9EC9721 /* BSG_KSBacktrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CF132F48B2B8B5875B871C7C5A28249 /* BSG_KSBacktrace.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FDE0CFBD5BC520CB3EA47DAA8C5FAE48 /* FIRBundleUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 48E62AAA99323AAF6FC8A4C5D988DBDB /* FIRBundleUtil.m */; }; + FDC1636FB7D672F02CDD074DD9B040E9 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ACF31EDEFE1E569CF6189573939269F /* SDWebImageDownloaderOperation.m */; }; + FDD1A736761E6777D1D9DD0B5685900A /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 65985823BA9E59CD5D699B8553FBFC7A /* SDWebImageCompat.m */; }; FE098B411C6CE6A74C722B985273AA07 /* experiments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 987821AFFECE76690D223636B519ADE3 /* experiments.cpp */; settings = {COMPILER_FLAGS = "-fno-omit-frame-pointer -fexceptions -Wall -Werror -std=c++1y -fPIC -fno-objc-arc"; }; }; - FE2DAFC3D1DB1C90CAD82D4C6CDC4BCC /* ieee.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BE6814863EBB3F1C85ACC78CD1A0667 /* ieee.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FE2DAFC3D1DB1C90CAD82D4C6CDC4BCC /* ieee.h in Headers */ = {isa = PBXBuildFile; fileRef = F790E8CC5AC5310B53CA380DA817176B /* ieee.h */; settings = {ATTRIBUTES = (Project, ); }; }; FE7D0BE1B4F581460DB11DCED18BCE1B /* RNCAssetsLibraryRequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 88FFE620B4FE021148EFFE939FE7D675 /* RNCAssetsLibraryRequestHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; FE9C3D782258B259386212536AAD2830 /* ARTSolidColor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AFAD101DE817A8C09E6DCDB6C006CB5 /* ARTSolidColor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FEB08A0DFF9F7B151A3598DFABD3659A /* GDTCCTPrioritizer.m in Sources */ = {isa = PBXBuildFile; fileRef = D7AF0EEF43F86081748C36A1C9D9A230 /* GDTCCTPrioritizer.m */; }; + FEACA20561A5919D3F143BC299FE7D8D /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F2659EE472B6D6569574FAB9D3BCFB98 /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FEE81DDBC8EE950322B4DFBC3C91A8F5 /* FIRDependency.h in Headers */ = {isa = PBXBuildFile; fileRef = 19F7DAA1BD0C331F0062BBC640DBC35E /* FIRDependency.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FEEE952E4702DBF6900E7A327CF08AE9 /* FBLPromise+Retry.m in Sources */ = {isa = PBXBuildFile; fileRef = BA065BF226D7D8BE5F672D1B12FD2519 /* FBLPromise+Retry.m */; }; FF217BF4F60D6ABBE53FF634B951F784 /* FFFastImageSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 738729E64B6A469A04A8534B490BC224 /* FFFastImageSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FF25A72AFBFDD3B1F8A677B56EE3F6C6 /* rescaler_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = 29E6BDF2F5D56B7867030711E63DFE1D /* rescaler_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + FF25A72AFBFDD3B1F8A677B56EE3F6C6 /* rescaler_sse2.c in Sources */ = {isa = PBXBuildFile; fileRef = D74BB20E1BC0B778FF8CFFA36C0840CF /* rescaler_sse2.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; FF60B7B41824DC680D901D24F8DB2F78 /* EXFileSystemLocalFileHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D49C8A04AF309CE5BE94686AF3A1831 /* EXFileSystemLocalFileHandler.m */; }; FF7C6B581125343FB5108C6A39FCBFFB /* QBAlbumCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 451C703CE7E8AC15E9472E9F32558A11 /* QBAlbumCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FF8366ADAE423B2AFB5753C39F314128 /* alpha_processing_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = D40726BFD729316AABE7209F9CE71ECB /* alpha_processing_sse41.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; - FFC03B7D8F37AE0403024D9BD66DB19C /* vp8li_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = AAFF9C0E0B5630B174793EC35C4C38D0 /* vp8li_dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF825C5AA742FABD882CD741329E55CF /* FIRInstallationsErrorUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = FC39B30F26E84F6B31EE5DC99AA7A735 /* FIRInstallationsErrorUtil.m */; }; + FF8366ADAE423B2AFB5753C39F314128 /* alpha_processing_sse41.c in Sources */ = {isa = PBXBuildFile; fileRef = C9483040D5F6D422F682396B87AF87D3 /* alpha_processing_sse41.c */; settings = {COMPILER_FLAGS = "-D_THREAD_SAFE -fno-objc-arc"; }; }; + FFC03B7D8F37AE0403024D9BD66DB19C /* vp8li_dec.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AF863C6208094AACCEA61A2F59700AB /* vp8li_dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 003661AEAD4E66005C2C91B02B9B709D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 50188AAB5FAECCA9583327DBA2B0AF2B; - remoteInfo = UMTaskManagerInterface; - }; 013C8C712E31279FB89EBADB1C1A4BC4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2017,12 +2121,33 @@ remoteGlobalIDString = 2644525CCE081E967809A8163D893A93; remoteInfo = UMFileSystemInterface; }; - 03F2CA0672D70BC7FC09B4800D77E422 /* PBXContainerItemProxy */ = { + 013EDC54FCA487BBAA6C48CDC97113A2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; - remoteInfo = ReactCommon; + remoteGlobalIDString = 64F427905796B33B78A704063422979D; + remoteInfo = "rn-fetch-blob"; + }; + 01FFD3CB91B418CC5113D5E39E3FF816 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4D67CFB913D9C3BE37252D50364CD990; + remoteInfo = RNUserDefaults; + }; + 026F5244571FA414E08736B1E2149CA1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 18B56DB36E1F066C927E49DBAE590128; + remoteInfo = RNRootView; + }; + 02C2B84DB6FEA8DE473E70DC78A43ADB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; + remoteInfo = SDWebImage; }; 040622B4EF3FFAC25FCB8BED372F45F5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2045,19 +2170,33 @@ remoteGlobalIDString = 53D121F9F9BB0F8AC1C94A12C5A8572F; remoteInfo = "React-RCTVibration"; }; - 07CB207984DC219C24E538EC07BECE67 /* PBXContainerItemProxy */ = { + 05D0FFD116C750DA50BDA3E50B048E43 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8CC4EAA817AA86310D1900F1DAB3580F; - remoteInfo = FBLazyVector; + remoteGlobalIDString = 014495932E402CA67C37681988047CA2; + remoteInfo = UMFontInterface; }; - 09D593C9AC48DFD729A196FCE6B75766 /* PBXContainerItemProxy */ = { + 067E5D93DB083FB51E091E438339E7F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 651511D7DA7F07F9FC9AA40A2E86270D; - remoteInfo = "React-RCTNetwork"; + remoteGlobalIDString = FF879E718031128A75E7DE54046E6219; + remoteInfo = RNReanimated; + }; + 089558083C37398D29C4A58DC2A7459D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; + remoteInfo = RCTRequired; + }; + 08A42600A49AE912BC4C1DE377EA6E50 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; + remoteInfo = "React-jsinspector"; }; 0A0B4D127A91E77DB469579CC4FF0F57 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2066,41 +2205,27 @@ remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; - 0A6779856EFD086B16649D182E9E5718 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = BA3F5E5AA483B263B69601DE2FA269CB; - remoteInfo = "react-native-cameraroll"; - }; - 0A8EB351142067C2AFA6EFE6C8D65E73 /* PBXContainerItemProxy */ = { + 0C90C8D0F39ECF21895651A8C5C85335 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 9EB556EE511D43F3D5D7AAF51D8D0397; remoteInfo = EXWebBrowser; }; - 0BD696FBF6A39FE97C13A5A1ABF55C11 /* PBXContainerItemProxy */ = { + 0D54CC8FA15B8E03ED01ED73B9D48C5F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 680299219D3A48D42A648AF6706275A9; - remoteInfo = "React-RCTSettings"; + remoteGlobalIDString = 53D121F9F9BB0F8AC1C94A12C5A8572F; + remoteInfo = "React-RCTVibration"; }; - 0C15209CA320BC1EEA1AFD2ECE80B1E7 /* PBXContainerItemProxy */ = { + 0E2DD4CED0991DBD1F9E72A5944238AA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - 0D42E46EADA1B8AF308F3DA9477ECF42 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8D18C49071FC5370C25F5758A85BA5F6; - remoteInfo = "react-native-webview"; - }; 0ECB4C54EED84F5258E41AFD4657F11F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2122,12 +2247,12 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - 1044FDC2303CAF1C91892A68F2A8E4AE /* PBXContainerItemProxy */ = { + 10EEA2C29319093946EC6A3B886E46CC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 3FF2E78BB54ED67CA7FAD8DA2590DBEE; - remoteInfo = "react-native-appearance"; + remoteGlobalIDString = E16E206437995280D349D4B67695C894; + remoteInfo = "React-CoreModules"; }; 113CDDB809E5888DDC4ACE47ACB7FEB3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2136,12 +2261,12 @@ remoteGlobalIDString = DBCB1B4965863DDD3B9DED9A0918A526; remoteInfo = UMCore; }; - 118016450313151D29E6B9F4BBED8396 /* PBXContainerItemProxy */ = { + 11D6BA14BE41FE745D7D6A4967351B99 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C3496D0495E700CF08A90C41EA8FA4BB; - remoteInfo = FBReactNativeSpec; + remoteGlobalIDString = A83ECDA5673771FA0BA282EBF729692B; + remoteInfo = RNFirebase; }; 13791CBAE3B4CCAF1FC636BA2BBD9DE4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2164,13 +2289,6 @@ remoteGlobalIDString = F7845084F0CF03F54107EEF7411760AD; remoteInfo = UMPermissionsInterface; }; - 181FB338D96357AC053FCCF2E154D0BE /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1953860EA9853AA2BC8022B242F08512; - remoteInfo = SDWebImageWebPCoder; - }; 185B11EB8A27612A9B75BAA1ACDFBF0A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2178,48 +2296,13 @@ remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; - 18C0E297199B88DF61080C55F0ED5D91 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D0EFEFB685D97280256C559792236873; - remoteInfo = glog; - }; - 1B24397AAA61D5997ED3C946B22A9C7C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B53D977A951AFC38B21751B706C1DF83; - remoteInfo = GoogleAppMeasurement; - }; - 1B41BA61DB20B05AE8C29E182A53214E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 96150F524B245896B800F84F369A9A5A; - remoteInfo = RNVectorIcons; - }; - 1B79B5551993EED6A2BF0FFD795171BD /* PBXContainerItemProxy */ = { + 1AEF2AE5DA4BA57F6D0DD29D48C9BBB4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 11989A5E568B3B69655EE0C13DCDA3F9; remoteInfo = "React-RCTActionSheet"; }; - 1B8D1B0DAC080E3B195827A9996B9FCC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = E16E206437995280D349D4B67695C894; - remoteInfo = "React-CoreModules"; - }; - 1C0D4EDE54700E03EE76BD4564618F44 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0BB7745637E0758DEA373456197090C6; - remoteInfo = RNFastImage; - }; 1C84D35F43BF9C71C2EEE3812CDC5C8D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2227,40 +2310,19 @@ remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; - 1D8EDBE4862F1172B067616AE92BC536 /* PBXContainerItemProxy */ = { + 1FE04A47AEB6F607229B2DC802EFC625 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; - remoteInfo = RCTTypeSafety; + remoteGlobalIDString = 7573B71C21FB5F78D28A1F4A184A6057; + remoteInfo = "react-native-keyboard-input"; }; - 1DF35873D24AE2A4B161722573B5E51D /* PBXContainerItemProxy */ = { + 1FE0D22DE8F2CC26E4B8CDC4387197BD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = EAB05A8BED2CAC923712E1C584AEB299; - remoteInfo = "react-native-keyboard-tracking-view"; - }; - 1E6145CFB733B7389B3BA81B9496EE61 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = FF879E718031128A75E7DE54046E6219; - remoteInfo = RNReanimated; - }; - 1E7A4AD5FBA09FE19600612F7B68B50F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 214E42634D1E187D876346D36184B655; - remoteInfo = RNScreens; - }; - 1FD068163D38F2DB2240805C8E64EBE1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 938CCE22F6C4094B3FB6CF1478579E4B; - remoteInfo = "React-RCTAnimation"; + remoteGlobalIDString = B51433D546A38C51AA781F192E8836F8; + remoteInfo = RNLocalize; }; 201C6A1323C6921817533893269BBE9D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2269,6 +2331,13 @@ remoteGlobalIDString = A4F685BE3CAC127BDCE4E0DBBD88D191; remoteInfo = Folly; }; + 20E42A4C64C9DEE2C403CFD800A4D82C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1092C13E1E1172209537C28D0C8D4D3C; + remoteInfo = "react-native-orientation-locker"; + }; 21B7FFD1A14C9DCA797642821E09A7B1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2276,13 +2345,6 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - 226291D00695774450BE39CA7E709FE2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 96150F524B245896B800F84F369A9A5A; - remoteInfo = RNVectorIcons; - }; 2284921B4FC397971FFFACC555D01A18 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2304,12 +2366,26 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - 269E3E717CF09543FA138376C554E3F1 /* PBXContainerItemProxy */ = { + 258A8397F14A28249384A9BF4FC04D81 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D39AB631E8050865DE01F6D5678797D2; - remoteInfo = "react-native-jitsi-meet"; + remoteGlobalIDString = 2AD4F40E67E1874A0816F6B34289EB41; + remoteInfo = UMFaceDetectorInterface; + }; + 25911D74E71C182E5A343DC800E7A898 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3FF2E78BB54ED67CA7FAD8DA2590DBEE; + remoteInfo = "react-native-appearance"; + }; + 260FF0C211C41ACD759800FFA5607DA5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6514D69CB93B41626AE1A05581F97B07; + remoteInfo = "react-native-background-timer"; }; 273EEB006344CBC3B742234147B60471 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2318,19 +2394,26 @@ remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; - 29C8498BA9401C29DCEB36F24BA3D821 /* PBXContainerItemProxy */ = { + 2780BD4584CC03A2C6BCC1EAC4906996 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6514D69CB93B41626AE1A05581F97B07; - remoteInfo = "react-native-background-timer"; + remoteGlobalIDString = 95D98F901D07557EF7CA38D3F03832C5; + remoteInfo = "React-RCTBlob"; }; - 2AA6341385C9D7D36A09008D60E9A168 /* PBXContainerItemProxy */ = { + 289A08A83D21C8D9229C70B1C32B13AC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B53D977A951AFC38B21751B706C1DF83; - remoteInfo = GoogleAppMeasurement; + remoteGlobalIDString = ABB048B191245233986A7CD75FE412A5; + remoteInfo = Fabric; + }; + 2A128C5EADDBD55C6224A11EB064A4EB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 807428FE76D80865C9F59F3502600E89; + remoteInfo = RNDeviceInfo; }; 2AB4E316E2673B76ACA537189D619922 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2339,12 +2422,19 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - 2B097729BC2B2F4114F1A5FAE154F4C0 /* PBXContainerItemProxy */ = { + 2AF0B10DBE76D0FEE52E5C20C9D9D14E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6FE9147F8AAA4DE676C190F680F47AE2; - remoteInfo = "React-RCTLinking"; + remoteGlobalIDString = 938CCE22F6C4094B3FB6CF1478579E4B; + remoteInfo = "React-RCTAnimation"; + }; + 2AF3E62F6A3C8DFFC033624C8B125A17 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5B40FBDAD0AB75D17C4760F4054BFF71; + remoteInfo = JitsiMeetSDK; }; 2BA87C80F636B0480FC09D41CB82927A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2360,54 +2450,40 @@ remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; remoteInfo = RCTRequired; }; - 2DFAC70FFB58083A50BFD74B8CBF7CB0 /* PBXContainerItemProxy */ = { + 2CD0E8A1AA347D1C3EDBCE86CCD40E82 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C49E7A4D59E5C8BE8DE9FB1EFB150185; - remoteInfo = FirebaseAnalytics; + remoteGlobalIDString = 6FE9147F8AAA4DE676C190F680F47AE2; + remoteInfo = "React-RCTLinking"; }; - 2EA7DE3C4E6319549E4C6A2EDEB40C37 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 620E05868772C10B4920DC7E324F2C87; - remoteInfo = FirebaseCoreDiagnostics; - }; - 2FE2C35337A08515922901E0BF777825 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = ABB048B191245233986A7CD75FE412A5; - remoteInfo = Fabric; - }; - 307ABBF2B56D8DE9A4765909763281AA /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0BB7745637E0758DEA373456197090C6; - remoteInfo = RNFastImage; - }; - 30F5CE6A0AA7FCC1E9DA1213EF8E04CE /* PBXContainerItemProxy */ = { + 2DBAEF48EE5A15463102EC32C77A0EA5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 651511D7DA7F07F9FC9AA40A2E86270D; remoteInfo = "React-RCTNetwork"; }; - 31CE8D75B1A3392204FC1D0E200F8389 /* PBXContainerItemProxy */ = { + 3003CE0CFABA4E201818060DE26E35D6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A83ECDA5673771FA0BA282EBF729692B; - remoteInfo = RNFirebase; + remoteGlobalIDString = 6677891AC2F7AB93E04BFF30B293A46B; + remoteInfo = RNBootSplash; }; - 328188725A5709DCD846ABC6008CA4A4 /* PBXContainerItemProxy */ = { + 30E96D162736BFA144F7B293FB7C9DBF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5EB4B0B6DA6D5C0C3365733BEAA1C485; - remoteInfo = FirebaseCoreDiagnosticsInterop; + remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; + remoteInfo = "React-Core"; + }; + 311444313BA6A2014AF61E6FFCF67BB4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A4EF87F5681665EAE943D9B06BBB17DF; + remoteInfo = "react-native-slider"; }; 32EDED458FEDBDD31B9D588BD688E1DA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2416,6 +2492,20 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; + 33023E1C4E6C76195C27F42572686F64 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 96150F524B245896B800F84F369A9A5A; + remoteInfo = RNVectorIcons; + }; + 34945DBE51A7FFBE83F1A909BA9BBCD4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 18B56DB36E1F066C927E49DBAE590128; + remoteInfo = RNRootView; + }; 34B556DF76EB14506DA19B1213547A54 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2423,6 +2513,13 @@ remoteGlobalIDString = A4F685BE3CAC127BDCE4E0DBBD88D191; remoteInfo = Folly; }; + 34B899E191E550D8A27D0EAFE85C00A6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A30157FD17984D82FB7B26EE61267BE2; + remoteInfo = RSKImageCropper; + }; 3567AD7E2B44760020C17476D70D0A0F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2430,19 +2527,19 @@ remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; - 35E83C6752758A15697A5C0764818779 /* PBXContainerItemProxy */ = { + 359EA94CC30F8F650A8B75B2C0AC731C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5C0371EE948D0357B8EE0E34ABB44BF0; - remoteInfo = GoogleDataTransport; + remoteGlobalIDString = D0EFEFB685D97280256C559792236873; + remoteInfo = glog; }; - 36FF4ADDD6EB9814501A10DE7E7E4C4F /* PBXContainerItemProxy */ = { + 37562607B50897FB3AAA234B8CC037CC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; - remoteInfo = "React-jsiexecutor"; + remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; + remoteInfo = FirebaseInstanceID; }; 386C0EB352726BA92F7F015C2FB264EF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2451,47 +2548,26 @@ remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; remoteInfo = RCTTypeSafety; }; - 3944CB563B3BC5309021CA988FB39A42 /* PBXContainerItemProxy */ = { + 3A87B12C316BC1DE6A35D15571BD605F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6; - remoteInfo = "React-RCTText"; + remoteGlobalIDString = D11E74324175FE5B0E78DB046527F233; + remoteInfo = "react-native-document-picker"; }; - 3AB947A007E4632E142CA898AB5D7D56 /* PBXContainerItemProxy */ = { + 3B1E2FFD930C86F3A634F797B87CDDE6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; - remoteInfo = SDWebImage; + remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; + remoteInfo = React; }; - 3B1392E067C3E6A9242A6A3D71BAA7CF /* PBXContainerItemProxy */ = { + 3D45E3DCD38109B38F5BA73AFDB65794 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 868B90C74770285449C60DBA82181479; - remoteInfo = EXFileSystem; - }; - 3BCA64347C6160D30C274D72A09D9586 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; - remoteInfo = FirebaseInstanceID; - }; - 3C16780A980340108ED15E3B431DF62B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4F265533AAB7C8985856EC78A33164BB; - remoteInfo = "React-RCTImage"; - }; - 3C43C5DEE85968F10ED7D2A1163F91DA /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 680299219D3A48D42A648AF6706275A9; - remoteInfo = "React-RCTSettings"; + remoteGlobalIDString = 072CEA044D2EF26F03496D5996BBF59F; + remoteInfo = Firebase; }; 3DA6710AAE682E070695F228266936B7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2500,13 +2576,6 @@ remoteGlobalIDString = DBCB1B4965863DDD3B9DED9A0918A526; remoteInfo = UMCore; }; - 3DB931A9B45692A33690F47416BD6AB8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4F265533AAB7C8985856EC78A33164BB; - remoteInfo = "React-RCTImage"; - }; 3E2073FF56543FDA76EFCC77A1820700 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2514,19 +2583,19 @@ remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; - 3E7EB2B3FB38137993A296AF74F3CA0B /* PBXContainerItemProxy */ = { + 3F4F12258A82B74ED2F57C69A1682A4F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F4F25FCAC51B51FD5F986EB939BF1F87; - remoteInfo = GoogleDataTransportCCTSupport; + remoteGlobalIDString = 3E5D106F8D3D591BD871408EEE0CC9FD; + remoteInfo = "react-native-video"; }; - 40722E20ED16E33A140CF7C78FC8B72A /* PBXContainerItemProxy */ = { + 4052CAB14C9BD969914BCFD1C7AF2E4E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7F591BD8674041AAAA4F37DC699B5518; - remoteInfo = KeyCommands; + remoteGlobalIDString = 5C0371EE948D0357B8EE0E34ABB44BF0; + remoteInfo = GoogleDataTransport; }; 4081F7E82AA90518127218043568BD4D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2542,33 +2611,12 @@ remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; - 425A35FF1C349923FBC60860170E6F98 /* PBXContainerItemProxy */ = { + 44753E3EBCF35182E49DBD8BB2D0B7F4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; - remoteInfo = RCTRequired; - }; - 43D3ABCC883084F535FB4C94AE270B17 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 90148E8FD1C445D7A019D504FA8CBC53; - remoteInfo = ReactNativeART; - }; - 444BCD6C8D99EC76E2B7CA594F0CDDEE /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 64F427905796B33B78A704063422979D; - remoteInfo = "rn-fetch-blob"; - }; - 4470DF690078CCCFC5A0E26F8E95B5C8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5B40FBDAD0AB75D17C4760F4054BFF71; - remoteInfo = JitsiMeetSDK; + remoteGlobalIDString = 449C1066B8C16DEDB966DCB632828E44; + remoteInfo = RNAudio; }; 449D79087AC8EFD285D3D6948D363A86 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2591,13 +2639,6 @@ remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; remoteInfo = GoogleUtilities; }; - 4615FE0733428BB0AA78E2EFE9089DE0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; - remoteInfo = ReactCommon; - }; 46C8DE13FECE137E1DF29D2657A15C93 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2605,19 +2646,12 @@ remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; remoteInfo = "React-cxxreact"; }; - 47450B6D8E3C6D80282F4B95884C03AE /* PBXContainerItemProxy */ = { + 4743F5C525F4A9B01FCE9ACA806C49D7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 64F427905796B33B78A704063422979D; - remoteInfo = "rn-fetch-blob"; - }; - 4847E3B18791FE6E3E94AA5781F3C219 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; - remoteInfo = "React-jsinspector"; + remoteGlobalIDString = 0A72FB88825FDC7D301C9DD1F8F96824; + remoteInfo = EXPermissions; }; 48FF23C1BE2FC883261B458A2FEFC1BB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2626,47 +2660,40 @@ remoteGlobalIDString = ED2506AE7DE35D654F61254441EA7155; remoteInfo = "boost-for-react-native"; }; - 4936892D09C4323AC6969A3CBC57E9AC /* PBXContainerItemProxy */ = { + 4A09F92DF3D7CFFABAD97A7AC61BF36F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C49E7A4D59E5C8BE8DE9FB1EFB150185; - remoteInfo = FirebaseAnalytics; + remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; + remoteInfo = ReactCommon; }; - 49CBCEEC7CD88EA79F05EF04B91304B4 /* PBXContainerItemProxy */ = { + 4C78244180223E12D59ED12231A1567B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0D82774D2A533D3FFAE27CAB4A6E9CB2; - remoteInfo = RNImageCropPicker; + remoteGlobalIDString = 97C4DE84FA3CC4EC06AA6D8C249949B7; + remoteInfo = UMImageLoaderInterface; }; - 49F05BDCFA402317EFCE4D988B52E30F /* PBXContainerItemProxy */ = { + 4E10E94546B9897329BB7132343AC50E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 3E5D106F8D3D591BD871408EEE0CC9FD; - remoteInfo = "react-native-video"; + remoteGlobalIDString = A4F685BE3CAC127BDCE4E0DBBD88D191; + remoteInfo = Folly; }; - 4B1239845E12FE3A6B2DCCA12A519B10 /* PBXContainerItemProxy */ = { + 4E1A7F06A2ADFDF1CD0745680382112F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = BA3F5E5AA483B263B69601DE2FA269CB; - remoteInfo = "react-native-cameraroll"; + remoteGlobalIDString = 651511D7DA7F07F9FC9AA40A2E86270D; + remoteInfo = "React-RCTNetwork"; }; - 4D75BDE4708454F4909FB10307068841 /* PBXContainerItemProxy */ = { + 4EAA4F1B761AA4477A3B6D54C852EFD2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A30157FD17984D82FB7B26EE61267BE2; - remoteInfo = RSKImageCropper; - }; - 4E8A822A3AC1F62151AB71510CEE0B28 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 49821C2B9E764AEDF2B35DFE9AA7022F; - remoteInfo = UMBarCodeScannerInterface; + remoteGlobalIDString = B9E8F4CA2A4A8599389FEB665A9B96FF; + remoteInfo = RNGestureHandler; }; 4F47ACA22456ABDDC1033CCE85E508AC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2682,40 +2709,19 @@ remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; - 5027C7B0A8DA8D038D576E67EEF5780B /* PBXContainerItemProxy */ = { + 5062F87E3425DACD2975174B3E87F828 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = E16E206437995280D349D4B67695C894; - remoteInfo = "React-CoreModules"; + remoteGlobalIDString = B53D977A951AFC38B21751B706C1DF83; + remoteInfo = GoogleAppMeasurement; }; - 50D43378AB82F90A88B706CDDC8BB391 /* PBXContainerItemProxy */ = { + 509A25B05A998CAB3B86A6C80C7B78C7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = ABB048B191245233986A7CD75FE412A5; - remoteInfo = Fabric; - }; - 5133F757B57EAC5EB436A3997C0C2D4E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 620E05868772C10B4920DC7E324F2C87; - remoteInfo = FirebaseCoreDiagnostics; - }; - 519F2E56F6C82B6DBBE5AC50E62CD74B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 11989A5E568B3B69655EE0C13DCDA3F9; - remoteInfo = "React-RCTActionSheet"; - }; - 52C37EC013797E043C65843C8114B04B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D39AB631E8050865DE01F6D5678797D2; - remoteInfo = "react-native-jitsi-meet"; + remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; + remoteInfo = "React-jsinspector"; }; 52D75569EE8B532085465A5470C6C390 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2724,12 +2730,12 @@ remoteGlobalIDString = 5B40FBDAD0AB75D17C4760F4054BFF71; remoteInfo = JitsiMeetSDK; }; - 53B0D573801F04727A5968A24DCEDB3A /* PBXContainerItemProxy */ = { + 5395F90884A47A1667129CA57D99C81B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6C1893932A69822CBE3502F2E0BCFB6D; - remoteInfo = EXConstants; + remoteGlobalIDString = 1953860EA9853AA2BC8022B242F08512; + remoteInfo = SDWebImageWebPCoder; }; 53E2A1BD19729C2293AB46582C686251 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2738,6 +2744,13 @@ remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; remoteInfo = GoogleUtilities; }; + 53FC24855C50722674F55D40910C81FF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A238B7CE3865946D1F214E1FE0023AAE; + remoteInfo = "rn-extensions-share"; + }; 54A7BA384E80D5DB0269C827877FE175 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2759,12 +2772,19 @@ remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; remoteInfo = ReactCommon; }; - 57F3D7487917ADFE4B6C3F7DBECD5F8F /* PBXContainerItemProxy */ = { + 5608A6BF20D6576488E0EDF4CEFB7DD0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A4F685BE3CAC127BDCE4E0DBBD88D191; - remoteInfo = Folly; + remoteGlobalIDString = 9668C19AA6D8EA320F83875FA286855A; + remoteInfo = UMConstantsInterface; + }; + 58360103A4685F1FC533E6975ECE3A1A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 072CEA044D2EF26F03496D5996BBF59F; + remoteInfo = Firebase; }; 592671C6C3F74111AF89BE688E45B730 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2773,13 +2793,6 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - 592693EA8C81FF03676E6A02CFA16F14 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 53D121F9F9BB0F8AC1C94A12C5A8572F; - remoteInfo = "React-RCTVibration"; - }; 59A6F7E541C545C99CA82678B8F26212 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2787,19 +2800,19 @@ remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; remoteInfo = SDWebImage; }; - 59C6F419D816DC8DE859BF6E48A82937 /* PBXContainerItemProxy */ = { + 5A0F6C220AC62BB06E8E539C2964827A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 95D98F901D07557EF7CA38D3F03832C5; - remoteInfo = "React-RCTBlob"; + remoteGlobalIDString = D11E74324175FE5B0E78DB046527F233; + remoteInfo = "react-native-document-picker"; }; - 5B62530741BD5714CD56AF19839463F3 /* PBXContainerItemProxy */ = { + 5B02AC67DF7749672C3EC5E587C212E1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8D18C49071FC5370C25F5758A85BA5F6; - remoteInfo = "react-native-webview"; + remoteGlobalIDString = A4EF87F5681665EAE943D9B06BBB17DF; + remoteInfo = "react-native-slider"; }; 5BE488B88EB1D7B8BFE4A63D278D4B18 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2808,12 +2821,12 @@ remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; remoteInfo = GoogleUtilities; }; - 5DC25A1D4E918E1675990CA1D8A67BC5 /* PBXContainerItemProxy */ = { + 5D1C4C458C07B47F9BC6C0A5DFDBE063 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 1953860EA9853AA2BC8022B242F08512; - remoteInfo = SDWebImageWebPCoder; + remoteGlobalIDString = B51433D546A38C51AA781F192E8836F8; + remoteInfo = RNLocalize; }; 5EED9A44D7E37951C7239080722062AE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2829,12 +2842,33 @@ remoteGlobalIDString = DBCB1B4965863DDD3B9DED9A0918A526; remoteInfo = UMCore; }; - 63D13802311B32160BD8F47452967D30 /* PBXContainerItemProxy */ = { + 60630CC2B00EAB9D8A1BC762FFB41D39 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 449C1066B8C16DEDB966DCB632828E44; - remoteInfo = RNAudio; + remoteGlobalIDString = 4F265533AAB7C8985856EC78A33164BB; + remoteInfo = "React-RCTImage"; + }; + 624D5463A171605B3F0B27633E665AEE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5EB4B0B6DA6D5C0C3365733BEAA1C485; + remoteInfo = FirebaseCoreDiagnosticsInterop; + }; + 62A3D4CB40B5239F302231D9BBD6A514 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A4F685BE3CAC127BDCE4E0DBBD88D191; + remoteInfo = Folly; + }; + 6404AE86A87872E52988F326C02191A7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D39AB631E8050865DE01F6D5678797D2; + remoteInfo = "react-native-jitsi-meet"; }; 6423924A022902547DBE5FC8EF93BD4D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2843,6 +2877,27 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; + 64B59A3FC9646E9AB5AAA4526335D35A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; + remoteInfo = "React-jsiexecutor"; + }; + 64B88427BBB54EB31630CBC9F9F45734 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; + remoteInfo = RCTRequired; + }; + 651F05EC0CBAA42D2F76B418000D2F50 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; + }; 65685AEAE3C8051C0DE124A6E5ACB197 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2850,12 +2905,47 @@ remoteGlobalIDString = A4F685BE3CAC127BDCE4E0DBBD88D191; remoteInfo = Folly; }; - 671DF5E465C47266E89D2307072898C5 /* PBXContainerItemProxy */ = { + 664305143120C85CB1EC5CBECA113FCE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; - remoteInfo = GoogleUtilities; + remoteGlobalIDString = EAB05A8BED2CAC923712E1C584AEB299; + remoteInfo = "react-native-keyboard-tracking-view"; + }; + 66882DD906C9CBF33A822B0F489B5493 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3E5D106F8D3D591BD871408EEE0CC9FD; + remoteInfo = "react-native-video"; + }; + 66CA566BF093B4FA85B1B5D4D953BBDA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F4F25FCAC51B51FD5F986EB939BF1F87; + remoteInfo = GoogleDataTransportCCTSupport; + }; + 6780FCC3E3B1FB8609F422FACA1C15D8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C49E7A4D59E5C8BE8DE9FB1EFB150185; + remoteInfo = FirebaseAnalytics; + }; + 67DBA14725D781CE21CD917340667E43 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 620E05868772C10B4920DC7E324F2C87; + remoteInfo = FirebaseCoreDiagnostics; + }; + 6873AED1169D89D27AA52E2D17A63F02 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; + remoteInfo = FirebaseInstanceID; }; 69B6897572B545367799A5E51AFE075D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2878,54 +2968,33 @@ remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; remoteInfo = RCTRequired; }; - 6A594DC7B924CE27B59981A75BF166DB /* PBXContainerItemProxy */ = { + 6BA468018F66C1D47DAEA3ECC88158D1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; - remoteInfo = SDWebImage; + remoteGlobalIDString = 87803597EB3F20FC46472B85392EC4FD; + remoteInfo = FirebaseInstallations; }; - 6B353BDDA4C3E6B73BAC65854BC4EE5A /* PBXContainerItemProxy */ = { + 6D3BF89DF4987F4669AD095F4AB5877B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 938CCE22F6C4094B3FB6CF1478579E4B; - remoteInfo = "React-RCTAnimation"; + remoteGlobalIDString = C3496D0495E700CF08A90C41EA8FA4BB; + remoteInfo = FBReactNativeSpec; }; - 6BE17AD7C555AE1C5F07FCC65FFEEBC3 /* PBXContainerItemProxy */ = { + 6DBD6F286817EB85A8F0BB2E8D08F4D9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A4EF87F5681665EAE943D9B06BBB17DF; - remoteInfo = "react-native-slider"; + remoteGlobalIDString = 0D82774D2A533D3FFAE27CAB4A6E9CB2; + remoteInfo = RNImageCropPicker; }; - 6CFB67BBFCAC8C342352DF567A778A75 /* PBXContainerItemProxy */ = { + 6E35ABFC7C526875A427967F1D14FA79 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 53D121F9F9BB0F8AC1C94A12C5A8572F; - remoteInfo = "React-RCTVibration"; - }; - 6DBAA7D492F6913D24F58658F0948574 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; - remoteInfo = "React-jsinspector"; - }; - 6EC5D99CB7C92E00E2D0CACD98349692 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B9E8F4CA2A4A8599389FEB665A9B96FF; - remoteInfo = RNGestureHandler; - }; - 6F4298251BA281F74B8663156C4EA0E1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 6514D69CB93B41626AE1A05581F97B07; - remoteInfo = "react-native-background-timer"; + remoteGlobalIDString = 214E42634D1E187D876346D36184B655; + remoteInfo = RNScreens; }; 70056FCB7FB870FB7D91F161A3B6F84F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2934,26 +3003,33 @@ remoteGlobalIDString = C0E41540D6862472ED7F2FA11669BE1F; remoteInfo = Crashlytics; }; - 70506A22AE25BDD58151B717B0F4C22F /* PBXContainerItemProxy */ = { + 702C6F3D5E323B675431CD28EE281130 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; - remoteInfo = FirebaseCore; + remoteGlobalIDString = 2B25F90D819B9ADF2AF2D8733A890333; + remoteInfo = Yoga; }; - 709C87ADB203D2D492FF3D76F91A489C /* PBXContainerItemProxy */ = { + 70C8D8D121922CA292DF26257F5999A6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5EB4B0B6DA6D5C0C3365733BEAA1C485; - remoteInfo = FirebaseCoreDiagnosticsInterop; + remoteGlobalIDString = CA400829100F0628EC209FBB08347D42; + remoteInfo = "react-native-notifications"; }; - 71E5C85C32D32F1F04C800D5A703C49A /* PBXContainerItemProxy */ = { + 710F83D4741765BB006C7714AF8916F4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F4F25FCAC51B51FD5F986EB939BF1F87; - remoteInfo = GoogleDataTransportCCTSupport; + remoteGlobalIDString = 64F427905796B33B78A704063422979D; + remoteInfo = "rn-fetch-blob"; + }; + 71EAF1F82ABDB2312E75886AC46D971D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2B8C13513C1F6D610976B0C8F4402EC1; + remoteInfo = EXAppLoaderProvider; }; 729C920815C311E1D586861019E10612 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2962,12 +3038,12 @@ remoteGlobalIDString = 5EB4B0B6DA6D5C0C3365733BEAA1C485; remoteInfo = FirebaseCoreDiagnosticsInterop; }; - 72FFCE6D24CC5C292B2C863ED19A3550 /* PBXContainerItemProxy */ = { + 72BA40B770DA5833CCF0311FC19A9669 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; - remoteInfo = "React-cxxreact"; + remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; + remoteInfo = "React-jsi"; }; 7376C532C4FB647A107D7FD9698C24E8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -2976,20 +3052,6 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - 73CE57915F8A37491D19934C8E3E3376 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D11E74324175FE5B0E78DB046527F233; - remoteInfo = "react-native-document-picker"; - }; - 742668A6152D4A35E1CF8DA490FF864D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; - remoteInfo = "React-Core"; - }; 74C2CAAD882619C327EBDCCC07631937 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2997,26 +3059,12 @@ remoteGlobalIDString = ABB048B191245233986A7CD75FE412A5; remoteInfo = Fabric; }; - 7545D1E8732C8A669C329263632A2F9C /* PBXContainerItemProxy */ = { + 76EEA5F62CC441995D555175CAB0A477 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A238B7CE3865946D1F214E1FE0023AAE; - remoteInfo = "rn-extensions-share"; - }; - 75A19794D437B8D5F82DF2363871A104 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = E7E7CE52C8C68B17224FF8C262D80ABF; - remoteInfo = RCTRequired; - }; - 76CE472186ECE30C9667447E3C9E2A37 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 807428FE76D80865C9F59F3502600E89; - remoteInfo = RNDeviceInfo; + remoteGlobalIDString = 90148E8FD1C445D7A019D504FA8CBC53; + remoteInfo = ReactNativeART; }; 77650DB9BCD15D3DBD659DF4437F2533 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3025,33 +3073,12 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - 777A11160F4CB70685296C76EFEE6F3E /* PBXContainerItemProxy */ = { + 7A9D426F64FA97581C779ECB7FA9F4E1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C3496D0495E700CF08A90C41EA8FA4BB; - remoteInfo = FBReactNativeSpec; - }; - 78168902AF542C6B44CAADD59C45B2B9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7F591BD8674041AAAA4F37DC699B5518; - remoteInfo = KeyCommands; - }; - 790A470EFDD88EEDCB39C9CD7DC4A0AE /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2B25F90D819B9ADF2AF2D8733A890333; - remoteInfo = Yoga; - }; - 7946027880C17CF9583C761D484F3230 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2B8C13513C1F6D610976B0C8F4402EC1; - remoteInfo = EXAppLoaderProvider; + remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; + remoteInfo = DoubleConversion; }; 7AEA5761B26CAEF1A0C0E82599059DA8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3060,20 +3087,6 @@ remoteGlobalIDString = C49E7A4D59E5C8BE8DE9FB1EFB150185; remoteInfo = FirebaseAnalytics; }; - 7B199FB4BE2CA58EA743C45D6609AC0F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = A238B7CE3865946D1F214E1FE0023AAE; - remoteInfo = "rn-extensions-share"; - }; - 7BCA53A464C3341E7A7D4AE499BBCE86 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 47D2E85A78C25869BB13521D8561A638; - remoteInfo = libwebp; - }; 7C309567C8843AC36F40EF4B09960A84 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3088,20 +3101,6 @@ remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; - 7CF567BF0FF9A2CA68F9268723F55DD6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0A915EE9D35CA5636731F8763E774951; - remoteInfo = UMCameraInterface; - }; - 7D27ED6567EFD4F81531C72772720B9C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 014495932E402CA67C37681988047CA2; - remoteInfo = UMFontInterface; - }; 7DFBE4295EB2D14288E99BCD22619405 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3116,6 +3115,13 @@ remoteGlobalIDString = DBCB1B4965863DDD3B9DED9A0918A526; remoteInfo = UMCore; }; + 7F6BCE1FCB2DA325D8B2F8D14FD0C377 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6FE9147F8AAA4DE676C190F680F47AE2; + remoteInfo = "React-RCTLinking"; + }; 8075D3C81C368FF63B92A7E7DC84BF6B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3130,26 +3136,40 @@ remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; - 83885E57E5842582AE0EBE125C789C86 /* PBXContainerItemProxy */ = { + 832315DA7CF7E5E93C27A1A2AC92539D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5EB4B0B6DA6D5C0C3365733BEAA1C485; + remoteInfo = FirebaseCoreDiagnosticsInterop; + }; + 84CC847608D716DF5F58801CA1B69006 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F7845084F0CF03F54107EEF7411760AD; remoteInfo = UMPermissionsInterface; }; - 851BFC34B414575929C9D05C084A883F /* PBXContainerItemProxy */ = { + 85155193C1E80D9813179026CB73182C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 1092C13E1E1172209537C28D0C8D4D3C; - remoteInfo = "react-native-orientation-locker"; + remoteGlobalIDString = 90148E8FD1C445D7A019D504FA8CBC53; + remoteInfo = ReactNativeART; }; - 864D1D6DAA9D95E786FD868C53C055B9 /* PBXContainerItemProxy */ = { + 861146BBBDF6493BE7981140D74FCF30 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; - remoteInfo = DoubleConversion; + remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; + remoteInfo = "React-cxxreact"; + }; + 8682ED8EA82D197A9F6CB758340ABF9E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C0E41540D6862472ED7F2FA11669BE1F; + remoteInfo = Crashlytics; }; 86FBD5BA95718ED6238A8919F42616C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3158,19 +3178,19 @@ remoteGlobalIDString = 014495932E402CA67C37681988047CA2; remoteInfo = UMFontInterface; }; - 87197B34A43BDFD610E82071C7C49838 /* PBXContainerItemProxy */ = { + 876F633EF64F3B86DDACB4D9765F88C3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 3FF2E78BB54ED67CA7FAD8DA2590DBEE; - remoteInfo = "react-native-appearance"; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; }; - 87802E74B4233E83A705E90C847E767D /* PBXContainerItemProxy */ = { + 878C9C18439BE6DA5F4652C3D8CC13AA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6677891AC2F7AB93E04BFF30B293A46B; - remoteInfo = RNBootSplash; + remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; + remoteInfo = GoogleUtilities; }; 882BEE9E8FCF0A6BD665F01DFBEF822B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3179,33 +3199,12 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - 8A1B4551FBF8F550985B968E5FB22C8C /* PBXContainerItemProxy */ = { + 8B7A5156DF566192088634AF35396110 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6677891AC2F7AB93E04BFF30B293A46B; - remoteInfo = RNBootSplash; - }; - 8BF89A917095D5157744CA3A3DDF0694 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = A4F685BE3CAC127BDCE4E0DBBD88D191; - remoteInfo = Folly; - }; - 8C00AF0CF0FFBD1F03F368E59C0C6E49 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 214E42634D1E187D876346D36184B655; - remoteInfo = RNScreens; - }; - 8CD02B7BC7B52B650E994D6784D8F231 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7573B71C21FB5F78D28A1F4A184A6057; - remoteInfo = "react-native-keyboard-input"; + remoteGlobalIDString = 8D18C49071FC5370C25F5758A85BA5F6; + remoteInfo = "react-native-webview"; }; 8CD598B3122E1B5D5E0411E9F8DFF385 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3221,19 +3220,12 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - 8D166E6DC97E66ECE4E146F8606FDF64 /* PBXContainerItemProxy */ = { + 8F2CFEAA002887A4B7BB9024FB93494D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A4EF87F5681665EAE943D9B06BBB17DF; - remoteInfo = "react-native-slider"; - }; - 8D5515BBE0F7514C77BE5CBE42628BE0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; - remoteInfo = React; + remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; + remoteInfo = "React-jsiexecutor"; }; 8F8D97FDA93DF806279F1C90D2E34F62 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3242,12 +3234,12 @@ remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; - 909FB4CB16E83CBC6C773C2E99E03EBD /* PBXContainerItemProxy */ = { + 8FFD687A453F165F91B1F31CE9DFE81D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7573B71C21FB5F78D28A1F4A184A6057; - remoteInfo = "react-native-keyboard-input"; + remoteGlobalIDString = BA3F5E5AA483B263B69601DE2FA269CB; + remoteInfo = "react-native-cameraroll"; }; 914920FE125E08820136442E6C40FF7E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3256,27 +3248,6 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - 91E7BE7B7B4A92B30DDEEDB1C61491FF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 18B56DB36E1F066C927E49DBAE590128; - remoteInfo = RNRootView; - }; - 920BBBF84113CAE19E321EAAFE6546B4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D760AF58E12ABBB51F84160FB02B5F39; - remoteInfo = RNDateTimePicker; - }; - 9221682DEFC433F52DC9D6667B00E8E1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; - remoteInfo = "React-jsi"; - }; 925B94B36D67D27AF51664D1645EC2F7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3284,20 +3255,6 @@ remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; remoteInfo = SDWebImage; }; - 9340DA83B0AFC57D4B646B1D26FA2D4E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 072CEA044D2EF26F03496D5996BBF59F; - remoteInfo = Firebase; - }; - 952D8D95F99846648150A4D15014D3F0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; - remoteInfo = RCTTypeSafety; - }; 95BD7607104E910918F88DD81F19B1C1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3305,13 +3262,6 @@ remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; remoteInfo = DoubleConversion; }; - 96666480DE980C58BDF3B02926F87595 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; - remoteInfo = FirebaseCore; - }; 973587FD3243D488ACC2A2CBA4B833BD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3326,6 +3276,13 @@ remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; + 983769B972D449DD11ECFD3E4D1FC206 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D18C49071FC5370C25F5758A85BA5F6; + remoteInfo = "react-native-webview"; + }; 983AD1895C24585DEA95A1E14A0A74C6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3340,12 +3297,12 @@ remoteGlobalIDString = 651511D7DA7F07F9FC9AA40A2E86270D; remoteInfo = "React-RCTNetwork"; }; - 9A0FD7307742DE0CDECD4DBA15DA10B5 /* PBXContainerItemProxy */ = { + 9A0CEFC37F7290AD4EF3227A3F94498C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 9E25537BF40D1A3B30CF43FD3E6ACD94; - remoteInfo = FirebaseInstanceID; + remoteGlobalIDString = 1953860EA9853AA2BC8022B242F08512; + remoteInfo = SDWebImageWebPCoder; }; 9A2D94180C1D8549B209C4F116F4FC88 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3354,6 +3311,13 @@ remoteGlobalIDString = DBCB1B4965863DDD3B9DED9A0918A526; remoteInfo = UMCore; }; + 9A311C098C9D56A95F8DAF2BC014857C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2644525CCE081E967809A8163D893A93; + remoteInfo = UMFileSystemInterface; + }; 9AC1F06D86A0940CBEDC84127390E31D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3361,6 +3325,13 @@ remoteGlobalIDString = F7D033C4C128EECAA020990641FA985F; remoteInfo = "React-jsinspector"; }; + 9ACA162B718D14B964339F384832032A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 409F3A0DB395F53FFB6AB30E5CD8ACD1; + remoteInfo = EXHaptics; + }; 9B2BFB5DEFEF28F0C14CFF2FE14B9160 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3368,19 +3339,12 @@ remoteGlobalIDString = 95D98F901D07557EF7CA38D3F03832C5; remoteInfo = "React-RCTBlob"; }; - 9BF5924BA9D17A4904D3454D2A86CF70 /* PBXContainerItemProxy */ = { + 9E0918D934503C7C632F36B2407BE0F4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; - remoteInfo = nanopb; - }; - 9DA910A181B4EDFFC52A91B769656CDF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; - remoteInfo = "React-jsi"; + remoteGlobalIDString = 4F265533AAB7C8985856EC78A33164BB; + remoteInfo = "React-RCTImage"; }; 9EEE23D6519FCEE6884F6DF117317D7A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3389,12 +3353,19 @@ remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; - 9FBE29897B10BA3238B4E77375E53B48 /* PBXContainerItemProxy */ = { + A147073881083F49FD1D27AB0EF1D20A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = CA400829100F0628EC209FBB08347D42; - remoteInfo = "react-native-notifications"; + remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; + remoteInfo = RCTTypeSafety; + }; + A1CACC0574AB439458D00BDADA747D2B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 680299219D3A48D42A648AF6706275A9; + remoteInfo = "React-RCTSettings"; }; A2714C3F770F38D4074DD0F61DA9CF45 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3403,13 +3374,6 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - A294E7323DF03350958C1AC67D2A1C0A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1092C13E1E1172209537C28D0C8D4D3C; - remoteInfo = "react-native-orientation-locker"; - }; A33043B018A8D3B28DA9124A1579E13A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3417,13 +3381,6 @@ remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; - A354CF663E4D8E78CD93FD1AD483AC9D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 9668C19AA6D8EA320F83875FA286855A; - remoteInfo = UMConstantsInterface; - }; A3B47DA7FB5AF667B2756DAC549D2642 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3431,13 +3388,6 @@ remoteGlobalIDString = 2B25F90D819B9ADF2AF2D8733A890333; remoteInfo = Yoga; }; - A51B4E84523EE9025F2923E0EF9C8DF6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B9E8F4CA2A4A8599389FEB665A9B96FF; - remoteInfo = RNGestureHandler; - }; A6C96CD915FAFFA438FE9774216C27FC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3459,6 +3409,13 @@ remoteGlobalIDString = 47D2E85A78C25869BB13521D8561A638; remoteInfo = libwebp; }; + A8758646FA7E8C65D9AAADB4BAEFFBC9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6514D69CB93B41626AE1A05581F97B07; + remoteInfo = "react-native-background-timer"; + }; A8D228C6F74629133C291F6B44D7694D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3473,6 +3430,13 @@ remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; remoteInfo = "React-jsiexecutor"; }; + A9C1143D0CBD44FA82684EEB8996FC35 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 49821C2B9E764AEDF2B35DFE9AA7022F; + remoteInfo = UMBarCodeScannerInterface; + }; A9D92F68FAFAEBBE26C78B0172ED347C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3480,13 +3444,6 @@ remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; - AA3D617BC33D3300EA85143BA7607626 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; - remoteInfo = "React-cxxreact"; - }; AA5B8F43EAD114EE3717346D55C72BE5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3494,33 +3451,12 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - AA683DBA0B2F417BE4B830F44E78DAE9 /* PBXContainerItemProxy */ = { + ACE9683B43AB87C56DB560A905FE8BA5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; - remoteInfo = nanopb; - }; - AC929F6DB753F7A5A23136DC8A5AF1F4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B51433D546A38C51AA781F192E8836F8; - remoteInfo = RNLocalize; - }; - AC9BCF22ABC537CD2D90BD3E179BFC83 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0745200E60DC80C9A0A48B7E6C1518D7; - remoteInfo = BugsnagReactNative; - }; - AE0E1CA44BD2181F02740B57829BAD7B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 2B25F90D819B9ADF2AF2D8733A890333; - remoteInfo = Yoga; + remoteGlobalIDString = D20469A9A1E5CFB26045EAEBE3F88E5E; + remoteInfo = RCTTypeSafety; }; AEC8DF6D4B91F6B6CAA5DFE9C52B76F8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3529,6 +3465,27 @@ remoteGlobalIDString = A30157FD17984D82FB7B26EE61267BE2; remoteInfo = RSKImageCropper; }; + AEC90D7C236E9F9A844FCDAEAFFB250F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = ED2506AE7DE35D654F61254441EA7155; + remoteInfo = "boost-for-react-native"; + }; + AFC01BDE55EA519A6DEABC2001C4CFBC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 620E05868772C10B4920DC7E324F2C87; + remoteInfo = FirebaseCoreDiagnostics; + }; + B100F3AFC9E26915D8609B061037AA9B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 868B90C74770285449C60DBA82181479; + remoteInfo = EXFileSystem; + }; B10540874D34CE93E1E04DA052C09DD7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3536,33 +3493,26 @@ remoteGlobalIDString = 6FE9147F8AAA4DE676C190F680F47AE2; remoteInfo = "React-RCTLinking"; }; - B144A4DEF75CE655FEEF5DEDC873FA72 /* PBXContainerItemProxy */ = { + B18F531D8621BA8DA9400B26175750BE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = A30157FD17984D82FB7B26EE61267BE2; - remoteInfo = RSKImageCropper; + remoteGlobalIDString = 95D98F901D07557EF7CA38D3F03832C5; + remoteInfo = "React-RCTBlob"; }; - B1D869B08EF0EFE10993521A96F7D391 /* PBXContainerItemProxy */ = { + B21B886924B45A63EB4036945A4B076B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 807428FE76D80865C9F59F3502600E89; - remoteInfo = RNDeviceInfo; + remoteGlobalIDString = 13D7009C3736FB694854D88BAD4742B6; + remoteInfo = EXAV; }; - B31A35FC99432556A392CA1D2ED5C27A /* PBXContainerItemProxy */ = { + B23F32F8A9D5B42A97CA1716E450157C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C0E41540D6862472ED7F2FA11669BE1F; - remoteInfo = Crashlytics; - }; - B3BD5672FE1CCAABCE599CB125843D13 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 47D2E85A78C25869BB13521D8561A638; - remoteInfo = libwebp; + remoteGlobalIDString = C49E7A4D59E5C8BE8DE9FB1EFB150185; + remoteInfo = FirebaseAnalytics; }; B40AA08577F30A00FD2A25A08341964A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3585,26 +3535,19 @@ remoteGlobalIDString = 651511D7DA7F07F9FC9AA40A2E86270D; remoteInfo = "React-RCTNetwork"; }; - B5F1124F98DDA693985714257034E729 /* PBXContainerItemProxy */ = { + B6E5D715784860428E433EF2C59064AA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 95D98F901D07557EF7CA38D3F03832C5; - remoteInfo = "React-RCTBlob"; + remoteGlobalIDString = 7F591BD8674041AAAA4F37DC699B5518; + remoteInfo = KeyCommands; }; - B5F526CAA3A7B86FC6219266D5CDBAA8 /* PBXContainerItemProxy */ = { + B7282A609EFDBCCF6DFE5923B1E9396A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 897EF6A99176326E24F51E2F2103828C; - remoteInfo = UMReactNativeAdapter; - }; - B6188822A8A78712424CA19B932100E8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = DBCB1B4965863DDD3B9DED9A0918A526; - remoteInfo = UMCore; + remoteGlobalIDString = B6D5DD49633DFF0657B8C3F08EB3ABA9; + remoteInfo = ReactCommon; }; B7CA8E5E6048734280447632DB142C89 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3613,6 +3556,20 @@ remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; + B7EE9B1370B572054C651D54BC4B9907 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 87803597EB3F20FC46472B85392EC4FD; + remoteInfo = FirebaseInstallations; + }; + B8CF4EBFD4A2B827944CCD5956A3D815 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DBCB1B4965863DDD3B9DED9A0918A526; + remoteInfo = UMCore; + }; B8E5BD7E0904D95225F1C6CC70ADE8CA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3620,6 +3577,13 @@ remoteGlobalIDString = D0EFEFB685D97280256C559792236873; remoteInfo = glog; }; + B9D74239BAD99D142DD588C2DB1FBDED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5B40FBDAD0AB75D17C4760F4054BFF71; + remoteInfo = JitsiMeetSDK; + }; BB43E3440C83F8BC24E141BE6C01D507 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3634,19 +3598,19 @@ remoteGlobalIDString = B53D977A951AFC38B21751B706C1DF83; remoteInfo = GoogleAppMeasurement; }; - BC0A650988C15F16ACA71087737CD3F4 /* PBXContainerItemProxy */ = { + BD32043515F4B199AB0E22406C68A35D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 13D7009C3736FB694854D88BAD4742B6; - remoteInfo = EXAV; + remoteGlobalIDString = 214E42634D1E187D876346D36184B655; + remoteInfo = RNScreens; }; - BC8C24324CBCCA7C9FD4E3E8423E923F /* PBXContainerItemProxy */ = { + BE2090E36386437C614DB6B386D6206A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 072CEA044D2EF26F03496D5996BBF59F; - remoteInfo = Firebase; + remoteGlobalIDString = 0745200E60DC80C9A0A48B7E6C1518D7; + remoteInfo = BugsnagReactNative; }; BF32D407ED9D0F154DE76F25EEB923DB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3669,19 +3633,40 @@ remoteGlobalIDString = 5EB4B0B6DA6D5C0C3365733BEAA1C485; remoteInfo = FirebaseCoreDiagnosticsInterop; }; - C2F3CB80CD4B5FF1CC89D31492675B2E /* PBXContainerItemProxy */ = { + C10C10F78B02C8C76D9682A59B3593F3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4D67CFB913D9C3BE37252D50364CD990; - remoteInfo = RNUserDefaults; + remoteGlobalIDString = 449C1066B8C16DEDB966DCB632828E44; + remoteInfo = RNAudio; }; - C345B49DF1FD64A2511E8ADFB302CDD9 /* PBXContainerItemProxy */ = { + C17763A82AC031E86E43BE4FA0F3FC4F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D0EFEFB685D97280256C559792236873; - remoteInfo = glog; + remoteGlobalIDString = A30157FD17984D82FB7B26EE61267BE2; + remoteInfo = RSKImageCropper; + }; + C1BB201CBC816A7930A924C64808A024 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8CC4EAA817AA86310D1900F1DAB3580F; + remoteInfo = FBLazyVector; + }; + C41DCD630A1F9D1CED739BD7F7413D5D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 50188AAB5FAECCA9583327DBA2B0AF2B; + remoteInfo = UMTaskManagerInterface; + }; + C505646291F935A38C2D95467150C6BF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = ABB048B191245233986A7CD75FE412A5; + remoteInfo = Fabric; }; C583A5691E3DAE99E4675FD1989CDA14 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3697,6 +3682,13 @@ remoteGlobalIDString = 11989A5E568B3B69655EE0C13DCDA3F9; remoteInfo = "React-RCTActionSheet"; }; + C5E22C1DC17FB96D8D8446E1E3E2CBB0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6C1893932A69822CBE3502F2E0BCFB6D; + remoteInfo = EXConstants; + }; C6318E60C9E68C5F678F7ADDF357AED8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3704,12 +3696,12 @@ remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; remoteInfo = nanopb; }; - C6A40FD5CA2BAE47C05F541530D2D070 /* PBXContainerItemProxy */ = { + C6B6F02506FCA9766276DEF5FAE04229 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = DA0709CAAD589C6E7963495210438021; - remoteInfo = "React-jsiexecutor"; + remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; + remoteInfo = nanopb; }; C6C35C61164D4136265E61ECEB28D38A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3725,40 +3717,40 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - C7DE1803713B58CB919CE3EB04543743 /* PBXContainerItemProxy */ = { + C87BDB856B76B718B524ACCDA9889FED /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = FF879E718031128A75E7DE54046E6219; - remoteInfo = RNReanimated; + remoteGlobalIDString = C3496D0495E700CF08A90C41EA8FA4BB; + remoteInfo = FBReactNativeSpec; }; - C8E7636CCA91128D75FBB3064C303CF5 /* PBXContainerItemProxy */ = { + C8C199D46FD3DD67148F0D47BF9A2023 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4D67CFB913D9C3BE37252D50364CD990; - remoteInfo = RNUserDefaults; + remoteGlobalIDString = 5C0371EE948D0357B8EE0E34ABB44BF0; + remoteInfo = GoogleDataTransport; }; - C8F31F27E885C7BF0CB0536D87A79750 /* PBXContainerItemProxy */ = { + C920F0CCDE6B125D03C36F35E1B070B0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 3E5D106F8D3D591BD871408EEE0CC9FD; - remoteInfo = "react-native-video"; + remoteGlobalIDString = 7F591BD8674041AAAA4F37DC699B5518; + remoteInfo = KeyCommands; }; - C9AB9E31511613E7773ECD99B5BB4A25 /* PBXContainerItemProxy */ = { + C978E2B36D38968087242ADBB0DE8929 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; - remoteInfo = DoubleConversion; + remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; + remoteInfo = "React-Core"; }; - C9C871423DD699DA51012B83751B6E82 /* PBXContainerItemProxy */ = { + C9C235729131851E3935743551F6290B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; - remoteInfo = GoogleUtilities; + remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; + remoteInfo = SDWebImage; }; CAAEE7A21CB80F6BF942643AE53B944E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3774,6 +3766,41 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; + CB4A33C1063C79A2060BB0FBB95DC0E8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3FF2E78BB54ED67CA7FAD8DA2590DBEE; + remoteInfo = "react-native-appearance"; + }; + CB8A7E990CD7E856B8CADD28DC191F90 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; + remoteInfo = "React-jsi"; + }; + CC54232EF31B940D2DDBEAC6F07DADD3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; + remoteInfo = FirebaseCore; + }; + CCB55177B1A05503602B15B304232ACA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0A915EE9D35CA5636731F8763E774951; + remoteInfo = UMCameraInterface; + }; + CCFD53E94AFA8D4B32BA9AA6DA6A23FB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2BBF7206D7FAC92C82A042A99C4A98F8; + remoteInfo = PromisesObjC; + }; CD13E8227960B07BA93BD3A6A40F0B23 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3781,12 +3808,19 @@ remoteGlobalIDString = 4F265533AAB7C8985856EC78A33164BB; remoteInfo = "React-RCTImage"; }; - CD7D7CE64221D2F810D53644B5CD9D72 /* PBXContainerItemProxy */ = { + CD64A7BBD2979E9D167F4B5C1631566F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6FE9147F8AAA4DE676C190F680F47AE2; - remoteInfo = "React-RCTLinking"; + remoteGlobalIDString = 897EF6A99176326E24F51E2F2103828C; + remoteInfo = UMReactNativeAdapter; + }; + CE4ABC821438FE01620EA075157CDAD2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EAB05A8BED2CAC923712E1C584AEB299; + remoteInfo = "react-native-keyboard-tracking-view"; }; CEEAB0ABDC6919813DC4584C776CA72F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3809,6 +3843,20 @@ remoteGlobalIDString = 072CEA044D2EF26F03496D5996BBF59F; remoteInfo = Firebase; }; + D0909B88ACBADCD7176A2B5725379CD3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = ED2506AE7DE35D654F61254441EA7155; + remoteInfo = "boost-for-react-native"; + }; + D17C3C9CD181E3FFEFDCFE3EC5341488 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 47D2E85A78C25869BB13521D8561A638; + remoteInfo = libwebp; + }; D1DD6F0528614F3F6A959C01AB7F7DCB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3816,12 +3864,26 @@ remoteGlobalIDString = A4F685BE3CAC127BDCE4E0DBBD88D191; remoteInfo = Folly; }; - D2EEA6CAF0D8F9AE42037AE2CD98F08C /* PBXContainerItemProxy */ = { + D1ED1A63A2E1B5D62CF66F0FA99F5D47 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 90148E8FD1C445D7A019D504FA8CBC53; - remoteInfo = ReactNativeART; + remoteGlobalIDString = E16E206437995280D349D4B67695C894; + remoteInfo = "React-CoreModules"; + }; + D224D3EBA87061A216C2971F45AA7EBD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0745200E60DC80C9A0A48B7E6C1518D7; + remoteInfo = BugsnagReactNative; + }; + D2643CB9524A1210AE8EEF1CC7906CEF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6; + remoteInfo = "React-RCTText"; }; D30AD787E43DE3AC8E24B315F185B31F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3830,6 +3892,13 @@ remoteGlobalIDString = 651511D7DA7F07F9FC9AA40A2E86270D; remoteInfo = "React-RCTNetwork"; }; + D38618B35E740B52628FD9CADB6B3068 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6677891AC2F7AB93E04BFF30B293A46B; + remoteInfo = RNBootSplash; + }; D465047540D12FD9D95291AE82A76DB9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3844,6 +3913,13 @@ remoteGlobalIDString = 1953860EA9853AA2BC8022B242F08512; remoteInfo = SDWebImageWebPCoder; }; + D4CAA9CA7C8E69C0DC481167E31BE48B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; + remoteInfo = FirebaseCore; + }; D59A73644A58ECC04E1987DB3C8A1BC6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3851,6 +3927,20 @@ remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; + D88726238C500FF73BA8C26C24D566C2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; + remoteInfo = FirebaseCore; + }; + D9200E48A5A008F3A8BDECD7D97CD249 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7573B71C21FB5F78D28A1F4A184A6057; + remoteInfo = "react-native-keyboard-input"; + }; D9E3EDC835FCF7086651DEA02BD80CC6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3858,6 +3948,62 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; + DA6A3E8A138E68102F2BF46B82DE340D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4D67CFB913D9C3BE37252D50364CD990; + remoteInfo = RNUserDefaults; + }; + DA72BD0D2ED3CB12079CDD61E7D8396D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2BBF7206D7FAC92C82A042A99C4A98F8; + remoteInfo = PromisesObjC; + }; + DC69EFAC97D08F5155E0388E1B3F93A0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FF879E718031128A75E7DE54046E6219; + remoteInfo = RNReanimated; + }; + DC97CA5A0D849C16C17794940DD654A9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CA400829100F0628EC209FBB08347D42; + remoteInfo = "react-native-notifications"; + }; + DC99F3101657A8431455634311377599 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 53D121F9F9BB0F8AC1C94A12C5A8572F; + remoteInfo = "React-RCTVibration"; + }; + DCBE20B54432736947EC4EE48344FB96 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A238B7CE3865946D1F214E1FE0023AAE; + remoteInfo = "rn-extensions-share"; + }; + DCDC18F1309C6C1A44652D0323DA7D96 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0D82774D2A533D3FFAE27CAB4A6E9CB2; + remoteInfo = RNImageCropPicker; + }; + DCF7E3D15D3A8FDF8CE53CBB7968E1F9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2038C6F97563AAD6162C284B3EDD5B3B; + remoteInfo = UMSensorsInterface; + }; DDC3038F75F2A9519773ABAA55479EB1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3879,6 +4025,20 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; + DE9A87C942081FFD593AE353910B26CB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 680299219D3A48D42A648AF6706275A9; + remoteInfo = "React-RCTSettings"; + }; + DED1980E0B396BB1ED5777C2883AE836 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B53D977A951AFC38B21751B706C1DF83; + remoteInfo = GoogleAppMeasurement; + }; DF12C5D7BB68C2724D2F39A531F2A52A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3886,26 +4046,26 @@ remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; remoteInfo = nanopb; }; - E0D98A8909B36864FA2933AEDDD2CF59 /* PBXContainerItemProxy */ = { + DFCEEA3FA40436CB4AA040326D6F8E6D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0D82774D2A533D3FFAE27CAB4A6E9CB2; - remoteInfo = RNImageCropPicker; + remoteGlobalIDString = 47D2E85A78C25869BB13521D8561A638; + remoteInfo = libwebp; }; - E1C421EE796DDA0903F9CAF48DB34D00 /* PBXContainerItemProxy */ = { + DFEA33431E17294C1ED8951538F844D0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 449C1066B8C16DEDB966DCB632828E44; - remoteInfo = RNAudio; + remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; + remoteInfo = nanopb; }; - E349A2357A5D191D2BE6E5DBB91CC053 /* PBXContainerItemProxy */ = { + E30B30DBDE7D0505AEE79AB60046A622 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 97C4DE84FA3CC4EC06AA6D8C249949B7; - remoteInfo = UMImageLoaderInterface; + remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; + remoteInfo = nanopb; }; E3DCB3D8F0A533B7BB46EB61E99CA3EE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3914,19 +4074,12 @@ remoteGlobalIDString = FA877ADC442CB19CF61793D234C8B131; remoteInfo = "React-jsi"; }; - E60B916218717C921E5F11253059C7AD /* PBXContainerItemProxy */ = { + E41E1BDB69EFAE2ECB46755C2226C822 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8CC4EAA817AA86310D1900F1DAB3580F; - remoteInfo = FBLazyVector; - }; - E6AA76FB869511C87C0F59AB5D2E0711 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = A83ECDA5673771FA0BA282EBF729692B; - remoteInfo = RNFirebase; + remoteGlobalIDString = 11989A5E568B3B69655EE0C13DCDA3F9; + remoteInfo = "React-RCTActionSheet"; }; E7713748923D5218C5086559D4632CF6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3935,6 +4088,13 @@ remoteGlobalIDString = ED2506AE7DE35D654F61254441EA7155; remoteInfo = "boost-for-react-native"; }; + E774AD6370868E7B014EC5EB08A69899 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2BBF7206D7FAC92C82A042A99C4A98F8; + remoteInfo = PromisesObjC; + }; E79050B7B79BB88D74178F90A19D9ECF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -3942,12 +4102,12 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - E7F8B63B1F9D0C488BDB4D00E7E4849C /* PBXContainerItemProxy */ = { + E8E93431DE5B9EDBC4D3B99AA008285F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2038C6F97563AAD6162C284B3EDD5B3B; - remoteInfo = UMSensorsInterface; + remoteGlobalIDString = D39AB631E8050865DE01F6D5678797D2; + remoteInfo = "react-native-jitsi-meet"; }; E8FD7532463B0528F9CE61138294EC2E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3956,33 +4116,26 @@ remoteGlobalIDString = A4F685BE3CAC127BDCE4E0DBBD88D191; remoteInfo = Folly; }; - E9B7DE6782CB1AFA824686CE3F5E6244 /* PBXContainerItemProxy */ = { + EA7D3C9BF70768251AC619FFF3DC5BAD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0745200E60DC80C9A0A48B7E6C1518D7; - remoteInfo = BugsnagReactNative; + remoteGlobalIDString = 807428FE76D80865C9F59F3502600E89; + remoteInfo = RNDeviceInfo; }; - EBC7518B544F41E7D3EC6B04FD721254 /* PBXContainerItemProxy */ = { + EC12631F07CCE49186779E1C34E44AC1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5B40FBDAD0AB75D17C4760F4054BFF71; - remoteInfo = JitsiMeetSDK; + remoteGlobalIDString = 938CCE22F6C4094B3FB6CF1478579E4B; + remoteInfo = "React-RCTAnimation"; }; - ECA29CD1CAAD5B626BAA69A224B592F3 /* PBXContainerItemProxy */ = { + ECB0846A8D8B0BEE23EE31A925213C3A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2AD4F40E67E1874A0816F6B34289EB41; - remoteInfo = UMFaceDetectorInterface; - }; - ED8DF4AF781F646E01339F2EF18E2202 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6; - remoteInfo = "React-RCTText"; + remoteGlobalIDString = D0EFEFB685D97280256C559792236873; + remoteInfo = glog; }; EE98A4C80DE900CD0C9ED8195B4EF52D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -3991,12 +4144,26 @@ remoteGlobalIDString = 8CC4EAA817AA86310D1900F1DAB3580F; remoteInfo = FBLazyVector; }; - EEEC9DA5A1F7E3749DE71EB47566F9D4 /* PBXContainerItemProxy */ = { + EEE33F6558983BA2DF282DB4EE7B037C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = EAB05A8BED2CAC923712E1C584AEB299; - remoteInfo = "react-native-keyboard-tracking-view"; + remoteGlobalIDString = 1092C13E1E1172209537C28D0C8D4D3C; + remoteInfo = "react-native-orientation-locker"; + }; + EEF09367EDBBB6D281BF444445784F90 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C0E41540D6862472ED7F2FA11669BE1F; + remoteInfo = Crashlytics; + }; + EEF750E4E172E0309FD8CCC8712079DE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D760AF58E12ABBB51F84160FB02B5F39; + remoteInfo = RNDateTimePicker; }; EF35D916FEB5C7D4563D576974DC8374 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -4005,6 +4172,13 @@ remoteGlobalIDString = A4F685BE3CAC127BDCE4E0DBBD88D191; remoteInfo = Folly; }; + EF787EA911D9CC51792C94E6D8217C84 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 87803597EB3F20FC46472B85392EC4FD; + remoteInfo = FirebaseInstallations; + }; EF797B6066E1025B5FD8590A476CD8DC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -4033,13 +4207,6 @@ remoteGlobalIDString = 8D7F5D5DD528D21A72DC87ADA5B12E2D; remoteInfo = GoogleUtilities; }; - F17B4995C520DE461541A03295BDE1EB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = ED2506AE7DE35D654F61254441EA7155; - remoteInfo = "boost-for-react-native"; - }; F1D31400DE78E76FE461920F078645F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -4047,6 +4214,13 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; + F2DC85F54A13CF837109A697617C4E93 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BA3F5E5AA483B263B69601DE2FA269CB; + remoteInfo = "react-native-cameraroll"; + }; F2E57867E76DED400D1A4035EF3D8735 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -4054,26 +4228,19 @@ remoteGlobalIDString = D2B5E7DCCBBFB32341D857D01211A1A3; remoteInfo = nanopb; }; - F34982CECD4A0E7E5C361467B942AFD5 /* PBXContainerItemProxy */ = { + F3A5BBF7636364713DAD1380A3F7E825 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5C0371EE948D0357B8EE0E34ABB44BF0; - remoteInfo = GoogleDataTransport; + remoteGlobalIDString = 96150F524B245896B800F84F369A9A5A; + remoteInfo = RNVectorIcons; }; - F43325096A500828490E85360829798B /* PBXContainerItemProxy */ = { + F41400F9BEE622517440881C0BD1FD56 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = C0E41540D6862472ED7F2FA11669BE1F; - remoteInfo = Crashlytics; - }; - F50AB6D44713FB32A3096F258E5D75F7 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0A72FB88825FDC7D301C9DD1F8F96824; - remoteInfo = EXPermissions; + remoteGlobalIDString = D760AF58E12ABBB51F84160FB02B5F39; + remoteInfo = RNDateTimePicker; }; F56EBC18CB64EE0482444624DFEC06A2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -4082,12 +4249,12 @@ remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; - F5C9C8DA4EF06D90E55CBF7F674BDEF1 /* PBXContainerItemProxy */ = { + F5F7CB4B73527CAE5938631602CC182F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; - remoteInfo = "React-Core"; + remoteGlobalIDString = B9E8F4CA2A4A8599389FEB665A9B96FF; + remoteInfo = RNGestureHandler; }; F60823557509BCBAD04769F2DE3B592E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -4103,19 +4270,19 @@ remoteGlobalIDString = 4402AFF83DBDC4DD07E198685FDC2DF2; remoteInfo = FirebaseCore; }; - F6E7B967BAB0CFDAF1E4584ABE5385FC /* PBXContainerItemProxy */ = { + F7418F0EFC7ADFE136104192A9809D6A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 18B56DB36E1F066C927E49DBAE590128; - remoteInfo = RNRootView; + remoteGlobalIDString = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6; + remoteInfo = "React-RCTText"; }; - F7197E8A78D91E6D03D445D2B44173AA /* PBXContainerItemProxy */ = { + F774E1A51F551C12EEFE2335EE12B43C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2644525CCE081E967809A8163D893A93; - remoteInfo = UMFileSystemInterface; + remoteGlobalIDString = 463F41A7E8B252F8AC5024DA1F4AF6DA; + remoteInfo = "React-cxxreact"; }; F84AAAA2C19F25EDD3EC2AACB0E9E389 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -4124,12 +4291,12 @@ remoteGlobalIDString = F7845084F0CF03F54107EEF7411760AD; remoteInfo = UMPermissionsInterface; }; - F961935CF80EBDB232EE3BBE07180D40 /* PBXContainerItemProxy */ = { + F9ADEC352F5632AE9A9C3CEAE0D942CF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D11E74324175FE5B0E78DB046527F233; - remoteInfo = "react-native-document-picker"; + remoteGlobalIDString = A83ECDA5673771FA0BA282EBF729692B; + remoteInfo = RNFirebase; }; F9BC7D28AD87790D95A38C36E89FA025 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -4138,19 +4305,26 @@ remoteGlobalIDString = 7ACAA9BE580DD31A5CB9D97C45D9492D; remoteInfo = "React-Core"; }; - FAA688893F6F7C79DA3E8120E591ED84 /* PBXContainerItemProxy */ = { + F9D5F40BCFDFFDC398817338196D7F89 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 409F3A0DB395F53FFB6AB30E5CD8ACD1; - remoteInfo = EXHaptics; + remoteGlobalIDString = 0BB7745637E0758DEA373456197090C6; + remoteInfo = RNFastImage; }; - FB8962C393814D899BA352B00394587C /* PBXContainerItemProxy */ = { + F9D879083A729E6F2026684F655E293D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = CA400829100F0628EC209FBB08347D42; - remoteInfo = "react-native-notifications"; + remoteGlobalIDString = 2AB2EF542954AB1C999E03BFEF8DE806; + remoteInfo = DoubleConversion; + }; + FAA396DBDC307599055B19CD6A87D4B2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0BB7745637E0758DEA373456197090C6; + remoteInfo = RNFastImage; }; FC21EA40C24BBDB20C2BE4568BC0017C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -4166,106 +4340,119 @@ remoteGlobalIDString = 1BEE828C124E6416179B904A9F66D794; remoteInfo = React; }; - FD6ECC61BA8F1EE2ED5B3BBDD73C7E70 /* PBXContainerItemProxy */ = { + FE5765B5CF3FE2FE6F0DBAF05B9565AE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D760AF58E12ABBB51F84160FB02B5F39; - remoteInfo = RNDateTimePicker; + remoteGlobalIDString = F4F25FCAC51B51FD5F986EB939BF1F87; + remoteInfo = GoogleDataTransportCCTSupport; }; - FE897A3B09C0C877C1425D2D0F0AE06C /* PBXContainerItemProxy */ = { + FEDE355BE55AE0B28F9D8D78AB28012E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = ED2506AE7DE35D654F61254441EA7155; - remoteInfo = "boost-for-react-native"; + remoteGlobalIDString = 2B25F90D819B9ADF2AF2D8733A890333; + remoteInfo = Yoga; }; - FED0787EF1320E02CB9E59A7A9F4D067 /* PBXContainerItemProxy */ = { + FFFFC7F87DE0F0FB611CDA28B99CDA78 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B51433D546A38C51AA781F192E8836F8; - remoteInfo = RNLocalize; + remoteGlobalIDString = 8CC4EAA817AA86310D1900F1DAB3580F; + remoteInfo = FBLazyVector; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 001747F5C80950AA3E7EC3CDABD93FE4 /* UMTaskInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMTaskInterface.h; path = UMTaskManagerInterface/UMTaskInterface.h; sourceTree = ""; }; + 001B7F2F6A312651D3606F252836C2F5 /* demangle.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = demangle.cc; path = src/demangle.cc; sourceTree = ""; }; 0060ACFCB7F4DE84A9C2625491EA6A6D /* RCTModalHostView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModalHostView.h; sourceTree = ""; }; + 0078CF9DAC8CC4187F6E291B8F51727E /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; 007FDBD5CB8F72DE12035951173C327B /* Feather.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = Feather.ttf; path = Fonts/Feather.ttf; sourceTree = ""; }; + 00A08DD362055E20F1FB0559D19644E4 /* GDTCORStoredEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORStoredEvent.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORStoredEvent.m; sourceTree = ""; }; 00D6267DF2FF73D1AF8C5368C1C5E270 /* RCTImageEditingManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTImageEditingManager.m; sourceTree = ""; }; 00D78A4B0214C7CF7F25E5312572EE0C /* RCTBorderDrawing.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBorderDrawing.m; sourceTree = ""; }; - 00EF713613E649AF69AC589CAB985955 /* GULNetworkURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetworkURLSession.m; path = GoogleUtilities/Network/GULNetworkURLSession.m; sourceTree = ""; }; 00F141C90BDC5ABFB362C6A910458B2E /* RCTTextShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextShadowView.h; sourceTree = ""; }; - 00F8B0C7A4D6446D5585DCDC4DEB566C /* lossless_enc_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_sse2.c; path = src/dsp/lossless_enc_sse2.c; sourceTree = ""; }; - 00FFEC094BBA2326B97D61C8A235B8CF /* pb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb.h; sourceTree = ""; }; 012242E4480B29DF1D5791EC61C27FEE /* libreact-native-notifications.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-notifications.a"; path = "libreact-native-notifications.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0143E920C1C46322DEAACDA3FEED6B7A /* dec_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_mips_dsp_r2.c; path = src/dsp/dec_mips_dsp_r2.c; sourceTree = ""; }; - 019EF2F3E1EBEF4B63B42F53A1FE1122 /* GULSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULSwizzler.m; path = GoogleUtilities/MethodSwizzler/GULSwizzler.m; sourceTree = ""; }; + 014FBCA79FB8FD0C06F5F4EBBC1B6BE8 /* FIRInstanceIDVersionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDVersionUtilities.m; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.m; sourceTree = ""; }; + 0162C892BDD766E04E2714F47090AB60 /* FIRApp.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRApp.m; path = FirebaseCore/Sources/FIRApp.m; sourceTree = ""; }; + 017CC1B34A00D5D000439D51172861CF /* FIROptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptions.h; path = FirebaseCore/Sources/Public/FIROptions.h; sourceTree = ""; }; 01AB176D8CCC282389777CB23AF55DBD /* RNGestureHandlerRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNGestureHandlerRegistry.h; path = ios/RNGestureHandlerRegistry.h; sourceTree = ""; }; - 01FAF80891432F62857FFDA6B6F8ABC8 /* GDTTransport_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTTransport_Private.h; path = GoogleDataTransport/GDTLibrary/Private/GDTTransport_Private.h; sourceTree = ""; }; 01FD177916C7B57614C5F4BEA61F8CE9 /* RNFirebaseFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseFunctions.h; sourceTree = ""; }; + 01FEFA98B5E8668AD537CEE144C68D35 /* FIRInstallationsKeychainUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsKeychainUtils.h; path = FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.h; sourceTree = ""; }; 02153101DD015A798818C151A182F4DB /* RNSScreenStack.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNSScreenStack.m; path = ios/RNSScreenStack.m; sourceTree = ""; }; 024208975464F176E11129E3151BAB2F /* rn-fetch-blob.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "rn-fetch-blob.xcconfig"; sourceTree = ""; }; 0260B1705B12BD97512D92AAB1D975A2 /* EXPermissions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPermissions.m; path = EXPermissions/EXPermissions.m; sourceTree = ""; }; 02AEAB2464ED470DD8B2BED39CE7D233 /* React-CoreModules.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-CoreModules.xcconfig"; sourceTree = ""; }; 02B42F19719F9070E89F655242EBF98B /* RCTSurfaceSizeMeasureMode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceSizeMeasureMode.mm; sourceTree = ""; }; - 02C05262BFECC90910E7E70E31AD9520 /* RSKImageCropViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSKImageCropViewController.m; path = RSKImageCropper/RSKImageCropViewController.m; sourceTree = ""; }; + 02B92AD44CE84D68E6DC4BD460DA089D /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = iOS/Fabric.framework; sourceTree = ""; }; 02FAA2A82FF5E7F69641A48ACD60B8E9 /* EXAudioSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXAudioSessionManager.h; path = EXAV/EXAudioSessionManager.h; sourceTree = ""; }; 02FD9DFB0AACA799D670E18E11F9B60B /* advancedIos.md */ = {isa = PBXFileReference; includeInIndex = 1; name = advancedIos.md; path = docs/advancedIos.md; sourceTree = ""; }; 031612F602327B8E86998A9BFC8772FC /* UMFontInterface.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = UMFontInterface.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 0357F2904793AF75BF705D34080B39A7 /* RCTShadowView+Layout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTShadowView+Layout.h"; sourceTree = ""; }; + 037048A23ACDD15887BD75AFB6F14662 /* GDTCCTPrioritizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTPrioritizer.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTPrioritizer.h; sourceTree = ""; }; + 037F5EC90407C5CE3418149B6C7A824B /* utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = utils.c; path = src/utils/utils.c; sourceTree = ""; }; + 0383EBC057B08B3B4D8E2D06F7D33F38 /* GULNetworkMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkMessageCode.h; path = GoogleUtilities/Network/Private/GULNetworkMessageCode.h; sourceTree = ""; }; 0390AAC82D88B6B9496BEB754DB6C1CB /* JSIExecutor.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = JSIExecutor.cpp; path = jsireact/JSIExecutor.cpp; sourceTree = ""; }; - 03B728F92DB283E8246EA83B5CEFAEAA /* glog.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = glog.xcconfig; sourceTree = ""; }; 03CF224C0391812834F8FDCA55B544F8 /* RCTEventAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTEventAnimation.h; sourceTree = ""; }; 03CF8B129F84A67BF7EDAEC900572B62 /* UMViewManagerAdapterClassesRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = UMViewManagerAdapterClassesRegistry.m; sourceTree = ""; }; 03D63C370B1F5F00787DBD1CC533D8DA /* RNRootViewGestureRecognizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNRootViewGestureRecognizer.h; path = ios/RNRootViewGestureRecognizer.h; sourceTree = ""; }; + 03D64694CDD23D5AA5D2926DA6659EED /* vlog_is_on.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vlog_is_on.h; path = src/glog/vlog_is_on.h; sourceTree = ""; }; 03FF3F73FA8FCF5C8B6299B130D5BD70 /* React-RCTVibration-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTVibration-dummy.m"; sourceTree = ""; }; 04281FA56489A7CCB9EF40362A453BBC /* RCTUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUtils.h; sourceTree = ""; }; 044B27E89443DDAC94ABA4E73C48B168 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 046EAA9D5C971AB9315DEC235D649530 /* RNFirebaseRemoteConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseRemoteConfig.h; sourceTree = ""; }; 0499506163E27FDFE72BF36433C9AB81 /* RCTKeyCommands.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTKeyCommands.h; sourceTree = ""; }; - 0499B8CE4FABCF6E65F81D68962C5DA1 /* FIRInstanceIDTokenOperation+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDTokenOperation+Private.h"; path = "Firebase/InstanceID/FIRInstanceIDTokenOperation+Private.h"; sourceTree = ""; }; 04AF3C51F7F66ECAC396AFBCE9033846 /* RNEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNEventEmitter.h; path = RNNotifications/RNEventEmitter.h; sourceTree = ""; }; 04AF880EA4E6EC46A565A469E7BBF10A /* RCTTrackingAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTrackingAnimatedNode.h; sourceTree = ""; }; - 04BCA88F7ADC8587075F74C4BF52094A /* GDTPlatform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTPlatform.m; path = GoogleDataTransport/GDTLibrary/GDTPlatform.m; sourceTree = ""; }; 04F043ADCBA901864BB2FAE209E915BC /* jsilib-windows.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = "jsilib-windows.cpp"; sourceTree = ""; }; + 0500B10E6BA68DF16917B05F920FA4CE /* quant_levels_dec_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = quant_levels_dec_utils.h; path = src/utils/quant_levels_dec_utils.h; sourceTree = ""; }; 0506043E5C6B80ACD82C3F27165D3ABD /* ReactCommon.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ReactCommon.xcconfig; sourceTree = ""; }; 053B4C49FB9C5527BDEBBC3C97992335 /* UIResponder+FirstResponder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIResponder+FirstResponder.m"; path = "lib/UIResponder+FirstResponder.m"; sourceTree = ""; }; 0552660F46727BD283F8A428044D8013 /* RCTSliderManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSliderManager.m; sourceTree = ""; }; - 05C2010B25DD2DBB84A02AD7D9CC3D4E /* raw_logging.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = raw_logging.cc; path = src/raw_logging.cc; sourceTree = ""; }; 05C392ACAA16564F1646887DF81113EF /* RCTRootViewInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRootViewInternal.h; sourceTree = ""; }; 05C6F803ACAD8D922F711576AF18EB36 /* BSG_RFC3339DateTool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_RFC3339DateTool.h; sourceTree = ""; }; + 05D21B2E62B525961EA9BE1309FB1D32 /* Unicode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Unicode.cpp; path = folly/Unicode.cpp; sourceTree = ""; }; + 05F2BC055A4813F5A29FBD88A3F3261D /* FBLPromise+Then.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Then.m"; path = "Sources/FBLPromises/FBLPromise+Then.m"; sourceTree = ""; }; + 0605FB329064F4B740AB3DA84343A94A /* vp8_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = vp8_dec.c; path = src/dec/vp8_dec.c; sourceTree = ""; }; 06247B3D87BBF857CA1826A54AD1E3D5 /* UMImageLoaderInterface.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = UMImageLoaderInterface.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 064078AF10DF91404B3DE14C08B4C6D7 /* filters_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = filters_utils.h; path = src/utils/filters_utils.h; sourceTree = ""; }; 06489499588BFA8FD5E63DD6375CD533 /* libFolly.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFolly.a; path = libFolly.a; sourceTree = BUILT_PRODUCTS_DIR; }; 064AC547DFF8127EEE541F3A1B437236 /* RCTWebSocketExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTWebSocketExecutor.h; path = Libraries/WebSocket/RCTWebSocketExecutor.h; sourceTree = ""; }; 065695C3888176DAC6E68FE097DC6565 /* EXReactNativeUserNotificationCenterProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXReactNativeUserNotificationCenterProxy.m; path = EXPermissions/EXReactNativeUserNotificationCenterProxy.m; sourceTree = ""; }; 06697F35D65B5CE61A7219DE075D036C /* RCTSafeAreaViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaViewManager.m; sourceTree = ""; }; 066DAB200485098245D5EED0B1FEF098 /* InspectorInterfaces.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = InspectorInterfaces.cpp; sourceTree = ""; }; + 06736283C77882D931377C3AF94D64FD /* FIRInstallationsIIDStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsIIDStore.h; path = FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.h; sourceTree = ""; }; 067D5D2C99221EB0A3B9E22F7DFD06BF /* RCTVirtualTextViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTVirtualTextViewManager.h; sourceTree = ""; }; + 068267BE04ED7FFA08E2A827F9406A85 /* RSKImageCropViewController+Protected.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RSKImageCropViewController+Protected.h"; path = "RSKImageCropper/RSKImageCropViewController+Protected.h"; sourceTree = ""; }; + 0695A738C7F41C79A285AD67DCD00EE2 /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; 06BDE908A3E04767FA0717BD6D74A719 /* RNVectorIcons.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNVectorIcons.xcconfig; sourceTree = ""; }; 06C809B8549057A07FF4A8E38A64FA53 /* RCTProfileTrampoline-i386.S */ = {isa = PBXFileReference; includeInIndex = 1; path = "RCTProfileTrampoline-i386.S"; sourceTree = ""; }; 06CB3C0F55397252230780C99F95841B /* RNJitsiMeetViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNJitsiMeetViewManager.h; path = ios/RNJitsiMeetViewManager.h; sourceTree = ""; }; + 06E1729FCDB517FF8E598520953361E3 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; + 06F15669F5B860FA4E51821B5C31DD25 /* GDTCCTNanopbHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTNanopbHelpers.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h; sourceTree = ""; }; 06FC5C9CF96D60C50FCD47D339C91951 /* libnanopb.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libnanopb.a; path = libnanopb.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 0707F165A40293C90DB9DB10B0433839 /* enc_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_sse41.c; path = src/dsp/enc_sse41.c; sourceTree = ""; }; + 070C05407939F9DFE5B7ED06A3FE346E /* FBLPromise+Wrap.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Wrap.m"; path = "Sources/FBLPromises/FBLPromise+Wrap.m"; sourceTree = ""; }; 070F4DA174D42E2375C1E26D009B3DE9 /* React-cxxreact-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-cxxreact-dummy.m"; sourceTree = ""; }; + 0723D9254A0FF8AAD5189C6A5CDB013B /* FIRComponentContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponentContainer.m; path = FirebaseCore/Sources/FIRComponentContainer.m; sourceTree = ""; }; 0728DF55B0762E76D1988160FF42272B /* ARTTextManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ARTTextManager.m; sourceTree = ""; }; - 0729A290877CECD5381E28D8670BA702 /* enc_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_neon.c; path = src/dsp/enc_neon.c; sourceTree = ""; }; 072E531D9DB89866DCC6BAC3A7D5C874 /* react-native-slider-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-slider-prefix.pch"; sourceTree = ""; }; 07460367788943CC87A5DEBC9F0BE2A6 /* RCTTrackingAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTrackingAnimatedNode.m; sourceTree = ""; }; + 0752B852E884FC47B65B0C2D2105EE8E /* WebRTC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebRTC.framework; path = Frameworks/WebRTC.framework; sourceTree = ""; }; 0776128501F7C2B856FEFE2DF2F62C93 /* FFFastImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FFFastImageView.h; path = ios/FastImage/FFFastImageView.h; sourceTree = ""; }; 0783991BC3A821F01ACDC5B0CE3BB3F0 /* RNNotifications.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNNotifications.m; path = RNNotifications/RNNotifications.m; sourceTree = ""; }; - 07917CB28CC07843C9E23E4D4CB0FE07 /* dec_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_neon.c; path = src/dsp/dec_neon.c; sourceTree = ""; }; + 079482D8D03370ABEA3B4293E9E0F902 /* buffer_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = buffer_dec.c; path = src/dec/buffer_dec.c; sourceTree = ""; }; 079D9854C6095ABD1C6BD151B14AC57C /* RNBootSplash.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNBootSplash.xcconfig; sourceTree = ""; }; 07C973C976DABFE0D0D35D45FD5F1D8A /* REAPropsNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REAPropsNode.m; sourceTree = ""; }; 07D26F1F28317A664DDFCE95DE3C591E /* react-native-cameraroll-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-cameraroll-prefix.pch"; sourceTree = ""; }; 07FAC8AB14356BFB7EC74487EAE16C04 /* EXVideoPlayerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EXVideoPlayerViewController.h; sourceTree = ""; }; - 0807A09287F78F29B2AC03E88390E82E /* Crashlytics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Crashlytics.xcconfig; sourceTree = ""; }; - 080E2FD90E9D759670B5110850479F74 /* FIROptionsInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptionsInternal.h; path = Firebase/Core/Private/FIROptionsInternal.h; sourceTree = ""; }; - 081DBE46ED8562B7ECAEDB8FBF8206C9 /* demangle.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = demangle.cc; path = src/demangle.cc; sourceTree = ""; }; - 08605099D3DD551B75AE7B66CA074A26 /* GDTCCTNanopbHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTNanopbHelpers.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTNanopbHelpers.h; sourceTree = ""; }; + 08419E1C07242E0A29A26A675DC67E63 /* FIRInstanceIDTokenFetchOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenFetchOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h; sourceTree = ""; }; + 084DF8B81E62B3FA2DD1A9E2620122EC /* RSKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSKInternalUtility.h; path = RSKImageCropper/RSKInternalUtility.h; sourceTree = ""; }; 086682E66D534C5C4E564B6A5873DEC0 /* BSG_KSCrashDoctor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashDoctor.h; sourceTree = ""; }; 087D122178ED9A990BC9A3E85FEA2EBD /* React-cxxreact-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-cxxreact-prefix.pch"; sourceTree = ""; }; 08D1FFC2980C1ED72AE9A4C44A0544C3 /* libreact-native-document-picker.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-document-picker.a"; path = "libreact-native-document-picker.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 08ECB6371492FBD46314AE3703CD8DAF /* json_pointer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = json_pointer.cpp; path = folly/json_pointer.cpp; sourceTree = ""; }; 08ED12117BB4332C204661E3C9D293BE /* MethodCall.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = MethodCall.cpp; sourceTree = ""; }; 08F60035D9582D5CA9D282FC2589628D /* RCTCxxConvert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxConvert.h; sourceTree = ""; }; 091A9EF5FA607ADAEA341CEB89ECC221 /* RCTTypeSafety-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTTypeSafety-prefix.pch"; sourceTree = ""; }; @@ -4274,150 +4461,169 @@ 0945BBC48C6E6DA34300929C868A3F41 /* RNFetchBlobNetwork.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNFetchBlobNetwork.m; path = ios/RNFetchBlobNetwork.m; sourceTree = ""; }; 094800FF4F03E576562FEE945F9DEFD6 /* RCTHTTPRequestHandler.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTHTTPRequestHandler.mm; sourceTree = ""; }; 094F4CDB49A7800ACC684C08A72D2F40 /* BugsnagSessionFileStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagSessionFileStore.h; sourceTree = ""; }; - 09597B21C975650436C74DFFD48A1EF1 /* syntax_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = syntax_enc.c; path = src/enc/syntax_enc.c; sourceTree = ""; }; - 095C3A99BAD601DEF79FEC7E58053AA8 /* GULMutableDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULMutableDictionary.h; path = GoogleUtilities/Network/Private/GULMutableDictionary.h; sourceTree = ""; }; - 097257AFA6B9ABB50D1D8D460C297CE1 /* RSKImageCropViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSKImageCropViewController.h; path = RSKImageCropper/RSKImageCropViewController.h; sourceTree = ""; }; + 099A43376A0723FBD49B492ED1DA139D /* near_lossless_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = near_lossless_enc.c; path = src/enc/near_lossless_enc.c; sourceTree = ""; }; + 09A8F5B7DA6974622D6C9A6189F7FAEE /* FIRInstallationsIIDTokenStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsIIDTokenStore.h; path = FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.h; sourceTree = ""; }; + 09F74600A3F236533A7364611CBCD0A9 /* FBLPromise+Validate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Validate.h"; path = "Sources/FBLPromises/include/FBLPromise+Validate.h"; sourceTree = ""; }; 09FB1013F78A7AF3DC2546F7CC3D152B /* RNFirebaseFirestoreDocumentReference.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseFirestoreDocumentReference.h; sourceTree = ""; }; 0A11CFDE7065490F90641B26838FBD7D /* RNBridgeModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNBridgeModule.h; path = RNNotifications/RNBridgeModule.h; sourceTree = ""; }; - 0A346F7EB324ED60BD0277D524F7464F /* FIRInstanceID_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID_Private.h; path = Firebase/InstanceID/Private/FIRInstanceID_Private.h; sourceTree = ""; }; + 0A50C6F190916F34A6C994F0FA9A369F /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; 0A5BC46FD11ADF1251BA46820BA26460 /* RCTImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTImageCache.m; sourceTree = ""; }; 0A674AEBCA76215CB8F991FFDBA16AFE /* RCTMultipartStreamReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMultipartStreamReader.h; sourceTree = ""; }; 0A7BA20B217FAEA21777E7F248DA1F6D /* RNBootSplash.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNBootSplash.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 0A82093132C2C256F2FA5D3B65FD62D4 /* RNImageCropPicker-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNImageCropPicker-prefix.pch"; sourceTree = ""; }; 0AA160054F5AE778946C6632CD3512B0 /* RCTGIFImageDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTGIFImageDecoder.m; sourceTree = ""; }; + 0ACF31EDEFE1E569CF6189573939269F /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; 0AD8727BFD3898AB37FF5C02D3A2019C /* RCTRootView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRootView.h; sourceTree = ""; }; 0AEE2091ED266224B958D1DDE10E9E00 /* BSG_KSCrashState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashState.h; sourceTree = ""; }; + 0AF863C6208094AACCEA61A2F59700AB /* vp8li_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8li_dec.h; path = src/dec/vp8li_dec.h; sourceTree = ""; }; 0B034A3847293DA3E577408BC6636FDD /* UMCameraInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMCameraInterface.h; path = UMCameraInterface/UMCameraInterface.h; sourceTree = ""; }; 0B06766EBC90E7AB98A11548494111AA /* RCTBaseTextInputViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBaseTextInputViewManager.h; sourceTree = ""; }; - 0B1AE985C329624758A2E5C9F691D7D1 /* msa_macro.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = msa_macro.h; path = src/dsp/msa_macro.h; sourceTree = ""; }; 0B1B654D254C7E1810BADC1CBB4306B8 /* RCTDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDefines.h; sourceTree = ""; }; + 0B1BB1A3C8627427538472C2BEF119CE /* FIRInstallationsIIDStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsIIDStore.m; path = FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDStore.m; sourceTree = ""; }; + 0B2C19870540C57176CD67F1135A50CA /* yuv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = yuv.h; path = src/dsp/yuv.h; sourceTree = ""; }; 0B2FDA18ED70A47834CCAED314AD0309 /* FontAwesome.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = FontAwesome.ttf; path = Fonts/FontAwesome.ttf; sourceTree = ""; }; 0B37F2001960B611D9EA5B02EA2CF2FC /* UMFilePermissionModuleInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMFilePermissionModuleInterface.h; path = UMFileSystemInterface/UMFilePermissionModuleInterface.h; sourceTree = ""; }; 0B3ABC7A04102C3F682D13E316B99260 /* RCTSurfaceHostingProxyRootView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceHostingProxyRootView.mm; sourceTree = ""; }; + 0B600A9196EDF7F5CE30EAA93665B08F /* GDTCORStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORStorage.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORStorage.m; sourceTree = ""; }; 0B7460AE9B4CF1269C34BDB7CEA3867B /* REANode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REANode.h; sourceTree = ""; }; 0B83181F58997E709D2CF0ABFA639CB6 /* RNSScreen.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNSScreen.m; path = ios/RNSScreen.m; sourceTree = ""; }; - 0B86658594281C1E99C699518F4B8838 /* FIRCoreDiagnosticsDateFileStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCoreDiagnosticsDateFileStorage.m; path = Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnosticsDateFileStorage.m; sourceTree = ""; }; - 0B87E9F95E955F70802BB09E14E71817 /* yuv_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_sse41.c; path = src/dsp/yuv_sse41.c; sourceTree = ""; }; + 0B8C2145C378EBCD15C3B414625FD2D0 /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; + 0B9BD3B6B09CD5A1C2631CF99883907E /* frame_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = frame_dec.c; path = src/dec/frame_dec.c; sourceTree = ""; }; 0BA0CDC92F4D7E062A8E3BD5ECA5BFFA /* LNAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = LNAnimator.m; sourceTree = ""; }; 0BA134F0EA1537EF10FFF6745288AB2B /* REABlockNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REABlockNode.h; sourceTree = ""; }; 0BAEFD4C4562C5D193B2D14D21D30A0A /* RCTSegmentedControlManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSegmentedControlManager.m; sourceTree = ""; }; - 0BB289DB92FF1A08F326924844309EEE /* FIRAppAssociationRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppAssociationRegistration.h; path = Firebase/Core/Private/FIRAppAssociationRegistration.h; sourceTree = ""; }; + 0BB0025F1EC6EF96CB0113EBC33D3711 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; 0BC20A9871EB97B9E51FD4F2F6D7D33B /* RCTHTTPRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTHTTPRequestHandler.h; path = Libraries/Network/RCTHTTPRequestHandler.h; sourceTree = ""; }; 0BD893EC03B684D4C3C45FECB2D8F98F /* react-native-notifications.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-notifications.xcconfig"; sourceTree = ""; }; - 0BE6814863EBB3F1C85ACC78CD1A0667 /* ieee.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ieee.h; path = "double-conversion/ieee.h"; sourceTree = ""; }; 0BE9428A6197F293955DE9F6417A0F5F /* RNVectorIconsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNVectorIconsManager.h; path = RNVectorIconsManager/RNVectorIconsManager.h; sourceTree = ""; }; 0BFBA628CCFEC71D915A97EFB96799A7 /* ja.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ja.lproj; path = ios/QBImagePicker/QBImagePicker/ja.lproj; sourceTree = ""; }; 0C0EDBD3C842474FCA65748C7492A36A /* RNFirebase.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNFirebase.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 0C3A03091625137666805ABD9CD63C4F /* rescaler_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_utils.c; path = src/utils/rescaler_utils.c; sourceTree = ""; }; + 0C3136B59B61BB160560C616ED25BC08 /* NSBezierPath+RoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+RoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+RoundedCorners.h"; sourceTree = ""; }; 0C44808963FFBF4FFE9F3634F30135C4 /* RCTConvert+FFFastImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RCTConvert+FFFastImage.h"; path = "ios/FastImage/RCTConvert+FFFastImage.h"; sourceTree = ""; }; 0C5EB83C9433ED1E5273FCC0D19066AB /* React-RCTSettings-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTSettings-prefix.pch"; sourceTree = ""; }; 0C9175A9A1D7FD9E183957D35177133B /* UMTaskManagerInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMTaskManagerInterface.h; path = UMTaskManagerInterface/UMTaskManagerInterface.h; sourceTree = ""; }; - 0CA316AB9B1E087EE087129012E3ED1A /* FIRInstanceIDURLQueryItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDURLQueryItem.h; path = Firebase/InstanceID/FIRInstanceIDURLQueryItem.h; sourceTree = ""; }; 0CAFE524CDC0EDA7E418B7CFA9669422 /* BSG_KSSystemInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSG_KSSystemInfo.m; sourceTree = ""; }; 0CB3CBDAF4A37F5F1F72C5D9F58E4A34 /* RCTPackagerConnection.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTPackagerConnection.mm; sourceTree = ""; }; - 0CE22CAD125F9462C815704C23AB8010 /* FIRApp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRApp.h; path = Firebase/Core/Public/FIRApp.h; sourceTree = ""; }; 0CF58F69ED2387D3A40D3B251FE60953 /* NSError+BSG_SimpleConstructor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSError+BSG_SimpleConstructor.m"; sourceTree = ""; }; 0D237F74946A75E1540FAC09AF25BEB2 /* rn-fetch-blob-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "rn-fetch-blob-prefix.pch"; sourceTree = ""; }; 0D2C6A295ECFD85BFE14D59F29FEDA84 /* UMFileSystemInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMFileSystemInterface.h; path = UMFileSystemInterface/UMFileSystemInterface.h; sourceTree = ""; }; 0D42AF835132B8F359967AB88C1CF8EB /* RNDateTimePicker.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNDateTimePicker.xcconfig; sourceTree = ""; }; 0D463BCADAB0CD3FA585E82382C4841E /* React-RCTNetwork-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTNetwork-dummy.m"; sourceTree = ""; }; 0D97133D0DF5D8D360CB13EED21FEA64 /* EXWebBrowser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXWebBrowser.h; path = EXWebBrowser/EXWebBrowser.h; sourceTree = ""; }; - 0D975F4A710D3FF97114CA725B087D04 /* GDTReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTReachability.h; path = GoogleDataTransport/GDTLibrary/Private/GDTReachability.h; sourceTree = ""; }; + 0DB662C3FB633BCCF0EFD8EBAEEF8AF1 /* GDTCORClock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORClock.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORClock.m; sourceTree = ""; }; 0DC44227D6FBEFC40745BD6F81A94947 /* RCTInputAccessoryViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTInputAccessoryViewManager.m; sourceTree = ""; }; + 0DFCFAD3BB3A6A89D23F127637FA0517 /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; 0E10089B334000D673BD63A61590F275 /* RCTResizeMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTResizeMode.m; sourceTree = ""; }; 0E1E1D08D52095E3F1AA160EA39A591A /* react-native-appearance.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-appearance.xcconfig"; sourceTree = ""; }; + 0E28FEB864CD8E6FC7A5CD387F3CE7FD /* FIRInstallationsErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsErrors.h; path = FirebaseInstallations/Source/Library/Public/FIRInstallationsErrors.h; sourceTree = ""; }; 0E3A25BE3F680D75F170C25CAEDE11CB /* React-jsinspector-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-jsinspector-prefix.pch"; sourceTree = ""; }; - 0E3F600AA82D949DC333DA5269FFB8FD /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; - 0E60844790501A0F180987D73BF7982A /* upsampling_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_mips_dsp_r2.c; path = src/dsp/upsampling_mips_dsp_r2.c; sourceTree = ""; }; + 0E711CC040CB2C9B6660541E7C73B310 /* GDTCORConsoleLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORConsoleLogger.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORConsoleLogger.h; sourceTree = ""; }; 0EB0F6B7E8EBD84A141C3AC167835CD7 /* RNFetchBlobFS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNFetchBlobFS.m; path = ios/RNFetchBlobFS.m; sourceTree = ""; }; 0EB20C8DF50E560049B18F49C648F10A /* React-Core.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-Core.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 0EE0EFB192D6A4057750293E76172B93 /* AudioRecorderManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AudioRecorderManager.m; path = ios/AudioRecorderManager.m; sourceTree = ""; }; + 0F2BEB3203326DA9994D2329F5515A34 /* ssim_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = ssim_sse2.c; path = src/dsp/ssim_sse2.c; sourceTree = ""; }; 0F318A1FC11A1A8E05DDD499EE7F877C /* RNFirebaseAuth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseAuth.h; sourceTree = ""; }; - 0FAEBE5D58863C9A3B5B59A94EA01F80 /* lossless_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lossless_common.h; path = src/dsp/lossless_common.h; sourceTree = ""; }; + 0F354B2F01F2D88BF64EFB54C7F55D9B /* vlog_is_on.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = vlog_is_on.cc; path = src/vlog_is_on.cc; sourceTree = ""; }; + 0F838A60D7566E3ED6EAAAB29782AD39 /* quant_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quant_dec.c; path = src/dec/quant_dec.c; sourceTree = ""; }; 0FB6F47EE770C3A9B0C5AF899D94B955 /* RNAudio-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNAudio-dummy.m"; sourceTree = ""; }; 0FC051E8E39A958D85281DA2232549E0 /* RNBridgeModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNBridgeModule.m; path = RNNotifications/RNBridgeModule.m; sourceTree = ""; }; 0FCC74BBCDD1FFF31B5B035F9074E4CF /* RCTObjcExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTObjcExecutor.h; sourceTree = ""; }; 10250D78C60056D203D235E04EEDF191 /* RCTVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTVersion.h; sourceTree = ""; }; + 102D559173B1A82E75F05608FC7771F9 /* huffman_encode_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = huffman_encode_utils.h; path = src/utils/huffman_encode_utils.h; sourceTree = ""; }; 103AF3B67564C17BFFE8AC3251B444C2 /* MessageQueueThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MessageQueueThread.h; sourceTree = ""; }; + 10518D1EE8B03DD5443764694A2E2192 /* libwebp-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "libwebp-prefix.pch"; sourceTree = ""; }; + 106194880B0291DBB2CB25096A7764E5 /* RSKImageCropper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSKImageCropper.h; path = RSKImageCropper/RSKImageCropper.h; sourceTree = ""; }; 1068FEF6E9F10FCEC7F7A0F102077F7D /* QBImagePickerController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBImagePickerController.m; path = ios/QBImagePicker/QBImagePicker/QBImagePickerController.m; sourceTree = ""; }; 10781EC5358906306658F75464CEAB50 /* RCTDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDeviceInfo.m; sourceTree = ""; }; 1079B8B6C30DFB82CE00FBEE2735966C /* React-RCTLinking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTLinking.xcconfig"; sourceTree = ""; }; 10890E9947EA5BDF4FA0F61021BE331F /* UMCore.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UMCore.xcconfig; sourceTree = ""; }; + 108BA2E99330882B915006784045B5A9 /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; + 108CB420FAB407BE3178EAEC6141D97E /* FIRBundleUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRBundleUtil.h; path = FirebaseCore/Sources/FIRBundleUtil.h; sourceTree = ""; }; 1098DF3E0DF3277CE36F1C55214E28A3 /* React-RCTSettings.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTSettings.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 10E726AD9B950953523428C107B73363 /* RCTAnimationUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTAnimationUtils.m; sourceTree = ""; }; 10F3C58AADAD3BF820F4B6EA52544515 /* ARTNodeManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ARTNodeManager.m; sourceTree = ""; }; + 112CFA9961DCCEA1D55E037EE24E1C38 /* CGGeometry+RSKImageCropper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CGGeometry+RSKImageCropper.h"; path = "RSKImageCropper/CGGeometry+RSKImageCropper.h"; sourceTree = ""; }; + 11613175A36C6EBE31343B6BACA3302C /* FIRComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponent.h; path = FirebaseCore/Sources/Private/FIRComponent.h; sourceTree = ""; }; 1164A57691AA9276B0B6AA6CF9EBA52B /* EXVideoPlayerViewControllerDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EXVideoPlayerViewControllerDelegate.h; sourceTree = ""; }; 116BEB3EE21206B1D4CB59AC53153DE3 /* react-native-jitsi-meet.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "react-native-jitsi-meet.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 117823082507FF2CD3810DE8A924654C /* RCTFont.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFont.mm; sourceTree = ""; }; 118A76D5450D2D9A30DAD8E065C92CCB /* RCTSurfacePresenterStub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfacePresenterStub.h; sourceTree = ""; }; 11A2F396A66ACC1494569521055463C5 /* FBReactNativeSpec.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBReactNativeSpec.xcconfig; sourceTree = ""; }; - 11B31E00DF16B6278B172C44FA57D3DA /* DoubleConversion-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DoubleConversion-dummy.m"; sourceTree = ""; }; + 11C0A683D9914E0CCC77E6DCABB2816C /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; + 11C183F4C4B1F1E989B5028A735C3B2A /* RSKImageCropper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RSKImageCropper-prefix.pch"; sourceTree = ""; }; 11C6FD394B6095FA5812033C28A9AFAA /* RCTUIImageViewAnimated.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTUIImageViewAnimated.h; path = Libraries/Image/RCTUIImageViewAnimated.h; sourceTree = ""; }; 11E389E045BCBF83010393F69FBDC4B1 /* UMBarCodeScannerProviderInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMBarCodeScannerProviderInterface.h; path = UMBarCodeScannerInterface/UMBarCodeScannerProviderInterface.h; sourceTree = ""; }; 11FE3D70314F711012EF0BDE4979BE00 /* REATransitionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REATransitionManager.h; sourceTree = ""; }; 1209EDCD114EE04E54BEB57C0949E700 /* UMMagnetometerInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMMagnetometerInterface.h; path = UMSensorsInterface/UMMagnetometerInterface.h; sourceTree = ""; }; - 1213AB99B5CC77DF90E77DCF5420383F /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; 1231B98DC8FA463C5147C87F53A7B0CD /* RCTDatePickerManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDatePickerManager.h; sourceTree = ""; }; + 1246B4FC24C785047CD95D5E8BB7AE12 /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; 125C9C4E1B08E35E47F42EE6FABDA55F /* UMCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UMCore-prefix.pch"; sourceTree = ""; }; 1262B5E77305E75F6C30EAA6032AD699 /* react-native-document-picker.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-document-picker.xcconfig"; sourceTree = ""; }; 1275E79B06824B79F8ED750B4F349A74 /* RCTBridge+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTBridge+Private.h"; sourceTree = ""; }; 128DE5F176CD188ADAB62F25643F2795 /* LICENSE.md */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE.md; sourceTree = ""; }; 12AF02A793F26E562BCB5474EC337429 /* RCTNullability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTNullability.h; sourceTree = ""; }; 12EC3DD9CD28EBA910DC357466A9268D /* RNGestureHandlerDirection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNGestureHandlerDirection.h; path = ios/RNGestureHandlerDirection.h; sourceTree = ""; }; - 130BEEABCFE093EE423DDC47BE879AA4 /* GDTRegistrar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTRegistrar.h; path = GoogleDataTransport/GDTLibrary/Public/GDTRegistrar.h; sourceTree = ""; }; - 133986823449A7882523C4DF4CDAB704 /* vp8_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8_dec.h; path = src/dec/vp8_dec.h; sourceTree = ""; }; 13418D83B88F6337A936215291AAEFE5 /* Yoga.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Yoga.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 13721102B03A8ECF1B4691430FB78793 /* GDTLifecycle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTLifecycle.m; path = GoogleDataTransport/GDTLibrary/GDTLifecycle.m; sourceTree = ""; }; 13779FADE8C2EEA8185E90141DA3E5D4 /* BugsnagKSCrashSysInfoParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagKSCrashSysInfoParser.h; sourceTree = ""; }; 13A2EF3CE7CCD3FD7FA53533E22C686E /* Bitfield.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Bitfield.h; path = yoga/Bitfield.h; sourceTree = ""; }; 13B96040DC69901B1C2CD26E570EEB47 /* RCTReconnectingWebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTReconnectingWebSocket.m; path = Libraries/WebSocket/RCTReconnectingWebSocket.m; sourceTree = ""; }; + 13BC4224F66908DB532F9B44C792439A /* GULReachabilityChecker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULReachabilityChecker.h; path = GoogleUtilities/Reachability/Private/GULReachabilityChecker.h; sourceTree = ""; }; + 13C8C8B254851998F9289F71229B28A2 /* libFirebaseInstallations.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFirebaseInstallations.a; path = libFirebaseInstallations.a; sourceTree = BUILT_PRODUCTS_DIR; }; 13CBC0BC2FB3CE717B2C0EAE3A88C1A0 /* JSIDynamic.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = JSIDynamic.cpp; sourceTree = ""; }; 13DCAC04D657A2082E265DD6149414DB /* RCTBaseTextInputShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBaseTextInputShadowView.m; sourceTree = ""; }; 13FC99CB679FAF0B279975B449E1D487 /* RCTDatePickerManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDatePickerManager.m; sourceTree = ""; }; 144E7B8B4EC7AD69B7B6F83260E103C4 /* react-native-background-timer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-background-timer-dummy.m"; sourceTree = ""; }; 14731FC3B97E813560708C5159C23846 /* RNGestureHandlerModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNGestureHandlerModule.m; path = ios/RNGestureHandlerModule.m; sourceTree = ""; }; - 1479715D7848A8E4C2D19640161BB45D /* cost_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_enc.c; path = src/enc/cost_enc.c; sourceTree = ""; }; - 1493995A8BFB7373CDD744F29FB45E51 /* cct.nanopb.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cct.nanopb.c; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c; sourceTree = ""; }; - 14A2693CDD9952524E83AD5C56A37DD8 /* webp_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = webp_enc.c; path = src/enc/webp_enc.c; sourceTree = ""; }; + 147CFFA41FD70FB3BEA2696A188FD294 /* GDTCORRegistrar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORRegistrar.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORRegistrar.h; sourceTree = ""; }; + 1488EEFA6E3BB4A30E0FA6D3CAB794CC /* FirebaseAnalytics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseAnalytics.xcconfig; sourceTree = ""; }; 14C97A8650B918816C5DB9E8D08249AD /* RNLocalize.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNLocalize.h; path = ios/RNLocalize.h; sourceTree = ""; }; + 14E9D8CDCDCDC635008003D55AC6728F /* FIRAppInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppInternal.h; path = FirebaseCore/Sources/Private/FIRAppInternal.h; sourceTree = ""; }; 150C87055CDDB34CF656770A6785DAF7 /* BSG_KSCrashSentry_User.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSCrashSentry_User.c; sourceTree = ""; }; 151FCAEAB01057A6DFAF66D7094DF371 /* UIView+React.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIView+React.m"; sourceTree = ""; }; 1530FCAA091AB1F8F8F266BFA7BDFA14 /* RCTSegmentedControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSegmentedControl.m; sourceTree = ""; }; 1546D22C2C8EA6AE11F39999F64BC710 /* RNPushKitEventListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNPushKitEventListener.h; path = RNNotifications/RNPushKitEventListener.h; sourceTree = ""; }; - 1583CB301D61E5B65FA78359FE12CAD9 /* FIRInstanceIDTokenFetchOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenFetchOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h; sourceTree = ""; }; + 15762D6096B65B02F92828DF3C3101E4 /* fixed-dtoa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "fixed-dtoa.h"; path = "double-conversion/fixed-dtoa.h"; sourceTree = ""; }; 1588722AC1F1877FF162DB4503545D65 /* RCTDevSettings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDevSettings.h; sourceTree = ""; }; 15912309AA610251329D74FA111DE5CA /* libRNLocalize.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNLocalize.a; path = libRNLocalize.a; sourceTree = BUILT_PRODUCTS_DIR; }; 15B515C88A882F49E4AE51F40CC365F3 /* EXFilePermissionModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXFilePermissionModule.h; path = EXFileSystem/EXFilePermissionModule.h; sourceTree = ""; }; + 15B61266CE79A06337D4E2231EBAF1DE /* lossless.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless.c; path = src/dsp/lossless.c; sourceTree = ""; }; 15C1E533EFB2551229D5D8018377F547 /* RCTMaskedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTMaskedView.m; sourceTree = ""; }; 15D44666109AB3610BC6DEF28C5CA237 /* RCTBorderStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBorderStyle.h; sourceTree = ""; }; - 15D81EE7F5F3714858C7FF9A5982EA34 /* FIRInstanceIDStringEncoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDStringEncoding.m; path = Firebase/InstanceID/FIRInstanceIDStringEncoding.m; sourceTree = ""; }; + 160856CCFCFA358DCF2AAC3EFA195712 /* cost.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost.c; path = src/dsp/cost.c; sourceTree = ""; }; 1615A42F724A8A0EFBB3E03DCA8989DF /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = FontAwesome5_Brands.ttf; path = Fonts/FontAwesome5_Brands.ttf; sourceTree = ""; }; 1628FCE1C0BA5C53ADD4E56D5A762BAA /* RCTLocalAssetImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTLocalAssetImageLoader.h; path = Libraries/Image/RCTLocalAssetImageLoader.h; sourceTree = ""; }; 165085416BBB22C24BA508984FD6C6DF /* UMExportedModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMExportedModule.h; path = UMCore/UMExportedModule.h; sourceTree = ""; }; - 16539A1962C2EA438882C01AA585AA85 /* random_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = random_utils.c; path = src/utils/random_utils.c; sourceTree = ""; }; 167001BB542F875BB6AE6374CBE2F8D3 /* RCTValueAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTValueAnimatedNode.h; sourceTree = ""; }; 16839A17E6F24246EC83A9E32C3C3AA7 /* BugsnagSessionFileStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagSessionFileStore.m; sourceTree = ""; }; - 169C59D4B7CFD8544456F26E526BB4F7 /* FIRInstanceIDDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDDefines.h; path = Firebase/InstanceID/FIRInstanceIDDefines.h; sourceTree = ""; }; 16E1B3D3F1C9A20AC3EE3B0DEF23172B /* RCTConvert+FFFastImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "RCTConvert+FFFastImage.m"; path = "ios/FastImage/RCTConvert+FFFastImage.m"; sourceTree = ""; }; 16E6D00B240E8A6875583B15B09C0AD0 /* RCTRootContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRootContentView.m; sourceTree = ""; }; + 16FB6D1CB6C00FD26DF39F79C94A3B7C /* GULHeartbeatDateStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULHeartbeatDateStorage.h; path = GoogleUtilities/Environment/Public/GULHeartbeatDateStorage.h; sourceTree = ""; }; 170794365051DE61C2F27CA071918980 /* RCTInputAccessoryViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInputAccessoryViewManager.h; sourceTree = ""; }; 170A74C6C2C5C22A8B53386C9837E276 /* RNNotificationEventHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNNotificationEventHandler.h; path = RNNotifications/RNNotificationEventHandler.h; sourceTree = ""; }; + 1731BEB8C2C3368DB5FDF5403C2F7DF3 /* FBLPromise+Async.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Async.h"; path = "Sources/FBLPromises/include/FBLPromise+Async.h"; sourceTree = ""; }; 17341144B555A03C5EBEDD81B0B832E0 /* RNDateTimePicker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNDateTimePicker.h; path = ios/RNDateTimePicker.h; sourceTree = ""; }; + 176DC1CC909FEC82CDF5716487143CF4 /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; 177DDED5760D29524F4FB9784CE2D2E4 /* RCTConvert.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTConvert.m; sourceTree = ""; }; 17842AAA69394D97DF4C5ECF3A8B42B0 /* ReactNativeShareExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ReactNativeShareExtension.m; path = ios/ReactNativeShareExtension.m; sourceTree = ""; }; 17C501E18A92D84749D865D5BC99708B /* ModuleRegistry.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = ModuleRegistry.cpp; sourceTree = ""; }; - 18083C0F8FB874B63881DB343401FE81 /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; - 1874FFEDFA6B268EFD16DEDF5C0ABF72 /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; - 18765F99260DDACA363C4D54C9396C3C /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; + 183A3C0267913A961293F8FCB8FCF81D /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; + 1876F2F1E1CB7222FA2BE64E89BC0A68 /* GULNetworkURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetworkURLSession.m; path = GoogleUtilities/Network/GULNetworkURLSession.m; sourceTree = ""; }; + 188DE396BFE9BACC9E475E966B3ECB4C /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; 18D46CE6DE6E232560BCA20F7347F9C9 /* log.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = log.cpp; path = yoga/log.cpp; sourceTree = ""; }; 18EDA5479E41E41962A4F9C45DF4B942 /* Yoga-internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Yoga-internal.h"; path = "yoga/Yoga-internal.h"; sourceTree = ""; }; - 190B39A0F3F2FA4A66BF58DD49E9BCFB /* dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec.c; path = src/dsp/dec.c; sourceTree = ""; }; 19284D31BD342A64F8E638D6F6DD5F87 /* RCTInspector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInspector.h; sourceTree = ""; }; + 192CCAEA3A7BD283727CC8F0076D4F1F /* Demangle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Demangle.cpp; path = folly/Demangle.cpp; sourceTree = ""; }; 194DF9C69A78D93A7716C6FA7B2DA705 /* RCTCustomKeyboardViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCustomKeyboardViewController.h; sourceTree = ""; }; + 195034DDBA6E2F083A2BB6F020769C4F /* UIApplication+RSKImageCropper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIApplication+RSKImageCropper.h"; path = "RSKImageCropper/UIApplication+RSKImageCropper.h"; sourceTree = ""; }; + 1959F3ECFABC8A4D200C1715ED0696A0 /* FBLPromise+Validate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Validate.m"; path = "Sources/FBLPromises/FBLPromise+Validate.m"; sourceTree = ""; }; + 1999800C3B5B4E5C0A32818F3D47D45A /* FIRLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLogger.h; path = FirebaseCore/Sources/Private/FIRLogger.h; sourceTree = ""; }; + 19B4CD2BCA1F7FD16045A42310FCE9F0 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; 19BB2473A3C289774EC32A321472BCE1 /* RNCSliderManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCSliderManager.h; path = ios/RNCSliderManager.h; sourceTree = ""; }; + 19C61133E42FEBE0031138AEB2C96709 /* diy-fp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "diy-fp.h"; path = "double-conversion/diy-fp.h"; sourceTree = ""; }; 19C6B487FF09B7DC327E20B038C0DF87 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 19D3732BCBA5628433B833B5D52F0700 /* RCTResizeMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTResizeMode.h; path = Libraries/Image/RCTResizeMode.h; sourceTree = ""; }; - 1A3205E89D7E14C616E752AE578B2DB3 /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; + 19F7DAA1BD0C331F0062BBC640DBC35E /* FIRDependency.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDependency.h; path = FirebaseCore/Sources/Private/FIRDependency.h; sourceTree = ""; }; + 1A5B8DD3BD08B970140758525F472335 /* GDTCORClock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORClock.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORClock.h; sourceTree = ""; }; 1A73B6FB820D5DF2EC492B1A4D6037F2 /* RCTSurfaceView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceView.h; sourceTree = ""; }; 1A79B9769DABF5D747621369F882A30A /* RCTBundleURLProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBundleURLProvider.m; sourceTree = ""; }; 1A8E530C7B07419F2B4A9E63EFBA44C7 /* RCTBackedTextInputDelegateAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBackedTextInputDelegateAdapter.m; sourceTree = ""; }; @@ -4425,49 +4631,48 @@ 1AAFA15E541F79750341AB85EC424250 /* EXAppLoaderInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EXAppLoaderInterface.h; sourceTree = ""; }; 1AB78CEE69FD01B802877A116264D902 /* EXContactsRequester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXContactsRequester.h; path = EXPermissions/EXContactsRequester.h; sourceTree = ""; }; 1AB96A3C68259FF4D2301FB0F118B702 /* EXCameraPermissionRequester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXCameraPermissionRequester.h; path = EXPermissions/EXCameraPermissionRequester.h; sourceTree = ""; }; - 1ABEBFC8AF8824A623B2CCBDA9B3EDD3 /* UIImage+RSKImageCropper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+RSKImageCropper.m"; path = "RSKImageCropper/UIImage+RSKImageCropper.m"; sourceTree = ""; }; 1AC5E3712E1C400257D80CFEA826DFC6 /* REAClockNodes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REAClockNodes.m; sourceTree = ""; }; - 1AE4FFEE6A9488A6CE72466623293BE4 /* SpookyHashV2.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = SpookyHashV2.cpp; path = folly/hash/SpookyHashV2.cpp; sourceTree = ""; }; 1AEE9A0BA7E271016CEF50622ADF9914 /* EXFileSystemLocalFileHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXFileSystemLocalFileHandler.h; path = EXFileSystem/EXFileSystemLocalFileHandler.h; sourceTree = ""; }; 1AF7C413C7FA2654A5538A174E57FF11 /* RCTSourceCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSourceCode.h; sourceTree = ""; }; + 1B0188F1CFA087DDC5889F8B0B0301C3 /* neon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = neon.h; path = src/dsp/neon.h; sourceTree = ""; }; 1B0BFCA3863288C619E65898BB7D3E5D /* RCTBackedTextInputDelegateAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBackedTextInputDelegateAdapter.h; sourceTree = ""; }; - 1B17E24DB6A1D37F25B7A56EC2AD431E /* FIRInstanceIDKeyPairStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeyPairStore.m; path = Firebase/InstanceID/FIRInstanceIDKeyPairStore.m; sourceTree = ""; }; - 1B1A1C95AA27C1D36C6270D41774B010 /* FIRInstanceIDAuthKeyChain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthKeyChain.h; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.h; sourceTree = ""; }; - 1B2955D4AD48DE04BBCC5DB14A864B06 /* muxi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = muxi.h; path = src/mux/muxi.h; sourceTree = ""; }; + 1B408AE390C2CD577F7EF23E9F2D97CA /* strtod.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = strtod.h; path = "double-conversion/strtod.h"; sourceTree = ""; }; 1B751FDEDA4C9C7FCF33C059FA22C747 /* ReactNativeShareExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ReactNativeShareExtension.h; path = ios/ReactNativeShareExtension.h; sourceTree = ""; }; 1B824CABD58145BAA085DEB425D763CD /* RCTPropsAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTPropsAnimatedNode.m; sourceTree = ""; }; 1BB23806F75FA779CDDC924FA7F9C555 /* RNFlingHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFlingHandler.m; sourceTree = ""; }; 1BC240C9C25F80D8681D0EEC22B07F84 /* ReactNativeART.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ReactNativeART.xcconfig; sourceTree = ""; }; - 1BC69F9FE2E8DBE28E99666C455B61BD /* common_sse41.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common_sse41.h; path = src/dsp/common_sse41.h; sourceTree = ""; }; 1BCA613E270465CAFFEFCFAB5AD0872E /* UMNativeModulesProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMNativeModulesProxy.h; sourceTree = ""; }; 1BDF14C570382A8C3638F41F2E56EABB /* Yoga.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Yoga.h; path = yoga/Yoga.h; sourceTree = ""; }; - 1C3933A150F307BEBEA5276E79AE9939 /* enc_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_sse41.c; path = src/dsp/enc_sse41.c; sourceTree = ""; }; + 1C2373D7CD550A7BB6746818ACCFF4A9 /* FIRLibrary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLibrary.h; path = FirebaseCore/Sources/Private/FIRLibrary.h; sourceTree = ""; }; + 1C4857A0842D2EBB815D30CCE3A20B92 /* huffman_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = huffman_utils.h; path = src/utils/huffman_utils.h; sourceTree = ""; }; 1C53CFE294908B03C59C10311B192437 /* LICENSE.md */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE.md; sourceTree = ""; }; 1C89C4FC2E607369BF79A14FC2B68643 /* RCTValueAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTValueAnimatedNode.m; sourceTree = ""; }; - 1C993823267D96AA814B7C38AF6C7369 /* filters_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = filters_utils.h; path = src/utils/filters_utils.h; sourceTree = ""; }; + 1CA3042722DE6BE862DDD182F6A65072 /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; 1CA785C20F123D7AAFB30A0FD933A235 /* UMReactLogHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = UMReactLogHandler.m; sourceTree = ""; }; 1CA80193E1A0EDA3D3A4B103FC31B051 /* QBAssetsViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBAssetsViewController.m; path = ios/QBImagePicker/QBImagePicker/QBAssetsViewController.m; sourceTree = ""; }; 1CABE6C371A0BFD0444B9F27A64F4F11 /* RCTImageUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageUtils.h; path = Libraries/Image/RCTImageUtils.h; sourceTree = ""; }; 1CD28EB1C5665AB87CD4B715CE0C3EC7 /* RCTBlobCollector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBlobCollector.h; sourceTree = ""; }; 1D1A4DF30C9801FD64301020561FE612 /* RNFirebaseInstanceId.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseInstanceId.h; sourceTree = ""; }; + 1D31DB622D9EBAA4FBD560D40618BCBA /* FIRApp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRApp.h; path = FirebaseCore/Sources/Public/FIRApp.h; sourceTree = ""; }; + 1D432FED92D53468BB148EBC674FF927 /* GDTCORTransport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORTransport.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORTransport.m; sourceTree = ""; }; + 1D6EDA25FA893D1DF91AAEA53BA75B9D /* GDTCORStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORStorage.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage.h; sourceTree = ""; }; 1DC6AB09782FC3C60D8E082174E26072 /* RCTPerformanceLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTPerformanceLogger.m; sourceTree = ""; }; + 1DCB7B74B4C2EC6C5BAFC108D409C754 /* GULAppEnvironmentUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppEnvironmentUtil.h; path = GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.h; sourceTree = ""; }; 1DD372A7560FF3AD51637124739591F8 /* RootView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RootView.h; path = ios/RootView.h; sourceTree = ""; }; - 1DDEB27E88339BEF722E14FFCB3E3630 /* ANSCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ANSCompatibility.h; path = iOS/Crashlytics.framework/Headers/ANSCompatibility.h; sourceTree = ""; }; 1DE90F6D33BFED95077AB0A667A87F14 /* YGNodePrint.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = YGNodePrint.cpp; path = yoga/YGNodePrint.cpp; sourceTree = ""; }; 1DE98B4DC71DC91B5858A13E77D55B21 /* RCTFrameUpdate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFrameUpdate.h; sourceTree = ""; }; + 1DF066F20D14665E0A04D678CAD81F85 /* FIRInstanceIDCheckinService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinService.m; path = Firebase/InstanceID/FIRInstanceIDCheckinService.m; sourceTree = ""; }; 1E36B6104ECCD9D037D65F133A90B34E /* BSG_KSMach_x86_32.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSMach_x86_32.c; sourceTree = ""; }; - 1E7AA5171F7BFA958025DC698C194776 /* FIRInstanceIDKeyPairStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeyPairStore.h; path = Firebase/InstanceID/FIRInstanceIDKeyPairStore.h; sourceTree = ""; }; - 1EA8FF5764F81F464D320E1177895992 /* FIRDependency.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDependency.m; path = Firebase/Core/FIRDependency.m; sourceTree = ""; }; + 1E5CFD24886A762C411A37478D6B0296 /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; 1EAC930ED045E8B5E77D1C890D820095 /* RCTTypeSafety.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RCTTypeSafety.xcconfig; sourceTree = ""; }; 1EB722BDDED6433A2C613BC46BF7D51A /* RCTBaseTextShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBaseTextShadowView.m; sourceTree = ""; }; - 1EC329653A5CE5C65DB4A68C3E2D5C2D /* FIRInstanceIDAuthKeyChain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAuthKeyChain.m; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.m; sourceTree = ""; }; 1ED6FAF56D3ABCA19813CBD037348E6D /* ARTNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ARTNode.h; path = ios/ARTNode.h; sourceTree = ""; }; - 1F108CA515F3E008514F1B556040E00C /* utilities.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = utilities.cc; path = src/utilities.cc; sourceTree = ""; }; 1F2E344E048B27D0A031047E557752D7 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 1F783017BFCE6D8957205E2368080555 /* RCTKeyCommandConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTKeyCommandConstants.h; path = ios/KeyCommands/RCTKeyCommandConstants.h; sourceTree = ""; }; 1F865083282FF0E3E2499A9C3C003673 /* REAConcatNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REAConcatNode.m; sourceTree = ""; }; 1F9101373978C3B83F589B7777250231 /* UMDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMDefines.h; path = UMCore/UMDefines.h; sourceTree = ""; }; - 1FEA399CF91DC9F45F91622F9ACFBB2D /* mips_macro.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mips_macro.h; path = src/dsp/mips_macro.h; sourceTree = ""; }; + 1FC1353AA6CA2364871614AD5734013C /* GDTCORConsoleLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORConsoleLogger.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORConsoleLogger.m; sourceTree = ""; }; + 1FF50E5ECFD2E8272C61A10AF4ED50A1 /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; 1FFF74A046BF8D427EF7C90624577C41 /* RCTProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTProfile.m; sourceTree = ""; }; 200B410FC52ED1D49FB3C784185B8F03 /* RCTVideoManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTVideoManager.m; path = ios/Video/RCTVideoManager.m; sourceTree = ""; }; 202722AA0D229A11350F6DC0F267A0BA /* libRNBootSplash.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNBootSplash.a; path = libRNBootSplash.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -4475,47 +4680,45 @@ 20A99EE431CC3BD1E3C4AD05F7D59947 /* RNUserDefaults.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNUserDefaults.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 20B89E66A01DCF69DB5C84DFEAF3C692 /* RCTActivityIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTActivityIndicatorView.h; sourceTree = ""; }; 20EB67591180BD14936DAED287A3BFF0 /* Pods-ShareRocketChatRN-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ShareRocketChatRN-dummy.m"; sourceTree = ""; }; + 210731369AB3AD93BEB294C250CD20AA /* JitsiMeet.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JitsiMeet.framework; path = Frameworks/JitsiMeet.framework; sourceTree = ""; }; 21199E18BA11E7D9DFB4E16A495239DE /* RNCAppearance.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCAppearance.m; path = ios/Appearance/RNCAppearance.m; sourceTree = ""; }; 212DFA7D181040060D52BE908EF49DB4 /* React-RCTActionSheet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTActionSheet-prefix.pch"; sourceTree = ""; }; - 2132ED6BB290718E77492CADF518EEAA /* RSKImageScrollView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSKImageScrollView.m; path = RSKImageCropper/RSKImageScrollView.m; sourceTree = ""; }; 215BA62B612524467633014B1E139B0D /* RCTSourceCode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSourceCode.m; sourceTree = ""; }; 217EC25650E42C36B58D098A7BE98C37 /* EXHaptics-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EXHaptics-prefix.pch"; sourceTree = ""; }; - 219BAC5E878DD89ED1E40A58350D5474 /* FIRAnalyticsConnector.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FIRAnalyticsConnector.framework; path = Frameworks/FIRAnalyticsConnector.framework; sourceTree = ""; }; + 21A7E3A6A97682E28E064E912B3B4371 /* GULSceneDelegateSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULSceneDelegateSwizzler.m; path = GoogleUtilities/SceneDelegateSwizzler/GULSceneDelegateSwizzler.m; sourceTree = ""; }; 21A88474A311493C0251BB4E0C560C13 /* EXConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXConstants.h; path = EXConstants/EXConstants.h; sourceTree = ""; }; - 21DD77BC4C9F446030612C2B4AB20317 /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; - 21E202A7C5AD705849C005996A458957 /* FIRInstanceIDAPNSInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAPNSInfo.m; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.m; sourceTree = ""; }; + 21BBC4149E367B15994D55B0BE6395A3 /* lossless_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lossless_common.h; path = src/dsp/lossless_common.h; sourceTree = ""; }; + 21BCCE9D22EB85259CE081E0A923EDB6 /* thread_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = thread_utils.c; path = src/utils/thread_utils.c; sourceTree = ""; }; 21F7F0D642A4BE155F53A6D1027A76FB /* RCTDiffClampAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDiffClampAnimatedNode.m; sourceTree = ""; }; 21FE77054F9C254ACCD4B873EF82A437 /* RCTTurboModuleManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTurboModuleManager.mm; sourceTree = ""; }; 220361FF3B2778F8F38C2C4DCC5B49FD /* libEXConstants.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libEXConstants.a; path = libEXConstants.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 222A34B911FF9FCFF752C596AE492C54 /* cost_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_sse2.c; path = src/dsp/cost_sse2.c; sourceTree = ""; }; 222E3933ED98940FBF6250CAF9E69A01 /* RCTConvert+UIBackgroundFetchResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTConvert+UIBackgroundFetchResult.h"; sourceTree = ""; }; 22320F19C8575F89296DDEDC8687B2D4 /* RNGestureHandler.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNGestureHandler.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 2238DF0F9A33FE9E1C8F07154BC375B0 /* UIImage+RSKImageCropper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+RSKImageCropper.h"; path = "RSKImageCropper/UIImage+RSKImageCropper.h"; sourceTree = ""; }; 2263F17BAE0AB4165F7B27DB8998D0EB /* RCTSettingsManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSettingsManager.m; sourceTree = ""; }; + 226470D5AC918D710F1EE1BDBAADC256 /* FIRInstallationsStatus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsStatus.h; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsStatus.h; sourceTree = ""; }; 226C067E41BA7EAEDA042F0161EBF418 /* BSG_KSFileUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSFileUtils.h; sourceTree = ""; }; 226FCB055213BA46EF8147CC03F0313B /* React-RCTSettings.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTSettings.xcconfig"; sourceTree = ""; }; + 2281519202E71413AA842990FD9E7D77 /* SpookyHashV2.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = SpookyHashV2.cpp; path = folly/hash/SpookyHashV2.cpp; sourceTree = ""; }; 22D87ACD98A2F3752AA6A407B7C2F789 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 22EEF06C78D16BA53279CA421CEED4B7 /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = iOS/Fabric.framework; sourceTree = ""; }; + 22DA47BB069C91769B82987265E8AA4F /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; 22F389B285F0B865DEAD7629FED2F9AC /* RCTSurfaceRootShadowViewDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceRootShadowViewDelegate.h; sourceTree = ""; }; - 236BD84A3D7A0BCA0879CEFAA83975BA /* GDTEventDataObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTEventDataObject.h; path = GoogleDataTransport/GDTLibrary/Public/GDTEventDataObject.h; sourceTree = ""; }; 236C579C9D265168EDE8DB0F896CBBAA /* ARTBrush.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARTBrush.h; sourceTree = ""; }; 23754EA75C4611DD841F9D526A5FE05D /* EXFilePermissionModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXFilePermissionModule.m; path = EXFileSystem/EXFilePermissionModule.m; sourceTree = ""; }; 237B12B1A4532AE980B5562F14F00BD3 /* React-CoreModules-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-CoreModules-dummy.m"; sourceTree = ""; }; + 238912792225FCFD2816B4E4CF1D3D79 /* GULSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULSwizzler.m; path = GoogleUtilities/MethodSwizzler/GULSwizzler.m; sourceTree = ""; }; + 23AF27BB8FC1D90102AF761B02C48033 /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; 23CED23C3BC4B8F1C25E48EA10AE1A89 /* RCTDataRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTDataRequestHandler.h; path = Libraries/Network/RCTDataRequestHandler.h; sourceTree = ""; }; - 23EECA421B7288F614E7ABE957561AC3 /* NSError+FIRInstanceID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError+FIRInstanceID.m"; path = "Firebase/InstanceID/NSError+FIRInstanceID.m"; sourceTree = ""; }; - 23EFDD9E4FD7AF73F60CA08A78677637 /* muxedit.c */ = {isa = PBXFileReference; includeInIndex = 1; name = muxedit.c; path = src/mux/muxedit.c; sourceTree = ""; }; - 241E57CE7B8A8A9A0C30B2F4727E17F5 /* FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID.h; path = Firebase/InstanceID/Public/FIRInstanceID.h; sourceTree = ""; }; + 23D5AA523F9126F7D30ECF8AA9BBE433 /* GDTCCTUploader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTUploader.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTUploader.m; sourceTree = ""; }; 242758B9EDFF146ABE411909CAC8F130 /* libreact-native-appearance.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-appearance.a"; path = "libreact-native-appearance.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 242B18E8C5CE1CDEE3BF9A0CCB1AC607 /* RCTRefreshControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRefreshControl.h; sourceTree = ""; }; 243C7E6E9AAD9EA0A3101707AE96006D /* RNFirebaseMessaging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseMessaging.h; sourceTree = ""; }; 245A235B6534FDB96D4BB92202CD55D4 /* BugsnagReactNative-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BugsnagReactNative-prefix.pch"; sourceTree = ""; }; 247F1B869B8C5B1B67219E38EFA3D3BE /* NSDataBigString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NSDataBigString.h; sourceTree = ""; }; - 2497D5165EC0A35BD96AD57FC55949E6 /* GDTConsoleLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTConsoleLogger.h; path = GoogleDataTransport/GDTLibrary/Public/GDTConsoleLogger.h; sourceTree = ""; }; 24A2994EDB8FF27036011F13232C65E0 /* RCTErrorInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTErrorInfo.h; sourceTree = ""; }; + 24B86369C499373261B640769283284B /* Firebase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Firebase.h; path = CoreOnly/Sources/Firebase.h; sourceTree = ""; }; 24CD51144600B32C8331D79B7265324E /* RNDeviceInfo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNDeviceInfo-dummy.m"; sourceTree = ""; }; 250AC3F1C3E28195B86681506026C1B0 /* RNBootSplash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNBootSplash.h; path = ios/RNBootSplash.h; sourceTree = ""; }; - 250CF8B419B162FB992D8736BE4DBC17 /* quant_levels_dec_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = quant_levels_dec_utils.h; path = src/utils/quant_levels_dec_utils.h; sourceTree = ""; }; - 254440D91C3A7ECA89F32B4582B454A5 /* webp_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = webp_dec.c; path = src/dec/webp_dec.c; sourceTree = ""; }; + 2536DE7D124E9784E2285002DB68F17A /* demux.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = demux.h; path = src/webp/demux.h; sourceTree = ""; }; 255B228CCCED6DFCD0C46C088AC3FFCA /* BSG_KSSignalInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSSignalInfo.h; sourceTree = ""; }; 2577F299FCB0A19824FE989BE77B8E8F /* libReact-jsinspector.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-jsinspector.a"; path = "libReact-jsinspector.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 258615144280F905E5F66A4A8335502A /* RCTConvert+Text.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RCTConvert+Text.h"; path = "Libraries/Text/RCTConvert+Text.h"; sourceTree = ""; }; @@ -4523,243 +4726,272 @@ 25C61855D9E009FBDE973162823D5B7D /* RNGestureHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNGestureHandler.h; path = ios/RNGestureHandler.h; sourceTree = ""; }; 25DBAFC7D6E6CECEE0D8BD212F907826 /* UMReactFontManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMReactFontManager.h; sourceTree = ""; }; 25F03951255FA20CD20B62D3C45CFB53 /* SystraceSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SystraceSection.h; sourceTree = ""; }; - 2626AA8E24B62228D329C312E5C13F1A /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; 262A578D9D6A95FA9D2C63A74A12B843 /* RNImageCropPicker-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNImageCropPicker-dummy.m"; sourceTree = ""; }; + 264FC1F2B694A07F9E99ECECA1434258 /* SDImageHEICCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoderInternal.h; path = SDWebImage/Private/SDImageHEICCoderInternal.h; sourceTree = ""; }; 26657F01A0E5510FEABAEBCE1DE12D1E /* ARTNodeManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARTNodeManager.h; sourceTree = ""; }; + 2691CB449C5A42D1964D19F13F61C0B7 /* picture_tools_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_tools_enc.c; path = src/enc/picture_tools_enc.c; sourceTree = ""; }; 2698D552A903060218AE893510C4D8C1 /* BugsnagSessionTracker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagSessionTracker.h; sourceTree = ""; }; 269BE773C9482484B70949A40F4EA525 /* libReact-RCTSettings.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-RCTSettings.a"; path = "libReact-RCTSettings.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 26C529F93BEAF01BDCF314272A97D5A2 /* Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Private.h; sourceTree = ""; }; + 26C5912343F09FDEC67C47A7DD500AAF /* FIRHeartbeatInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRHeartbeatInfo.h; path = FirebaseCore/Sources/Private/FIRHeartbeatInfo.h; sourceTree = ""; }; 27099028B8D9CD2C8368F70BDADC79D9 /* RNFetchBlobReqBuilder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNFetchBlobReqBuilder.h; path = ios/RNFetchBlobReqBuilder.h; sourceTree = ""; }; - 270B61094921448E80F733E74AF42855 /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; + 2728A14783AB5E811E5251887AADACAF /* GULAppDelegateSwizzler_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppDelegateSwizzler_Private.h; path = GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h; sourceTree = ""; }; 272EDD435D37F6C2EFA2EC5FB49D400D /* RCTReloadCommand.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTReloadCommand.m; sourceTree = ""; }; - 273439589765A5A66AC272F5E174994D /* NSBezierPath+RoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+RoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+RoundedCorners.h"; sourceTree = ""; }; - 27471F34AEEB9F553D525EC2E01F3CE5 /* cached-powers.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "cached-powers.cc"; path = "double-conversion/cached-powers.cc"; sourceTree = ""; }; 27549CDB44130D9F80FF997211B4967A /* React-RCTLinking.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTLinking.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 2770744B1EE09E021F4D15CF3C5BBF74 /* REAEventNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REAEventNode.h; sourceTree = ""; }; 277399C556AA4B46C25A19AC1B29F616 /* RCTScrollView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollView.m; sourceTree = ""; }; 277D35BCCDA3CD69ADA70C694A988723 /* EXVideoPlayerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EXVideoPlayerViewController.m; sourceTree = ""; }; 279390C893577F74DD2049383E1EDD1A /* libKeyCommands.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libKeyCommands.a; path = libKeyCommands.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 27AACFC75C230014487A026D8216B40F /* mux.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mux.h; path = src/webp/mux.h; sourceTree = ""; }; + 27DCBA8B031ECFD777996CDBB53368B9 /* lossless_enc_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_sse41.c; path = src/dsp/lossless_enc_sse41.c; sourceTree = ""; }; 27F11528898E1C09AC16B648A3466810 /* RCTJavaScriptLoader.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTJavaScriptLoader.mm; sourceTree = ""; }; 280F25C6B97C9C0323AD07C0C207CAA9 /* RCTFileReaderModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTFileReaderModule.m; sourceTree = ""; }; - 281C56FBABFEE9C04A3535E9790A9120 /* demux.c */ = {isa = PBXFileReference; includeInIndex = 1; name = demux.c; path = src/demux/demux.c; sourceTree = ""; }; 28265B29D617FAAA311A5A948A405705 /* QBAlbumsViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBAlbumsViewController.m; path = ios/QBImagePicker/QBImagePicker/QBAlbumsViewController.m; sourceTree = ""; }; + 28360F116ACE0C01D969AB83563A87B3 /* picture_rescale_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_rescale_enc.c; path = src/enc/picture_rescale_enc.c; sourceTree = ""; }; + 285481B86C63C48528603907702089DB /* muxread.c */ = {isa = PBXFileReference; includeInIndex = 1; name = muxread.c; path = src/mux/muxread.c; sourceTree = ""; }; 2860113F8A165287F78B379A7E7735F1 /* RCTSafeAreaShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaShadowView.h; sourceTree = ""; }; 28640FE129348D992B19F5FD6192361F /* react-native-notifications-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-notifications-prefix.pch"; sourceTree = ""; }; 28681FF7EBC6A6EF86791B05CBAFC5BF /* REAEventNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REAEventNode.m; sourceTree = ""; }; 2870DD1B6E957DCCFFE20D03678B0CAB /* RNFirebase-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNFirebase-dummy.m"; sourceTree = ""; }; 288BBAC2927744457CBE94EB3C4DD3F2 /* UMPermissionsInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMPermissionsInterface.h; path = UMPermissionsInterface/UMPermissionsInterface.h; sourceTree = ""; }; + 288BE286F03060115DD9AF8F02177A9A /* upsampling_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_sse2.c; path = src/dsp/upsampling_sse2.c; sourceTree = ""; }; 2896DB1C66C7E0D6CEA401311DFC3CE9 /* RCTLinkingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTLinkingManager.h; path = Libraries/LinkingIOS/RCTLinkingManager.h; sourceTree = ""; }; + 289A7FAC33616CEAE154163C9869020A /* FIRInstallationsIDController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsIDController.h; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.h; sourceTree = ""; }; 289FDAE476A89BDD5D67514FF6353737 /* BSGSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSGSerialization.h; sourceTree = ""; }; 28A951EB4F09E6AB0FE2D903F6DF0CB5 /* RCTConvert+ART.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "RCTConvert+ART.m"; path = "ios/RCTConvert+ART.m"; sourceTree = ""; }; 28AD009D7AA520A7C1D6D17FD2291045 /* BugsnagKSCrashSysInfoParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagKSCrashSysInfoParser.m; sourceTree = ""; }; + 28AD1F843F1DFF344E92B8B18AB1A0FB /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; 28F65205BA8970F406183AF22BD3D344 /* BSG_KSDynamicLinker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSDynamicLinker.h; sourceTree = ""; }; - 28FD7F961165BA72E393450F992F2048 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; + 28FAFC7FE3AEBCDC53B7E984681EB602 /* FIRInstanceID_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID_Private.h; path = Firebase/InstanceID/Private/FIRInstanceID_Private.h; sourceTree = ""; }; 2906DDB1F14278AA23677F8338948411 /* ARTSurfaceView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ARTSurfaceView.h; path = ios/ARTSurfaceView.h; sourceTree = ""; }; 29111EDC9067117B4EA9376BF35DDAE2 /* EXConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXConstants.m; path = EXConstants/EXConstants.m; sourceTree = ""; }; 29296F8F060C36B7C0B8B12AD859654B /* RCTUIManagerUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUIManagerUtils.m; sourceTree = ""; }; 294EC95DF54C0C9D2047FED005B2E894 /* RNRootView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNRootView-prefix.pch"; sourceTree = ""; }; 2979D53A359A99A42391A537AE1B5B75 /* RNFirebaseFirestore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseFirestore.m; sourceTree = ""; }; + 297C759A2A6FB64610A331F75C41FC8D /* FIRInstanceIDAuthService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthService.h; path = Firebase/InstanceID/FIRInstanceIDAuthService.h; sourceTree = ""; }; 2980F44EC4FCC6EA8AC5C12779A3544E /* BSG_KSCrashReportStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSG_KSCrashReportStore.m; sourceTree = ""; }; + 2987EA104168329CA646DE0B0609C594 /* FIRSecureStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRSecureStorage.m; path = FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.m; sourceTree = ""; }; 29B0448C6CE80B6F380BA65C5CC4814A /* EXPermissions-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EXPermissions-prefix.pch"; sourceTree = ""; }; + 29BA4E5D5665A96984B0753F69FC38F7 /* Answers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Answers.h; path = iOS/Crashlytics.framework/Headers/Answers.h; sourceTree = ""; }; 29CA433545EC6BB3C9FD13334F15C7FA /* BSG_KSCrashC.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashC.h; sourceTree = ""; }; 29CF9A5137C788E777B3CFA9D6621816 /* EXAV.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = EXAV.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 29D36281C1D290C277A09309802E40FD /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 29E6BDF2F5D56B7867030711E63DFE1D /* rescaler_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_sse2.c; path = src/dsp/rescaler_sse2.c; sourceTree = ""; }; + 29E2C22FF879C56A44707455873A657F /* firebasecore.nanopb.c */ = {isa = PBXFileReference; includeInIndex = 1; name = firebasecore.nanopb.c; path = Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c; sourceTree = ""; }; 29FB7BDB0A111B602E396CF36196D450 /* React-RCTImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTImage-prefix.pch"; sourceTree = ""; }; 2A0E90B7D6DE800A18779640EC834AA4 /* RNCCameraRollManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCCameraRollManager.m; path = ios/RNCCameraRollManager.m; sourceTree = ""; }; 2A0FB9521830D237F4463109251B0464 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 2A1B9ADB6A8B3779D38717839DA63A33 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 2A1CA7669FE65C9DB40A235FA8026681 /* GDTReachability_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTReachability_Private.h; path = GoogleDataTransport/GDTLibrary/Private/GDTReachability_Private.h; sourceTree = ""; }; + 2A2F1FA0788DFD486412DD726FC1C595 /* alpha_processing_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing_sse2.c; path = src/dsp/alpha_processing_sse2.c; sourceTree = ""; }; 2A50F74C42C3DD6B4A9F69B23D3E82AE /* RCTImageViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTImageViewManager.m; sourceTree = ""; }; 2A67786461370E185AF7874C96314135 /* QBVideoIconView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QBVideoIconView.h; path = ios/QBImagePicker/QBImagePicker/QBVideoIconView.h; sourceTree = ""; }; 2A9288615ACA0BF93301A73914C47FFF /* RCTStyleAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTStyleAnimatedNode.m; sourceTree = ""; }; 2AA3DB01D4A037FAAA90E9701AD29232 /* REAFunctionNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REAFunctionNode.m; sourceTree = ""; }; + 2AA5FDE5D455838C40D597792B73FDCC /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; 2AA78930FB447031AB93AD2299273FD1 /* RCTVibration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTVibration.m; sourceTree = ""; }; 2ABC22E6B64EF62F052874BF99B9EFCD /* React-jsi.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-jsi.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 2AD9D6D015FBBB5D23A16236EFDC21EA /* CGGeometry+RSKImageCropper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CGGeometry+RSKImageCropper.h"; path = "RSKImageCropper/CGGeometry+RSKImageCropper.h"; sourceTree = ""; }; 2AECEBE83F3D166D80F0950412E1D8F4 /* Fontisto.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = Fontisto.ttf; path = Fonts/Fontisto.ttf; sourceTree = ""; }; 2AFEC36A329F7F411B66663877EE221E /* ARTRadialGradient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARTRadialGradient.h; sourceTree = ""; }; 2B17A71888AA28CEFEC37B72F2A68A91 /* libreact-native-slider.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-slider.a"; path = "libreact-native-slider.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 2B403A7E880375608506A45DE05EC20B /* EXFileSystem.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EXFileSystem.xcconfig; sourceTree = ""; }; - 2B4DE5FDBADC18037B2EFE8D8FF57828 /* pb_common.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_common.c; sourceTree = ""; }; - 2B591EBDB62B59175625167A78E88D03 /* GULNetworkConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetworkConstants.m; path = GoogleUtilities/Network/GULNetworkConstants.m; sourceTree = ""; }; + 2B5CA70816F8CA51268D097D84CE8B5B /* muxi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = muxi.h; path = src/mux/muxi.h; sourceTree = ""; }; + 2B60F0B412AB14099AD2E2BCB853B9F5 /* cached-powers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "cached-powers.h"; path = "double-conversion/cached-powers.h"; sourceTree = ""; }; 2BA03DD2917BE1F12B9532EDDE505149 /* RNCWebViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCWebViewManager.h; path = ios/RNCWebViewManager.h; sourceTree = ""; }; - 2BBC2EA548E00A132F008D4552E8CABD /* FIRInstanceIDBackupExcludedPlist.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDBackupExcludedPlist.m; path = Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.m; sourceTree = ""; }; + 2BA675DA25C52E2FD5633ACE43240432 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; + 2BB0CFABA51216D7A7818D5F5D3015E7 /* cost_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_sse2.c; path = src/dsp/cost_sse2.c; sourceTree = ""; }; 2BC07A691B5C1F74884E31973463A763 /* RCTInspectorDevServerHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInspectorDevServerHelper.h; sourceTree = ""; }; 2BC5EF86275F965D3421C5818AB69340 /* RCTConvert+CoreLocation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTConvert+CoreLocation.h"; sourceTree = ""; }; + 2BD8EAE53B4A1B7062C4C439BA87951A /* Folly-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Folly-prefix.pch"; sourceTree = ""; }; + 2BDC9CA7E51DCBAD996FE36076C1898E /* quant_levels_dec_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quant_levels_dec_utils.c; path = src/utils/quant_levels_dec_utils.c; sourceTree = ""; }; + 2C015C102D6AB79D534F16ADF531CE8A /* FBLPromise+Testing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Testing.h"; path = "Sources/FBLPromises/include/FBLPromise+Testing.h"; sourceTree = ""; }; 2C17ABAB606722715420D6708B76E113 /* RCTConvert+CoreLocation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTConvert+CoreLocation.m"; sourceTree = ""; }; 2C67C17F481D7F02D7C3463B2411DF5A /* RCTScrollViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollViewManager.h; sourceTree = ""; }; 2C8F6E5BBFA697FF0669A137F6C69EBC /* RCTUIUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUIUtils.h; sourceTree = ""; }; 2CB8BA9740E480CD8BFB467DB0901F58 /* UMTaskManagerInterface.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UMTaskManagerInterface.xcconfig; sourceTree = ""; }; - 2CE8A788BAAD4C7C8CF9143DFD3B9506 /* rescaler_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_neon.c; path = src/dsp/rescaler_neon.c; sourceTree = ""; }; - 2CF2534628CCC7E0CB60511001A24B96 /* GDTStoredEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTStoredEvent.m; path = GoogleDataTransport/GDTLibrary/GDTStoredEvent.m; sourceTree = ""; }; - 2D1BFEB2857C8000A201EFA5B2A22488 /* FIRInstanceIDCheckinService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinService.h; path = Firebase/InstanceID/FIRInstanceIDCheckinService.h; sourceTree = ""; }; + 2D2804B1DCF18B3386453877783E3BBC /* raw_logging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = raw_logging.h; path = src/glog/raw_logging.h; sourceTree = ""; }; 2D49C8A04AF309CE5BE94686AF3A1831 /* EXFileSystemLocalFileHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXFileSystemLocalFileHandler.m; path = EXFileSystem/EXFileSystemLocalFileHandler.m; sourceTree = ""; }; 2D4D50C9905DD81CF3A3FD3D2B7A8672 /* DispatchMessageQueueThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DispatchMessageQueueThread.h; sourceTree = ""; }; - 2D8FD8F174DBC0600594D0ACA475512E /* FIRDependency.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDependency.h; path = Firebase/Core/Private/FIRDependency.h; sourceTree = ""; }; + 2D591C821A51F0825209BC1C05DFFB03 /* ssim.c */ = {isa = PBXFileReference; includeInIndex = 1; name = ssim.c; path = src/dsp/ssim.c; sourceTree = ""; }; + 2D6E08DDF45483F5A4732B16AF971B03 /* GDTFLLUploader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTFLLUploader.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTFLLUploader.m; sourceTree = ""; }; 2DA0D814DFCB860D31D7BCD63D795858 /* libFirebaseInstanceID.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFirebaseInstanceID.a; path = libFirebaseInstanceID.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 2DAA01CE0749CD75B5D864D9C3DB8B11 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; 2DC1EB1095D3E80B97EDC6B974E66CBC /* RCTCxxUtils.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTCxxUtils.mm; sourceTree = ""; }; 2E014ACDCE6AE8C590470F9FD99628A5 /* REAJSCallNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REAJSCallNode.h; sourceTree = ""; }; - 2E0810763BC65EA4F8EEA770DA72C91F /* nanopb-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nanopb-prefix.pch"; sourceTree = ""; }; 2E136A7DD0501D2920AC6E751907951C /* RCTVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTVideo.h; path = ios/Video/RCTVideo.h; sourceTree = ""; }; 2E29BD840C7EEDF0C2224CAE90F3EF14 /* RCTTextAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTTextAttributes.h; path = Libraries/Text/RCTTextAttributes.h; sourceTree = ""; }; 2E3F2CC88D9C0D9C761BCBC536541DF3 /* BSGSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSGSerialization.m; sourceTree = ""; }; 2E9C065145AF9F65D3F2ADEC6D33A0BA /* BSGConnectivity.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSGConnectivity.h; sourceTree = ""; }; + 2EA1D92B58046A683FB99792F54C738E /* GoogleDataTransport-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleDataTransport-dummy.m"; sourceTree = ""; }; 2ECDDCF7A859B3FDDDB907DBDCCDE589 /* RCTProfileTrampoline-arm64.S */ = {isa = PBXFileReference; includeInIndex = 1; path = "RCTProfileTrampoline-arm64.S"; sourceTree = ""; }; - 2EE491B9F0B95B8A20B38302F6434248 /* DoubleConversion.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DoubleConversion.xcconfig; sourceTree = ""; }; + 2EE8ED7B82F5E3A7EF109FDD2E17A97F /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; + 2EE96081B960EB5843F26F6558A40730 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; 2EF65FA367DB5F4C1958D5274B4EAB64 /* threadsafe.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = threadsafe.h; sourceTree = ""; }; 2F0027FFFA10DB9DCD0A6F3347CF8702 /* RNReanimated.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNReanimated.xcconfig; sourceTree = ""; }; + 2F107D99DE30C03FC83538F1745C81DE /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; 2F2902D76123CD82980C10B19C6B2894 /* RCTBlobManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBlobManager.mm; sourceTree = ""; }; - 2F3473B6568C15F43FDFEAEBB5BC8625 /* dec_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_mips32.c; path = src/dsp/dec_mips32.c; sourceTree = ""; }; + 2F373F964FD76A572A5BB6D473B3233B /* types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = types.h; path = src/webp/types.h; sourceTree = ""; }; 2F3869402970ABB5803B20BF44D61D87 /* UMModuleRegistryProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = UMModuleRegistryProvider.m; sourceTree = ""; }; 2F3DF60D378DE3375BEB8A1BB072B390 /* RCTRawTextViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRawTextViewManager.m; sourceTree = ""; }; 2F41EAF7D54D08571323E5F785BD3EEE /* RCTTypedModuleConstants.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTypedModuleConstants.mm; sourceTree = ""; }; 2F7B12A799B0F82B2B5B1CC42F4C63CE /* RNDateTimePicker-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNDateTimePicker-prefix.pch"; sourceTree = ""; }; + 2F7C021AFD37BBD8879F4CED45D3CBB6 /* nanopb-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "nanopb-prefix.pch"; sourceTree = ""; }; 2F7F35B41FAB9FA37A2B5968D68D8838 /* JSDeltaBundleClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSDeltaBundleClient.h; sourceTree = ""; }; + 2F9FF75DBA3C633DA045206F6C039C91 /* FirebaseInstanceID.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseInstanceID.xcconfig; sourceTree = ""; }; + 2FA8915E0D8D275C898AC3CC45B0C183 /* Folly-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Folly-dummy.m"; sourceTree = ""; }; + 2FC5C1273D1024C325327DCD080C4650 /* dec_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_sse41.c; path = src/dsp/dec_sse41.c; sourceTree = ""; }; 2FDD8B8A425787F2CDC1466F02017342 /* UMTaskServiceInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMTaskServiceInterface.h; path = UMTaskManagerInterface/UMTaskServiceInterface.h; sourceTree = ""; }; 2FF4B60E416BC2B631C047F702F4A746 /* REATransitionValues.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REATransitionValues.m; sourceTree = ""; }; 3023C9C83AB3D0B89E41DC5070F26651 /* RCTModuleData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModuleData.h; sourceTree = ""; }; - 302B8DE670717BA41E14F4F5F4905743 /* FIRApp.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRApp.m; path = Firebase/Core/FIRApp.m; sourceTree = ""; }; - 3031A7731A02E0B42E97610B692B2468 /* FIRInstanceIDVersionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDVersionUtilities.m; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.m; sourceTree = ""; }; 30486FCD09C0FB413C2B73A34AB04757 /* RCTPropsAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPropsAnimatedNode.h; sourceTree = ""; }; 304DA1D0C363EA0FC991F52EC05BAB2C /* ModuleRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ModuleRegistry.h; sourceTree = ""; }; 306350DC6B344211A1A7511A3235860D /* RCTConvert+ART.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RCTConvert+ART.h"; path = "ios/RCTConvert+ART.h"; sourceTree = ""; }; 3083FD8E4D6460DC8673F63185D156BE /* RCTDevMenu.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDevMenu.m; sourceTree = ""; }; 30905185B2307B24C83D044B5E756944 /* RNNotificationsStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNNotificationsStore.h; path = RNNotifications/RNNotificationsStore.h; sourceTree = ""; }; 309BA5AC5996A59987DC5FC2AA555F5F /* RCTView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTView.h; sourceTree = ""; }; + 30B2778F70E9E7B0D2AE6C69B7F5FA18 /* UIImage+WebP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+WebP.h"; path = "SDWebImageWebPCoder/Classes/UIImage+WebP.h"; sourceTree = ""; }; + 30B6C6D8A65E6CF1025DC7B7A6DEE0CD /* FIRInstallationsAuthTokenResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsAuthTokenResult.h; path = FirebaseInstallations/Source/Library/Public/FIRInstallationsAuthTokenResult.h; sourceTree = ""; }; 30BB975B57CCC177196223E03CF5753F /* RCTRawTextShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRawTextShadowView.h; sourceTree = ""; }; 30DD51C39F8D20A1631E4174BC225270 /* EXUserNotificationRequester.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXUserNotificationRequester.m; path = EXPermissions/EXUserNotificationRequester.m; sourceTree = ""; }; - 30EA317F2FE8EB6FA84DCD6525D08D40 /* analysis_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = analysis_enc.c; path = src/enc/analysis_enc.c; sourceTree = ""; }; 30ED0B77780D8EE9E497B0F89B035B5F /* BSG_KSCrashSentry_Signal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashSentry_Signal.h; sourceTree = ""; }; 30F18E9133C9EE4A81CFD2687ACBCD7C /* RCTKeyCommandsManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTKeyCommandsManager.m; path = ios/KeyCommands/RCTKeyCommandsManager.m; sourceTree = ""; }; - 3106BC87F2CAE5827507F197753E8093 /* cost_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_mips_dsp_r2.c; path = src/dsp/cost_mips_dsp_r2.c; sourceTree = ""; }; - 310B5509506DB448A66995284AA9A9CF /* fast-dtoa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "fast-dtoa.h"; path = "double-conversion/fast-dtoa.h"; sourceTree = ""; }; - 313C94AD1D24DABED4DACECE329E5171 /* logging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = logging.h; path = src/glog/logging.h; sourceTree = ""; }; 31603209831682D8D8E385789AD81326 /* BSG_KSLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSLogger.h; sourceTree = ""; }; 3160870786078A4A7F5F633B5D8BD57B /* YGNode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = YGNode.cpp; path = yoga/YGNode.cpp; sourceTree = ""; }; + 3185ACD9193E4C2844B2A264ECC81F13 /* Fabric.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Fabric.xcconfig; sourceTree = ""; }; 31A1E826694B6213C448735FA7D15E1F /* RCTBlobCollector.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTBlobCollector.mm; sourceTree = ""; }; 31AE9C83361780E6B38F68149BE8ED27 /* UMModuleRegistryDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMModuleRegistryDelegate.h; sourceTree = ""; }; - 31D6386A910752DB6206410DE1299650 /* GULNetwork.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetwork.m; path = GoogleUtilities/Network/GULNetwork.m; sourceTree = ""; }; + 31AFD104F69CCD2F1C24B01B859DDA5A /* FIRIMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRIMessageCode.h; path = Firebase/InstanceID/FIRIMessageCode.h; sourceTree = ""; }; + 31CCEDC883A767472D9DE6E98B55225A /* FIRConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRConfiguration.h; path = FirebaseCore/Sources/Public/FIRConfiguration.h; sourceTree = ""; }; + 31D19F7F78897D1BC258DE9692B90D33 /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; 31DA2DEAFF7CA55FF764092648AD9567 /* IOS7Polyfill.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IOS7Polyfill.h; path = ios/IOS7Polyfill.h; sourceTree = ""; }; 31EFC03F02EFC58D84B8AE95618C2233 /* EXRemindersRequester.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXRemindersRequester.m; path = EXPermissions/EXRemindersRequester.m; sourceTree = ""; }; - 323084A9C7E3739A9C9108ABE90C5364 /* rescaler_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_mips32.c; path = src/dsp/rescaler_mips32.c; sourceTree = ""; }; + 325556A95664EB529C31870C6A52D5D8 /* FirebaseCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseCore.h; path = FirebaseCore/Sources/Public/FirebaseCore.h; sourceTree = ""; }; 325884761AB5F277A663E791EA9E1138 /* EXVideoView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EXVideoView.m; sourceTree = ""; }; - 326F4393F9730A5FCBBD861903F4E98C /* FIRCoreDiagnostics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCoreDiagnostics.m; path = Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m; sourceTree = ""; }; - 32AC64561B534482CCA37BB93EC068B7 /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; + 325C4D831CC5588DA91A39FF53FA5BB0 /* NSError+FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError+FIRInstanceID.h"; path = "Firebase/InstanceID/NSError+FIRInstanceID.h"; sourceTree = ""; }; + 327D614BA3B1F0B08F1632FD256AEA36 /* enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc.c; path = src/dsp/enc.c; sourceTree = ""; }; + 32964D290663FAA0AEFD17DAEBD90947 /* lossless_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_msa.c; path = src/dsp/lossless_msa.c; sourceTree = ""; }; 32BB45A38D44180DD5E2F32738B46DD3 /* REABezierNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REABezierNode.m; sourceTree = ""; }; 32BF160962D90FD91E0B0D279057FEB2 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + 32E8D2B7930D83212864A4ACCE2292BC /* lossless_enc_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_neon.c; path = src/dsp/lossless_enc_neon.c; sourceTree = ""; }; 333C8FCC3D51249171A72DCE9A5EEE18 /* RCTViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTViewManager.h; sourceTree = ""; }; - 338364BF8659B692A5C38072A7EEDC55 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; + 33446CC862D2173DA53D5E95665C24A8 /* GDTFLLPrioritizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTFLLPrioritizer.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTFLLPrioritizer.h; sourceTree = ""; }; + 3347A1AB6546F0A3977529B8F199DC41 /* libPromisesObjC.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libPromisesObjC.a; path = libPromisesObjC.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 336D56D9272DA9C7A6F5356D0DB9B248 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; 338D816078F73FF9542DDDBAED875FC2 /* React-Core.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-Core.xcconfig"; sourceTree = ""; }; 33CCB852DAE0F4F830E760AA67856FEA /* NativeExpressComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NativeExpressComponent.h; sourceTree = ""; }; 33EC0E5B8B9ADDB4838EADB7A50AE5A1 /* EXDownloadDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXDownloadDelegate.m; path = EXFileSystem/EXDownloadDelegate.m; sourceTree = ""; }; 3406114BB84016C3BF3C6DD7AEF5D054 /* RCTModuloAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModuloAnimatedNode.h; sourceTree = ""; }; + 340F8DC0B45AE963FE9FEB6290B2F0BA /* FIRInstanceIDCheckinPreferences.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinPreferences.h; path = Firebase/InstanceID/Private/FIRInstanceIDCheckinPreferences.h; sourceTree = ""; }; 3421F26D424268F958AC092714AE40E4 /* EXAppRecordInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EXAppRecordInterface.h; sourceTree = ""; }; 343CB5CAE5DB1DC31FE3E8AA6F13485D /* Pods-RocketChatRN-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketChatRN-acknowledgements.markdown"; sourceTree = ""; }; 343F28199569171A7F9EEA6E15511B0B /* RNCAppearanceProviderManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCAppearanceProviderManager.m; path = ios/Appearance/RNCAppearanceProviderManager.m; sourceTree = ""; }; + 34576144E62481590800B259D7FB76E9 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; + 3479DAFDB6E7103FA78860240F0C3A7C /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; 349385909EB01687258684FD4D22D127 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - 349D2D31BB70D54765B7F471065C958E /* FIRCoreDiagnosticsInterop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsInterop.h; path = Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h; sourceTree = ""; }; - 34BF1241D53E178690864E349AD0D6CB /* dsp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = dsp.h; path = src/dsp/dsp.h; sourceTree = ""; }; + 34ACC90522BF9626ADB3630C6DD72733 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; 34D3BA6E5E4F5BB82DBB4FE14B8AC264 /* RCTScrollContentViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentViewManager.m; sourceTree = ""; }; 351675B33C756AF5361F3A72F375E758 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 353D6BB05EF772EEB577A534B8E2C1EB /* filters.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters.c; path = src/dsp/filters.c; sourceTree = ""; }; + 352467F523D37BA242FF792076C4BBA2 /* cpu.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cpu.c; path = src/dsp/cpu.c; sourceTree = ""; }; 354570A9B75704AAC869CD4A66F043E9 /* RCTModalHostViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModalHostViewManager.h; sourceTree = ""; }; 3577E0616DA660D725D6546620A9D780 /* NativeToJsBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NativeToJsBridge.h; sourceTree = ""; }; - 357F2F1FC1E767EE78BF6EED5BD212E3 /* FIRInstanceIDTokenStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenStore.h; path = Firebase/InstanceID/FIRInstanceIDTokenStore.h; sourceTree = ""; }; 358BD7B832116AF70901ECA85F519623 /* RNFirebaseAnalytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseAnalytics.h; sourceTree = ""; }; - 358C919544CAD4E88269535A33E18FBE /* backward_references_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = backward_references_enc.c; path = src/enc/backward_references_enc.c; sourceTree = ""; }; - 3600E8FD97B8F09E8E346C5FA16D9774 /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; + 35C331504D9FED2A78645DE10B40A14F /* fast-dtoa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "fast-dtoa.h"; path = "double-conversion/fast-dtoa.h"; sourceTree = ""; }; + 360D859E4F26E0D45AC34F09DA57FE65 /* GULSceneDelegateSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULSceneDelegateSwizzler.h; path = GoogleUtilities/SceneDelegateSwizzler/Private/GULSceneDelegateSwizzler.h; sourceTree = ""; }; 361BA81519E68DE00DC1EE1C2CA4F5AF /* TurboModuleBinding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TurboModuleBinding.h; path = turbomodule/core/TurboModuleBinding.h; sourceTree = ""; }; 361F842C0A5EF8D666D840B6B25D594F /* YGNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGNode.h; path = yoga/YGNode.h; sourceTree = ""; }; 3621EF4F476C845F377BC235A6C838CD /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 36437C1B03AC2005FE5AE9B6ABB4A399 /* quant_levels_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quant_levels_utils.c; path = src/utils/quant_levels_utils.c; sourceTree = ""; }; 364E6BE95C52B8F35A7E3803788CEBDB /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 3653B913D7CA70CA4C51EC4C9CA27F3A /* rescaler_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_msa.c; path = src/dsp/rescaler_msa.c; sourceTree = ""; }; - 366329A40E8A1E715FE041B79A1E789B /* FirebaseInstanceID-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseInstanceID-dummy.m"; sourceTree = ""; }; + 36585169EB94500CF044692BF107C3A0 /* FIRInstanceID+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceID+Private.m"; path = "Firebase/InstanceID/FIRInstanceID+Private.m"; sourceTree = ""; }; 3693EA1280CB5A156C4A5F602F068CB9 /* rn-extensions-share-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "rn-extensions-share-dummy.m"; sourceTree = ""; }; - 36980163009EA4BB2A710FDB6500AE39 /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; + 369513EEA056867CD6A5F02835B302FE /* webp_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = webp_enc.c; path = src/enc/webp_enc.c; sourceTree = ""; }; 36999B1C693A37D0A3DF3636859D8874 /* REAOperatorNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REAOperatorNode.h; sourceTree = ""; }; - 369C36A413EA1CD682B6C7998A87C369 /* quant_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quant_enc.c; path = src/enc/quant_enc.c; sourceTree = ""; }; 369CB7A25D42618BA1B87244F710DAAE /* ARTSurfaceViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARTSurfaceViewManager.h; sourceTree = ""; }; 36A3EF72729A0AE82B9E51807A201E88 /* RCTAnimationDriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAnimationDriver.h; sourceTree = ""; }; 36B0485A129186415B58A6B07016DAB9 /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = FontAwesome5_Solid.ttf; path = Fonts/FontAwesome5_Solid.ttf; sourceTree = ""; }; 36B4707E6C2B2E5939A8D58E98A7930E /* RCTViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTViewManager.m; sourceTree = ""; }; 36EA2990DB0BEF0EBFC83DF98C1FD56A /* BugsnagCrashReport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagCrashReport.m; sourceTree = ""; }; + 36F488E2824DFEFCE2DA5121F3EFF1AF /* thread_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = thread_utils.h; path = src/utils/thread_utils.h; sourceTree = ""; }; 37033FA3AC8B8C8B77DDF486CC951EA6 /* EXLocationRequester.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXLocationRequester.m; path = EXPermissions/EXLocationRequester.m; sourceTree = ""; }; - 3751758E274BD3C87E1AAE2DE4C1B366 /* MallocImpl.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = MallocImpl.cpp; path = folly/memory/detail/MallocImpl.cpp; sourceTree = ""; }; + 3705D82A3DC4CA7F5EDBE3BE24EB6EE3 /* GoogleAppMeasurement.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAppMeasurement.xcconfig; sourceTree = ""; }; + 371C3A9071849B2A8C9AA73083078BAB /* filters_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_msa.c; path = src/dsp/filters_msa.c; sourceTree = ""; }; 37592FDAD45752511010F4B06AC57355 /* libReact-cxxreact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-cxxreact.a"; path = "libReact-cxxreact.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3762F4EB37B62BDA42A52139A2CE184A /* NSBezierPath+RoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+RoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+RoundedCorners.m"; sourceTree = ""; }; 376ECD23699FC3A77877C59FAF661064 /* RCTBlobManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTBlobManager.h; path = Libraries/Blob/RCTBlobManager.h; sourceTree = ""; }; - 3786DC3F685C9387F570BEF33D84FDBA /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; - 37911D6525A8CE75A5166F52B23B3851 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; - 37A87692EC0A3E0DAF1F246BF8094715 /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; + 378C25F0844A70F6AF0AD604D5B04960 /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; 37AA33A165E8A21BDAF2AA4E1482AD12 /* RCTBridgeMethod.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBridgeMethod.h; sourceTree = ""; }; 37ACBA7F8BB60C087B592CF49B2BDCBF /* RCTWrapperViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTWrapperViewController.m; sourceTree = ""; }; + 37AECEE6AC0671E260C2B1BE9B3738AD /* vp8i_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8i_dec.h; path = src/dec/vp8i_dec.h; sourceTree = ""; }; 37E9F851FAD48A36030E29145906CAB0 /* RNFirebaseAdMobNativeExpressManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseAdMobNativeExpressManager.m; sourceTree = ""; }; 382DE283EE37D981E9C8F0FD22CCFA48 /* RCTMessageThread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMessageThread.h; sourceTree = ""; }; - 38306BBBC3C64D7DF03BEC71BC608DBF /* GULApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULApplication.h; path = GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h; sourceTree = ""; }; + 3831B2A00965967014DC2303A0B27F59 /* FIRSecureStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRSecureStorage.h; path = FirebaseInstallations/Source/Library/SecureStorage/FIRSecureStorage.h; sourceTree = ""; }; + 383A35C11C4C2DD2BADC793667564783 /* pb_encode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_encode.h; sourceTree = ""; }; + 387FDB6229B2B5EDABF7EAFC7EB23979 /* filters_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_sse2.c; path = src/dsp/filters_sse2.c; sourceTree = ""; }; 388EC556317ED0A5D2EB3EAE9B62567A /* RNFirebaseAdMobRewardedVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseAdMobRewardedVideo.m; sourceTree = ""; }; - 38A4FA5B11D3DBFA1186FAB230AC87CA /* bit_writer_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = bit_writer_utils.c; path = src/utils/bit_writer_utils.c; sourceTree = ""; }; - 38B418D43F61C1B419AB3F337FC541B6 /* FIRCoreDiagnosticsConnector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsConnector.h; path = Firebase/Core/Private/FIRCoreDiagnosticsConnector.h; sourceTree = ""; }; 38B977DE9FFF08C295B61F356F4DEB68 /* UMConstantsInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMConstantsInterface.h; path = UMConstantsInterface/UMConstantsInterface.h; sourceTree = ""; }; + 38CB235F9B094ECF8F8B1B1C082AB298 /* GDTCORUploadCoordinator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORUploadCoordinator.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORUploadCoordinator.m; sourceTree = ""; }; 38FA3FE49F8B797FECF2B05366D47C3A /* RNGestureHandlerEvents.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNGestureHandlerEvents.m; path = ios/RNGestureHandlerEvents.m; sourceTree = ""; }; 38FCC55495F3D29D189C63059801F701 /* BSG_KSSystemCapabilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSSystemCapabilities.h; sourceTree = ""; }; + 3912963231AA3AA7436B53843E64EE76 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; + 392B3106DCD1282949C544B07B1586E4 /* tree_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = tree_enc.c; path = src/enc/tree_enc.c; sourceTree = ""; }; 39524F3CF000F1C3772A2EB4FB6EE525 /* REABezierNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REABezierNode.h; sourceTree = ""; }; + 395775162350335AB985C2E53A0F2AFA /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; 395979489ACBA344F3B2C903E6230E32 /* FBLazyVector.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = FBLazyVector.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 395C8CCD6F5671524B172C22324D82EE /* BSG_KSObjC.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSObjC.h; sourceTree = ""; }; - 3966AA9F1E79E5A7F4EBC038DB4558B6 /* F14Table.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = F14Table.cpp; path = folly/container/detail/F14Table.cpp; sourceTree = ""; }; + 3967559F2F789C16C8ECC9F64D330D0F /* yuv_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_sse2.c; path = src/dsp/yuv_sse2.c; sourceTree = ""; }; 3972A87C0C31E6D865566FB1C97594D7 /* RCTComponentData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTComponentData.m; sourceTree = ""; }; + 3995372A68A43A67B051244F80037938 /* FIRInstanceIDVersionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDVersionUtilities.h; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.h; sourceTree = ""; }; 39AD9D7041B853DF12888ADCD3801AEC /* LNInterpolation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = LNInterpolation.h; sourceTree = ""; }; - 39B20C33D2A8CC7A30CD500AEC10C4EA /* utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = utils.h; path = src/utils/utils.h; sourceTree = ""; }; - 39DC876762D2607F9452231B276AA8AD /* yuv.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv.c; path = src/dsp/yuv.c; sourceTree = ""; }; + 39D1DB7D0AB5BA90F8138F64EBA4323B /* FIRInstanceIDConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDConstants.m; path = Firebase/InstanceID/FIRInstanceIDConstants.m; sourceTree = ""; }; 3A0DF83220F1B3829DBA4156BBB386E7 /* RNGestureHandler.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNGestureHandler.xcconfig; sourceTree = ""; }; 3A1B67C83BAF844E6860075F41D052A4 /* BugsnagReactNative.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BugsnagReactNative.m; path = cocoa/BugsnagReactNative.m; sourceTree = ""; }; 3A1BABD4B412A0953C577E058336334A /* RNPinchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNPinchHandler.h; sourceTree = ""; }; 3A35B3C486393401E3F04F277F938938 /* RCTSurfaceRootView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceRootView.mm; sourceTree = ""; }; 3A9671D357015F3C5567606DF3014E76 /* RCTImageURLLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageURLLoader.h; path = Libraries/Image/RCTImageURLLoader.h; sourceTree = ""; }; - 3A9FE38B282E70BB60453725831AC9FB /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; 3AA1B19BB56ADF960DF7D344F78BA8A5 /* react-native-document-picker.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "react-native-document-picker.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 3AB2D10B5EA5FBAB4565B783C80C9A12 /* RCTVirtualTextShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTVirtualTextShadowView.h; sourceTree = ""; }; - 3AB86A467AD7828E4F2E55DA0BBDAD3A /* GDTTargets.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTTargets.h; path = GoogleDataTransport/GDTLibrary/Public/GDTTargets.h; sourceTree = ""; }; 3AC31182A2D26CD330A9E68DDF5CAF70 /* RCTSubtractionAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSubtractionAnimatedNode.h; sourceTree = ""; }; 3AE900AA535F0A0D529C23A0FB77C1D0 /* jsilib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = jsilib.h; sourceTree = ""; }; 3AEA4A114C08533A2C0F8E039A4C5EB9 /* libRNImageCropPicker.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNImageCropPicker.a; path = libRNImageCropPicker.a; sourceTree = BUILT_PRODUCTS_DIR; }; 3AF5E0FDB28083ECE7863DC7831470AA /* RCTEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTEventEmitter.h; sourceTree = ""; }; - 3B086A0ED5925BD59CEF6134AF11EEB4 /* FIRInstanceIDKeychain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeychain.h; path = Firebase/InstanceID/FIRInstanceIDKeychain.h; sourceTree = ""; }; 3B33802F7D7B84AA0626D079F70601A1 /* RNPushKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNPushKit.h; path = RNNotifications/RNPushKit.h; sourceTree = ""; }; 3B640835BAA914DD267B5E780D8CFEC7 /* libUMReactNativeAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libUMReactNativeAdapter.a; path = libUMReactNativeAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; 3B65CB9B6DCD893501BDCF1DE7BA926C /* libRNAudio.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNAudio.a; path = libRNAudio.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B6E180F517D3B5E97B2822EB303FCEE /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; 3B7A4EBD7C821FECB435586412D39FCE /* REAAlwaysNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REAAlwaysNode.h; sourceTree = ""; }; 3BEF46DC557E56530FC987ADAAF32C09 /* BSG_KSCrashSentry_Signal.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSCrashSentry_Signal.c; sourceTree = ""; }; 3C0D37E1B7CD8A752787DF9DE90D01E9 /* REAParamNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REAParamNode.m; sourceTree = ""; }; - 3C1BC541497F9D69CFB6FF7A5F1D16E5 /* quant.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = quant.h; path = src/dsp/quant.h; sourceTree = ""; }; - 3C2A85A735F523B7B67CE1ED2DFDF5D8 /* FIRInstanceIDCheckinStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinStore.m; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.m; sourceTree = ""; }; + 3C3849B9FE871B8A9BFFEA94781CC286 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; + 3C4BE532E284D6FC858B445EBCE54BE5 /* cost_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_mips32.c; path = src/dsp/cost_mips32.c; sourceTree = ""; }; + 3C4C051A4E9CF5D93B0327AFF8F51044 /* bit_reader_inl_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bit_reader_inl_utils.h; path = src/utils/bit_reader_inl_utils.h; sourceTree = ""; }; + 3C5D630EAB7ED6E3B3B8A2DA57CE8B0C /* alpha_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_enc.c; path = src/enc/alpha_enc.c; sourceTree = ""; }; 3C8477FA3C58F5FB16CB4531DC9DDD56 /* AntDesign.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = AntDesign.ttf; path = Fonts/AntDesign.ttf; sourceTree = ""; }; 3C936AB33DF656FAF2C5EAB8138CA869 /* RCTUIManagerObserverCoordinator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUIManagerObserverCoordinator.h; sourceTree = ""; }; + 3CA2FA4336B15BA4DCCD78A997AEC892 /* FIRInstanceIDTokenStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenStore.m; path = Firebase/InstanceID/FIRInstanceIDTokenStore.m; sourceTree = ""; }; 3CA7A9404CCDD6BA22C97F8348CE3209 /* libglog.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libglog.a; path = libglog.a; sourceTree = BUILT_PRODUCTS_DIR; }; 3CC7A3F5A971D81FA783C0205E1D4005 /* RNFirebaseAdMobRewardedVideo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseAdMobRewardedVideo.h; sourceTree = ""; }; 3CCA71000CC3B0C0CF5C98C7BAAFA706 /* UMConstantsInterface.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UMConstantsInterface.xcconfig; sourceTree = ""; }; 3CCAF055E529752847C75826F77E9416 /* react-native-appearance-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-appearance-dummy.m"; sourceTree = ""; }; 3CEF4AFFEF71DC700182A251F237CCCC /* React-RCTBlob.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTBlob.xcconfig"; sourceTree = ""; }; 3D0C5CD61A7E538AAC42D172FDE227FD /* CoreModulesPlugins.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = CoreModulesPlugins.mm; sourceTree = ""; }; - 3D1A278B5D9E61566522B152532F1034 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; - 3D30A9F40B2A36F04D29DABB3C01B945 /* GDTUploadCoordinator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTUploadCoordinator.m; path = GoogleDataTransport/GDTLibrary/GDTUploadCoordinator.m; sourceTree = ""; }; + 3D213A29F586151F62E7D1190EC36483 /* GDTCORUploadPackage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORUploadPackage.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORUploadPackage.m; sourceTree = ""; }; + 3D469EED379CDAF76B456D41CE1D789E /* pb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb.h; sourceTree = ""; }; 3D4ACA40E9618BFDDDAB6169A365CC8D /* RCTI18nUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTI18nUtil.m; sourceTree = ""; }; 3D6430F396C6EBB6638714FBB10315CA /* RCTMessageThread.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTMessageThread.mm; sourceTree = ""; }; 3DC0503DB47829A176423B81E76574DC /* RNCWKProcessPoolManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCWKProcessPoolManager.m; path = ios/RNCWKProcessPoolManager.m; sourceTree = ""; }; 3DCCC9C42EB3E07CFD81800EC8A2515D /* QBImagePicker.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = QBImagePicker.bundle; path = "RNImageCropPicker-QBImagePicker.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3DFF4DA664C9CAA3AE8F80888BBEE863 /* alpha_processing_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing_sse2.c; path = src/dsp/alpha_processing_sse2.c; sourceTree = ""; }; + 3DF98BC6C3F20CCC5179F53F73FF41B6 /* GDTCORTransport_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTransport_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransport_Private.h; sourceTree = ""; }; 3E13F2680B890F89ED3CAA5AB74573C4 /* RCTLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTLayout.h; sourceTree = ""; }; + 3E30B8CCF8842538B301F60452DFD5E4 /* alpha_processing_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing_mips_dsp_r2.c; path = src/dsp/alpha_processing_mips_dsp_r2.c; sourceTree = ""; }; 3E41231EFA93F8A6858FD06F87921644 /* FBReactNativeSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBReactNativeSpec.h; path = FBReactNativeSpec/FBReactNativeSpec.h; sourceTree = ""; }; + 3E41B296571AC95DE177C8BDD92082EE /* JitsiMeetSDK.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JitsiMeetSDK.xcconfig; sourceTree = ""; }; 3E4D000D9915C53B5FCAF941E7972F69 /* LongLivedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LongLivedObject.h; path = turbomodule/core/LongLivedObject.h; sourceTree = ""; }; - 3E84014E280F5F6717F909372864D169 /* FIRInstanceIDKeychain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeychain.m; path = Firebase/InstanceID/FIRInstanceIDKeychain.m; sourceTree = ""; }; 3E92E96817582040994DF0D989214349 /* RCTTypeSafety.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RCTTypeSafety.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 3E9F56F343F2173D1A070E0EAE2A6A4E /* RCTScrollContentShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentShadowView.m; sourceTree = ""; }; 3EB6DE0D9A1824EE199A41E34D2D0573 /* JSBigString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSBigString.h; sourceTree = ""; }; + 3EE448D03DC1030CB1623347E60A913A /* cct.nanopb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cct.nanopb.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h; sourceTree = ""; }; 3EEAA606F6866DA20E6601B9655B1027 /* libBugsnagReactNative.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libBugsnagReactNative.a; path = libBugsnagReactNative.a; sourceTree = BUILT_PRODUCTS_DIR; }; 3EFE1A74567BB328FDAE023C043DA3D3 /* ARTGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ARTGroup.m; path = ios/ARTGroup.m; sourceTree = ""; }; + 3F19DADEA197E3EB0A522E8E1D520775 /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; 3F3A9076F8739B41CB2EE0FF58531B01 /* UMBarometerInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMBarometerInterface.h; path = UMSensorsInterface/UMBarometerInterface.h; sourceTree = ""; }; - 3F3E48665DAFDDB3F7A5623962507725 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; - 3F45975E2E2B867B4476E71F8FF0F6EC /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; + 3F3CB5FABF8ADED7650DF34AE8C9567D /* FirebaseInstallations.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseInstallations.xcconfig; sourceTree = ""; }; 3F5EBF7213FCCDFDD47D7D283E3789CB /* FBReactNativeSpec-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FBReactNativeSpec-prefix.pch"; sourceTree = ""; }; 3F6CC27D06C2F4E622045B5742E243A4 /* rn-fetch-blob-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "rn-fetch-blob-dummy.m"; sourceTree = ""; }; 3F803860EF7A3F44AC49B7C8BF0B7264 /* UMTaskConsumerInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMTaskConsumerInterface.h; path = UMTaskManagerInterface/UMTaskConsumerInterface.h; sourceTree = ""; }; @@ -4767,243 +4999,272 @@ 3F8AAAFDC375A850D80E66702DD4BF52 /* QBCheckmarkView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBCheckmarkView.m; path = ios/QBImagePicker/QBImagePicker/QBCheckmarkView.m; sourceTree = ""; }; 3FA1D4486566CBD662DF2E1BA3D046B8 /* RNFirebaseAdMobInterstitial.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseAdMobInterstitial.m; sourceTree = ""; }; 3FCD506D4980CB5795E9063F3B3B82A4 /* RAMBundleRegistry.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = RAMBundleRegistry.cpp; sourceTree = ""; }; - 3FDBF5EADD2E3AD2936BAD2E5FBA95D0 /* enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc.c; path = src/dsp/enc.c; sourceTree = ""; }; + 3FECE8B750D858CB3C6E9F3EC41E9A9F /* FBLPromise+Wrap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Wrap.h"; path = "Sources/FBLPromises/include/FBLPromise+Wrap.h"; sourceTree = ""; }; 3FEE8F6E31EAE99F618E0E353B1E2DBF /* RCTSurfaceHostingView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceHostingView.h; sourceTree = ""; }; 4009C1F0F5E09AED73CBD13150E7352D /* RNNotificationParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNNotificationParser.m; path = RNNotifications/RNNotificationParser.m; sourceTree = ""; }; - 400C4C1D16088D9B17F94F449FD66EEC /* FIRInstanceIDStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDStore.m; path = Firebase/InstanceID/FIRInstanceIDStore.m; sourceTree = ""; }; 4047D0C13164557A75A75548DC31B4AB /* FFFastImageViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FFFastImageViewManager.m; path = ios/FastImage/FFFastImageViewManager.m; sourceTree = ""; }; 405CD50CB99B3F8DFEC76511A7B8A317 /* RCTWebSocketModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTWebSocketModule.m; path = Libraries/WebSocket/RCTWebSocketModule.m; sourceTree = ""; }; 405EA870C2BB4F89E5D6CD159F4CFA9E /* LNInterpolable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = LNInterpolable.h; sourceTree = ""; }; - 407248094230C4CB540340AFC5FDF3B3 /* FIRLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLoggerLevel.h; path = Firebase/Core/Public/FIRLoggerLevel.h; sourceTree = ""; }; + 40C0ACE417B604A869EFEBF0F8727F90 /* GDTCORLifecycle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORLifecycle.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORLifecycle.m; sourceTree = ""; }; 40D5ACF5208F52A2EC8E91E5268F9CCE /* TurboCxxModule.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = TurboCxxModule.cpp; path = turbomodule/core/TurboCxxModule.cpp; sourceTree = ""; }; 40F7FEF0E1BF9BFF10FAEC98C231FD26 /* react-native-jitsi-meet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-jitsi-meet-dummy.m"; sourceTree = ""; }; 40FB509BD16F952D8AB9647DE0C7E000 /* React-jsinspector.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-jsinspector.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 414854704FB2E14EBAA33201FA04C107 /* ObservingInputAccessoryView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ObservingInputAccessoryView.m; path = lib/ObservingInputAccessoryView.m; sourceTree = ""; }; 414C5BD92F1BAAE19A219BC6610A5C77 /* REANode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REANode.m; sourceTree = ""; }; - 417D73313E1EBA932B71E1DD4ED1E357 /* FIRAppAssociationRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAppAssociationRegistration.m; path = Firebase/Core/FIRAppAssociationRegistration.m; sourceTree = ""; }; + 41F62D04DF20EF8EB64F38D9EEEE02A9 /* FIRVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVersion.h; path = FirebaseCore/Sources/FIRVersion.h; sourceTree = ""; }; 4247D0FCFC11B26EB8C2B41054DABBDC /* ARTRenderable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ARTRenderable.h; path = ios/ARTRenderable.h; sourceTree = ""; }; - 4285516BB63AD69A2F0BEDB2C5506374 /* GoogleAppMeasurement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleAppMeasurement.framework; path = Frameworks/GoogleAppMeasurement.framework; sourceTree = ""; }; 4299726BEA3130042018922655CEAB31 /* RCTDivisionAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDivisionAnimatedNode.h; sourceTree = ""; }; - 42AF09E5E83635479F79553B7BC9BB92 /* FIRInstanceIDLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDLogger.h; path = Firebase/InstanceID/FIRInstanceIDLogger.h; sourceTree = ""; }; 42DF9032CA32383CC1CF121CF6BEF124 /* RCTSwitchManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSwitchManager.m; sourceTree = ""; }; - 42EE7E5F427054E1DC3D903A71DF485E /* GDTUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTUploader.h; path = GoogleDataTransport/GDTLibrary/Public/GDTUploader.h; sourceTree = ""; }; 43003C63AB6D53D8F0C724F05E07DBBF /* RCTParserUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTParserUtils.m; sourceTree = ""; }; + 4341798946137AA9F80EA098E35B9931 /* FIRInstallationsKeychainUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsKeychainUtils.m; path = FirebaseInstallations/Source/Library/SecureStorage/FIRInstallationsKeychainUtils.m; sourceTree = ""; }; + 435C84BA7D4AB3EB7649F9B26277DA8E /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; + 43670C6003CB892BF4EEBCCCCF5B1628 /* GDTCORTargets.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTargets.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORTargets.h; sourceTree = ""; }; + 436BEED2A30591A8D4E5DB90E45FC2FA /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; 4375BD13925DDD566F3381489293DE18 /* BSG_KSCrashSentry_MachException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashSentry_MachException.h; sourceTree = ""; }; - 43DBD59E9011A4508B947E00654A82BF /* FIRInstanceIDTokenManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenManager.h; path = Firebase/InstanceID/FIRInstanceIDTokenManager.h; sourceTree = ""; }; + 438B0AFC915C650C7DD6BBD7E1482856 /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; + 43AAE931318CFC65211035F2E169B081 /* GDTCORRegistrar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORRegistrar.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORRegistrar.m; sourceTree = ""; }; 43E94BA0660B13CFD23C2EF1EEF9BB88 /* REAValueNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REAValueNode.m; sourceTree = ""; }; - 44049E08C2816776C227F1102380AA46 /* FIRInstanceIDURLQueryItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDURLQueryItem.m; path = Firebase/InstanceID/FIRInstanceIDURLQueryItem.m; sourceTree = ""; }; + 43E958E567C22BA0032023C305BEC2AD /* FIRInstallationsItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsItem.m; path = FirebaseInstallations/Source/Library/FIRInstallationsItem.m; sourceTree = ""; }; 441A7D7E0BA21052E87E4AE003FC4562 /* FBLazyVector.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FBLazyVector.xcconfig; sourceTree = ""; }; 441D04F5C96E5CD130B6D300779AF435 /* React-RCTBlob.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTBlob.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 444142B1C689CED6755F59CE2C7CC1E4 /* BannerComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BannerComponent.m; sourceTree = ""; }; 444FAA0588008314F1EDA1458D4351C1 /* BSG_KSCrashReport.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSCrashReport.c; sourceTree = ""; }; 445ECA9E6B1D54EE4EF38089336C8C17 /* UIImage+Resize.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Resize.m"; path = "ios/src/UIImage+Resize.m"; sourceTree = ""; }; - 4465E9E8D02F3CEEE80D33E736D98665 /* GULAppDelegateSwizzler_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppDelegateSwizzler_Private.h; path = GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h; sourceTree = ""; }; + 445FADAAD22E2C0B298304BB38E55693 /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; 44AB2B396BB3B4317F6BDD93D2B92941 /* BridgeJSCallInvoker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BridgeJSCallInvoker.h; path = jscallinvoker/ReactCommon/BridgeJSCallInvoker.h; sourceTree = ""; }; 4518AAEDC4391458D6489E7697479069 /* RCTFrameAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTFrameAnimation.m; sourceTree = ""; }; 451C703CE7E8AC15E9472E9F32558A11 /* QBAlbumCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QBAlbumCell.h; path = ios/QBImagePicker/QBImagePicker/QBAlbumCell.h; sourceTree = ""; }; 45202BBAAEAF335F1FB60BBFC69380C2 /* RCTJSStackFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTJSStackFrame.m; sourceTree = ""; }; - 452318FDD594B5923B177B4FD6115A90 /* FirebaseCore.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCore.xcconfig; sourceTree = ""; }; - 4556E026447A016363B5E448CCAC7EAC /* SDWebImageWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageWebPCoder.h; path = SDWebImageWebPCoder/Module/SDWebImageWebPCoder.h; sourceTree = ""; }; + 4539E3108AC9825410E6FE95CBEB6EA7 /* SDImageWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageWebPCoder.h; path = SDWebImageWebPCoder/Classes/SDImageWebPCoder.h; sourceTree = ""; }; 455FAD484583221C129C0EBC0EA0384D /* RCTNetInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTNetInfo.h; path = Libraries/Network/RCTNetInfo.h; sourceTree = ""; }; 456084F44DAA789CB020F8A2FD5DA431 /* JSCRuntime.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = JSCRuntime.cpp; sourceTree = ""; }; + 458BC6D0F0ABCC8D2958F42C9A3F3820 /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; 458E90426F582931D4E93F24EB75E6A3 /* React-Core-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-Core-prefix.pch"; sourceTree = ""; }; 459D354B128A5B3FD0717608572663F7 /* RCTMultipartStreamReader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTMultipartStreamReader.m; sourceTree = ""; }; + 459EF69C87F0423DE3DAFA049CEC05EC /* FBLPromise+Await.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Await.m"; path = "Sources/FBLPromises/FBLPromise+Await.m"; sourceTree = ""; }; 45B1E5153BFC16DE9111B4152514C7A2 /* UMFaceDetectorInterface.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UMFaceDetectorInterface.xcconfig; sourceTree = ""; }; 45B38EB267EC8DC49342BD5DF77B29E3 /* RCTCxxModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxModule.h; sourceTree = ""; }; - 463FBAE4CC12986BA5E6A2BF56A0D785 /* UIApplication+RSKImageCropper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIApplication+RSKImageCropper.h"; path = "RSKImageCropper/UIApplication+RSKImageCropper.h"; sourceTree = ""; }; + 45C98A4D849F92BF74F62E180ABEA4E5 /* cost_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_enc.c; path = src/enc/cost_enc.c; sourceTree = ""; }; + 464C3A02594F9D69187EC87E695B4726 /* GULReachabilityMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULReachabilityMessageCode.h; path = GoogleUtilities/Reachability/Private/GULReachabilityMessageCode.h; sourceTree = ""; }; 46AFF8864BD2A72064697C0A599996A6 /* BSG_KSArchSpecific.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSArchSpecific.h; sourceTree = ""; }; - 46B502B21F8455A7A211D7FB38182741 /* glog-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "glog-dummy.m"; sourceTree = ""; }; - 46B9E8FDC0BB235B05F6736A33FD68B8 /* FirebaseInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseInstanceID.h; path = Firebase/InstanceID/Public/FirebaseInstanceID.h; sourceTree = ""; }; 46D4934D3AAAE6360F30A28A577FAA70 /* React-RCTBlob-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTBlob-prefix.pch"; sourceTree = ""; }; - 479B38160D59438D69CC69BD7C3FCCB2 /* FIRLibrary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLibrary.h; path = Firebase/Core/Private/FIRLibrary.h; sourceTree = ""; }; - 47F13B34B5F0D50BE1C2DECA8367236B /* webpi_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = webpi_dec.h; path = src/dec/webpi_dec.h; sourceTree = ""; }; + 476178CDB7F6A524306920EEDD3D60DC /* rescaler_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_msa.c; path = src/dsp/rescaler_msa.c; sourceTree = ""; }; + 47667B177B8F7040093014A945593A04 /* Demangle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Demangle.cpp; path = folly/detail/Demangle.cpp; sourceTree = ""; }; + 47848D888973B34379A73A1129C8E494 /* backward_references_cost_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = backward_references_cost_enc.c; path = src/enc/backward_references_cost_enc.c; sourceTree = ""; }; + 478F25920DDB277A1F4403B7268C02D9 /* backward_references_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = backward_references_enc.h; path = src/enc/backward_references_enc.h; sourceTree = ""; }; + 47B052E1FD1233F07E279610681D4C0B /* FBLPromise+Always.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Always.h"; path = "Sources/FBLPromises/include/FBLPromise+Always.h"; sourceTree = ""; }; + 47BAFD858ABCC55478AF6AB0854547DF /* FBLPromise+Catch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Catch.h"; path = "Sources/FBLPromises/include/FBLPromise+Catch.h"; sourceTree = ""; }; 481152DCF8381BB81B4CB5E318542A6A /* UMUIManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMUIManager.h; sourceTree = ""; }; + 481BAF2737C4B9EED2882A2C4CB20C17 /* RSKImageCropViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSKImageCropViewController.m; path = RSKImageCropper/RSKImageCropViewController.m; sourceTree = ""; }; 48425DA2F01D82A20786D5E55E264A29 /* libreact-native-orientation-locker.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-orientation-locker.a"; path = "libreact-native-orientation-locker.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 484F116868006BD6B32BDC972A8A5370 /* JSIndexedRAMBundle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSIndexedRAMBundle.h; sourceTree = ""; }; 48609FC6A9DB5548BDEC23FCA011708E /* RCTConvert+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTConvert+Transform.h"; sourceTree = ""; }; 486937403C032E7E7D7AC3549ADD9FF9 /* BSG_KSCrashSentry.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSCrashSentry.c; sourceTree = ""; }; - 487A7C585227E41DAC704B8715A93237 /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; - 489E83582CEC6E57822FE6F259E47CE1 /* alpha_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_dec.c; path = src/dec/alpha_dec.c; sourceTree = ""; }; 48B9ADB111EAAA20CF02AC1AC415BD12 /* Color+Interpolation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Color+Interpolation.m"; sourceTree = ""; }; 48D13CE06914C02A51CA1D66E14B9F40 /* RCTManagedPointer.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTManagedPointer.mm; sourceTree = ""; }; - 48E62AAA99323AAF6FC8A4C5D988DBDB /* FIRBundleUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRBundleUtil.m; path = Firebase/Core/FIRBundleUtil.m; sourceTree = ""; }; 48E66962C9572CC3ABCEC3D5589A4D7E /* RCTFileRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTFileRequestHandler.h; path = Libraries/Network/RCTFileRequestHandler.h; sourceTree = ""; }; - 492152604E4FD300199AC37801C7C124 /* picture_psnr_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_psnr_enc.c; path = src/enc/picture_psnr_enc.c; sourceTree = ""; }; 49255696C1CCEA1E1242C663239CCB89 /* QBAlbumCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBAlbumCell.m; path = ios/QBImagePicker/QBImagePicker/QBAlbumCell.m; sourceTree = ""; }; 49348BFD9292A3FF67B1B65C396AB7EB /* TurboCxxModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TurboCxxModule.h; path = turbomodule/core/TurboCxxModule.h; sourceTree = ""; }; 494D7C6BB2849CCECF2A7719596A60E9 /* RNNotificationCenter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNNotificationCenter.m; path = RNNotifications/RNNotificationCenter.m; sourceTree = ""; }; 498A4FF6CFAD1B94EF7A4801EFEB3957 /* RNGestureHandlerButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNGestureHandlerButton.h; path = ios/RNGestureHandlerButton.h; sourceTree = ""; }; 49A51F5FBBCFD3F02638D5838DF22338 /* Pods-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ShareRocketChatRN.debug.xcconfig"; sourceTree = ""; }; - 49CD23BE81224DB8D95529CC8205EBAA /* iterator_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = iterator_enc.c; path = src/enc/iterator_enc.c; sourceTree = ""; }; - 49D8B4ECBCC3CC3CCA6C5A1B97D266F7 /* UIImage+WebP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+WebP.h"; path = "SDWebImageWebPCoder/Classes/UIImage+WebP.h"; sourceTree = ""; }; 49FCA9266B011C55C9974E9B7F4FE352 /* RNFirebaseDatabase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseDatabase.h; sourceTree = ""; }; - 4A101D6AA53CF88031BB16C9B3E7F9D6 /* FIRCoreDiagnosticsData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsData.h; path = Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h; sourceTree = ""; }; 4A49957A6E59C86F1A4F1583FB7FD8F4 /* RCTRefreshControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRefreshControl.m; sourceTree = ""; }; 4A570D229F7770410099A7C1A9BF2CC0 /* YGStyle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = YGStyle.cpp; path = yoga/YGStyle.cpp; sourceTree = ""; }; 4A5EEF4D9C31B72D39D28A48FC1DC2F5 /* UMPermissionsInterface.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UMPermissionsInterface.xcconfig; sourceTree = ""; }; + 4A7647A1716C841E08616F47541DCD7B /* FIRInstallationsStoredItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsStoredItem.h; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.h; sourceTree = ""; }; 4A8BBA527E457F35F8E46F2F14F20039 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - 4A935CACAB35FE24F3C981E8C4A6A26C /* GoogleUtilities-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleUtilities-prefix.pch"; sourceTree = ""; }; 4AB9E9CA09E9781500458F00D906FB44 /* EXWebBrowser.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = EXWebBrowser.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 4AC37404E19DE4B79D6A09FB3B4D274C /* de.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = de.lproj; path = ios/QBImagePicker/QBImagePicker/de.lproj; sourceTree = ""; }; 4AC9061FCE8499561BD404D6B45FAAC0 /* RNScreens-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNScreens-prefix.pch"; sourceTree = ""; }; 4AE285F585889CD45B47600280D33AB4 /* EXCalendarRequester.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXCalendarRequester.m; path = EXPermissions/EXCalendarRequester.m; sourceTree = ""; }; - 4AF26D3C24076E62CEE06B987C6D1D6F /* diy-fp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "diy-fp.h"; path = "double-conversion/diy-fp.h"; sourceTree = ""; }; - 4B18AB04CABC858BF04C827C6B5470F5 /* FIRInstanceIDKeyPair.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeyPair.h; path = Firebase/InstanceID/FIRInstanceIDKeyPair.h; sourceTree = ""; }; + 4B019F88D183D8F0E9D8BF083F3699B1 /* FIRInstallationsAPIService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsAPIService.m; path = FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.m; sourceTree = ""; }; 4B1F199CCF5EDA47DFCC987B9A28801E /* RCTRootContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRootContentView.h; sourceTree = ""; }; 4B21B0CE90EC97B3E7396A49F2FD743B /* DeviceUID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DeviceUID.h; path = ios/RNDeviceInfo/DeviceUID.h; sourceTree = ""; }; - 4B2AFFB16527B8EBEC2327785BCE1654 /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; 4B56838A8EB055CC8F57F87833A58B50 /* RecoverableError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RecoverableError.h; sourceTree = ""; }; + 4B78E7E3DBE12168C17E886E24FB2F51 /* FIRInstanceIDTokenFetchOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenFetchOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m; sourceTree = ""; }; + 4B9414D353B3774B94F6BC07EDA11C7C /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; + 4BB3E1A796EA4028EC6374B3EACD53CE /* FIRConfigurationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRConfigurationInternal.h; path = FirebaseCore/Sources/Private/FIRConfigurationInternal.h; sourceTree = ""; }; 4BBFBE789BEF0674A3F1A44F89494557 /* RCTRedBoxExtraDataViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRedBoxExtraDataViewController.h; sourceTree = ""; }; + 4BE1EB0C0D097F1CEF044EABD60FA2B0 /* GULUserDefaults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULUserDefaults.h; path = GoogleUtilities/UserDefaults/Private/GULUserDefaults.h; sourceTree = ""; }; 4BE8419B1C58F525F98D342793DF0787 /* RNLocalize.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNLocalize.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 4BEAE0D1B153AF1E495632C5F9B28B59 /* ARTShape.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ARTShape.m; path = ios/ARTShape.m; sourceTree = ""; }; 4BEDC16EA249B3BA4903141B600E8AD4 /* UMViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = UMViewManager.m; path = UMCore/UMViewManager.m; sourceTree = ""; }; 4C0AEECE68F91F9D53BF643359BA6740 /* BSG_KSString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSString.h; sourceTree = ""; }; 4C0DEA996540B56EC22001BD80BF8094 /* JSCExecutorFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSCExecutorFactory.h; sourceTree = ""; }; - 4C4C342770D787159225FE9960204DBE /* UIColor+HexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+HexString.m"; path = "SDWebImage/Private/UIColor+HexString.m"; sourceTree = ""; }; 4C62A883CE89818A80C430CA55152373 /* RCTRootShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRootShadowView.m; sourceTree = ""; }; 4C648EE5AAA2B5DF6168714E9EFEBB57 /* RCTActivityIndicatorViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTActivityIndicatorViewManager.m; sourceTree = ""; }; + 4C90CBA13EADC2DE8CBA3C3E38DBAD8D /* GDTCCTPrioritizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTPrioritizer.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTPrioritizer.m; sourceTree = ""; }; + 4C94E6DDA61D0E2F0939457B8941960B /* PromisesObjC.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PromisesObjC.xcconfig; sourceTree = ""; }; 4CBAE850177822CAAF0B0484BB32822C /* RCTMultilineTextInputView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTMultilineTextInputView.m; sourceTree = ""; }; 4CBD5251F075596E6EFD5A97D4DC0209 /* RCTFileReaderModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTFileReaderModule.h; path = Libraries/Blob/RCTFileReaderModule.h; sourceTree = ""; }; 4CC1D16019A96C865667CB57CCF23519 /* RCTAccessibilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTAccessibilityManager.m; sourceTree = ""; }; + 4CC3251FDA9E9F879B68C261CF445809 /* FIRInstanceIDCheckinPreferences+Internal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceIDCheckinPreferences+Internal.m"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.m"; sourceTree = ""; }; 4CD830FC15460173E593D0931A1CFE15 /* FFFastImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FFFastImageView.m; path = ios/FastImage/FFFastImageView.m; sourceTree = ""; }; - 4CFDF61A090051FCE603DE9E0332AFAC /* GDTTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTTransformer.h; path = GoogleDataTransport/GDTLibrary/Private/GDTTransformer.h; sourceTree = ""; }; - 4D280BD85D66E4E6F08E9D7AF3638731 /* FIRBundleUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRBundleUtil.h; path = Firebase/Core/Private/FIRBundleUtil.h; sourceTree = ""; }; - 4D420AC726A223105A3A66DD59C7E9A6 /* lossless_enc_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_neon.c; path = src/dsp/lossless_enc_neon.c; sourceTree = ""; }; + 4D352643E8BC0C05FAD0BB5404F73E27 /* GULReachabilityChecker+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GULReachabilityChecker+Internal.h"; path = "GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h"; sourceTree = ""; }; 4D4EAD8BE22D1A60AEC57B78752F6185 /* UMModuleRegistryAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = UMModuleRegistryAdapter.m; sourceTree = ""; }; - 4D6BDAF7F393697F29CD3C449B02F883 /* format_constants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = format_constants.h; path = src/webp/format_constants.h; sourceTree = ""; }; + 4D68CBDDD5A7D610F9E436686A07B74A /* FIRInstanceIDKeychain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeychain.h; path = Firebase/InstanceID/FIRInstanceIDKeychain.h; sourceTree = ""; }; + 4D7305392656B07787D0BAA87B5735C4 /* strtod.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = strtod.cc; path = "double-conversion/strtod.cc"; sourceTree = ""; }; + 4D7A4F8652C719FD780B45A40A0104C1 /* ANSCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ANSCompatibility.h; path = iOS/Crashlytics.framework/Headers/ANSCompatibility.h; sourceTree = ""; }; + 4D7BE8D11D0BE425A162D262300BF5D5 /* FBLPromise+Async.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Async.m"; path = "Sources/FBLPromises/FBLPromise+Async.m"; sourceTree = ""; }; + 4D7F7DEEE1B431B212DE4B6E85BFD120 /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; 4DEF529BBE88D3B9077D0B51680BC17C /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = SimpleLineIcons.ttf; path = Fonts/SimpleLineIcons.ttf; sourceTree = ""; }; - 4DFBB6DEF544E77BA121C1D1031EC0DF /* raw_logging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = raw_logging.h; path = src/glog/raw_logging.h; sourceTree = ""; }; - 4E01B3FF47FD4437F8126BA499140720 /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; - 4E5ACC036BB30F9E9969A8E34135F235 /* GDTEventTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTEventTransformer.h; path = GoogleDataTransport/GDTLibrary/Public/GDTEventTransformer.h; sourceTree = ""; }; + 4DF0BD63D7D4CFDCC663E62D0F856294 /* dec_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_sse2.c; path = src/dsp/dec_sse2.c; sourceTree = ""; }; + 4E5A82E2D83D68A798CF22B1F77829FC /* GoogleDataTransportCCTSupport-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleDataTransportCCTSupport-dummy.m"; sourceTree = ""; }; 4E865392D14D7F9AAD27DDB39B8F642E /* zh-Hans.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = "zh-Hans.lproj"; path = "ios/QBImagePicker/QBImagePicker/zh-Hans.lproj"; sourceTree = ""; }; 4E92E29D5A6756A75844E6E90EB02976 /* RCTComponentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTComponentData.h; sourceTree = ""; }; + 4E9D30B663A082E804F4CAA873DD3822 /* pb_decode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_decode.h; sourceTree = ""; }; 4EAF7225D8D498E7D232AE1520E6CBD3 /* libRNFirebase.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNFirebase.a; path = libRNFirebase.a; sourceTree = BUILT_PRODUCTS_DIR; }; 4EDBF66A927B5F8A8DE3756BD792B701 /* BSGOutOfMemoryWatchdog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSGOutOfMemoryWatchdog.h; sourceTree = ""; }; 4EDFFA47C755F73800F680EE4AC433EE /* BSG_KSCrashReportFields.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashReportFields.h; sourceTree = ""; }; 4EFF40EF46C84AD329EFE673DF5CC841 /* ObservingInputAccessoryView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ObservingInputAccessoryView.h; path = lib/ObservingInputAccessoryView.h; sourceTree = ""; }; 4F2025517BC8D557FB99809407956CB6 /* RCTVideoManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTVideoManager.h; path = ios/Video/RCTVideoManager.h; sourceTree = ""; }; - 4F3FA0B1FB5B9C2F68BBAD227716F23A /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; 4F4C6E57AC99298022B09CF2374E728E /* react-native-orientation-locker.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-orientation-locker.xcconfig"; sourceTree = ""; }; - 4F51256112D9CF93FA314D5523249742 /* GULOriginalIMPConvenienceMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULOriginalIMPConvenienceMacros.h; path = GoogleUtilities/MethodSwizzler/Private/GULOriginalIMPConvenienceMacros.h; sourceTree = ""; }; 4F544C6F4427F61DDF85089E22844A7F /* BSG_KSCrashC.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSCrashC.c; sourceTree = ""; }; 4F7F3D2B934D43010E5A45CCE146A345 /* RCTSurfaceHostingProxyRootView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceHostingProxyRootView.h; sourceTree = ""; }; - 4FB7AC3B2DAC233057078CA6A102339E /* GDTAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTAssert.h; path = GoogleDataTransport/GDTLibrary/Public/GDTAssert.h; sourceTree = ""; }; 4FC5241CCA8BB67252A090DE9D5C0CA6 /* REATransitionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REATransitionManager.m; sourceTree = ""; }; 4FDA96879D96070EB1983E98E655CBDC /* librn-fetch-blob.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "librn-fetch-blob.a"; path = "librn-fetch-blob.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 4FE49070AC3414D65AA9228AB7579A7C /* RCTLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTLog.h; sourceTree = ""; }; 4FEADA75A15417B8AAAADA6C46C6DBB7 /* RCTUIManagerObserverCoordinator.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTUIManagerObserverCoordinator.mm; sourceTree = ""; }; 4FEB90EF485C158605741A8808C02EFF /* RNUserDefaults.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNUserDefaults.xcconfig; sourceTree = ""; }; - 5080E1E9F662041ACF60804ACBB04CE3 /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; + 500E76CDFB8113AFD9AC1DB0CB454843 /* GDTFLLPrioritizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTFLLPrioritizer.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTFLLPrioritizer.m; sourceTree = ""; }; + 505638042E3CDED31ED33340DD6E648E /* FIRInstallationsHTTPError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsHTTPError.m; path = FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.m; sourceTree = ""; }; + 507484DC13FF28BFA253C3259BC915AF /* config_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = config_enc.c; path = src/enc/config_enc.c; sourceTree = ""; }; 50980AAB9368C75899714BEE65A19973 /* RCTModalHostViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTModalHostViewManager.m; sourceTree = ""; }; 50AAD7CC4F251E199BD4939630F9F528 /* RCTAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTAnimatedImage.h; path = Libraries/Image/RCTAnimatedImage.h; sourceTree = ""; }; + 50B1336BF0B799990F11A2C6C846FEC9 /* FIRInstanceIDTokenOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenOperation.m; sourceTree = ""; }; 50B5347C9A6E93B7D4CFC3673BA6FB7E /* libRNScreens.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNScreens.a; path = libRNScreens.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 50B8ABB68528EF52A4BB054EAC5BC865 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; 50BD6E199540DDD12A5346256325AC64 /* UMTaskLaunchReason.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMTaskLaunchReason.h; path = UMTaskManagerInterface/UMTaskLaunchReason.h; sourceTree = ""; }; - 50C7E75DE032D780D996A33E74AA1D42 /* GULReachabilityMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULReachabilityMessageCode.h; path = GoogleUtilities/Reachability/Private/GULReachabilityMessageCode.h; sourceTree = ""; }; - 514A2F253442115AFA4B6EDDAFFFE085 /* fast-dtoa.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "fast-dtoa.cc"; path = "double-conversion/fast-dtoa.cc"; sourceTree = ""; }; - 514F3A9AD50449219C6E0E6AF2186349 /* ssim.c */ = {isa = PBXFileReference; includeInIndex = 1; name = ssim.c; path = src/dsp/ssim.c; sourceTree = ""; }; - 51532E710DF75FD878886A5E6C8F1977 /* filters_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_msa.c; path = src/dsp/filters_msa.c; sourceTree = ""; }; + 50D7273241DE97D0F9D835E4AFD14299 /* FirebaseInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseInstanceID.h; path = Firebase/InstanceID/Public/FirebaseInstanceID.h; sourceTree = ""; }; + 50E82E5A5409C6B9B611DFB5A5C88A38 /* RSKImageCropperStrings.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = RSKImageCropperStrings.bundle; path = RSKImageCropper/RSKImageCropperStrings.bundle; sourceTree = ""; }; + 51087434509AC9D80EDBA3801FBA46D9 /* FIRInstanceIDUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDUtilities.m; path = Firebase/InstanceID/FIRInstanceIDUtilities.m; sourceTree = ""; }; + 514AE00CD420A8229A4F661330A06B47 /* FIRErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrors.h; path = FirebaseCore/Sources/Private/FIRErrors.h; sourceTree = ""; }; 517BA8A3ED2645580577976899A3448A /* RCTNativeModule.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTNativeModule.mm; sourceTree = ""; }; 517E4B852FCF3D05CBE6ACFB7CF0123B /* UMReactNativeAdapter.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UMReactNativeAdapter.xcconfig; sourceTree = ""; }; 519FDD9A11E683C5E9C8416C35F89D5A /* EXConstants-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EXConstants-prefix.pch"; sourceTree = ""; }; 51A5F2C64929287D8852E8AD60EECEA3 /* BugsnagSink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagSink.h; sourceTree = ""; }; 51B50F20C76CF72E2BEF8D4764235306 /* libReactNativeART.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libReactNativeART.a; path = libReactNativeART.a; sourceTree = BUILT_PRODUCTS_DIR; }; 51BB9A3334F8058B9CABF455F7363AFE /* RCTBaseTextInputView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBaseTextInputView.m; sourceTree = ""; }; - 51C0EC44F93E37F2F7956B7F1CF1BD7A /* Assume.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Assume.cpp; path = folly/lang/Assume.cpp; sourceTree = ""; }; + 51D0EC206B3FF3FD54D207F3F5C70719 /* FIRComponentContainerInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainerInternal.h; path = FirebaseCore/Sources/Private/FIRComponentContainerInternal.h; sourceTree = ""; }; 51D8FBC70FC85BD127175A57572F50D1 /* RCTBaseTextInputViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBaseTextInputViewManager.m; sourceTree = ""; }; + 51EE49DA7F1EB208F9461CB6483D55F0 /* picture_csp_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_csp_enc.c; path = src/enc/picture_csp_enc.c; sourceTree = ""; }; 520DD62AD62FC1C83839377841D5519E /* YGConfig.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = YGConfig.cpp; path = yoga/YGConfig.cpp; sourceTree = ""; }; 527CD81DF520880893DE8021CD41E619 /* Pods-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ShareRocketChatRN.release.xcconfig"; sourceTree = ""; }; 5298D6BD91CA975746993001F4AE1E6E /* EXAV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXAV.m; path = EXAV/EXAV.m; sourceTree = ""; }; + 52C28AD783EE3A1E4AB2B1A936CBEC0A /* FIROptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIROptions.m; path = FirebaseCore/Sources/FIROptions.m; sourceTree = ""; }; 52C5B614F2C0CF9203952EBBEA501F8B /* RCTDataRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDataRequestHandler.m; sourceTree = ""; }; + 52CDBAFD1C6554282FCD586FFBA8FFFD /* FIRCoreDiagnosticsConnector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsConnector.h; path = FirebaseCore/Sources/Private/FIRCoreDiagnosticsConnector.h; sourceTree = ""; }; 52D23EDA5F884C3239B077C15910ECC1 /* RCTProgressViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTProgressViewManager.m; sourceTree = ""; }; - 52EA42A6C8276F0CBCB74687737707C3 /* cpu.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cpu.c; path = src/dsp/cpu.c; sourceTree = ""; }; - 52FF01E96854D8F37412901CC140380F /* picture_csp_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_csp_enc.c; path = src/enc/picture_csp_enc.c; sourceTree = ""; }; + 52EB1989DFD74CEB5377A42F0481FCAC /* RSKImageCropper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RSKImageCropper-dummy.m"; sourceTree = ""; }; 5300827367CB8363939AF1B14CB87CC7 /* RCTAdditionAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTAdditionAnimatedNode.m; sourceTree = ""; }; 53441B3DCB5B9E117FAFCF7CE71424E0 /* UMSensorsInterface.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UMSensorsInterface.xcconfig; sourceTree = ""; }; + 535AA0B78CF70BA9675FAEC421BED1E6 /* frame_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = frame_enc.c; path = src/enc/frame_enc.c; sourceTree = ""; }; 536F45DD82C94CE6D96EA437C0C21BBB /* BugsnagHandledState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagHandledState.m; sourceTree = ""; }; + 5372D71E7AAFE0D044943DB958C2F428 /* FIRInstanceIDTokenInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenInfo.m; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.m; sourceTree = ""; }; 53D6DDF8F37CA9BCAD772E6D5DA49295 /* RNCCameraRollManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCCameraRollManager.h; path = ios/RNCCameraRollManager.h; sourceTree = ""; }; 53FE4C651E52A4B096600F1C4BF1EF94 /* RCTUITextView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUITextView.m; sourceTree = ""; }; 5414AE6DDACD6C4C27220E5FF9C96EE1 /* RCTAnimationUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTAnimationUtils.h; path = Libraries/NativeAnimation/RCTAnimationUtils.h; sourceTree = ""; }; 541875FC146A3D4AF7C305C9CC783C28 /* RCTInterpolationAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTInterpolationAnimatedNode.m; sourceTree = ""; }; - 549CC56FC99AAB064C41404A60ACDCA7 /* FirebaseCoreDiagnostics-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseCoreDiagnostics-dummy.m"; sourceTree = ""; }; + 545D3B715E5AF6AFEC5AE16325F9E898 /* GULMutableDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULMutableDictionary.m; path = GoogleUtilities/Network/GULMutableDictionary.m; sourceTree = ""; }; + 5469BFF90FA3FA7460B0D79CE5197D1D /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; + 54AE600BDD27B1D9D24B98E5EA73E2BB /* enc_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_mips32.c; path = src/dsp/enc_mips32.c; sourceTree = ""; }; + 54C80AE83CCD41943A1509A4518CEF1A /* mux_types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mux_types.h; path = src/webp/mux_types.h; sourceTree = ""; }; + 54D0A0D72E5409D9555B3AB6C444425A /* picture_psnr_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_psnr_enc.c; path = src/enc/picture_psnr_enc.c; sourceTree = ""; }; + 54EB650E96F37C37F0F35851F8C12BA6 /* Conv.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Conv.cpp; path = folly/Conv.cpp; sourceTree = ""; }; + 54FDDD0372DB70DE5506C1BE95A23BE4 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; 5503461EDC3D0BE3934EEE5DA1BB9088 /* RCTPackagerConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPackagerConnection.h; sourceTree = ""; }; + 55172F9BCA61ED8903813A0BE84F0A81 /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; + 55331CDCA3E4E9F322A2CA7CE5915A6A /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; + 55ABCD868D69EBB8B226D955E9B65C94 /* GDTCORTransport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTransport.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORTransport.h; sourceTree = ""; }; 55B2F2858776435BA97A8EB0ABD8287F /* BugsnagReactNative-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BugsnagReactNative-dummy.m"; sourceTree = ""; }; - 55C0E8840659DD2BA9398CCE45C84796 /* dec_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_sse2.c; path = src/dsp/dec_sse2.c; sourceTree = ""; }; + 55DEC1E6B4290093E9B0766AC1D19DFF /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; 562C20F9B0C661B7B7CD7311659AB2E3 /* RNFetchBlob.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFetchBlob.h; sourceTree = ""; }; 5631191D62E5021A68942E823AA434E2 /* RNPushKitEventHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNPushKitEventHandler.m; path = RNNotifications/RNPushKitEventHandler.m; sourceTree = ""; }; - 56326E64636C5860ADD9D8717D8B8C9B /* alpha_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_enc.c; path = src/enc/alpha_enc.c; sourceTree = ""; }; 56507E226A67C4F068E52F755465710B /* React-jsinspector.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jsinspector.xcconfig"; sourceTree = ""; }; 56539446BB3AB5B151AB3B63CDFD213C /* Bugsnag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Bugsnag.h; sourceTree = ""; }; 565940AB6D57C8F2B22C29AEA65242DC /* RCTExceptionsManager.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTExceptionsManager.mm; sourceTree = ""; }; - 567FF870D1397FAA1691FB0CD6CB3562 /* libwebp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "libwebp-dummy.m"; sourceTree = ""; }; 5694FC989089BDACE6DB56D0A3036311 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 56E78EE0CF3ED46276B3F9962DBC7817 /* libwebp.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = libwebp.xcconfig; sourceTree = ""; }; 57128606D41041DE0DE7DE6C3FB04801 /* BSG_RFC3339DateTool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSG_RFC3339DateTool.m; sourceTree = ""; }; 57264E8B1036FFCCC26FD7A98BC652C4 /* ARTGroupManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ARTGroupManager.m; sourceTree = ""; }; + 574C5FDCBE394444827C0B4B3C7DE9A5 /* yuv_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_mips_dsp_r2.c; path = src/dsp/yuv_mips_dsp_r2.c; sourceTree = ""; }; 574E8A849B86DCF8EE5726418D974721 /* libEXWebBrowser.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libEXWebBrowser.a; path = libEXWebBrowser.a; sourceTree = BUILT_PRODUCTS_DIR; }; 57AF6757550CBA0DA8B885582F80FCBC /* REAStyleNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REAStyleNode.m; sourceTree = ""; }; 57D32BB2DCB9D84442AFA5534DF2D526 /* RCTNativeAnimatedModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTNativeAnimatedModule.m; sourceTree = ""; }; 57D38BD8CA32B091EC53F86C2CB7E8A8 /* RNFirebaseAdMobNativeExpressManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseAdMobNativeExpressManager.h; sourceTree = ""; }; + 57F3CF73401C2A7D1861DD573FA5AAAB /* FIRInstanceIDLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDLogger.m; path = Firebase/InstanceID/FIRInstanceIDLogger.m; sourceTree = ""; }; + 580123A082788AF220ECF528D65896DE /* FIRInstanceIDStringEncoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDStringEncoding.m; path = Firebase/InstanceID/FIRInstanceIDStringEncoding.m; sourceTree = ""; }; 5801DFFC0C6A59EA34122FA75E352C62 /* RNGestureHandlerState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNGestureHandlerState.h; path = ios/RNGestureHandlerState.h; sourceTree = ""; }; 580712ADE0DDE9601ED35B000EC802D6 /* libRSKImageCropper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRSKImageCropper.a; path = libRSKImageCropper.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 5807EB6D92C08024B83553174ACA5DD1 /* buffer_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = buffer_dec.c; path = src/dec/buffer_dec.c; sourceTree = ""; }; + 583F2384046EE63CCD0360AE527E4565 /* GDTCCTNanopbHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTNanopbHelpers.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTNanopbHelpers.m; sourceTree = ""; }; + 5844E9E8BBD906339EA96EF1BD79326F /* FIRLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLoggerLevel.h; path = FirebaseCore/Sources/Public/FIRLoggerLevel.h; sourceTree = ""; }; + 5847FD2633BC9047F028FE38A7084AD7 /* GDTCCTCompressionHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTCompressionHelper.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTCompressionHelper.h; sourceTree = ""; }; 585FC8608495994937895B8A2591307F /* RNPushKitEventHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNPushKitEventHandler.h; path = RNNotifications/RNPushKitEventHandler.h; sourceTree = ""; }; 586602EDE69E2D273945D156ECB89853 /* libPods-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-RocketChatRN.a"; path = "libPods-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 587AD88BD32631BB096534980CA556E2 /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; 588755B3754A6DB230AE8F9E6402F292 /* RNGestureHandler-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNGestureHandler-prefix.pch"; sourceTree = ""; }; + 5890F013C17AD08F673E9838E1CBC85D /* bit_writer_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = bit_writer_utils.c; path = src/utils/bit_writer_utils.c; sourceTree = ""; }; 589776A89332278D423D6755E1271325 /* RNGestureHandlerButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNGestureHandlerButton.m; path = ios/RNGestureHandlerButton.m; sourceTree = ""; }; - 58C1F1702169DF372D6719CB18B37FE6 /* FIROptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptions.h; path = Firebase/Core/Public/FIROptions.h; sourceTree = ""; }; 58C6DDEA9DA8FAA71B8F5563B3C8BAE3 /* EXPermissions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPermissions.h; path = EXPermissions/EXPermissions.h; sourceTree = ""; }; 58CF79F99A87A127F56E24875D1F96BF /* Orientation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Orientation.m; path = iOS/RCTOrientation/Orientation.m; sourceTree = ""; }; 590A991CA39320D61338A86CD16B61E4 /* REATransformNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REATransformNode.h; sourceTree = ""; }; 5915477795932526EEFC89FBEA7B82AC /* RCTAlertManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTAlertManager.m; sourceTree = ""; }; 5920DE566BC7258D40EEFD900C8AF8A0 /* RCTTextShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTextShadowView.m; sourceTree = ""; }; - 593434FB0205C22E5A950A80442758C9 /* FIRInstanceIDTokenDeleteOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenDeleteOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.h; sourceTree = ""; }; 5986E69905D8ABC7C1508DA89704548B /* BSG_KSMachApple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSMachApple.h; sourceTree = ""; }; 5990557900A945AC96315DA636E0AA47 /* UMSingletonModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMSingletonModule.h; path = UMCore/UMSingletonModule.h; sourceTree = ""; }; + 59B76FA92742AFE4EC1B07FB04CDCEFE /* FIRInstanceIDAPNSInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAPNSInfo.m; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.m; sourceTree = ""; }; 59D02771C01E48498F859538F8184216 /* ResourceBundle-QBImagePicker-RNImageCropPicker-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-QBImagePicker-RNImageCropPicker-Info.plist"; sourceTree = ""; }; 59D7B48D028CE1B663314427A679E875 /* RNVectorIcons-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNVectorIcons-prefix.pch"; sourceTree = ""; }; 59DD6416FA43F3F675F005EF8FD3F328 /* RCTRedBoxExtraDataViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRedBoxExtraDataViewController.m; sourceTree = ""; }; 59EB8D3B71BF713EDA4402769F375825 /* REAConcatNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REAConcatNode.h; sourceTree = ""; }; + 59EDFE4884DAF3E61B6C33A8BE503617 /* FIRAppAssociationRegistration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppAssociationRegistration.h; path = FirebaseCore/Sources/Private/FIRAppAssociationRegistration.h; sourceTree = ""; }; + 5A09F908C75D99E518BBF382A235C2DB /* FIRInstallationsHTTPError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsHTTPError.h; path = FirebaseInstallations/Source/Library/Errors/FIRInstallationsHTTPError.h; sourceTree = ""; }; + 5A16CE135CC71ACDAB57AB9C085A4213 /* FIROptionsInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptionsInternal.h; path = FirebaseCore/Sources/Private/FIROptionsInternal.h; sourceTree = ""; }; 5A1E231B5D85FFD8717EAF9D9C711B2A /* RNDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNDeviceInfo.h; path = ios/RNDeviceInfo/RNDeviceInfo.h; sourceTree = ""; }; 5A479634950702320BDA8537F995EFD0 /* BSG_KSCrashSentry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashSentry.h; sourceTree = ""; }; 5A748EE26C98D9E0EFD4F248FC2C8D02 /* RNAudio.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNAudio.xcconfig; sourceTree = ""; }; 5A91CA6D6022705DA88BF6B6A1C7879A /* UMBarCodeScannerInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMBarCodeScannerInterface.h; path = UMBarCodeScannerInterface/UMBarCodeScannerInterface.h; sourceTree = ""; }; 5AADB8C895E14A4EA0A6240AEE3AB200 /* NativeExpressComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = NativeExpressComponent.m; sourceTree = ""; }; - 5AC3610A19BBC0F2EACD04CBA96AE998 /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; + 5AD246BB1DA917A3E16D3F36B4867501 /* FBLPromise+Reduce.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Reduce.m"; path = "Sources/FBLPromises/FBLPromise+Reduce.m"; sourceTree = ""; }; 5AD45FCA84FB2434143E5D1850C67D1C /* RNFirebaseFirestoreDocumentReference.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseFirestoreDocumentReference.m; sourceTree = ""; }; 5AFAD101DE817A8C09E6DCDB6C006CB5 /* ARTSolidColor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARTSolidColor.h; sourceTree = ""; }; 5B0CD88C65A8CB1C23C2AEB4992F49E0 /* LNInterpolable.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = LNInterpolable.m; sourceTree = ""; }; - 5B2535034DE2FFF715358C483D50EC8C /* lossless_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_sse2.c; path = src/dsp/lossless_sse2.c; sourceTree = ""; }; - 5B3821D4D649D9795E1609C4D166AE59 /* lossless_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_mips_dsp_r2.c; path = src/dsp/lossless_mips_dsp_r2.c; sourceTree = ""; }; + 5B3A6A7C3F776BAF61AC51C5A02FBFA0 /* FBLPromise+Timeout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Timeout.m"; path = "Sources/FBLPromises/FBLPromise+Timeout.m"; sourceTree = ""; }; 5B40E769968DD2143FE155AD49707E9F /* RCTSafeAreaShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaShadowView.m; sourceTree = ""; }; 5B4D64374C7E6A0B63625C1CDC038AF1 /* RCTImageLoaderProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageLoaderProtocol.h; path = Libraries/Image/RCTImageLoaderProtocol.h; sourceTree = ""; }; + 5B528863F8D26E47DBD2FAA61C3FC4FA /* bit_writer_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bit_writer_utils.h; path = src/utils/bit_writer_utils.h; sourceTree = ""; }; 5B6173C9FF424C99E39122BE128ED09B /* ARTSurfaceView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ARTSurfaceView.m; path = ios/ARTSurfaceView.m; sourceTree = ""; }; - 5BB41289CA45FAD1326154C61667467B /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; 5C19055FA15FDF3D592E684CADBB0FA2 /* BSG_KSCrashSentry_MachException.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSCrashSentry_MachException.c; sourceTree = ""; }; + 5C3170CE50BA839FD7FFABDF189D8F38 /* quant_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quant_enc.c; path = src/enc/quant_enc.c; sourceTree = ""; }; + 5C366C49F593DF61C1B36CA3537E513C /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; 5C4D4504A5E0169EEA9E1BD9EEE809BB /* RNGestureHandlerEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNGestureHandlerEvents.h; path = ios/RNGestureHandlerEvents.h; sourceTree = ""; }; - 5C698118A106815F6AB507E9C315C27E /* RSKImageCropViewController+Protected.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RSKImageCropViewController+Protected.h"; path = "RSKImageCropper/RSKImageCropViewController+Protected.h"; sourceTree = ""; }; 5CA8F1A20B87DBB263F925DD7FE29947 /* libreact-native-keyboard-input.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-keyboard-input.a"; path = "libreact-native-keyboard-input.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 5CD44221A26E3F51CDD22BABCB58B202 /* FIRCoreDiagnosticsDateFileStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsDateFileStorage.h; path = Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnosticsDateFileStorage.h; sourceTree = ""; }; 5CEE7A85BBF78894CD063886D710B60C /* react-native-cameraroll.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-cameraroll.xcconfig"; sourceTree = ""; }; 5CEF007F87D815FF9DDAF8260B117C81 /* BSG_KSCrashReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashReport.h; sourceTree = ""; }; 5CF132F48B2B8B5875B871C7C5A28249 /* BSG_KSBacktrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSBacktrace.h; sourceTree = ""; }; + 5CFEB116ECB9A495D54B314D795B805B /* stl_logging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = stl_logging.h; path = src/glog/stl_logging.h; sourceTree = ""; }; 5D376DCB0CBDF7412C0B00C8968B66E3 /* BridgeJSCallInvoker.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = BridgeJSCallInvoker.cpp; path = jscallinvoker/ReactCommon/BridgeJSCallInvoker.cpp; sourceTree = ""; }; - 5D46682E47471017D25EE31D4CD7C097 /* vlog_is_on.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = vlog_is_on.cc; path = src/vlog_is_on.cc; sourceTree = ""; }; 5D49F55D4CD4364E4649FFB0945D8B85 /* RCTSurface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurface.h; sourceTree = ""; }; - 5DA2D4D1364530875FFC9C34F5E9DFCE /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; + 5D7200E0CD187410B1D095CC51FF6E72 /* FIRInstanceIDCheckinStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinStore.h; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.h; sourceTree = ""; }; + 5DB602E4418A6458062E66FDBE8939FB /* FIRCoreDiagnosticsConnector.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCoreDiagnosticsConnector.m; path = FirebaseCore/Sources/FIRCoreDiagnosticsConnector.m; sourceTree = ""; }; 5DD39E122714ACA80347AE0123C2496B /* REACondNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REACondNode.h; sourceTree = ""; }; 5DFDDA9B1A315696FB654E1F37F4A0A5 /* RNFirebase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNFirebase.h; path = RNFirebase/RNFirebase.h; sourceTree = ""; }; - 5E2A92E98E8DBDA927A8118442EA22BB /* alpha_processing_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing_neon.c; path = src/dsp/alpha_processing_neon.c; sourceTree = ""; }; + 5E395510D11DCC7395A036D8E1F57BA3 /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; 5E4674603A5D5B9215FFA0F8E69F8B71 /* liblibwebp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = liblibwebp.a; path = liblibwebp.a; sourceTree = BUILT_PRODUCTS_DIR; }; 5E4A2E27DC374E4005C34F5376DAEBC0 /* NSTextStorage+FontScaling.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSTextStorage+FontScaling.h"; sourceTree = ""; }; 5E4C192890231485B12830210B5D7DE2 /* RNFirebaseAnalytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseAnalytics.m; sourceTree = ""; }; - 5E7B62E6910F30CA5877D34DC7AA5887 /* FIRConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRConfiguration.m; path = Firebase/Core/FIRConfiguration.m; sourceTree = ""; }; + 5E5CC8F6A5743198CEE068F4A629834B /* FIRComponentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponentType.m; path = FirebaseCore/Sources/FIRComponentType.m; sourceTree = ""; }; + 5E6CBF3BA9FA871AD606BAA54F66FC97 /* FirebaseAnalytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseAnalytics.framework; path = Frameworks/FirebaseAnalytics.framework; sourceTree = ""; }; 5E915B2F24C81B9195A87F6E9D1A0778 /* react-native-background-timer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-background-timer-prefix.pch"; sourceTree = ""; }; - 5EAE9AC10C7125CB916DA112DF625F6C /* FIRInstanceIDCheckinPreferences.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinPreferences.h; path = Firebase/InstanceID/Private/FIRInstanceIDCheckinPreferences.h; sourceTree = ""; }; 5ED2602F1EF06CF5A9D27031D2DD580A /* React-RCTImage.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTImage.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 5EE39A7B4283BEFE43E66F46862951DC /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; + 5EE46B386E95AC9FBBEE856CF2383198 /* bignum.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = bignum.cc; path = "double-conversion/bignum.cc"; sourceTree = ""; }; 5EECAA76F5023729BF7A8A99CFF1F073 /* REAAllTransitions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REAAllTransitions.m; sourceTree = ""; }; 5F0FB6B1D273917FA9C0F1B70ECFCB3F /* RCTI18nManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTI18nManager.m; sourceTree = ""; }; 5F172B9DBE8D23302C6B8A44AE928388 /* RCTI18nManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTI18nManager.h; sourceTree = ""; }; + 5F1C5F873FB22C5A73E967F1C3900F05 /* String.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = String.cpp; path = folly/String.cpp; sourceTree = ""; }; 5F3001C57F8CC737DBD4A431068E0CC5 /* RCTUITextField.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUITextField.h; sourceTree = ""; }; + 5FA7BEFCEE456CEE557E176D2373B2AE /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; 5FF6908128D9BDCF36D9E9E2CBC0256D /* JsArgumentHelpers-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JsArgumentHelpers-inl.h"; sourceTree = ""; }; 600CDEED2BE217BF314CB38BE1A0B171 /* RootView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RootView.m; path = ios/RootView.m; sourceTree = ""; }; 60133F456FF78804F9AEE4D2C3B11678 /* RCTAnimationType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAnimationType.h; sourceTree = ""; }; @@ -5012,272 +5273,286 @@ 6067ECBC099C5610EEA24A21E6891249 /* RCTRequired.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RCTRequired.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 607B8AECF50CAAFAD4C6F8282C23B37F /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 607C651864B81834E926AD131165E5D2 /* RNFirebaseFirestore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseFirestore.h; sourceTree = ""; }; - 609D910B5A8FEB743D2A62CDA193939B /* FIRInstanceIDAPNSInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAPNSInfo.h; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.h; sourceTree = ""; }; + 608E4B0589801079221FEB94B6D394AC /* FIRInstanceIDStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDStore.h; path = Firebase/InstanceID/FIRInstanceIDStore.h; sourceTree = ""; }; + 60BC27AD9ED5029E588DEDFB282BC600 /* FIRInstanceIDBackupExcludedPlist.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDBackupExcludedPlist.m; path = Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.m; sourceTree = ""; }; 60D9920325F1E197245EC5E2DDB3E2C6 /* RCTJavaScriptExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTJavaScriptExecutor.h; sourceTree = ""; }; 60E41D6EDC00DE5F7FDFD06E86F1A2C5 /* React-Core-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-Core-dummy.m"; sourceTree = ""; }; 60EEBF389C391162FA269F8E7D3FCB15 /* EXVideoView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EXVideoView.h; sourceTree = ""; }; 60F5DEBD20C0F278287C5CAE35F3BF74 /* EXFileSystem.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = EXFileSystem.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 612EB3CB4B257025F648D62D327C6602 /* yuv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = yuv.h; path = src/dsp/yuv.h; sourceTree = ""; }; + 6129D17144193C727D68FFB158130674 /* FIRInstallationsSingleOperationPromiseCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsSingleOperationPromiseCache.h; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.h; sourceTree = ""; }; 615B854A67C7167ECA294B3EA4483A71 /* NSTextStorage+FontScaling.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NSTextStorage+FontScaling.m"; sourceTree = ""; }; - 617CCEC26BE49CEAB04CC0C3BD375E6C /* utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = utils.h; path = "double-conversion/utils.h"; sourceTree = ""; }; + 616B59B78E41E0F8743C2A2FDFBA466B /* FBLPromise+Reduce.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Reduce.h"; path = "Sources/FBLPromises/include/FBLPromise+Reduce.h"; sourceTree = ""; }; 618FEE7E80275A17BCFEA3FD80389667 /* RNFastImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNFastImage-prefix.pch"; sourceTree = ""; }; + 61AF1837C4C82F78744ED30517A5031F /* analysis_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = analysis_enc.c; path = src/enc/analysis_enc.c; sourceTree = ""; }; 61BB33DDB089C0F391FE215CEC01FBC2 /* ARTCGFloatArray.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ARTCGFloatArray.h; path = ios/ARTCGFloatArray.h; sourceTree = ""; }; 61CC90A251F8AF95EFDC9FD2376EB1D0 /* RNGestureHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNGestureHandler.m; path = ios/RNGestureHandler.m; sourceTree = ""; }; 61D68ED0DFDE8178B98F79C56AAF6735 /* UMBridgeModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMBridgeModule.h; path = UMReactNativeAdapter/UMBridgeModule.h; sourceTree = ""; }; 6203E9A58EE92DF8A28EAE1798542BAF /* EXAudioSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXAudioSessionManager.m; path = EXAV/EXAudioSessionManager.m; sourceTree = ""; }; 621A33C1A0AB8647038FFB213B6A9135 /* BSG_KSCrashReportFilterCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashReportFilterCompletion.h; sourceTree = ""; }; 622C2298B9560A8972BADB00740D62C9 /* BSG_KSObjCApple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSObjCApple.h; sourceTree = ""; }; - 623D5F4BD01E3D890087793ED0AE50C5 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; 6249B422C72D40D5A073CF71C0AA86A2 /* BSG_KSSingleton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSSingleton.h; sourceTree = ""; }; 62C356E403E5757FEBB5F6AC59AF8A36 /* BSG_KSSysCtl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSSysCtl.h; sourceTree = ""; }; - 62D58564597AD3FA1680CA444EE3153F /* bignum-dtoa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "bignum-dtoa.h"; path = "double-conversion/bignum-dtoa.h"; sourceTree = ""; }; 62D8299947B104E2F2441F8B8F224296 /* EXPermissions-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EXPermissions-dummy.m"; sourceTree = ""; }; + 62DCD8FC43D8554520EF5C154FB8D476 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; 62E11190F74476BB4254611B685A5685 /* RCTLayoutAnimationGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTLayoutAnimationGroup.m; sourceTree = ""; }; - 62E3416996F9DBED8A49ADD5F352C1E1 /* filters_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_mips_dsp_r2.c; path = src/dsp/filters_mips_dsp_r2.c; sourceTree = ""; }; + 62E764263319E7C9A53A9AF39D7723E5 /* FIRInstanceID+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceID+Private.h"; path = "Firebase/InstanceID/Private/FIRInstanceID+Private.h"; sourceTree = ""; }; 62EC6787AD86A09B5DAECF891CE39554 /* BSG_KSSignalInfo.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSSignalInfo.c; sourceTree = ""; }; 62F433C626104248599C9F6319D3C54B /* ARTShape.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ARTShape.h; path = ios/ARTShape.h; sourceTree = ""; }; - 62F518EAE564CDB7FE22608053F08839 /* pb_encode.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_encode.c; sourceTree = ""; }; + 631C18F49615412D4C905B1C37D9ADA9 /* UIImage+RSKImageCropper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+RSKImageCropper.h"; path = "RSKImageCropper/UIImage+RSKImageCropper.h"; sourceTree = ""; }; + 636D6783185DE1F442D58AEE9C52B4B1 /* GDTCCTCompressionHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTCompressionHelper.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTCompressionHelper.m; sourceTree = ""; }; + 63743B445C8FAC8021EC41CC4362CF9F /* log_severity.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = log_severity.h; path = src/glog/log_severity.h; sourceTree = ""; }; 637B2905EFCA92F6B6F01A80EC507AF2 /* RCTDiffClampAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDiffClampAnimatedNode.h; sourceTree = ""; }; 63AECF618A1E2CB8D3F97014A3D37AB8 /* CxxNativeModule.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = CxxNativeModule.cpp; sourceTree = ""; }; + 63B31FE76518F6AD1B9C7FC4FC3BE0FD /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; 63CA9D423FCE56F4D01566C1F2DE4FA9 /* ImageCropPicker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ImageCropPicker.m; path = ios/src/ImageCropPicker.m; sourceTree = ""; }; - 63F33ED36C0322764AFBD658D2E32149 /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; - 63FD78AD9CEFB2DE5FF77E72C8C7A453 /* GULUserDefaults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULUserDefaults.h; path = GoogleUtilities/UserDefaults/Private/GULUserDefaults.h; sourceTree = ""; }; + 63F237C28969479FD39F0D8EB9063B79 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; + 63FC874B85C176CC532B90BB75E6546F /* GULLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLoggerLevel.h; path = GoogleUtilities/Logger/Public/GULLoggerLevel.h; sourceTree = ""; }; 6441110A52AC72F1F219FFC618E5E4C5 /* RCTProfileTrampoline-arm.S */ = {isa = PBXFileReference; includeInIndex = 1; path = "RCTProfileTrampoline-arm.S"; sourceTree = ""; }; + 645432A1DF9B3036F4D66BBB89CBAA89 /* backward_references_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = backward_references_enc.c; path = src/enc/backward_references_enc.c; sourceTree = ""; }; 6454BB72AC441E1494905BF8E25039FD /* EXCameraPermissionRequester.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXCameraPermissionRequester.m; path = EXPermissions/EXCameraPermissionRequester.m; sourceTree = ""; }; - 645711EC4391753669A172BC1C7B1F65 /* DoubleConversion-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DoubleConversion-prefix.pch"; sourceTree = ""; }; + 6456BEB6732CB1208721A93717E83ACB /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; 6467BFC418094BBA82ED699AF2F84AF9 /* RNBackgroundTimer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNBackgroundTimer.h; path = ios/RNBackgroundTimer.h; sourceTree = ""; }; + 64858CBC195C53A245090C9C8C11D8DB /* FIRInstanceIDCheckinPreferences+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDCheckinPreferences+Internal.h"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h"; sourceTree = ""; }; + 64963B0AD90508C9D1DAD41D65CBBC0C /* random_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = random_utils.c; path = src/utils/random_utils.c; sourceTree = ""; }; 64AB36A81419579DFBE653B56BFDE10B /* RCTTouchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTouchHandler.h; sourceTree = ""; }; 64C3E12A134EC7FB4105E2FFA8E68E22 /* RNFirebaseEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNFirebaseEvents.h; path = RNFirebase/RNFirebaseEvents.h; sourceTree = ""; }; 64CBDA488A1F1D418FBD4EAADD1F9647 /* UMAccelerometerInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMAccelerometerInterface.h; path = UMSensorsInterface/UMAccelerometerInterface.h; sourceTree = ""; }; 64DE20E29967B6096AD7F97229DB7A6F /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = MaterialCommunityIcons.ttf; path = Fonts/MaterialCommunityIcons.ttf; sourceTree = ""; }; - 64E3F75CCBF052877127694AF8D51F61 /* FIRComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponent.m; path = Firebase/Core/FIRComponent.m; sourceTree = ""; }; - 64EBE5F53B6247CF96532AA0FDA3C827 /* GDTUploadPackage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTUploadPackage.h; path = GoogleDataTransport/GDTLibrary/Public/GDTUploadPackage.h; sourceTree = ""; }; 64F050E38604CBA15A49D6322C1171C6 /* react-native-webview.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-webview.xcconfig"; sourceTree = ""; }; 64F18790A50A2179CC7BE6090135313C /* BugsnagConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagConfiguration.m; sourceTree = ""; }; - 64FF2026735EBE214C8F6A877CC5B06F /* RSKTouchView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSKTouchView.h; path = RSKImageCropper/RSKTouchView.h; sourceTree = ""; }; - 65270F773D1F907E9E884457D88A1E97 /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; 65394E91B0674DD8D11B74FFC7530670 /* RCTTransformAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTransformAnimatedNode.m; sourceTree = ""; }; 6539F776FBDC5E175D59AE2A055A008D /* ReactCommon-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ReactCommon-dummy.m"; sourceTree = ""; }; 65513BC7EBF5BE3D92B67A6AB24F90B7 /* RNDocumentPicker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNDocumentPicker.m; path = ios/RNDocumentPicker/RNDocumentPicker.m; sourceTree = ""; }; 6562F2DB054F9F4800DEEBF8FFAA8C95 /* RNDateTimePicker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNDateTimePicker.m; path = ios/RNDateTimePicker.m; sourceTree = ""; }; 657929BA048F6BF2E57ADF4C9CD39799 /* RCTLayoutAnimationGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTLayoutAnimationGroup.h; sourceTree = ""; }; 6584C61C82381EB1B1004D7753C0212E /* RNFirebaseInstanceId.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseInstanceId.m; sourceTree = ""; }; + 65985823BA9E59CD5D699B8553FBFC7A /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; 659DA3653F4F72A99996761FA56C4DBC /* RCTKeyboardObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTKeyboardObserver.h; sourceTree = ""; }; 65D0A19C165FA1126B1360680FE6DB12 /* libYoga.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libYoga.a; path = libYoga.a; sourceTree = BUILT_PRODUCTS_DIR; }; 65D183BDB3EBB6B36FE89D8168848CA3 /* EXAppLoaderProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXAppLoaderProvider.m; path = EXAppLoaderProvider/EXAppLoaderProvider.m; sourceTree = ""; }; - 6608F2F8DDC7A9422458F90A885EA723 /* lossless.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless.c; path = src/dsp/lossless.c; sourceTree = ""; }; + 65F4CD4AED2AC4EF14B118A58EDEE355 /* UIImage+RSKImageCropper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+RSKImageCropper.m"; path = "RSKImageCropper/UIImage+RSKImageCropper.m"; sourceTree = ""; }; 661D96F33813C29F39EAA5A247C1BE48 /* RNJitsiMeetView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNJitsiMeetView.h; path = ios/RNJitsiMeetView.h; sourceTree = ""; }; - 663D8A7DE61E19F411CA269EABCC27CC /* GULLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLoggerLevel.h; path = GoogleUtilities/Logger/Public/GULLoggerLevel.h; sourceTree = ""; }; + 66228ED45E198EDBDEA21A197E306C7E /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; + 6638D4A39DF660C0D118FE1FB6420263 /* format_constants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = format_constants.h; path = src/webp/format_constants.h; sourceTree = ""; }; 66459DEE8823BB0B8D11EA3D6DB2307F /* ARTSurfaceViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ARTSurfaceViewManager.m; sourceTree = ""; }; 665E4D5175A646C08F3D216295A530A2 /* RCTDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDisplayLink.h; sourceTree = ""; }; - 669FED7B0C83E29684D6A0598821FBD9 /* enc_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_mips_dsp_r2.c; path = src/dsp/enc_mips_dsp_r2.c; sourceTree = ""; }; + 6689EFD327C141249C36F84B370FCC15 /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; + 668DB3196C8AC5E9F322863CBC018C56 /* FIRInstallationsVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsVersion.h; path = FirebaseInstallations/Source/Library/Public/FIRInstallationsVersion.h; sourceTree = ""; }; + 669E2D815BA85AA4A6BB99088F534BB0 /* lossless_enc_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_sse2.c; path = src/dsp/lossless_enc_sse2.c; sourceTree = ""; }; 66A3C30FAD3141239D732D294DFC5598 /* AudioRecorderManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AudioRecorderManager.h; path = ios/AudioRecorderManager.h; sourceTree = ""; }; - 66BF521E492F11C1AAEE17475971CB70 /* bit_reader_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bit_reader_utils.h; path = src/utils/bit_reader_utils.h; sourceTree = ""; }; - 66D51687A4FFDF194B556DE4B2DD8EFB /* NSBezierPath+RoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+RoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+RoundedCorners.m"; sourceTree = ""; }; - 66EB73F92E6B3CAF9B57FF76C5040D0C /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; + 66BB28169F8562B9DE334B74B5B456EB /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; + 66BE2E56E1110F499C048713FEB1CE2A /* demux.c */ = {isa = PBXFileReference; includeInIndex = 1; name = demux.c; path = src/demux/demux.c; sourceTree = ""; }; + 66EF89ABD7B5DBBB462B12529A796D9B /* GoogleDataTransport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GoogleDataTransport.h; path = GoogleDataTransport/GDTCORLibrary/Public/GoogleDataTransport.h; sourceTree = ""; }; 66FBDAC9AAE6212A5C0524E6F1220950 /* BugsnagBreadcrumb.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagBreadcrumb.m; sourceTree = ""; }; 6708E35DBB3D103F8267F825E34A5657 /* QBSlomoIconView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QBSlomoIconView.h; path = ios/QBImagePicker/QBImagePicker/QBSlomoIconView.h; sourceTree = ""; }; 6712574FE9AB8B30436ECA7A7C94F647 /* BSG_KSString.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSString.c; sourceTree = ""; }; - 6750678139A1A6899CB0DEC8000545FE /* FIRDiagnosticsData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDiagnosticsData.m; path = Firebase/Core/FIRDiagnosticsData.m; sourceTree = ""; }; + 67126F01CF3D1827B3B8FF2A8F677A2F /* double-conversion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "double-conversion.h"; path = "double-conversion/double-conversion.h"; sourceTree = ""; }; + 67495001F5CD5835C2BB0CC49D35E686 /* GULNetworkConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetworkConstants.m; path = GoogleUtilities/Network/GULNetworkConstants.m; sourceTree = ""; }; 67540560D918C61609D9DD135A728D53 /* React-jsinspector-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-jsinspector-dummy.m"; sourceTree = ""; }; 675F6D25A6A38C0965EC0E8FFF68F5E6 /* RNFirebaseUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNFirebaseUtil.h; path = RNFirebase/RNFirebaseUtil.h; sourceTree = ""; }; 6771D231F4C8C5976470A369C474B32E /* libReact-CoreModules.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-CoreModules.a"; path = "libReact-CoreModules.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 677829C82932437E90068CC931C2D606 /* FIRInstallationsSingleOperationPromiseCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsSingleOperationPromiseCache.m; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsSingleOperationPromiseCache.m; sourceTree = ""; }; 678B533B72684A0D8700B5E2E66C5D4C /* RCTSurfaceHostingView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceHostingView.mm; sourceTree = ""; }; - 67947E69A5ABC8DF1DBF4B86B362C3EB /* FIRInstanceIDTokenStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenStore.m; path = Firebase/InstanceID/FIRInstanceIDTokenStore.m; sourceTree = ""; }; 679C432647D258664EB921B077656E54 /* BSG_KSJSONCodecObjC.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSG_KSJSONCodecObjC.m; sourceTree = ""; }; 67C719EB33E2B62BE893CB8EFC2064FF /* React-RCTImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTImage.xcconfig"; sourceTree = ""; }; - 67D1334CEA80F39AAF27FF022F320928 /* cost_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_mips32.c; path = src/dsp/cost_mips32.c; sourceTree = ""; }; 6803EF30AD795DD46BE07598CF430D32 /* JSINativeModules.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSINativeModules.h; path = jsireact/JSINativeModules.h; sourceTree = ""; }; + 68041748F69925013F2E5E2E941E5D0B /* FBLPromise+Delay.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Delay.h"; path = "Sources/FBLPromises/include/FBLPromise+Delay.h"; sourceTree = ""; }; 68467E3CFE2F10ED67841ECFBB5F6447 /* RNNotificationsStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNNotificationsStore.m; path = RNNotifications/RNNotificationsStore.m; sourceTree = ""; }; + 6853D0C0275C488A7AFF75D5BF9ACC72 /* RSKImageCropViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSKImageCropViewController.h; path = RSKImageCropper/RSKImageCropViewController.h; sourceTree = ""; }; 685D707D72CF9347E0B77A3C59D950EF /* BugsnagUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagUser.m; sourceTree = ""; }; - 685DFF57A1534B9C433EDBE0B2A0B0D3 /* FIRInstanceIDStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDStore.h; path = Firebase/InstanceID/FIRInstanceIDStore.h; sourceTree = ""; }; 6868214DF95F6AE6EE828BF02EC30D78 /* react-native-keyboard-input-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-keyboard-input-dummy.m"; sourceTree = ""; }; 686FA236B3A0EDC2B7D10C6CB83450C8 /* libreact-native-keyboard-tracking-view.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-keyboard-tracking-view.a"; path = "libreact-native-keyboard-tracking-view.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 687A41FEC3A047663FAB081DC2F60CE6 /* RNGestureHandler-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNGestureHandler-dummy.m"; sourceTree = ""; }; - 68CE49DDB2DF81CFFEFD9BBCC492FEEC /* SDImageWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageWebPCoder.h; path = SDWebImageWebPCoder/Classes/SDImageWebPCoder.h; sourceTree = ""; }; 6902BF644B6D22E65F917FE0AD95F867 /* RCTMultipartDataTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMultipartDataTask.h; sourceTree = ""; }; 6927644527C531D96A463FF647B863B0 /* EXRemoteNotificationRequester.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXRemoteNotificationRequester.m; path = EXPermissions/EXRemoteNotificationRequester.m; sourceTree = ""; }; 69356F2622014AF7DC2A3EA2A07BB2EE /* BugsnagSessionTrackingApiClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagSessionTrackingApiClient.h; sourceTree = ""; }; - 693DA1F565A6FF66C8393EEABBBBDE86 /* predictor_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = predictor_enc.c; path = src/enc/predictor_enc.c; sourceTree = ""; }; 6942351307BC1F54575D9853307EAE0E /* libGoogleDataTransportCCTSupport.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGoogleDataTransportCCTSupport.a; path = libGoogleDataTransportCCTSupport.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 69479128234A29F965EAC5E5AC7A110C /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; 69553ADA0240020F66CCC3166C6C9541 /* BugsnagKeys.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagKeys.h; sourceTree = ""; }; 696551F58422F0488F0E1AC2D3222089 /* RCTNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTNetworking.h; path = Libraries/Network/RCTNetworking.h; sourceTree = ""; }; 696BBA70437E1206B8EEEA5A283B2A2C /* RNGestureHandlerManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNGestureHandlerManager.h; path = ios/RNGestureHandlerManager.h; sourceTree = ""; }; 697331A145A2D7B271EF0AF6035364AC /* decorator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = decorator.h; sourceTree = ""; }; - 6978AE3655589E7A3736CE24EF459AE0 /* mux_types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mux_types.h; path = src/webp/mux_types.h; sourceTree = ""; }; 6995A7A9EDC20BA9943D226656AC92C2 /* react-native-keyboard-tracking-view-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-keyboard-tracking-view-prefix.pch"; sourceTree = ""; }; - 69A4DE0309583DD90D1046C5499B1BF4 /* GULMutableDictionary.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULMutableDictionary.m; path = GoogleUtilities/Network/GULMutableDictionary.m; sourceTree = ""; }; 69B055354EAE4BA62853C728881ACD3A /* RCTSurfacePresenterStub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSurfacePresenterStub.m; sourceTree = ""; }; 69B44F6867FDC888D9B3E778B0CC86DA /* RCTRefreshControlManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRefreshControlManager.h; sourceTree = ""; }; + 6A21588A6554E872D0F5137FF593521A /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; 6A3ADC7078377E5CEA3DD7060A93187B /* UMTaskManagerInterface.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = UMTaskManagerInterface.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 6A4380E4A384171BCA37835AB57207EF /* SharedProxyCxxModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SharedProxyCxxModule.h; sourceTree = ""; }; 6A58D7780B1E3A13BA1C9211FF6D72D1 /* RCTImageShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTImageShadowView.m; sourceTree = ""; }; + 6A5DB3B95A61733B29846B836C5FE77A /* upsampling_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_neon.c; path = src/dsp/upsampling_neon.c; sourceTree = ""; }; 6A68B8844C7EB5008E2C239A40008B60 /* BugsnagSessionTrackingApiClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagSessionTrackingApiClient.m; sourceTree = ""; }; 6A72D7CEB55FEA06E30120F74D720E54 /* RCTFileRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTFileRequestHandler.m; sourceTree = ""; }; 6A74F82E6AB2138E825235952F1EB9D0 /* RNFirebaseAdMobBannerManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseAdMobBannerManager.m; sourceTree = ""; }; 6A9B97E8CE94081CD64AB0B4FC540CC4 /* Pods-RocketChatRN-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketChatRN-resources.sh"; sourceTree = ""; }; - 6AA57940434E3AAD7AEEE00A590613E6 /* rescaler_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = rescaler_utils.h; path = src/utils/rescaler_utils.h; sourceTree = ""; }; + 6A9DF5E9B3012A39ED9F672E0C8D62E4 /* FABAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FABAttributes.h; path = iOS/Fabric.framework/Headers/FABAttributes.h; sourceTree = ""; }; 6AC759C1CD233D0071663E565C11837A /* Zocial.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = Zocial.ttf; path = Fonts/Zocial.ttf; sourceTree = ""; }; 6AD46E5BD03286A699768842ABBEB548 /* RCTDatePicker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDatePicker.m; sourceTree = ""; }; 6AEC8DC13EE046F3C8DFBE136D8D798A /* RCTDevLoadingView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDevLoadingView.m; sourceTree = ""; }; - 6B31C55B0080450813DC71445DA97515 /* FIRInstanceIDAuthService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthService.h; path = Firebase/InstanceID/FIRInstanceIDAuthService.h; sourceTree = ""; }; - 6B3844A27E41E7C5F10BF14FC9A7929A /* GULReachabilityChecker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULReachabilityChecker.m; path = GoogleUtilities/Reachability/GULReachabilityChecker.m; sourceTree = ""; }; + 6B3000A1D45E185CABEFD0B060F04FC4 /* GULNSData+zlib.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GULNSData+zlib.m"; path = "GoogleUtilities/NSData+zlib/GULNSData+zlib.m"; sourceTree = ""; }; + 6B3DCE3E62D468D58DE3FECB07CFAB5C /* FBLPromise+Race.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Race.m"; path = "Sources/FBLPromises/FBLPromise+Race.m"; sourceTree = ""; }; 6B54D91E86F56F1BB3D59F4544FB2B9B /* RCTConvert+RNNotifications.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RCTConvert+RNNotifications.h"; path = "RNNotifications/RCTConvert+RNNotifications.h"; sourceTree = ""; }; 6B5BF6F5C3F36B03310C16BB02AE92EB /* RCTInvalidating.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInvalidating.h; sourceTree = ""; }; + 6B8FEC8581AD19DDD78ABBB18ECE2F22 /* GDTFLLUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTFLLUploader.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTFLLUploader.h; sourceTree = ""; }; + 6BB4E471066205C1B9F8413CE80BAB3E /* random_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = random_utils.h; path = src/utils/random_utils.h; sourceTree = ""; }; 6BCA58A32925A1E4400F2B1ADFEF0972 /* RCTPerfMonitor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTPerfMonitor.m; sourceTree = ""; }; 6BFE4C44B6733B9C2BEAC7A14FBD13A9 /* UIImage+Resize.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Resize.h"; path = "ios/src/UIImage+Resize.h"; sourceTree = ""; }; 6C0075391F3315DD5C0B9E7632576E32 /* BugsnagMetaData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagMetaData.m; sourceTree = ""; }; + 6C8B9AF946127A4CCC12F6DA5E9EFD4E /* FIRAppAssociationRegistration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAppAssociationRegistration.m; path = FirebaseCore/Sources/FIRAppAssociationRegistration.m; sourceTree = ""; }; + 6C8FC56CD5FE60871A148C7D2580D8D2 /* upsampling_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_sse41.c; path = src/dsp/upsampling_sse41.c; sourceTree = ""; }; 6C96566BEE3E8073B6AFCE2002A5B167 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 6CBA42BE40B0E4D18F1D24B198AA332C /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 6CF13AE017A0A23961BB8B7EB170F98A /* RCTShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTShadowView.m; sourceTree = ""; }; - 6CF1F51F10F527FFA49F8C35BCC08D4A /* alpha_processing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing.c; path = src/dsp/alpha_processing.c; sourceTree = ""; }; 6CFAE57E367A65A55C2FD1C7F38C1E2D /* REAFunctionNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REAFunctionNode.h; sourceTree = ""; }; - 6D5FBAB8AE41CDA37DFFF760ACFFB922 /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; + 6D7591D0402DD814820F0F732E55134A /* FBLPromise+All.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+All.m"; path = "Sources/FBLPromises/FBLPromise+All.m"; sourceTree = ""; }; + 6D8BCB824FD16FFB5D40146868CEB425 /* endian_inl_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = endian_inl_utils.h; path = src/utils/endian_inl_utils.h; sourceTree = ""; }; + 6D9558B896F99A90A93DC099BD7C8D88 /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; 6DB42004B240B79A0FF03409A8928664 /* RCTVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTVersion.m; sourceTree = ""; }; + 6DBFEEEE8490B0AEC5A93E092F2857A5 /* GDTCOREventTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCOREventTransformer.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventTransformer.h; sourceTree = ""; }; 6DDDBCF3CD0C36D993D2A9B90128F76B /* RCTImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTImageView.m; sourceTree = ""; }; 6DE079E5E70B4BA4B86DB31EFEA492E6 /* QBAssetCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBAssetCell.m; path = ios/QBImagePicker/QBImagePicker/QBAssetCell.m; sourceTree = ""; }; - 6E1205BF8DB94D1E1D3698CBE66EBF47 /* fixed-dtoa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "fixed-dtoa.h"; path = "double-conversion/fixed-dtoa.h"; sourceTree = ""; }; + 6E1351AE14BC4DCE7B93E301AA99026B /* FBLPromise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLPromise.h; path = Sources/FBLPromises/include/FBLPromise.h; sourceTree = ""; }; 6E278FF27563009D97F9BDC3D73D8425 /* react-native-background-timer.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "react-native-background-timer.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 6E44F680ED7C0AF205ABF2F732D5BF1E /* FIRInstanceIDCheckinPreferences+Internal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceIDCheckinPreferences+Internal.m"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.m"; sourceTree = ""; }; - 6E6A07445A6C67484E9EAD3649AEA9DD /* Crashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Crashlytics.h; path = iOS/Crashlytics.framework/Headers/Crashlytics.h; sourceTree = ""; }; - 6E6E78446D4C66AB49A9367C4B33947A /* GDTCCTUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTUploader.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTUploader.h; sourceTree = ""; }; + 6E2CDB4C30DCF3C644EBFB1CB6F8B63C /* utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = utils.h; path = src/utils/utils.h; sourceTree = ""; }; 6E6F08FB7B0D37C62C09B09E8F8FD092 /* RCTBaseTextInputView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBaseTextInputView.h; sourceTree = ""; }; 6E992D8467813492D50B1E61EBFBE6A5 /* UMReactLogHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMReactLogHandler.h; sourceTree = ""; }; 6EBD648ADF08580A26F32BF867B6458B /* RNFirebaseDatabaseReference.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseDatabaseReference.m; sourceTree = ""; }; - 6ECB58F32CD17FF9912C0569E7AAD5E3 /* GoogleDataTransportCCTSupport-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleDataTransportCCTSupport-dummy.m"; sourceTree = ""; }; + 6ECC10905A36138211973FA8BFF62640 /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; 6EDBD7760CAAD0BDC4B18C56EE630607 /* RNFirebaseAdMobInterstitial.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseAdMobInterstitial.h; sourceTree = ""; }; + 6F2B281A5C5A6DA83EEDED90A470812A /* pb_encode.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_encode.c; sourceTree = ""; }; + 6F8611F8EC76BA0AD83706FBD552AEFF /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; + 6FAC32E62B1F1A5CF4B7035D16475866 /* FBLPromise+All.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+All.h"; path = "Sources/FBLPromises/include/FBLPromise+All.h"; sourceTree = ""; }; 6FD6D859CDD113AA532232F2E50E074E /* TurboModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TurboModule.h; path = turbomodule/core/TurboModule.h; sourceTree = ""; }; 6FF34E16BF85DD97F2E55FE764F2285B /* KeyCommands-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "KeyCommands-dummy.m"; sourceTree = ""; }; 6FFB7B2992BB53405E6B771A5BA1E97D /* libDoubleConversion.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDoubleConversion.a; path = libDoubleConversion.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 6FFD07CA8CC396C11428C8593FC6E959 /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; 700ADDD491EDA1DA1D8263D8F9DE39B2 /* BSG_KSMach_Arm.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSMach_Arm.c; sourceTree = ""; }; 70286279EDC882A5A6D54D5A78D4E4E3 /* KeyboardTrackingViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KeyboardTrackingViewManager.m; path = lib/KeyboardTrackingViewManager.m; sourceTree = ""; }; - 703C19B7DA7D14697A7DA9E62F10EC52 /* FIRComponentContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponentContainer.m; path = Firebase/Core/FIRComponentContainer.m; sourceTree = ""; }; 706F9976E2D7AAA380D98FA3C76F52EB /* REAModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = REAModule.m; path = ios/REAModule.m; sourceTree = ""; }; - 70890F33DE7A2F89F7A6D02F11156613 /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; - 70A2C57EB51078DE137D607F34867F54 /* double-conversion.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "double-conversion.cc"; path = "double-conversion/double-conversion.cc"; sourceTree = ""; }; + 70BF969C7EE75D6BABCC43461AAEF644 /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; 70E03B7B4E15C9359D458397CC5D05CD /* BSG_KSSysCtl.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSSysCtl.c; sourceTree = ""; }; - 70FC2444F6223914BEA560B3136110B7 /* rescaler_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_mips_dsp_r2.c; path = src/dsp/rescaler_mips_dsp_r2.c; sourceTree = ""; }; - 7138C521F354FCB1A269DDA495C7D2FB /* GULLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULLogger.m; path = GoogleUtilities/Logger/GULLogger.m; sourceTree = ""; }; + 7121DEBABF2BDFF8481B59788B8C759F /* FIRInstanceIDAPNSInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAPNSInfo.h; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.h; sourceTree = ""; }; 7143F0C8CD1D20E78773B0216488F18D /* React-RCTAnimation.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTAnimation.xcconfig"; sourceTree = ""; }; 715704BCA6396E7B6D2AB56C7F7FE3B9 /* ReactMarker.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = ReactMarker.cpp; sourceTree = ""; }; 718AD05B5CD0F909A8FBD59F728158E6 /* RCTCxxBridgeDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxBridgeDelegate.h; sourceTree = ""; }; - 719678554CEA5B56015186C2FDB53C4B /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; - 71D84307C5CFE93C1EA2452F993A5334 /* huffman_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = huffman_utils.h; path = src/utils/huffman_utils.h; sourceTree = ""; }; 720AD59BC6F7F0728F7989ABCF9D1B16 /* react-native-background-timer.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-background-timer.xcconfig"; sourceTree = ""; }; 721871E7D8498F4B8672EC761AD2C99C /* RCTSinglelineTextInputViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSinglelineTextInputViewManager.h; sourceTree = ""; }; 72188C17FE197C7A31B4E11CB885F50D /* React-jsi.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jsi.xcconfig"; sourceTree = ""; }; - 7223382B9B79F03CB07B899C151304FA /* config_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = config_enc.c; path = src/enc/config_enc.c; sourceTree = ""; }; 723F636C015B98033D45BBB786F18DAD /* RNFirebaseDatabaseReference.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseDatabaseReference.h; sourceTree = ""; }; 725C9D7519C9246294964E65F09B5F2C /* REATransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REATransition.h; sourceTree = ""; }; + 726CEC5D657E14C2D28E2608DB007104 /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; + 726D3479A42B94820104FFB82565ADF8 /* color_cache_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = color_cache_utils.h; path = src/utils/color_cache_utils.h; sourceTree = ""; }; + 7290A8B4E4F31EF8E2A4BB18F88F59D6 /* libwebp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "libwebp-dummy.m"; sourceTree = ""; }; 7292E38617F5F47475FCD902E7B442D5 /* ReactNativeART-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ReactNativeART-prefix.pch"; sourceTree = ""; }; - 729A38040F88573F71437BC50CBBB96A /* json.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = json.cpp; path = folly/json.cpp; sourceTree = ""; }; - 72C4B8A7FB6E16BCE4CDCCB39D680712 /* RSKImageScrollView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSKImageScrollView.h; path = RSKImageCropper/RSKImageScrollView.h; sourceTree = ""; }; 72DE4BF3FB9CE0858E90F96FEF8A53AE /* libRNDateTimePicker.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNDateTimePicker.a; path = libRNDateTimePicker.a; sourceTree = BUILT_PRODUCTS_DIR; }; 72E494917AC5EC2582197F07061A28B0 /* libEXPermissions.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libEXPermissions.a; path = libEXPermissions.a; sourceTree = BUILT_PRODUCTS_DIR; }; 72EEE078A0BECBB045605975E76C3299 /* BugsnagUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagUser.h; sourceTree = ""; }; - 7336EA76552B82F831BCF41D5DBFC597 /* lossless_enc_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_mips32.c; path = src/dsp/lossless_enc_mips32.c; sourceTree = ""; }; + 72F2F55C8488AA7450E778BF58AD47EB /* common_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common_dec.h; path = src/dec/common_dec.h; sourceTree = ""; }; 734AEA6C4CABB5DD9F8F3707C6300538 /* FFFastImageSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FFFastImageSource.m; path = ios/FastImage/FFFastImageSource.m; sourceTree = ""; }; 735BAE5A99D22558195015309934BF9B /* RNCWebView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCWebView.m; path = ios/RNCWebView.m; sourceTree = ""; }; 736077A8246C8154580EA08DB05C35BF /* RCTBorderDrawing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBorderDrawing.h; sourceTree = ""; }; 738729E64B6A469A04A8534B490BC224 /* FFFastImageSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FFFastImageSource.h; path = ios/FastImage/FFFastImageSource.h; sourceTree = ""; }; + 73D1E0BDB42EE2F595BCB0C3E231490F /* upsampling_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_mips_dsp_r2.c; path = src/dsp/upsampling_mips_dsp_r2.c; sourceTree = ""; }; 73D798B4EDDC375384A075DD5D1B7403 /* BugsnagLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagLogger.h; sourceTree = ""; }; - 73E49B69B89A89D1209D071D4F21208A /* FIRVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVersion.m; path = Firebase/Core/FIRVersion.m; sourceTree = ""; }; + 73DF275591A289869A037B732ACCE445 /* FIRComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponent.m; path = FirebaseCore/Sources/FIRComponent.m; sourceTree = ""; }; 73F8A95B79671F501F31EA4F1D04AA8B /* libReact-RCTActionSheet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-RCTActionSheet.a"; path = "libReact-RCTActionSheet.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 740C19CBAF1B7128836A086F6F400C7B /* RCTInterpolationAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInterpolationAnimatedNode.h; sourceTree = ""; }; + 742DA574AD9989337C7A051B2C2DC52F /* CLSLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSLogging.h; path = iOS/Crashlytics.framework/Headers/CLSLogging.h; sourceTree = ""; }; + 746D3D964458B43BFFB90666578396AE /* FirebaseCoreDiagnostics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCoreDiagnostics.xcconfig; sourceTree = ""; }; + 7480B7F4FAB96A496173DE0E7C617B9C /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; 748FC8EFDBC62C2C86AE00238C2E8EED /* BugsnagMetaData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagMetaData.h; sourceTree = ""; }; 74E4529B98FEDAACF3150604E65DAAD1 /* RNForceTouchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNForceTouchHandler.m; sourceTree = ""; }; - 74FC2D6D369BA24B26EF115DD14D1CE2 /* vp8i_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8i_enc.h; path = src/enc/vp8i_enc.h; sourceTree = ""; }; 7521D31F3A9E79D6E0C978B3EEC1436A /* RCTMaskedViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTMaskedViewManager.m; sourceTree = ""; }; - 7563DA5563314C4D44215ED308EF7C77 /* tree_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = tree_dec.c; path = src/dec/tree_dec.c; sourceTree = ""; }; + 754C1763718FE74C32CF806FF8384D33 /* vp8i_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8i_enc.h; path = src/enc/vp8i_enc.h; sourceTree = ""; }; 75A3991F723F7E84E6D7328336BCDCBE /* RCTCustomInputController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTCustomInputController.m; sourceTree = ""; }; 75A708AD80219699E2A645931B9F0274 /* BugsnagFileStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagFileStore.m; sourceTree = ""; }; 75E7950EB27C6E711A5E1791BD815BF4 /* RCTCxxModule.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTCxxModule.mm; sourceTree = ""; }; + 75E84073A3FF1C0075C2A143F4BBA591 /* Crashlytics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Crashlytics.xcconfig; sourceTree = ""; }; 75F364C673640804FB74B70CFC3E3463 /* NativeModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NativeModule.h; sourceTree = ""; }; 75FB1004D9B7D67BB87C20ADF2E6B934 /* BSG_KSCrashSentry_User.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashSentry_User.h; sourceTree = ""; }; 76037B0C94833300AFE005BC53E81964 /* ReactNativeART-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ReactNativeART-dummy.m"; sourceTree = ""; }; + 760D77A4F668A9C3F29BC76736A73378 /* GULUserDefaults.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULUserDefaults.m; path = GoogleUtilities/UserDefaults/GULUserDefaults.m; sourceTree = ""; }; 76107D98663D0AAB38C7B9B963D90872 /* EXFileSystem-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EXFileSystem-dummy.m"; sourceTree = ""; }; + 7612B1F9763549EA1DC383D43FC8950C /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; 7612E5357AA20DB81B79395E816B4249 /* REACondNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REACondNode.m; sourceTree = ""; }; + 76248F9402D4DD786D6A8E7AA04A7A4C /* GULSecureCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULSecureCoding.m; path = GoogleUtilities/Environment/GULSecureCoding.m; sourceTree = ""; }; + 762B0734C882B680C9D971AF79E220CA /* huffman_encode_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = huffman_encode_utils.c; path = src/utils/huffman_encode_utils.c; sourceTree = ""; }; 76443512452314B81C8DF7C0C0027E31 /* EXAV-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EXAV-dummy.m"; sourceTree = ""; }; 767E6879FB85AE1BD7163A0997745F42 /* RCTSafeAreaView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaView.h; sourceTree = ""; }; + 76870B32976CD2CF19434FE44E4DAB9E /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; + 76B1D8152D1957AC23B75A79D58FDEB3 /* CLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSReport.h; path = iOS/Crashlytics.framework/Headers/CLSReport.h; sourceTree = ""; }; + 77028BA581AF00AEF7C147D7449E82B9 /* FIRInstanceIDURLQueryItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDURLQueryItem.h; path = Firebase/InstanceID/FIRInstanceIDURLQueryItem.h; sourceTree = ""; }; 77156F8F966471CD2FB751F90464C421 /* KeyCommands.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = KeyCommands.xcconfig; sourceTree = ""; }; 772720108593E953F4093B30981FFD2D /* RCTI18nUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTI18nUtil.h; sourceTree = ""; }; - 772A0E739DDA6F457BF35D3662285A59 /* GDTStoredEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTStoredEvent.h; path = GoogleDataTransport/GDTLibrary/Public/GDTStoredEvent.h; sourceTree = ""; }; 77327992D03EFF43D7486B0D4DF8FFAB /* ARTPattern.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARTPattern.h; sourceTree = ""; }; 7737694E9B3A951E07FF7E8C2E7C4880 /* QBImagePickerController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QBImagePickerController.h; path = ios/QBImagePicker/QBImagePicker/QBImagePickerController.h; sourceTree = ""; }; 773D91497860302EEC08AB5AEE213413 /* RCTActivityIndicatorViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTActivityIndicatorViewManager.h; sourceTree = ""; }; - 773EFFD9502444FAACFF9DEAF0B811F7 /* RSKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSKInternalUtility.m; path = RSKImageCropper/RSKInternalUtility.m; sourceTree = ""; }; 77416528506225EE2972EBF70D15691C /* RCTImageSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTImageSource.h; sourceTree = ""; }; 77624AAEF0034FE4363472281260D6F0 /* Utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = yoga/Utils.h; sourceTree = ""; }; 776B81695F3B63E689B69A224988541B /* RNGestureHandlerModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNGestureHandlerModule.h; path = ios/RNGestureHandlerModule.h; sourceTree = ""; }; 777F3D8575340CBFA5E8A0F800F17DDF /* RNFastImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNFastImage.xcconfig; sourceTree = ""; }; 77CAA27A0F211D519B85CBF3D079AADF /* RCTAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAnimatedNode.h; sourceTree = ""; }; 77E2440A40504F1323D79249850E600B /* UMFileSystemInterface.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UMFileSystemInterface.xcconfig; sourceTree = ""; }; + 782DC576EA301487BA3AFF6CDF22C7F0 /* enc_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_msa.c; path = src/dsp/enc_msa.c; sourceTree = ""; }; 782FA60B47AB3C13BD5A739B4E7D0267 /* RCTTypeSafety-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTTypeSafety-dummy.m"; sourceTree = ""; }; 783B06CA56E7F31AAD0E0144F28CAEDA /* RCTModuleMethod.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTModuleMethod.mm; sourceTree = ""; }; - 784124C11142E87DB1D3FCA0F0DF8284 /* anim_decode.c */ = {isa = PBXFileReference; includeInIndex = 1; name = anim_decode.c; path = src/demux/anim_decode.c; sourceTree = ""; }; 784773599B7F6FF0668F7908F0A92394 /* UMFaceDetectorInterface.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = UMFaceDetectorInterface.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 78503CA382C9D43329DC817BF54894EF /* RNNotificationUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNNotificationUtils.h; path = RNNotifications/RNNotificationUtils.h; sourceTree = ""; }; 78541DB485050F75C0936807AFB8C357 /* RCTExceptionsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTExceptionsManager.h; path = React/CoreModules/RCTExceptionsManager.h; sourceTree = ""; }; 789B2C68D8DD160298CF3C4290405EF4 /* RCTScrollView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollView.h; sourceTree = ""; }; + 78A5E4508694C25663685CE163B7A18D /* GDTCORReachability.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORReachability.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability.h; sourceTree = ""; }; 78BD83D02F69F9B51DEF7E9F6F62829F /* RNSScreenStackHeaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNSScreenStackHeaderConfig.h; path = ios/RNSScreenStackHeaderConfig.h; sourceTree = ""; }; - 78E6B460E72CC20396C19DC0B73930E7 /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; + 78D16CA96B3633E9D5C63D2D8DEB3AFD /* GDTCORRegistrar_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORRegistrar_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORRegistrar_Private.h; sourceTree = ""; }; + 78E05B5B4544D8C74092E8B0982CF77B /* dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec.c; path = src/dsp/dec.c; sourceTree = ""; }; 78E7BDED4CA237BA0E4E1B8DA70EDF15 /* MethodCall.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MethodCall.h; sourceTree = ""; }; - 78F3FBD7C471BA4C5B6D151E01926216 /* lossless_enc_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_sse41.c; path = src/dsp/lossless_enc_sse41.c; sourceTree = ""; }; - 79056B8415873E79B2C8F6C636A96E00 /* upsampling_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_sse2.c; path = src/dsp/upsampling_sse2.c; sourceTree = ""; }; 794262CC6F2E3398361EF16166E8B3B2 /* RCTActionSheetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTActionSheetManager.h; path = Libraries/ActionSheetIOS/RCTActionSheetManager.h; sourceTree = ""; }; 79617570F1EDFDB1750EBEF9D40FF152 /* UMViewManagerAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = UMViewManagerAdapter.m; sourceTree = ""; }; - 7990BC8A7C7229119CF767CCAD9AAF62 /* FIRInstanceIDCombinedHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCombinedHandler.h; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.h; sourceTree = ""; }; - 79915C4E2EB6C0B1E346BE2B093CC0C9 /* RSKImageCropper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RSKImageCropper.xcconfig; sourceTree = ""; }; 79C9A31269E81DF965C0EFADB2012AC4 /* RCTComponentEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTComponentEvent.h; sourceTree = ""; }; - 79CB84FBC11AB9D21E3012451C45CB96 /* dec_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_msa.c; path = src/dsp/dec_msa.c; sourceTree = ""; }; - 7A239E55139C2F75E79338C50AB6FC8D /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; 7A2968C02EB2F9DA9CFE11523D853F0E /* RCTScrollViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollViewManager.m; sourceTree = ""; }; 7A2FB31784E1ED7F7C9238D0C311015A /* RNPushKitEventListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNPushKitEventListener.m; path = RNNotifications/RNPushKitEventListener.m; sourceTree = ""; }; - 7A39EDD3E7E23D5FD4B1E1E340CE326E /* log_severity.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = log_severity.h; path = src/glog/log_severity.h; sourceTree = ""; }; - 7A5466C3CC27EC54A45A65F3085F873B /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; 7A5E31C57EE60147EDAAE3E31B1D19AC /* UMViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMViewManager.h; path = UMCore/UMViewManager.h; sourceTree = ""; }; 7A6789E68DF4AAD0DFD8FA5B9FF2B754 /* RCTRequired.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTRequired.h; path = RCTRequired/RCTRequired.h; sourceTree = ""; }; 7A8DFA1F864C62F0877DC2857424EDD7 /* RCTImageBlurUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageBlurUtils.h; path = Libraries/Image/RCTImageBlurUtils.h; sourceTree = ""; }; - 7AA4A743371045970B504A8B2B3C56BF /* GDTClock.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTClock.h; path = GoogleDataTransport/GDTLibrary/Public/GDTClock.h; sourceTree = ""; }; 7AA8EAD8C2A634C8B211DCA3C84C4BB1 /* JSCExecutorFactory.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = JSCExecutorFactory.mm; sourceTree = ""; }; + 7AB2ABB19DF260BF726A2A7DE50BB0C7 /* enc_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_neon.c; path = src/dsp/enc_neon.c; sourceTree = ""; }; 7AC335A8B94A8E987A25C8916AA4478E /* EXAV-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EXAV-prefix.pch"; sourceTree = ""; }; 7AD7320F2AEFFAC745ECA1D9F9D55A8C /* RNLocalize.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNLocalize.xcconfig; sourceTree = ""; }; + 7AE11FC733D32808154EE0C7975D70AD /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; 7AFAA9D3ADEE4875D364F0EA50C4098C /* RCTMultipartDataTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTMultipartDataTask.m; sourceTree = ""; }; - 7B0A69B6FACD7C8A7159992BEA265099 /* filter_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filter_enc.c; path = src/enc/filter_enc.c; sourceTree = ""; }; - 7B4C9226B4D3A7B6A7E8418CF95CBCC4 /* cost_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cost_enc.h; path = src/enc/cost_enc.h; sourceTree = ""; }; 7B4F35BD813347FF988C6039F938EDE8 /* RCTSurfaceRootView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceRootView.h; sourceTree = ""; }; 7B4FBA22B542402775644ACFD00D2E66 /* RNFetchBlobNetwork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNFetchBlobNetwork.h; path = ios/RNFetchBlobNetwork.h; sourceTree = ""; }; - 7B74342AA866FE731DC0FDD2C2028F04 /* strtod.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = strtod.cc; path = "double-conversion/strtod.cc"; sourceTree = ""; }; + 7B75AFFDAD90901B97B9F59583DB4E96 /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; + 7BC2EF7B3BFD238AB12617D31274CEF8 /* FIRInstanceIDStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDStore.m; path = Firebase/InstanceID/FIRInstanceIDStore.m; sourceTree = ""; }; 7C5AB60DB5E0886BB2ED862637A07EF4 /* BugsnagCollections.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagCollections.m; sourceTree = ""; }; + 7C78B03E18C3C58965E80B1E11C3CAC7 /* RSKInternalUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSKInternalUtility.m; path = RSKImageCropper/RSKInternalUtility.m; sourceTree = ""; }; 7C840FED49BB6E4503D0250D4C7345A7 /* RCTSurfaceDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceDelegate.h; sourceTree = ""; }; 7C933B6ADE762A78222E407FD1960592 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 7CC8FBDE81778614DD8CE5DE55460D4C /* UMEventEmitterService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMEventEmitterService.h; sourceTree = ""; }; - 7CEDECEDD97547E548051D0BF989401A /* FirebaseAnalytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseAnalytics.framework; path = Frameworks/FirebaseAnalytics.framework; sourceTree = ""; }; + 7D0B134B634581BF0AB4FFB905334766 /* FirebaseInstallations.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseInstallations.h; path = FirebaseInstallations/Source/Library/Public/FirebaseInstallations.h; sourceTree = ""; }; 7D0BC95ED6BBB430597CE23C417B542E /* RCTEventDispatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTEventDispatcher.m; sourceTree = ""; }; 7D0E03388EBACCF6E9B6F9671AAF2F55 /* CxxNativeModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CxxNativeModule.h; sourceTree = ""; }; 7D13056FE137E30E8A829D3579A5B8D5 /* RNLocalize-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNLocalize-prefix.pch"; sourceTree = ""; }; 7D6700C73A21F270ADADE2937AD41BE0 /* RCTModalHostViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModalHostViewController.h; sourceTree = ""; }; - 7DB46ED09C638AB50343B0949E766343 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; + 7DA120FFE328161A90702286BAB6CDA6 /* FIRInstanceIDTokenOperation+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDTokenOperation+Private.h"; path = "Firebase/InstanceID/FIRInstanceIDTokenOperation+Private.h"; sourceTree = ""; }; 7DC9083B4EF5AA159996A2831D301185 /* RNFastImage.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNFastImage.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 7E1768101677ED3E062B092BABACCADF /* RCTWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTWeakProxy.h; sourceTree = ""; }; + 7E1CF3BEFF840D7071D158D044A4E745 /* lossless_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_sse2.c; path = src/dsp/lossless_sse2.c; sourceTree = ""; }; 7E2AC07FAC1F2E0091A4C47C3EEBD291 /* RNRootViewGestureRecognizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNRootViewGestureRecognizer.m; path = ios/RNRootViewGestureRecognizer.m; sourceTree = ""; }; 7E31CC084F1E85BF8535EB68B691BC03 /* android_time.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = android_time.png; path = docs/images/android_time.png; sourceTree = ""; }; - 7E96099942FD1BC96E81912D52A2DD99 /* filters_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_sse2.c; path = src/dsp/filters_sse2.c; sourceTree = ""; }; + 7E8C6A830011E9B4493E7F2FC363A651 /* tree_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = tree_dec.c; path = src/dec/tree_dec.c; sourceTree = ""; }; + 7EA24205E9A7B87800BCFEEC108BFF33 /* GoogleUtilities-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleUtilities-dummy.m"; sourceTree = ""; }; + 7EAF77B51624F49BDB16C3865BA59750 /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; 7EFE40F14A73EA2B443AA4CF44DAD50B /* CoreModulesPlugins.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CoreModulesPlugins.h; path = React/CoreModules/CoreModulesPlugins.h; sourceTree = ""; }; - 7F057988909AE054F78191124C83EE28 /* FIRComponentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRComponentType.m; path = Firebase/Core/FIRComponentType.m; sourceTree = ""; }; 7F2B27C002C382F3CAF553F080C2E896 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 7F3A1CF3578311FCD5BB2B8C51729FDB /* RSKImageCropper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RSKImageCropper-dummy.m"; sourceTree = ""; }; 7F4BF29BFB9DBF4D660B3789F5576D82 /* RCTProfile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTProfile.h; sourceTree = ""; }; - 7F5540001EC3C541DE53A5E0C4D860B9 /* GULNetworkConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkConstants.h; path = GoogleUtilities/Network/Private/GULNetworkConstants.h; sourceTree = ""; }; + 7F5EDA23D6D2D1ACE2F5DFFCB0B53C29 /* FBLPromise+Race.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Race.h"; path = "Sources/FBLPromises/include/FBLPromise+Race.h"; sourceTree = ""; }; 7F768D9E00785D6BB9E2DC2D13336CE0 /* rn-extensions-share.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "rn-extensions-share.xcconfig"; sourceTree = ""; }; 7FA243F65BEEED50FE367D2DA9EF79D8 /* BSG_KSSystemInfoC.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSSystemInfoC.h; sourceTree = ""; }; - 7FAC33E8263E9BEFAC11A7DFF34AD0BE /* FIRAnalyticsConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAnalyticsConfiguration.m; path = Firebase/Core/FIRAnalyticsConfiguration.m; sourceTree = ""; }; 7FD79D0F338295E977F4D316A76EDFFD /* UIView+FindUIViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+FindUIViewController.m"; path = "ios/Video/UIView+FindUIViewController.m"; sourceTree = ""; }; + 7FE52EC86FAD6477499E13343ED2C1DF /* FIRAnalyticsConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRAnalyticsConfiguration.m; path = FirebaseCore/Sources/FIRAnalyticsConfiguration.m; sourceTree = ""; }; + 7FE80A0E5A04BEDCC2FE998068C2E8A5 /* GULLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLogger.h; path = GoogleUtilities/Logger/Private/GULLogger.h; sourceTree = ""; }; 801E99A21664D8D68B2DACB0704F68A0 /* RCTClipboard.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTClipboard.h; sourceTree = ""; }; 802121F5B756ACBFDD6D08C36246DADD /* libReact-RCTLinking.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-RCTLinking.a"; path = "libReact-RCTLinking.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 803AA4D060B960BE2E1541EB7EB0A8F8 /* RNForceTouchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNForceTouchHandler.h; sourceTree = ""; }; - 804AD74736151223ADA3BC5674D5EBD5 /* picture_tools_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_tools_enc.c; path = src/enc/picture_tools_enc.c; sourceTree = ""; }; + 8047865EF52BDB8F74E450253525FD98 /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; 8074129DF318155B29544548E1CAF4A3 /* libreact-native-jitsi-meet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-jitsi-meet.a"; path = "libreact-native-jitsi-meet.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 807A779FAE2954A7DEB36EE202F2B50B /* BugsnagBreadcrumb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagBreadcrumb.h; sourceTree = ""; }; 809BB1BFEA6DBABE3E26A0D090F01154 /* localNotifications.md */ = {isa = PBXFileReference; includeInIndex = 1; name = localNotifications.md; path = docs/localNotifications.md; sourceTree = ""; }; @@ -5285,86 +5560,86 @@ 80E3C559E928DBF9CC5352937D0D85BE /* YGStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGStyle.h; path = yoga/YGStyle.h; sourceTree = ""; }; 80E600CBC8D78EBFD0015D5E8839B40F /* UMExportedModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = UMExportedModule.m; path = UMCore/UMExportedModule.m; sourceTree = ""; }; 812AA095C1331B37CE0472F217A4945B /* RCTImageBlurUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTImageBlurUtils.m; sourceTree = ""; }; - 814BC5DE2797DF0C936CF03839974699 /* bit_reader_inl_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bit_reader_inl_utils.h; path = src/utils/bit_reader_inl_utils.h; sourceTree = ""; }; + 812DCB2F8F49903836E6EBBDD65655F2 /* FBLPromise+Timeout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Timeout.h"; path = "Sources/FBLPromises/include/FBLPromise+Timeout.h"; sourceTree = ""; }; 81685809005A13FF186E65DA6FFB1463 /* experiments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = experiments.h; sourceTree = ""; }; - 8175885836544CD4D80DDBE66EEFAA45 /* FIRLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRLogger.m; path = Firebase/Core/FIRLogger.m; sourceTree = ""; }; - 81D7A46E2069BF2C08EB125AB419D0CA /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; + 8174EE8838427BE46A0885CA8539CA9D /* GDTCORUploadPackage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORUploadPackage.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploadPackage.h; sourceTree = ""; }; + 81B9283887252C3A5BFACBC794BD9596 /* FIRInstallationsVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsVersion.m; path = FirebaseInstallations/Source/Library/FIRInstallationsVersion.m; sourceTree = ""; }; + 81CE6C1BD2CD84627ACB2375ECEDDBF0 /* FBLPromise+Recover.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Recover.h"; path = "Sources/FBLPromises/include/FBLPromise+Recover.h"; sourceTree = ""; }; + 81DA341D791704280F8256A98FF27460 /* FIRInstanceIDTokenStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenStore.h; path = Firebase/InstanceID/FIRInstanceIDTokenStore.h; sourceTree = ""; }; 81EB44B226ED52831CC256D3AD059682 /* RCTFPSGraph.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFPSGraph.h; sourceTree = ""; }; 820E8C3DA0CDAC11DC3E5E7C1496BF63 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 8245ADDCE6EFBDACC991EA41E85E761A /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 824F6DDB5733946BF470102D4A2B06CB /* GDTStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTStorage.h; path = GoogleDataTransport/GDTLibrary/Private/GDTStorage.h; sourceTree = ""; }; 826389E051DB9F5DAFC23A5ED7B18FD8 /* UIView+FindUIViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+FindUIViewController.h"; path = "ios/Video/UIView+FindUIViewController.h"; sourceTree = ""; }; + 8282D52E552AB2125F97A62608C8C38B /* CLSAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSAttributes.h; path = iOS/Crashlytics.framework/Headers/CLSAttributes.h; sourceTree = ""; }; 82A93793123AD90694C5D13F9796A9C9 /* EXContactsRequester.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXContactsRequester.m; path = EXPermissions/EXContactsRequester.m; sourceTree = ""; }; 82BA2E6A5BD7AF8E90A46BA46468DB13 /* Pods-RocketChatRN-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketChatRN-acknowledgements.plist"; sourceTree = ""; }; + 82C307D1CC81EE4425E3DE4DFA23E2F3 /* yuv.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv.c; path = src/dsp/yuv.c; sourceTree = ""; }; + 82C5CB61A36D2F0DDF60097EB08DBD66 /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; 82CB5E38F32F0666135F8A6821A7FD7A /* UMUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = UMUtilities.m; path = UMCore/UMUtilities.m; sourceTree = ""; }; 82E63E35E28925985F52851F5E7F7A2F /* RCTParserUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTParserUtils.h; sourceTree = ""; }; 82F02B6475E7D1C3486094F8F388E148 /* RNRotationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNRotationHandler.h; sourceTree = ""; }; 82F6724D9AC88FEFE6BE7EA4E1AAD50B /* UMFontProcessorInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMFontProcessorInterface.h; path = UMFontInterface/UMFontProcessorInterface.h; sourceTree = ""; }; - 830A9E503A916D0977B7C704E7CDDA7D /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; + 82F6DE05F32E14B763473B91688324E1 /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; 8330AEDA932A6AD8E031EF0C641E5DE7 /* EXHapticsModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXHapticsModule.h; path = EXHaptics/EXHapticsModule.h; sourceTree = ""; }; 833A6A67ACF149F280F8CE95DC6D8B09 /* QBAlbumsViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QBAlbumsViewController.h; path = ios/QBImagePicker/QBImagePicker/QBAlbumsViewController.h; sourceTree = ""; }; 834A4198AD7AF564A3B63F8008730F29 /* EXAV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXAV.h; path = EXAV/EXAV.h; sourceTree = ""; }; 834E201ABF2061E6D473BE35CAB450C9 /* RCTVideoPlayerViewControllerDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTVideoPlayerViewControllerDelegate.h; path = ios/Video/RCTVideoPlayerViewControllerDelegate.h; sourceTree = ""; }; - 838D7C69C1B531C642465B4BAA4320CF /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; 83DF81F714471EE2EDA81F05870FC7BD /* RCTMultiplicationAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMultiplicationAnimatedNode.h; sourceTree = ""; }; - 83F1B2BD4B45BF9CD1B13B3F8EE023A3 /* alpha_processing_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing_mips_dsp_r2.c; path = src/dsp/alpha_processing_mips_dsp_r2.c; sourceTree = ""; }; - 8492A0BD43CFF65B38C003A996898AFA /* FIRInstanceIDAuthService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAuthService.m; path = Firebase/InstanceID/FIRInstanceIDAuthService.m; sourceTree = ""; }; + 842C1C29367F774BD441F53EB6BD4437 /* diy-fp.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "diy-fp.cc"; path = "double-conversion/diy-fp.cc"; sourceTree = ""; }; 8494ADB2C4035D2B22513419C51B5517 /* RCTTextViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextViewManager.h; sourceTree = ""; }; 8498FD18C19E0FE18E529B9AE9B2DFBC /* RCTVideoPlayerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTVideoPlayerViewController.h; path = ios/Video/RCTVideoPlayerViewController.h; sourceTree = ""; }; 84A709674F346A7BEAE13B2A5EE18C22 /* RCTVideoPlayerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTVideoPlayerViewController.m; path = ios/Video/RCTVideoPlayerViewController.m; sourceTree = ""; }; 84BE2C7443B6C5385B9E1464E6B32E3E /* RCTErrorInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTErrorInfo.m; sourceTree = ""; }; 84CAA6046B8BF4952D41D2078EF3C87D /* UMModuleRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = UMModuleRegistry.m; sourceTree = ""; }; 84E26443EF2CDC0A416CD2340B33EB39 /* React-RCTActionSheet.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTActionSheet.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 84EC518D9D034614AA1F401DB6FF9D92 /* UIImage+WebP.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+WebP.m"; path = "SDWebImageWebPCoder/Classes/UIImage+WebP.m"; sourceTree = ""; }; 84FA4F5E631BB18A4CAF1B69923DAFEB /* UMBarCodeScannerInterface.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = UMBarCodeScannerInterface.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 850EC46C044A0D75CF74813A69913DEC /* FIRComponentContainerInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainerInternal.h; path = Firebase/Core/Private/FIRComponentContainerInternal.h; sourceTree = ""; }; 8517462EC8191891DDC4C090B5F149BE /* RNFirebaseRemoteConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseRemoteConfig.m; sourceTree = ""; }; 8520DCC90076C2D0C0481EAA947E98F3 /* BugsnagReactNative.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BugsnagReactNative.h; path = cocoa/BugsnagReactNative.h; sourceTree = ""; }; + 853B2681E8D6B8DC9F55CF27A6E8090C /* GULHeartbeatDateStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULHeartbeatDateStorage.m; path = GoogleUtilities/Environment/GULHeartbeatDateStorage.m; sourceTree = ""; }; 8540E2CE4399AB56BCE33B40A8623314 /* RCTLog.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTLog.mm; sourceTree = ""; }; 8547386EC742745D31300181ACD1066E /* UMCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = UMCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 855FA7499F1A41F34D4ABFB10B0E1D73 /* WebRTC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebRTC.framework; path = Frameworks/WebRTC.framework; sourceTree = ""; }; 856B5CD56F194FAD26EA91620B66D614 /* libGoogleDataTransport.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGoogleDataTransport.a; path = libGoogleDataTransport.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 85852013697E914BA35F277826FB9CEE /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; 858AFA83985937825473045CF6808B15 /* librn-extensions-share.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "librn-extensions-share.a"; path = "librn-extensions-share.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 85DAF0ADF9D871D10FCAD5FCC5B53E0B /* RCTDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDisplayLink.m; sourceTree = ""; }; - 85DDB9877837BA0AF9B0F7B6DEC362A9 /* picture_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_enc.c; path = src/enc/picture_enc.c; sourceTree = ""; }; + 85F22489B98808C5DA103C7B579C00A3 /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; 861210F0BE7A71097101B88DB973BF08 /* RCTSwitch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSwitch.h; sourceTree = ""; }; - 861C44D58795A70D3338BEA3807EBD22 /* upsampling_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_sse41.c; path = src/dsp/upsampling_sse41.c; sourceTree = ""; }; - 863D399BA928C8368D2AC66969BA7496 /* vp8_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = vp8_dec.c; path = src/dec/vp8_dec.c; sourceTree = ""; }; 864D63C1C3348D6FFBDA77D0EC206085 /* BSG_KSBacktrace.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSBacktrace.c; sourceTree = ""; }; - 865A76C3046C18A7DA36E67E3DE72F88 /* Folly.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Folly.xcconfig; sourceTree = ""; }; + 86670E276CC761C5AD9108582C55EDC3 /* FBLPromise+Do.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Do.m"; path = "Sources/FBLPromises/FBLPromise+Do.m"; sourceTree = ""; }; 86679E2183EABD35F9E8AB9DA3D2A5B0 /* RCTImageShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageShadowView.h; path = Libraries/Image/RCTImageShadowView.h; sourceTree = ""; }; 86CBEBBFD992C37A25A483B4EBEF43B1 /* UMUtilitiesInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMUtilitiesInterface.h; sourceTree = ""; }; 86E1E63B15248196AFB2230744A465F8 /* ARTRenderable.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ARTRenderable.m; path = ios/ARTRenderable.m; sourceTree = ""; }; 86EC7D9587DCAB7397F8A9650E3DC500 /* RCTBackedTextInputViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBackedTextInputViewProtocol.h; sourceTree = ""; }; - 870525D77085BDC7FD874AC0C6EE096B /* dec_clip_tables.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_clip_tables.c; path = src/dsp/dec_clip_tables.c; sourceTree = ""; }; + 872F0037F0BE0480407ABDF7F96FBAF6 /* vp8l_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = vp8l_enc.c; path = src/enc/vp8l_enc.c; sourceTree = ""; }; 8739EC73C0AA1B43B9231E9727AB3D8F /* React-RCTActionSheet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTActionSheet.xcconfig"; sourceTree = ""; }; - 87668906696C273A559873C1EDF6F7AA /* GULAppEnvironmentUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULAppEnvironmentUtil.m; path = GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m; sourceTree = ""; }; - 87A2920C46D0CC20B60A655E9FF18B0F /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; + 877F0D1D9A0A956008B6F07FD23EC8B1 /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; 87DACA19F417B941639C1163C588AC87 /* UMFontScalerInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMFontScalerInterface.h; path = UMFontInterface/UMFontScalerInterface.h; sourceTree = ""; }; 87F09B22862988263200E4BCFAC2F8A8 /* BugsnagCollections.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagCollections.h; sourceTree = ""; }; 880D12E1D949FD2BA1A1E9FB172B2B09 /* YGConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGConfig.h; path = yoga/YGConfig.h; sourceTree = ""; }; + 8816AC006C3D22F054F7BAB4EA2511ED /* alpha_processing.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing.c; path = src/dsp/alpha_processing.c; sourceTree = ""; }; 881868D218B5223A2DF347CA1DFCFDD0 /* RCTModuloAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTModuloAnimatedNode.m; sourceTree = ""; }; + 8825B0D3568A19F57CDF00412E9B2DD6 /* SDWebImageWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageWebPCoder.h; path = SDWebImageWebPCoder/Module/SDWebImageWebPCoder.h; sourceTree = ""; }; 882E9C8F4668EAE72A264FA716EFE3F2 /* RNImageCropPicker.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNImageCropPicker.xcconfig; sourceTree = ""; }; - 884C00138AD3CAF3B4B0B63BD80BED30 /* FIRInstanceIDConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDConstants.h; path = Firebase/InstanceID/FIRInstanceIDConstants.h; sourceTree = ""; }; 8852B603985EABAC100BF0A6427C4ACD /* react-native-webview-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-webview-dummy.m"; sourceTree = ""; }; 885CB6D9B8AED66C24493BBDBAFD7F33 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - 889DD58E7BECAD23FDAC21530CD7D0B8 /* upsampling_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_neon.c; path = src/dsp/upsampling_neon.c; sourceTree = ""; }; 88AC52FDFB1500AD1EC5B69093B1D4AD /* subscription.md */ = {isa = PBXFileReference; includeInIndex = 1; name = subscription.md; path = docs/subscription.md; sourceTree = ""; }; 88B17503DDAC3927A50AD0B23A8DD40F /* react-native-keyboard-input.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "react-native-keyboard-input.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 88DEDF68D8C60CEAF48D94503FA3FA5A /* upsampling.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling.c; path = src/dsp/upsampling.c; sourceTree = ""; }; + 88FB1508A1C9E9DF1C4FCF0644BFB25D /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; 88FFE620B4FE021148EFFE939FE7D675 /* RNCAssetsLibraryRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCAssetsLibraryRequestHandler.h; path = ios/RNCAssetsLibraryRequestHandler.h; sourceTree = ""; }; 8905113572F8576DEA7D37FA11A60F0D /* RCTMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMacros.h; sourceTree = ""; }; - 89160B8C3B26D7474A95630C72EA1E5F /* utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = utils.c; path = src/utils/utils.c; sourceTree = ""; }; 892DAF84D0BCCEFD111C94D7517BC3C9 /* EXFileSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXFileSystem.h; path = EXFileSystem/EXFileSystem.h; sourceTree = ""; }; + 893353C22879F217358868739D8C89E9 /* rescaler_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_mips_dsp_r2.c; path = src/dsp/rescaler_mips_dsp_r2.c; sourceTree = ""; }; 8937DEA30EF284C0AAC3EE9008F4AF8D /* RCTDevMenu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDevMenu.h; sourceTree = ""; }; 8959AF48FDC941E794274BEA913493C8 /* EXWebBrowser-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EXWebBrowser-dummy.m"; sourceTree = ""; }; 8998273719FDD789E6F9C7541AFD0B33 /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNVectorIcons.a; path = libRNVectorIcons.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 899A689BA65BA61151C1DDFB19F5BE93 /* GULNetwork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetwork.h; path = GoogleUtilities/Network/Private/GULNetwork.h; sourceTree = ""; }; 89AFB173CF329C6B51A398514E06ECCC /* RCTVirtualTextShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTVirtualTextShadowView.m; sourceTree = ""; }; + 89C6619CB1C1D1AE75ECCE9C2E6A35A5 /* cost_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cost_enc.h; path = src/enc/cost_enc.h; sourceTree = ""; }; 89E51AAA62F862E9845F3BCEBA4471BA /* React-RCTSettings-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTSettings-dummy.m"; sourceTree = ""; }; 89EE7CA4B88EDCF9C446BA9DFCB904F0 /* EXAV.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EXAV.xcconfig; sourceTree = ""; }; - 8A06434A333E319EE6F329F7AD16700F /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; - 8A126C06795FE746C9901F5ED989C79D /* FirebaseInstanceID.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseInstanceID.xcconfig; sourceTree = ""; }; 8A1E96E54A74B0B1F1F972417852D401 /* RNRotationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNRotationHandler.m; sourceTree = ""; }; - 8A43A3193B00F38A7A85002BB97B1AC5 /* GULNSData+zlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GULNSData+zlib.h"; path = "GoogleUtilities/NSData+zlib/GULNSData+zlib.h"; sourceTree = ""; }; + 8A4DD3054BCAAC1DD111B122592F96DD /* Firebase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Firebase.xcconfig; sourceTree = ""; }; 8A5AA89B3283F17AD3F4DDD55C37A94E /* RNNotificationCenterListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNNotificationCenterListener.h; path = RNNotifications/RNNotificationCenterListener.h; sourceTree = ""; }; 8A7DBD047D8132A53973B81E8A3B6CF4 /* RCTMultiplicationAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTMultiplicationAnimatedNode.m; sourceTree = ""; }; 8A821A52E6888BC7CFDBC1BC5865C0C8 /* RNFirebaseAdMobBannerManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseAdMobBannerManager.h; sourceTree = ""; }; @@ -5375,55 +5650,50 @@ 8AEF51CFB5D2A21518EC339F1438E9B5 /* Instance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Instance.h; sourceTree = ""; }; 8B177BBB89F7A58B6A2340B1CE785CF7 /* QBVideoIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBVideoIndicatorView.m; path = ios/QBImagePicker/QBImagePicker/QBVideoIndicatorView.m; sourceTree = ""; }; 8B2AC099629C46CC93F0E91ADFEB8830 /* RCTLinkingManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTLinkingManager.m; sourceTree = ""; }; - 8B43F094AB5E433A936FF4B4F031A70D /* FirebaseCoreDiagnostics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCoreDiagnostics.xcconfig; sourceTree = ""; }; + 8B4C2C687BA9A4F482BCC6E3550747BE /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; 8B74BF4987350560342F9A6664F21F93 /* ARTRenderableManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARTRenderableManager.h; sourceTree = ""; }; 8BD3AC16BF3F92264910DB70EF0406EE /* jsi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = jsi.h; sourceTree = ""; }; 8BF4251429A1B57F5019122FC3B9C1D3 /* REACallFuncNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REACallFuncNode.m; sourceTree = ""; }; - 8BFB30ED854B8C01AD34F0014DAF9AF4 /* vlog_is_on.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vlog_is_on.h; path = src/glog/vlog_is_on.h; sourceTree = ""; }; 8C3D5D3F7FBCD01E42C88BF2881A6727 /* React-RCTText-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTText-prefix.pch"; sourceTree = ""; }; 8C3E2A6E6F93E60E397F6C0BBA710BF5 /* libreact-native-cameraroll.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-cameraroll.a"; path = "libreact-native-cameraroll.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 8C40A67EE1D77C8674B2974823212EA0 /* GDTCORReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORReachability.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORReachability.m; sourceTree = ""; }; 8C478C7C78C67B422A383B902C940722 /* REATransformNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REATransformNode.m; sourceTree = ""; }; - 8C47D1D35F481ACA0F8701C734BA781B /* muxinternal.c */ = {isa = PBXFileReference; includeInIndex = 1; name = muxinternal.c; path = src/mux/muxinternal.c; sourceTree = ""; }; 8C51D6EBAB67D41940C272A7960AEFC9 /* RCTLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTLayout.m; sourceTree = ""; }; - 8C563801A978525A6184D0F9DD82905D /* GoogleDataTransportCCTSupport.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleDataTransportCCTSupport.xcconfig; sourceTree = ""; }; 8C5775E7F823B6BF19C0FBAAD82D5A41 /* RCTImageSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTImageSource.m; sourceTree = ""; }; 8C57C3B759A5EEBA851D9DEC243E07D0 /* BugsnagApiClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagApiClient.m; sourceTree = ""; }; 8C62EE627611C937E0EEBF789C755F28 /* REATransitionAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REATransitionAnimation.h; sourceTree = ""; }; - 8C6645411C554858ADA26C648BCBCEE0 /* CLSAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSAttributes.h; path = iOS/Crashlytics.framework/Headers/CLSAttributes.h; sourceTree = ""; }; - 8C702ABF343F6407668963298BF734C7 /* diy-fp.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "diy-fp.cc"; path = "double-conversion/diy-fp.cc"; sourceTree = ""; }; - 8C73BC466081F293E4D01A6633E29FB0 /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; + 8C64106BB2DF7529C974379A31A7B6EE /* dec_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_mips_dsp_r2.c; path = src/dsp/dec_mips_dsp_r2.c; sourceTree = ""; }; 8C7F420DABD8668C6B606A6CE563F5DA /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 8C97DDC0573F567F53412E83F064BC52 /* CxxModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CxxModule.h; sourceTree = ""; }; 8CA0C9A7CC0AC4898AE2F9A566726C4C /* RCTSlider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSlider.m; sourceTree = ""; }; - 8CAA2DBF00DFE036CB71047FCE811813 /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; 8CB27FF0D9774D66C8B17F15F7EF975B /* EXAVPlayerData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXAVPlayerData.m; path = EXAV/EXAVPlayerData.m; sourceTree = ""; }; 8CC9178C366942FD6FF6A115604EAD58 /* libFirebaseCoreDiagnostics.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFirebaseCoreDiagnostics.a; path = libFirebaseCoreDiagnostics.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 8CD8755AF098A173E00AA86509262962 /* frame_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = frame_dec.c; path = src/dec/frame_dec.c; sourceTree = ""; }; 8CE45688575FF0AA028895BFDD852F2F /* NSDataBigString.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = NSDataBigString.mm; sourceTree = ""; }; 8D0889914C2EAB592A088E57E532DCD1 /* BSG_KSCrashSentry_NSException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSG_KSCrashSentry_NSException.m; sourceTree = ""; }; 8D0FA4CCB2D15F90D716627CD0615088 /* BugsnagSink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagSink.m; sourceTree = ""; }; - 8D131A8E4A5603427F19241AF701AF94 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; - 8D29688C643B920F82DE60C7F438D732 /* lossless_enc_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_msa.c; path = src/dsp/lossless_enc_msa.c; sourceTree = ""; }; + 8D34461A66E3259AB0C1167A107511FE /* enc_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_sse2.c; path = src/dsp/enc_sse2.c; sourceTree = ""; }; 8D3ACA5DF26B64D8BFB86382C59C225C /* RCTBridge.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBridge.m; sourceTree = ""; }; 8D41701D90D5307954B1742BDAFC0654 /* QBVideoIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QBVideoIndicatorView.h; path = ios/QBImagePicker/QBImagePicker/QBVideoIndicatorView.h; sourceTree = ""; }; 8D4FB13C673E905FB20F81C28D9B6679 /* react-native-cameraroll.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "react-native-cameraroll.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 8D6AB77C2053E9044D3C2DA81EE8E08D /* BSG_KSCrashAdvanced.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashAdvanced.h; sourceTree = ""; }; 8D6D629A6E640F6D69B60F695979A2FE /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = en.lproj; path = ios/QBImagePicker/QBImagePicker/en.lproj; sourceTree = ""; }; + 8D7029D8FB8076E86500FDD8484FDDD4 /* webp_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = webp_dec.c; path = src/dec/webp_dec.c; sourceTree = ""; }; 8D7233787C00DF7D995ABCCA5B3EB617 /* RCTModalHostViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTModalHostViewController.m; sourceTree = ""; }; 8D88E63A793A46AE2A8E4914AF3394BF /* Color+Interpolation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Color+Interpolation.h"; sourceTree = ""; }; - 8D8E152A9BC39CB6B4F112BE7933F62A /* SDWebImageWebPCoder-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImageWebPCoder-prefix.pch"; sourceTree = ""; }; 8D9D3A711FA1485371DF91C09CC57D36 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 8DAEE0C9CA8E2893756B368AB756A956 /* EXAVObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXAVObject.h; path = EXAV/EXAVObject.h; sourceTree = ""; }; - 8DD51EADE5D09DE44C32D69103CFDC53 /* FIRInstanceIDTokenOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenOperation.h; sourceTree = ""; }; 8DD644175A669B738B4231111B5F113F /* React-RCTText-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTText-dummy.m"; sourceTree = ""; }; - 8DDE75E72B2E19F5B9CA9F1434A1B294 /* enc_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_msa.c; path = src/dsp/enc_msa.c; sourceTree = ""; }; 8DF63376066E2275FF26820B3A512A9B /* libreact-native-webview.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-webview.a"; path = "libreact-native-webview.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 8DFBAA668DAA11EFFF653C4F4F65920D /* NSError+FIRInstanceID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSError+FIRInstanceID.m"; path = "Firebase/InstanceID/NSError+FIRInstanceID.m"; sourceTree = ""; }; + 8E103C191260FD8059A70EBEAD980250 /* yuv_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_sse41.c; path = src/dsp/yuv_sse41.c; sourceTree = ""; }; 8E13103EBBAC3CC02469B4EE37E8FCDE /* RNVectorIcons-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNVectorIcons-dummy.m"; sourceTree = ""; }; 8E13BA75043295B8C6EA26BBCE451CC9 /* RCTDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDeviceInfo.h; sourceTree = ""; }; 8E4E0B5880476B12A583F23B1B67BA6B /* RNRootView.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNRootView.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 8E5496FD4962BCDE6FDFEF4257C4A257 /* RCTKeyboardObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTKeyboardObserver.m; sourceTree = ""; }; 8E83DC189FC3B7A9E583BCE303D1EE63 /* react-native-keyboard-input.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-keyboard-input.xcconfig"; sourceTree = ""; }; - 8EC2141037CFBBAB3FA9E1072F9D6F23 /* filters_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_utils.c; path = src/utils/filters_utils.c; sourceTree = ""; }; + 8E8C019C75FF4F789E40C8784D2EEB25 /* FIRInstallationsItem+RegisterInstallationAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstallationsItem+RegisterInstallationAPI.h"; path = "FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.h"; sourceTree = ""; }; + 8ECEDAD2A838321D345DEE9D05E6BB90 /* glog-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "glog-dummy.m"; sourceTree = ""; }; + 8EDA6DF3A3B6AF0071D4A7A9742995B2 /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; 8EE0DB3A20DEA4CB06D26C4EED1FA386 /* RCTPicker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPicker.h; sourceTree = ""; }; 8EEAC5F08D6B4D9AF7534012B48BB559 /* ARTSolidColor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ARTSolidColor.m; sourceTree = ""; }; 8F075D7361A98EC92912D23F62ECD7DD /* rn-fetch-blob.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "rn-fetch-blob.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; @@ -5437,44 +5707,52 @@ 8F8D67059CA3241FF449AFB5ADB16969 /* REANodesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = REANodesManager.h; path = ios/REANodesManager.h; sourceTree = ""; }; 8FA02F2BDAC2181FFE353B2B8F23A3CB /* RCTBridgeModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBridgeModule.h; sourceTree = ""; }; 8FB98F90F90861D1A9C0D3B322EA9646 /* RCTCustomInputController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCustomInputController.h; sourceTree = ""; }; + 8FE78D699DF0963CA715538E756C4EE2 /* GULApplication.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULApplication.h; path = GoogleUtilities/AppDelegateSwizzler/Private/GULApplication.h; sourceTree = ""; }; 90438AEE77D1621681B4872EE3F88E1A /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 9046E8F29610D14F5BFA1946206DA373 /* BugsnagSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagSession.m; sourceTree = ""; }; + 905B1BD1CB9FFBC1DD7770F2DBD5FD19 /* FIRInstanceIDCombinedHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCombinedHandler.m; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.m; sourceTree = ""; }; 9073F0DA69D25921E861A82C234697E9 /* BugsnagSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagSession.h; sourceTree = ""; }; 90CED7693DC05D50A140637839883E72 /* QBAssetsViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QBAssetsViewController.h; path = ios/QBImagePicker/QBImagePicker/QBAssetsViewController.h; sourceTree = ""; }; 90DD67F63242CF1116E18DA6D1483E77 /* BugsnagErrorReportApiClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagErrorReportApiClient.h; sourceTree = ""; }; 90E6D6E6AF7AF5CBA6B44DC028DFE6B0 /* RCTTurboModuleManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTurboModuleManager.h; sourceTree = ""; }; - 90EF6699ACCAB7C72CD5324F892A9215 /* FIRInstanceIDTokenFetchOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenFetchOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m; sourceTree = ""; }; 90F4B4F539C60A30B094D1DF65FF0527 /* RNCSlider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCSlider.m; path = ios/RNCSlider.m; sourceTree = ""; }; - 9113EA59A61B4CBF5ED6E953CCFA9F01 /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; + 91359A1A9D71282B8617D5BF30B86B04 /* GoogleUtilities-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleUtilities-prefix.pch"; sourceTree = ""; }; 91634D2EBBE9FF97B1E1D92DA46FB7CA /* BSG_KSCrashType.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSCrashType.c; sourceTree = ""; }; 9174D5E115C1B05B5CB34E7BA461B452 /* RNFirebase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNFirebase.xcconfig; sourceTree = ""; }; 9178FDFA5A52874BF5724CB2AB964C5B /* UMImageLoaderInterface.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UMImageLoaderInterface.xcconfig; sourceTree = ""; }; 918D0DAAF3DAF360A13EB2EA19CDD30D /* UMConstantsInterface.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = UMConstantsInterface.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 919435F4CD2ADBE3C210FD10F56B568A /* FBLPromise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBLPromise.m; path = Sources/FBLPromises/FBLPromise.m; sourceTree = ""; }; 919802DD5EA1842AF2787476A69A3CA9 /* YGFloatOptional.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGFloatOptional.h; path = yoga/YGFloatOptional.h; sourceTree = ""; }; 91B847B706F1F1C054508E9D7DCB57C7 /* RNFastImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNFastImage-dummy.m"; sourceTree = ""; }; + 91CF14832C73F2B333714483F06B3C9A /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; 91E31D9255E2BCA4BBE69B0059BFF963 /* rn-extensions-share.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "rn-extensions-share.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 920F14D05D427385C4CFA10C28574833 /* RCTURLRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTURLRequestHandler.h; sourceTree = ""; }; - 922FE223C439FC87898DD0C6C980A908 /* yuv_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_sse2.c; path = src/dsp/yuv_sse2.c; sourceTree = ""; }; + 921B01A30EBFEA00540CF83973A575F9 /* GDTCOREvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCOREvent.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCOREvent.h; sourceTree = ""; }; + 921C25810B4533D9E001D73370A577B6 /* GULAppDelegateSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppDelegateSwizzler.h; path = GoogleUtilities/AppDelegateSwizzler/Private/GULAppDelegateSwizzler.h; sourceTree = ""; }; 925AD7E3A9AD5A4244506B8FC81249E5 /* RNImageCropPicker.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNImageCropPicker.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9265904108AB9D3393DC3CE7F91A9B47 /* FIRInstanceIDUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDUtilities.m; path = Firebase/InstanceID/FIRInstanceIDUtilities.m; sourceTree = ""; }; + 9266B058E00473F5A3D7D31E6AFE30EA /* GULAppEnvironmentUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULAppEnvironmentUtil.m; path = GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.m; sourceTree = ""; }; 927C17DD6B309124DF54EAD8D4F887E9 /* RCTDecayAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDecayAnimation.m; sourceTree = ""; }; + 92839ECA01AD51593C6AC08DBD9EBCC2 /* GDTCORTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTransformer.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer.h; sourceTree = ""; }; 92B78D29037CAC24AA19C7CF8C13DE91 /* BSG_KSFileUtils.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSFileUtils.c; sourceTree = ""; }; 92C67CC10494D314A41B3C2CEA9A697C /* RNNotificationEventHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNNotificationEventHandler.m; path = RNNotifications/RNNotificationEventHandler.m; sourceTree = ""; }; 92F7979B6BC29ED6E6B66B0678441FAA /* react-native-video.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-video.xcconfig"; sourceTree = ""; }; + 92FA3E16143BD843AB82FBE1484C3175 /* GDTCORTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORTransformer.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORTransformer.m; sourceTree = ""; }; 9301A696465A7B138B63C930CAF7BF14 /* UMNativeModulesProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = UMNativeModulesProxy.m; sourceTree = ""; }; - 9307A5FA57000E38FBF9EC08FFF8A2BF /* bignum.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = bignum.cc; path = "double-conversion/bignum.cc"; sourceTree = ""; }; + 933895F5689A726BB5DBED7880848CEA /* FBLPromise+Retry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Retry.h"; path = "Sources/FBLPromises/include/FBLPromise+Retry.h"; sourceTree = ""; }; + 9338EA7FE417C2BDF76DEEE30198B2B8 /* FBLPromise+Catch.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Catch.m"; path = "Sources/FBLPromises/FBLPromise+Catch.m"; sourceTree = ""; }; 935ACFB77E482AAEC673103A6CA209D8 /* Ionicons.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = Ionicons.ttf; path = Fonts/Ionicons.ttf; sourceTree = ""; }; - 9360604531512771A9FD089A9837C676 /* quant_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quant_dec.c; path = src/dec/quant_dec.c; sourceTree = ""; }; - 9397687440D5BA05368492717B39B5C6 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; - 939A7FD22EFE867355B9D8C52DC10ACF /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; + 93606334B2DB3E80CC396AEDC2F909F5 /* quant_levels_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = quant_levels_utils.h; path = src/utils/quant_levels_utils.h; sourceTree = ""; }; 939E2C82CEA840EDD9BE0C5D1182FADC /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 93A0D6200CDFA3971E6F29B76348B333 /* react-native-cameraroll-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-cameraroll-dummy.m"; sourceTree = ""; }; + 93B11D5857328B9B8C43CEFE929288EC /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; + 93B448CC3FB8A5E0A529641BC3F578C2 /* GDTCORDataFuture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORDataFuture.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORDataFuture.m; sourceTree = ""; }; 93C3F265E963792B616A869437DF3D6F /* RCTDatePicker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDatePicker.h; sourceTree = ""; }; + 93C7F9D33807C629347B5CC327303501 /* GULNSData+zlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GULNSData+zlib.h"; path = "GoogleUtilities/NSData+zlib/GULNSData+zlib.h"; sourceTree = ""; }; 93F2C3F2346A8BEA7226DFFDF8F4D52E /* FBReactNativeSpec-generated.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = "FBReactNativeSpec-generated.mm"; path = "FBReactNativeSpec/FBReactNativeSpec-generated.mm"; sourceTree = ""; }; 93F2C682FA6F99D67928F8667235A3CF /* UMAppLifecycleService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMAppLifecycleService.h; sourceTree = ""; }; + 93F8311DDBE0DBF0536063DB1283834E /* FBLPromise+Any.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Any.h"; path = "Sources/FBLPromises/include/FBLPromise+Any.h"; sourceTree = ""; }; + 93FD2FCA283A90F02414FA05025F9086 /* UIColor+HexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+HexString.h"; path = "SDWebImage/Private/UIColor+HexString.h"; sourceTree = ""; }; 94074BB665964C130EF3AEAD5903C1F7 /* EXReactNativeUserNotificationCenterProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXReactNativeUserNotificationCenterProxy.h; path = EXPermissions/EXReactNativeUserNotificationCenterProxy.h; sourceTree = ""; }; - 941713D7F2ED661F6F62848161C4ACCD /* bit_writer_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bit_writer_utils.h; path = src/utils/bit_writer_utils.h; sourceTree = ""; }; - 9423585289F0FEE1EDBF88CC077C5BA9 /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; 94249BEAC1A4D633C6807346A8070F3D /* QBSlomoIconView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBSlomoIconView.m; path = ios/QBImagePicker/QBImagePicker/QBSlomoIconView.m; sourceTree = ""; }; 9453942985118F6CE8C03D72FFCAC48D /* RNUserDefaults-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNUserDefaults-prefix.pch"; sourceTree = ""; }; 945812BAFCFBCA799CDA6828A3F43720 /* QBAssetCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QBAssetCell.h; path = ios/QBImagePicker/QBImagePicker/QBAssetCell.h; sourceTree = ""; }; @@ -5482,9 +5760,10 @@ 94C769C557F9E669D09A2A498F897C8C /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 94CDC22B49EC8B76E4EE023F1313845C /* JSExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSExecutor.h; sourceTree = ""; }; 94DA588A88B35CE185D80006E62DBC42 /* RNTapHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNTapHandler.m; sourceTree = ""; }; - 950A1A041BCF19C89D591AA28F944791 /* GDTTransport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTTransport.h; path = GoogleDataTransport/GDTLibrary/Public/GDTTransport.h; sourceTree = ""; }; + 951060CAC29689856FF5CE28D672D5F9 /* glog-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "glog-prefix.pch"; sourceTree = ""; }; 9513FFCA869AD68880C9933062162BE7 /* instrumentation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = instrumentation.h; sourceTree = ""; }; 951C3D1141215236BF3E717E98972F20 /* JSExecutor.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = JSExecutor.cpp; sourceTree = ""; }; + 951EA411C3609031BB767BB3EC28580E /* json.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = json.cpp; path = folly/json.cpp; sourceTree = ""; }; 9526FDA913FFC16A392832E1C4AA3D79 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; 9554C2907C9D9E8F76D8D70EA7EE6249 /* LNAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = LNAnimator.h; sourceTree = ""; }; 955B123361B23939A58B414DFA70271D /* RNDeviceInfo-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNDeviceInfo-prefix.pch"; sourceTree = ""; }; @@ -5492,63 +5771,67 @@ 958A538964B046F5FC63A884FA9D441F /* RNBackgroundTimer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNBackgroundTimer.m; path = ios/RNBackgroundTimer.m; sourceTree = ""; }; 958D8A765B851C50B6E7E672C1326062 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 959628BA0DDBCCD75C7AC43F9F4BEF8C /* RCTMultilineTextInputView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMultilineTextInputView.h; sourceTree = ""; }; - 9598C47569571A616A8E6DDD9E675729 /* FIRInstanceIDCheckinStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinStore.h; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.h; sourceTree = ""; }; 9599ABDDBC657553636D3A5F8EAAEA92 /* ImageCropPicker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageCropPicker.h; path = ios/src/ImageCropPicker.h; sourceTree = ""; }; 95BBFAB8C771DD0FF985331B81372155 /* RNPanHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNPanHandler.h; sourceTree = ""; }; - 95D858BFDF2F99A6F3D810DEAD6A9300 /* Firebase.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Firebase.xcconfig; sourceTree = ""; }; 95DC10A30ABC3BE3446C6B462168101A /* RNSScreen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNSScreen.h; path = ios/RNSScreen.h; sourceTree = ""; }; + 95F672D173395EBA22AF0884C6C8915F /* FIRInstanceIDTokenOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenOperation.h; sourceTree = ""; }; + 9602665ED7A4FCF32AFDE7F8439C8C55 /* msa_macro.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = msa_macro.h; path = src/dsp/msa_macro.h; sourceTree = ""; }; 9603D56149DCC0F2A9E3930B1929F72A /* RNFirebaseCrashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseCrashlytics.h; sourceTree = ""; }; - 960C7132FDACCCBC602818FF9F87C10A /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; 961650D89213F585C40D63EF23FC4767 /* JsArgumentHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JsArgumentHelpers.h; sourceTree = ""; }; 9622F1F5AFBF1DC9D2609B287A97CC29 /* RCTProfileTrampoline-x86_64.S */ = {isa = PBXFileReference; includeInIndex = 1; path = "RCTProfileTrampoline-x86_64.S"; sourceTree = ""; }; 965C8488F60641681C8FF2D2BBD2B298 /* BannerComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BannerComponent.h; sourceTree = ""; }; + 965EC53F67148F2FB7C1C52C636A654B /* Format.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Format.cpp; path = folly/Format.cpp; sourceTree = ""; }; 966AF84F0F33FEE812FBB4E268EAF1E9 /* ARTRenderableManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ARTRenderableManager.m; sourceTree = ""; }; - 9697CB449E3F9E17D2460CE1D27DDBEC /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; + 96BA55D82ECFF1108092369C40805752 /* anim_encode.c */ = {isa = PBXFileReference; includeInIndex = 1; name = anim_encode.c; path = src/mux/anim_encode.c; sourceTree = ""; }; 96EAB41B780D55D6439A222820C17B09 /* RCTImageViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageViewManager.h; path = Libraries/Image/RCTImageViewManager.h; sourceTree = ""; }; - 971B256811855BF0D6867E3A723FA37E /* signalhandler.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = signalhandler.cc; path = src/signalhandler.cc; sourceTree = ""; }; 9754CCB1B41C75728B6A02F4FFF969B1 /* RCTSpringAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSpringAnimation.m; sourceTree = ""; }; + 975D51C22494655692ADF60A40FC9F94 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; 978DACD044797636B6F45E9EE5148512 /* RNFirebaseNotifications.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseNotifications.h; sourceTree = ""; }; 97972524746DA8617FCA6204735F0A0A /* RNCAssetsLibraryRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCAssetsLibraryRequestHandler.m; path = ios/RNCAssetsLibraryRequestHandler.m; sourceTree = ""; }; 9798729FBA61A01FA4BAF2C5935013DF /* EXHaptics.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = EXHaptics.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 979A76AD19363B9D26207764CC5EE2C2 /* FirebaseCoreDiagnosticsInterop.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCoreDiagnosticsInterop.xcconfig; sourceTree = ""; }; 97AF343E5B1DAB57EEDD4B05DC498A51 /* React-RCTNetwork-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTNetwork-prefix.pch"; sourceTree = ""; }; 97B0C12188F70CE990D5D85626F3C361 /* BugsnagSessionTrackingPayload.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagSessionTrackingPayload.m; sourceTree = ""; }; 97BC1C8A76869E6D037D92F566BDDC8D /* RCTConvert+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTConvert+Transform.m"; sourceTree = ""; }; - 9837BE777B812E8919321296E0674F0C /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; - 983D468F8C9A0B2C350475DFE638F4C6 /* ScopeGuard.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = ScopeGuard.cpp; path = folly/ScopeGuard.cpp; sourceTree = ""; }; - 98517DAD4810F45ED8FA59BC3F947354 /* dynamic.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = dynamic.cpp; path = folly/dynamic.cpp; sourceTree = ""; }; + 9823CB2C7479BFFC9C9AA170BD0CBB10 /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; 985950B5EA8B80D858D6759A4C297DAF /* RCTComponentEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTComponentEvent.m; sourceTree = ""; }; 987821AFFECE76690D223636B519ADE3 /* experiments.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = experiments.cpp; sourceTree = ""; }; - 988633FF40146D245E34784171890089 /* CLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSReport.h; path = iOS/Crashlytics.framework/Headers/CLSReport.h; sourceTree = ""; }; 98A80535764F86459CEDD667CCB4F197 /* EXAudioRecordingPermissionRequester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXAudioRecordingPermissionRequester.h; path = EXPermissions/EXAudioRecordingPermissionRequester.h; sourceTree = ""; }; 98EAAA5831E0ADD5E9E3BF6BD82CACBF /* Compression.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Compression.h; path = ios/src/Compression.h; sourceTree = ""; }; 991F63888F0DADE5B74E325A8A6BCCE8 /* RCTMultilineTextInputViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMultilineTextInputViewManager.h; sourceTree = ""; }; - 9951AFB14B84D5988BFB7DC34F63160E /* common_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common_dec.h; path = src/dec/common_dec.h; sourceTree = ""; }; + 993AC02EC1C111E4334D17D3E0BBE05E /* signalhandler.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = signalhandler.cc; path = src/signalhandler.cc; sourceTree = ""; }; 9982F863CF3571B41EC3DB02755C53D4 /* EXAudioRecordingPermissionRequester.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXAudioRecordingPermissionRequester.m; path = EXPermissions/EXAudioRecordingPermissionRequester.m; sourceTree = ""; }; 9983282CE3F72F1D2F8E5E39DD900556 /* RCTImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageView.h; path = Libraries/Image/RCTImageView.h; sourceTree = ""; }; + 999C11E9F0B6529BC62034D8CCC9BC0B /* FIRInstallationsLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsLogger.m; path = FirebaseInstallations/Source/Library/FIRInstallationsLogger.m; sourceTree = ""; }; 99D8040F6EAEAB257B9664B10F8BFEDA /* RCTImageStoreManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTImageStoreManager.m; sourceTree = ""; }; 9A03EB9B87FF49512AC6907C1B9AA221 /* Pods-RocketChatRN-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketChatRN-dummy.m"; sourceTree = ""; }; - 9A09930B6AF4D29B74B05A4AA77C3AAE /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; 9A37385936A3AF6975BE19B5E37A6A63 /* UMInternalModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMInternalModule.h; sourceTree = ""; }; + 9A4D3B3B310D9827F2482B1F3DE8CC69 /* bignum-dtoa.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "bignum-dtoa.cc"; path = "double-conversion/bignum-dtoa.cc"; sourceTree = ""; }; + 9A5D533C41D3DCA0AE4501ABA408A5EF /* muxinternal.c */ = {isa = PBXFileReference; includeInIndex = 1; name = muxinternal.c; path = src/mux/muxinternal.c; sourceTree = ""; }; + 9A65228A597C9CDF1630D3E33E79C2E7 /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; 9A6DF1FEA62063EE8DE21E0184A2F1A1 /* RCTStyleAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTStyleAnimatedNode.h; sourceTree = ""; }; 9A829F245C0CD19CEE3F9EE11E899740 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 9AB0FF969520EECB0B36AF7E6D88CD2D /* GULNetworkConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkConstants.h; path = GoogleUtilities/Network/Private/GULNetworkConstants.h; sourceTree = ""; }; 9AB2412ABEA933CB03EE535D48BD197E /* notificationsEvents.md */ = {isa = PBXFileReference; includeInIndex = 1; name = notificationsEvents.md; path = docs/notificationsEvents.md; sourceTree = ""; }; 9AD1E67D6C1F41C818BB20DE61AAF67E /* RNCAppearanceProviderManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCAppearanceProviderManager.h; path = ios/Appearance/RNCAppearanceProviderManager.h; sourceTree = ""; }; 9AD4CB6111497F53E4A5BB288BFD3461 /* ARTLinearGradient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARTLinearGradient.h; sourceTree = ""; }; - 9ADAC6CD45640D9EABC1DB283FA2B30F /* JitsiMeet.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JitsiMeet.framework; path = Frameworks/JitsiMeet.framework; sourceTree = ""; }; + 9AE4C4F557F4921C9D27A6E75DDB9A1A /* ScopeGuard.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = ScopeGuard.cpp; path = folly/ScopeGuard.cpp; sourceTree = ""; }; 9AEA1F7442A8A10E9F7719D981A6B89F /* RCTTextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextView.h; sourceTree = ""; }; 9B1701CE791ABE0B135B42558643BA83 /* RCTModuleData.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTModuleData.mm; sourceTree = ""; }; - 9B1DED816870AF0C0B03329B34DC15BD /* near_lossless_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = near_lossless_enc.c; path = src/enc/near_lossless_enc.c; sourceTree = ""; }; 9B2FF77B343827C35C7332825DF9A585 /* RCTNetworking.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTNetworking.mm; sourceTree = ""; }; 9B3370FC1317B276B98782F87182B739 /* BSG_KSCrashReportStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashReportStore.h; sourceTree = ""; }; - 9B4880B22F4A12C9C9791F4B32571F9C /* enc_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_sse2.c; path = src/dsp/enc_sse2.c; sourceTree = ""; }; + 9B6AE09786B2423B11C27D00079FCE17 /* GDTCORUploadPackage_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORUploadPackage_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadPackage_Private.h; sourceTree = ""; }; 9B9F452F697190C881B95C6137E24274 /* BSG_KSCrashType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashType.h; sourceTree = ""; }; 9BA20ECA608A4F959F161F6314C07143 /* RCTPlatform.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTPlatform.mm; sourceTree = ""; }; 9BC71A5918A997F15CAC9126B3C68E59 /* TurboModule.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = TurboModule.cpp; path = turbomodule/core/TurboModule.cpp; sourceTree = ""; }; 9BCDDAA6FF316744312D6F154DC717D3 /* react-native-video-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-video-prefix.pch"; sourceTree = ""; }; - 9BF61CFC891BBB889FA4A1BD2CA3E955 /* SDWebImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.xcconfig; sourceTree = ""; }; - 9C0AE2466BA4C974BC84C214B080C357 /* GoogleUtilities.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleUtilities.xcconfig; sourceTree = ""; }; + 9BE700AB1A857567583B903EB1F58B73 /* FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID.h; path = Firebase/InstanceID/Public/FIRInstanceID.h; sourceTree = ""; }; 9C5830D6BB7673585595AB8BA414214F /* RCTBaseTextViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBaseTextViewManager.m; sourceTree = ""; }; + 9C6750D1449BBDDD153063D5BC8E25D0 /* FIRCoreDiagnosticsData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsData.h; path = Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsData.h; sourceTree = ""; }; 9C7E01E3156F2137645C0D6C51F90EB6 /* RCTAppState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTAppState.m; sourceTree = ""; }; + 9CB6851B50895A42D3F7C877300D7C7A /* FIRInstanceIDTokenDeleteOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenDeleteOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m; sourceTree = ""; }; + 9CC2E2273ED5FE89DBB756223A07E524 /* double-conversion.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "double-conversion.cc"; path = "double-conversion/double-conversion.cc"; sourceTree = ""; }; + 9CE153AFAE2F96D0F934D1BAF6939CCD /* GULSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULSwizzler.h; path = GoogleUtilities/MethodSwizzler/Private/GULSwizzler.h; sourceTree = ""; }; 9CEEB6FAF21D0BA92AC0A04AE4DDD428 /* RCTInputAccessoryViewContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInputAccessoryViewContent.h; sourceTree = ""; }; 9D2AE3583762C93008AC2DBF600FA03A /* event.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = event.h; sourceTree = ""; }; 9D673843F637BD65A1677DB94EFD1975 /* BSG_KSCrashSentry_NSException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashSentry_NSException.h; sourceTree = ""; }; @@ -5557,378 +5840,394 @@ 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9D96339CB00FBFB4B25ED781F333A880 /* QBImagePicker.storyboard */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.storyboard; name = QBImagePicker.storyboard; path = ios/QBImagePicker/QBImagePicker/QBImagePicker.storyboard; sourceTree = ""; }; 9DB546F80EA4C8F664F7D34B6D539816 /* RCTVideo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTVideo.m; path = ios/Video/RCTVideo.m; sourceTree = ""; }; + 9DC3538131FBA43CF7F442029413C750 /* FBLPromise+Recover.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Recover.m"; path = "Sources/FBLPromises/FBLPromise+Recover.m"; sourceTree = ""; }; + 9DC55014AFA153FD4E3CBC4A4A6CEF69 /* FIRInstanceIDTokenInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenInfo.h; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.h; sourceTree = ""; }; 9E0EF2876C0D0B30FDA47BC4AFC00084 /* React.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = React.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9E1B1BD66B0C2226846A72A0C6640DC2 /* react-native-keyboard-tracking-view.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-keyboard-tracking-view.xcconfig"; sourceTree = ""; }; 9E662EF8BD891FF57BD8D395276CB1C6 /* RNBootSplash-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNBootSplash-dummy.m"; sourceTree = ""; }; 9E7073A9FAFCF672D8D03A15D3BB32D2 /* RCTTextViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTextViewManager.m; sourceTree = ""; }; + 9E799F0463BF1E9CB29AB2DD41EB7846 /* FIRAnalyticsConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAnalyticsConfiguration.h; path = FirebaseCore/Sources/Private/FIRAnalyticsConfiguration.h; sourceTree = ""; }; 9E90C52FDDD70CBAC0C2A6596C9C1FE6 /* RNDateTimePicker-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNDateTimePicker-dummy.m"; sourceTree = ""; }; + 9E97258EDDE1B0FF09F0FC66346AD27A /* lossless_enc_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_msa.c; path = src/dsp/lossless_enc_msa.c; sourceTree = ""; }; 9ED0B61A0303FB3177736862FD78448E /* BugsnagFileStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagFileStore.h; sourceTree = ""; }; 9F0D8879AFA115E5356585B2F6DF2CE2 /* react-native-jitsi-meet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-jitsi-meet-prefix.pch"; sourceTree = ""; }; 9F2C6B4E466B4DA131D5D01DABB9804E /* RCTTextSelection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextSelection.h; sourceTree = ""; }; 9F30FEDE839FB7BCCC1244D32E272745 /* InspectorInterfaces.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = InspectorInterfaces.h; sourceTree = ""; }; 9FA59FAD1B783B1C460FCB7A1D4C9E6F /* EXConstants.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = EXConstants.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9FDAB07C74E234EDFEA1553BDC5637B9 /* BSG_KSJSONCodecObjC.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSJSONCodecObjC.h; sourceTree = ""; }; + 9FE7CAD15D46DC8EB22E034ACFB28888 /* FIRInstallationsStoredAuthToken.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsStoredAuthToken.m; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.m; sourceTree = ""; }; 9FFBBF90E279EBAC6C6E5B68B7943051 /* RCTProgressViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTProgressViewManager.h; sourceTree = ""; }; - A00FA0A24655CB8F5AB8B70AE509BB18 /* RSKImageCropper-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RSKImageCropper-prefix.pch"; sourceTree = ""; }; A010E6033FF9CA9113F7E3A876AC660F /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; A02C799EB03CF97350DD5854B811C0C0 /* RCTNativeAnimatedNodesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTNativeAnimatedNodesManager.h; path = Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h; sourceTree = ""; }; A049DCD752ED73A3C3142911E583CC30 /* EXFileSystem-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EXFileSystem-prefix.pch"; sourceTree = ""; }; + A05BCBED3EF0DF896274C0F7F49E194B /* FBLPromise+Do.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Do.h"; path = "Sources/FBLPromises/include/FBLPromise+Do.h"; sourceTree = ""; }; A06C9573800BE82290BC622570CD2D16 /* EXSystemBrightnessRequester.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXSystemBrightnessRequester.m; path = EXPermissions/EXSystemBrightnessRequester.m; sourceTree = ""; }; - A08F869266F38519AEA0AAE93ECAD2A7 /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; A0C71A8BF755B047A6CF93AE27D962DF /* BSG_KSLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSG_KSLogger.m; sourceTree = ""; }; - A1392FB10E0827593617B7AA05394353 /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; - A180D1561EE0153CEAE325FB966800B0 /* FIRInstanceIDLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDLogger.m; path = Firebase/InstanceID/FIRInstanceIDLogger.m; sourceTree = ""; }; + A0DE2AA756FD1093A58487EEF833F499 /* FIRInstanceIDStringEncoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDStringEncoding.h; path = Firebase/InstanceID/FIRInstanceIDStringEncoding.h; sourceTree = ""; }; + A0EA3217B857F6515E5C3725E793D70A /* FIRInstallationsAPIService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsAPIService.h; path = FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsAPIService.h; sourceTree = ""; }; + A15D9453B10C17715504A05E32605847 /* firebasecore.nanopb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = firebasecore.nanopb.h; path = Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h; sourceTree = ""; }; A1B2AD66D7A9765C434B365FDEAF4022 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; A1B3EE1E4659F5906B7939DB8EB030CB /* RCTUIImageViewAnimated.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUIImageViewAnimated.m; sourceTree = ""; }; A1B82C747E2EFEE16D2A007D5E678461 /* RCTURLRequestDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTURLRequestDelegate.h; sourceTree = ""; }; + A1C0F847D5B6DD6759E31413551F6F58 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; A1D0CBD754DC34F014D38B05008B8745 /* BugsnagSessionTracker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagSessionTracker.m; sourceTree = ""; }; - A1D610CA53E44198C6CF77461DF107ED /* GDTClock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTClock.m; path = GoogleDataTransport/GDTLibrary/GDTClock.m; sourceTree = ""; }; - A211DE5FFA61917BE4C69FFF1971DEE6 /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; + A1EC5104042BAFCD052B353B775968D7 /* CGGeometry+RSKImageCropper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CGGeometry+RSKImageCropper.m"; path = "RSKImageCropper/CGGeometry+RSKImageCropper.m"; sourceTree = ""; }; + A1F0899513A15CABEC77801711DA43EC /* lossless_enc_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_mips32.c; path = src/dsp/lossless_enc_mips32.c; sourceTree = ""; }; A2128DAA3DAC64937C1E6568A67A7439 /* RCTJSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTJSStackFrame.h; sourceTree = ""; }; - A21747766DD83B697F1247CD235A13CD /* GULReachabilityChecker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULReachabilityChecker.h; path = GoogleUtilities/Reachability/Private/GULReachabilityChecker.h; sourceTree = ""; }; A225ED83E33DC48D25B9FF35BA50CCD0 /* libEXAppLoaderProvider.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libEXAppLoaderProvider.a; path = libEXAppLoaderProvider.a; sourceTree = BUILT_PRODUCTS_DIR; }; - A2309B02D4CBE5D68836BD94999C64E2 /* pb_encode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_encode.h; sourceTree = ""; }; A23231E02523DBE1CEFD142A4EF57119 /* YGValue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = YGValue.cpp; path = yoga/YGValue.cpp; sourceTree = ""; }; A2551752B23876F7D9DC4F441A5A45F9 /* Compression.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Compression.m; path = ios/src/Compression.m; sourceTree = ""; }; + A2894FAA81841C7DE26398644B1F3ACD /* GULReachabilityChecker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULReachabilityChecker.m; path = GoogleUtilities/Reachability/GULReachabilityChecker.m; sourceTree = ""; }; A2B979B49F7F0FD5CF0AFDC0EE85677D /* RNGestureHandlerManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNGestureHandlerManager.m; path = ios/RNGestureHandlerManager.m; sourceTree = ""; }; + A2CB7B6EE46AF3166A4B3053A322A61C /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; A2E8B0D809212EB4C96F0CCA0F7F3D37 /* RCTSafeAreaViewLocalData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaViewLocalData.h; sourceTree = ""; }; - A35FD940F25DDA9B77B7AFCE50EF51FB /* GDTAssert.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTAssert.m; path = GoogleDataTransport/GDTLibrary/GDTAssert.m; sourceTree = ""; }; + A2F98D797C5A100E3115EA3505C1DA82 /* GoogleUtilities.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleUtilities.xcconfig; sourceTree = ""; }; + A31F188D4B66F6B22F8E86B908FDCAFE /* RSKTouchView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSKTouchView.h; path = RSKImageCropper/RSKTouchView.h; sourceTree = ""; }; A389A9A7F2B314A8E20CB931728247C5 /* RNScreens-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNScreens-dummy.m"; sourceTree = ""; }; + A38CE196FAF4456B06F77B5B9E0CFDBE /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; + A38D33F827E62F685D432C9A01C918E6 /* FIRLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRLogger.m; path = FirebaseCore/Sources/FIRLogger.m; sourceTree = ""; }; A3909AF4DCC56DEC8BD614F01AECA9B0 /* EXAppLoaderProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXAppLoaderProvider.h; path = EXAppLoaderProvider/EXAppLoaderProvider.h; sourceTree = ""; }; A397C6432EF2937F4CA14D523E05B8FE /* UMReactNativeAdapter.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = UMReactNativeAdapter.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; A3CF70A53EF1E392D30C064F7E3F82BA /* EXUserNotificationRequester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXUserNotificationRequester.h; path = EXPermissions/EXUserNotificationRequester.h; sourceTree = ""; }; - A3E63A13602882E51CE5359C7B370400 /* Format.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Format.cpp; path = folly/Format.cpp; sourceTree = ""; }; + A3EF6DDC9ECF54BEBC12FEF5478C225C /* FIRInstanceIDCheckinStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinStore.m; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.m; sourceTree = ""; }; A4061ACF38DF7CD0EBA4002BB78F6207 /* RCTTurboModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTurboModule.h; sourceTree = ""; }; A40D49376282675A8A1608198C4819B7 /* react-native-orientation-locker-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-orientation-locker-dummy.m"; sourceTree = ""; }; A46CEB0D88622A4206E1436F9F31EB39 /* QBVideoIconView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBVideoIconView.m; path = ios/QBImagePicker/QBImagePicker/QBVideoIconView.m; sourceTree = ""; }; A472BB9384B83E73AFAE0B367EE088AD /* RCTSRWebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTSRWebSocket.h; path = Libraries/WebSocket/RCTSRWebSocket.h; sourceTree = ""; }; - A47B0FD5533369CBB8D4F5907D6C95B0 /* FIRVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRVersion.h; path = Firebase/Core/Private/FIRVersion.h; sourceTree = ""; }; A47C0CBE5FA1A3C612E50398D72E3288 /* jsi.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = jsi.cpp; sourceTree = ""; }; A4A7320CAB16DBE6090FF9162811B32F /* RNDocumentPicker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNDocumentPicker.h; path = ios/RNDocumentPicker/RNDocumentPicker.h; sourceTree = ""; }; + A4B5638048C9BE689A53D2981A56EE93 /* FIRInstanceIDAuthService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAuthService.m; path = Firebase/InstanceID/FIRInstanceIDAuthService.m; sourceTree = ""; }; A4B5D99728B4D33D9FCDDC665DB25379 /* jsi-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "jsi-inl.h"; sourceTree = ""; }; A4C3171701218F19BA57771E76E4453E /* RCTSafeAreaViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaViewManager.h; sourceTree = ""; }; + A4CCD66701BA3DC52D7F6038E6A0FE21 /* SDWebImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.xcconfig; sourceTree = ""; }; A4F923DC4CEBD2EB6AAEA9D65B8BE85B /* RCTInputAccessoryView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInputAccessoryView.h; sourceTree = ""; }; + A5018CAA450033C9F40CBBDC23FA4A74 /* Crashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Crashlytics.h; path = iOS/Crashlytics.framework/Headers/Crashlytics.h; sourceTree = ""; }; + A504DDAED24ACC8CF4D4D4E69E078BAA /* nanopb.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = nanopb.xcconfig; sourceTree = ""; }; + A54A0AB081F02B68C732C27229CC546A /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; A55F4A869D8A3E299746A434C181C2C9 /* RCTCustomKeyboardViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTCustomKeyboardViewController.m; sourceTree = ""; }; A598C0208EF4B24378EBB0A461F36DF0 /* BSG_KSCrashSentry_CPPException.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSCrashSentry_CPPException.mm; sourceTree = ""; }; A5C0A3B289A8E8C397553F8B5795D657 /* BSG_KSBacktrace_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSBacktrace_Private.h; sourceTree = ""; }; A5CAFA657156AFE1D21437C7A8D7F6D5 /* RCTBaseTextInputShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBaseTextInputShadowView.h; sourceTree = ""; }; A5CD301CBCF12623517092F643A8D4A0 /* EXHapticsModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXHapticsModule.m; path = EXHaptics/EXHapticsModule.m; sourceTree = ""; }; A61A2F8B6DF63BCB408BA44CF8062CE2 /* RCTRedBox.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRedBox.m; sourceTree = ""; }; + A6279E1E2E3335F1103BFA5A97B32CAA /* cached-powers.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "cached-powers.cc"; path = "double-conversion/cached-powers.cc"; sourceTree = ""; }; A65519711D7E6514127CE6BBFACA6EE4 /* RCTMaskedViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMaskedViewManager.h; sourceTree = ""; }; - A6554CAC66AB58DD6D06EC2E8F89E196 /* FIRConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRConfiguration.h; path = Firebase/Core/Public/FIRConfiguration.h; sourceTree = ""; }; A6843A5A11A1F90BF27E91E750F962B7 /* RCTMultilineTextInputViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTMultilineTextInputViewManager.m; sourceTree = ""; }; A68E5A9B69A3BA0FD52CAF7A354EC93B /* libReact-RCTNetwork.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-RCTNetwork.a"; path = "libReact-RCTNetwork.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - A6E0D58232EF1BE4057DF65FDD108841 /* CGGeometry+RSKImageCropper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CGGeometry+RSKImageCropper.m"; path = "RSKImageCropper/CGGeometry+RSKImageCropper.m"; sourceTree = ""; }; + A6C7344EA1DD6836B5D82E682D0A59D7 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; A6E5449429D43C155281806D933D684C /* UMImageLoaderInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMImageLoaderInterface.h; path = UMImageLoaderInterface/UMImageLoaderInterface.h; sourceTree = ""; }; - A72FB0A1AC1D24670509A274650EA2F3 /* firebasecore.nanopb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = firebasecore.nanopb.h; path = Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.h; sourceTree = ""; }; A798D3BC0A968E1D468B9F1BE57782DE /* RCTEventEmitter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTEventEmitter.m; sourceTree = ""; }; - A7A9619333FE09CF2DFA4A5A7A719200 /* GULSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULSwizzler.h; path = GoogleUtilities/MethodSwizzler/Private/GULSwizzler.h; sourceTree = ""; }; - A7B1B6D5299F4C34E1103231A3B70571 /* vp8i_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8i_dec.h; path = src/dec/vp8i_dec.h; sourceTree = ""; }; - A7F28B7C648243F665EB4806AE5569F6 /* fixed-dtoa.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "fixed-dtoa.cc"; path = "double-conversion/fixed-dtoa.cc"; sourceTree = ""; }; A819EBFAB8718BC7B0C8F260D76861B5 /* ReactMarker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ReactMarker.h; sourceTree = ""; }; A82C63712B42E185D5C270BBDB629E32 /* react-native-notifications-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-notifications-dummy.m"; sourceTree = ""; }; + A85363A0C59C12E9ABF0D991127F666D /* FIRConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRConfiguration.m; path = FirebaseCore/Sources/FIRConfiguration.m; sourceTree = ""; }; + A88DF20441288B71F15D147211C1C64B /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; A891980393FA249092FE7CE1595D6700 /* FBLazyVector.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLazyVector.h; path = FBLazyVector/FBLazyVector.h; sourceTree = ""; }; A8B4D61D8288CE098D82D4273358B6FA /* react-native-orientation-locker.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "react-native-orientation-locker.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - A8D66EB87FF1052564109710F3EC6D0F /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; + A8C2E718EEB7FC61E0AF4FF7745365F7 /* FIRInstallationsAuthTokenResultInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsAuthTokenResultInternal.h; path = FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResultInternal.h; sourceTree = ""; }; A8E7C9A1C152FB2C9A1CBC1BE0C1D48F /* RCTTypedModuleConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTypedModuleConstants.h; sourceTree = ""; }; A906C31F1EA0FD26B065B92996BCCFB1 /* react-native-webview-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-webview-prefix.pch"; sourceTree = ""; }; - A90EEA3E24B6338A093526F3631E6B57 /* GULNetworkURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkURLSession.h; path = GoogleUtilities/Network/Private/GULNetworkURLSession.h; sourceTree = ""; }; A9202207E58FD7F8B110D0C87D3BEF34 /* React-CoreModules-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-CoreModules-prefix.pch"; sourceTree = ""; }; A9229A056CB0E4E9B46213B6DF6DAF7B /* RCTInputAccessoryViewContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTInputAccessoryViewContent.m; sourceTree = ""; }; A9231F578E26A211DE0002B5BDFDA0EF /* UMPermissionsInterface.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = UMPermissionsInterface.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - A942963ED07E6DEB650FA128366D8156 /* common_sse2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common_sse2.h; path = src/dsp/common_sse2.h; sourceTree = ""; }; A96ADDFAE20DF4F9B514874EEA3709EB /* RNNotificationCenter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNNotificationCenter.h; path = RNNotifications/RNNotificationCenter.h; sourceTree = ""; }; - A984D3FECA3FC20063DBB2260C3340F6 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; A9916A69A97251C8AA9535F6F70AE9DB /* Pods-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketChatRN.release.xcconfig"; sourceTree = ""; }; + A99DA828BE8FDFE29CCA18FF1A666E27 /* token_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = token_enc.c; path = src/enc/token_enc.c; sourceTree = ""; }; A9A87A0830B20D2F1D739F76A9890AE3 /* RNSScreenStackHeaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNSScreenStackHeaderConfig.m; path = ios/RNSScreenStackHeaderConfig.m; sourceTree = ""; }; AA0B72A9927C8B436461731558241482 /* REATransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REATransition.m; sourceTree = ""; }; - AA16F20ABE77B8DD649F24D5CD6DDC3F /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; - AA736E438B04D91D11B081155E2CF4E0 /* filters_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_neon.c; path = src/dsp/filters_neon.c; sourceTree = ""; }; + AA42C4E98C13EF33E441FE62148783CB /* GDTCORTransformer_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORTransformer_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORTransformer_Private.h; sourceTree = ""; }; + AA4F5619775B05EAF3BD82EDACD91B98 /* FIRInstallationsIDController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsIDController.m; path = FirebaseInstallations/Source/Library/InstallationsIDController/FIRInstallationsIDController.m; sourceTree = ""; }; AA86777BCF757519048D2B2F0BB57062 /* RNFirebaseUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNFirebaseUtil.m; path = RNFirebase/RNFirebaseUtil.m; sourceTree = ""; }; AA9F3BA91EFD2DFD1E498DEC5DA20721 /* EXRemoteNotificationRequester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXRemoteNotificationRequester.h; path = EXPermissions/EXRemoteNotificationRequester.h; sourceTree = ""; }; - AAFF9C0E0B5630B174793EC35C4C38D0 /* vp8li_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8li_dec.h; path = src/dec/vp8li_dec.h; sourceTree = ""; }; + AAB27BBE32494400507F8652BE36111F /* filters_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_mips_dsp_r2.c; path = src/dsp/filters_mips_dsp_r2.c; sourceTree = ""; }; + AAC30C36CEF4ACB54CE1E6E49DCF3E31 /* GULNetwork.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetwork.m; path = GoogleUtilities/Network/GULNetwork.m; sourceTree = ""; }; AB152A216EE0183A2D0E61D446A9F071 /* UMLogHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMLogHandler.h; sourceTree = ""; }; AB4EC7BD8F12B5BFCA132B5F5897107F /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - AB59CAFB02638F9819664583A263EEC6 /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; + AB686584E542E1751A41715CD307E524 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; AB872D6F4881170DA344D4B5D2B8950C /* UMAppDelegateWrapper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = UMAppDelegateWrapper.m; path = UMCore/UMAppDelegateWrapper.m; sourceTree = ""; }; AB963DC761596175FF14D24B9E1FF84D /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - ABB5C981E713091255D71AAE8FE466A0 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; + AB976C1FBBC26BF65B263E79ED2A0E2D /* idec_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = idec_dec.c; path = src/dec/idec_dec.c; sourceTree = ""; }; + ABB34BE98015F83F80BC4216458D9FE9 /* FIRInstanceIDTokenManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenManager.h; path = Firebase/InstanceID/FIRInstanceIDTokenManager.h; sourceTree = ""; }; + ABBAB6A3B14167BE15806D2D4C391430 /* FIRComponentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainer.h; path = FirebaseCore/Sources/Private/FIRComponentContainer.h; sourceTree = ""; }; ABBF666395B823EE55B5DA692E6E3421 /* RNScreens.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNScreens.xcconfig; sourceTree = ""; }; ABCA9F4CD6EE0D4686EBA505F526A436 /* libPods-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-ShareRocketChatRN.a"; path = "libPods-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; ABDF8913C48CDFD3513678263BD2FD3A /* EXAVPlayerData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXAVPlayerData.h; path = EXAV/EXAVPlayerData.h; sourceTree = ""; }; + ABFB99715FD05FB4DB35E948155D825C /* FirebaseCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseCore-dummy.m"; sourceTree = ""; }; + ABFDDF7E2B4A60522C6DC5915D034318 /* FIRInstallationsAuthTokenResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsAuthTokenResult.m; path = FirebaseInstallations/Source/Library/FIRInstallationsAuthTokenResult.m; sourceTree = ""; }; ABFEEA82A6C346B22843FBE0B0582182 /* libFBReactNativeSpec.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFBReactNativeSpec.a; path = libFBReactNativeSpec.a; sourceTree = BUILT_PRODUCTS_DIR; }; AC251573210046CA55ECE59BC216F8F9 /* RCTImageLoader.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTImageLoader.mm; sourceTree = ""; }; + AC3787BF1E614D7EEDF5E1142F012247 /* FIRInstanceIDConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDConstants.h; path = Firebase/InstanceID/FIRInstanceIDConstants.h; sourceTree = ""; }; AC4FDBC85BDB8D7D488E2A0A3D48D552 /* RCTCxxConvert.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTCxxConvert.m; sourceTree = ""; }; - AC615868BE8E9F48A3A6A126EAA7DA56 /* bit_reader_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = bit_reader_utils.c; path = src/utils/bit_reader_utils.c; sourceTree = ""; }; + AC5BBA5FEB96505850A90FBE111B046F /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; AC65625B781057D8733A1F09D482D2DC /* RNFirebaseCrashlytics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseCrashlytics.m; sourceTree = ""; }; - AC67BC726D036DB665F8D256B87CE29D /* quant_levels_dec_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quant_levels_dec_utils.c; path = src/utils/quant_levels_dec_utils.c; sourceTree = ""; }; + AC94EA86B185F27AFFDD010481B75ED0 /* FirebaseCore.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCore.xcconfig; sourceTree = ""; }; + ACAF6F97C93480DEF850BDAA7DE9577A /* Folly.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Folly.xcconfig; sourceTree = ""; }; ACC9E5D3EB6C2A37A989CD278DFF0E54 /* React-jsiexecutor-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-jsiexecutor-prefix.pch"; sourceTree = ""; }; ACF74694A6631E1862E7387FF1FE94C9 /* JSIndexedRAMBundle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = JSIndexedRAMBundle.cpp; sourceTree = ""; }; - AD02169BFC7C99B84A56BB3FE5948E4E /* ssim_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = ssim_sse2.c; path = src/dsp/ssim_sse2.c; sourceTree = ""; }; AD04C1BFC9C5F281657981675CDCA95D /* RCTEventAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTEventAnimation.m; sourceTree = ""; }; AD40A94AE1ADFA1CDF9602BA3B04C90E /* libEXAV.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libEXAV.a; path = libEXAV.a; sourceTree = BUILT_PRODUCTS_DIR; }; - AD4C5E8F109E5073C9334BC16646134A /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; AD4EE6B665100A595F0DC9AF28ADE115 /* jsilib-posix.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = "jsilib-posix.cpp"; sourceTree = ""; }; + AD5C654D5F9C65609BC75BEDEB1C2EF1 /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; + AD6234B3E3CB445DBD2389BF9FB6E66F /* GoogleAppMeasurement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleAppMeasurement.framework; path = Frameworks/GoogleAppMeasurement.framework; sourceTree = ""; }; AD6BFF2AC7F77775631A869327EBF543 /* React-jsiexecutor-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-jsiexecutor-dummy.m"; sourceTree = ""; }; - AD6F0184C9B0D921A0733BB5A058FF11 /* FirebaseCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseCore-dummy.m"; sourceTree = ""; }; ADF6CB3A2BDCBBED3D3415EEB41FDAEE /* UMDeviceMotionInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMDeviceMotionInterface.h; path = UMSensorsInterface/UMDeviceMotionInterface.h; sourceTree = ""; }; AE049BEA86652F24D0A2D756241E35EB /* JSDeltaBundleClient.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = JSDeltaBundleClient.cpp; sourceTree = ""; }; - AE0B90E0468091ECE32ED3647927E0A0 /* Folly-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Folly-dummy.m"; sourceTree = ""; }; AE1C1F5B1636218DCEC267CBFC409026 /* RCTSegmentedControlManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSegmentedControlManager.h; sourceTree = ""; }; - AE60B3A27F287887508D97080546ADAF /* GDTLifecycle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTLifecycle.h; path = GoogleDataTransport/GDTLibrary/Public/GDTLifecycle.h; sourceTree = ""; }; + AE40F8A55B4E0868CA1A35733818234B /* FirebaseCoreDiagnostics-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseCoreDiagnostics-dummy.m"; sourceTree = ""; }; + AE42AA2FA59AF812E73CBB61E72ECEA8 /* decode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = decode.h; path = src/webp/decode.h; sourceTree = ""; }; + AE6009DB9E0286F743D5CFA5415F06EF /* F14Table.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = F14Table.cpp; path = folly/container/detail/F14Table.cpp; sourceTree = ""; }; + AE786E2067197B64CADFCEB08C452C84 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; AE8DD84B7A89FD6DF94D5FFA10AE02F7 /* RNDeviceInfo.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNDeviceInfo.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; AE9A643C6116EA81C178805A8C7A2F45 /* EvilIcons.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = EvilIcons.ttf; path = Fonts/EvilIcons.ttf; sourceTree = ""; }; - AEA0DC5B6845AB5B1AFD86B44151D246 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; - AEAFF03F736A590CC3D80A40C1C64FCF /* JitsiMeetSDK.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JitsiMeetSDK.xcconfig; sourceTree = ""; }; - AEB04230EF187F0097DCADD95323A008 /* FirebaseCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FirebaseCore.h; path = Firebase/Core/Public/FirebaseCore.h; sourceTree = ""; }; + AF0ED6FD0E89DAD5362477D5AFF91A2E /* alpha_processing_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing_neon.c; path = src/dsp/alpha_processing_neon.c; sourceTree = ""; }; AF1D3A7E4F081812185DAEB37EE6E065 /* RCTStatusBarManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTStatusBarManager.h; sourceTree = ""; }; AF2531016461C8BC32A2D395A027A648 /* BSG_KSCrashContext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashContext.h; sourceTree = ""; }; AF2A59648637F747F242FC3FCD695827 /* RNVectorIcons.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNVectorIcons.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; AF370F773F98172EBCFDD5981186996A /* EXVideoManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EXVideoManager.h; sourceTree = ""; }; AF55E15E2C3E4E070679685042CA4096 /* RNNativeViewHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNNativeViewHandler.h; sourceTree = ""; }; - AF6E7AD32B0CAFD0E83AA25B15391D05 /* huffman_encode_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = huffman_encode_utils.c; path = src/utils/huffman_encode_utils.c; sourceTree = ""; }; + AF56195464AFAF7C34D6F48C7CFF702E /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; AF72FD600DE7E2D330BA50F877993E05 /* libUMCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libUMCore.a; path = libUMCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; - AFD2AC81AC5FA51E82EFED1BA17B7573 /* GDTEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTEvent.h; path = GoogleDataTransport/GDTLibrary/Public/GDTEvent.h; sourceTree = ""; }; AFD64F773FE98BC3A3ADE46A8A9103FB /* React-RCTAnimation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTAnimation-prefix.pch"; sourceTree = ""; }; B02DD65D05D4FFEE128900D4F7D0DFBC /* RCTInputAccessoryShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTInputAccessoryShadowView.m; sourceTree = ""; }; B038F44ABE2A3C6093324D530ABFE312 /* RCTAlertManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAlertManager.h; sourceTree = ""; }; B058F035CFD84ECBF8414E4EAE5834FC /* libreact-native-video.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-video.a"; path = "libreact-native-video.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B05C43896E9F95B6A4756C24B12C8DBB /* SDWebImageWebPCoder.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImageWebPCoder.xcconfig; sourceTree = ""; }; B0A3DAD382322F1A249BFB52E044950B /* RCTNetInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTNetInfo.m; sourceTree = ""; }; B0B214D775196BA7CA8E17E53048A493 /* libSDWebImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSDWebImage.a; path = libSDWebImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B0C730BFACECB7606E3E03C1D15A4BA2 /* mips_macro.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mips_macro.h; path = src/dsp/mips_macro.h; sourceTree = ""; }; + B0D7F4389F6E6CC404907A69EE8797DE /* vp8_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8_dec.h; path = src/dec/vp8_dec.h; sourceTree = ""; }; + B101A21C2A5287012254B056CFA7D4FC /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; + B1151875A2C24A78423CC58505388627 /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; B11A55FD8328E6DD365FE8FE004FCBC7 /* BugsnagErrorReportApiClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagErrorReportApiClient.m; sourceTree = ""; }; B122B1EE8FD3AD8E8CA73EA280DF17D6 /* Yoga-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Yoga-dummy.m"; sourceTree = ""; }; B13AF61B2C73376A40B9B8A94305983D /* ARTRadialGradient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ARTRadialGradient.m; sourceTree = ""; }; + B1481C8FC99F5FE787F9FBBE96DD5E9F /* alpha_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_dec.c; path = src/dec/alpha_dec.c; sourceTree = ""; }; + B18979D7EEF1DB0BD8B390FAE4FA6123 /* vp8l_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = vp8l_dec.c; path = src/dec/vp8l_dec.c; sourceTree = ""; }; B1BCB56DF0243718905C4F01C56AED89 /* BSG_KSCrashReportWriter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashReportWriter.h; sourceTree = ""; }; + B1E3B9B644AA67562AB8AF3F6ADB7F0C /* FBLPromisePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLPromisePrivate.h; path = Sources/FBLPromises/include/FBLPromisePrivate.h; sourceTree = ""; }; B1F55CCBE67BE68BB69741B56329314A /* BSG_KSCrashCallCompletion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSG_KSCrashCallCompletion.m; sourceTree = ""; }; - B1FE0D366F6E3BEEE492394D7E4FD699 /* FIRErrorCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrorCode.h; path = Firebase/Core/Private/FIRErrorCode.h; sourceTree = ""; }; B234A34E47BD553B1BBB16FE8E4232F5 /* RCTTouchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTouchHandler.m; sourceTree = ""; }; B244A2A0B9030A23EFCCC664D154DC51 /* UIView+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIView+Private.h"; sourceTree = ""; }; B250BD041FB5381BC6D982CBE9174EB7 /* RCTFrameUpdate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTFrameUpdate.m; sourceTree = ""; }; - B2735CE302680854AA3529AFCC29CA03 /* GULNSData+zlib.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GULNSData+zlib.m"; path = "GoogleUtilities/NSData+zlib/GULNSData+zlib.m"; sourceTree = ""; }; B287CF42AC85785CD23D4F996A46205E /* EXPermissions.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = EXPermissions.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; B28DFCB28C906E2A2ADB0BBBAFA4E945 /* RCTSinglelineTextInputView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSinglelineTextInputView.m; sourceTree = ""; }; + B2910F746BA799CA787EFCE48845B524 /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; + B298AD16DF9C7781D252AE8F6F69B0B4 /* common_sse41.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common_sse41.h; path = src/dsp/common_sse41.h; sourceTree = ""; }; B2AC5E2196CD9B6DD211636809906426 /* pl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = pl.lproj; path = ios/QBImagePicker/QBImagePicker/pl.lproj; sourceTree = ""; }; B2BC78EDC760B450A885614547A7428E /* RNFetchBlobConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNFetchBlobConst.h; path = ios/RNFetchBlobConst.h; sourceTree = ""; }; - B2CB01CE9E07412C5A22C1E15F8F4859 /* color_cache_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = color_cache_utils.h; path = src/utils/color_cache_utils.h; sourceTree = ""; }; + B2BDA968F3FED747EC612A14381CAFCB /* utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = utils.h; path = "double-conversion/utils.h"; sourceTree = ""; }; B2EDF1DFD33ED220F0315B82842BA8C8 /* RCTConvert+REATransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTConvert+REATransition.h"; sourceTree = ""; }; B3036C135F1DFCE419D5AA9B4DFDEC42 /* React-jsi-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-jsi-dummy.m"; sourceTree = ""; }; - B30EC1C70EBBBF1AE74DCF889632A04B /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; - B3125C414316843B2D464D1AFF4A848C /* SDImageGIFCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoderInternal.h; path = SDWebImage/Private/SDImageGIFCoderInternal.h; sourceTree = ""; }; B312FE5691799113B85CEF8AE9BB6290 /* BugsnagCrashReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagCrashReport.h; sourceTree = ""; }; B330D7E6ECB96495FE5D9E5DCC9EF7CC /* RNBootSplash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNBootSplash.m; path = ios/RNBootSplash.m; sourceTree = ""; }; - B37B061BCFAEAF0A54D7854C6C0322C7 /* double-conversion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "double-conversion.h"; path = "double-conversion/double-conversion.h"; sourceTree = ""; }; B38B4B1080E2D409F08EC08ADE9D8F04 /* react-native-keyboard-tracking-view-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-keyboard-tracking-view-dummy.m"; sourceTree = ""; }; B3BB883D8A8C3E696C572EF6EAB59284 /* BSG_KSCrashSentry_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashSentry_Private.h; sourceTree = ""; }; - B3D892AE8597A9B7DD8584C0AA7DA67F /* GULAppDelegateSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULAppDelegateSwizzler.m; path = GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m; sourceTree = ""; }; B3DF4F93DB36B32D91549C6ABADDB132 /* React.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = React.xcconfig; sourceTree = ""; }; B3EA2ECAF632E137336F97437D3E6ADC /* RNLongPressHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNLongPressHandler.m; sourceTree = ""; }; B40F0C3B301F32AC85B84546178CE0CD /* BugsnagApiClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagApiClient.h; sourceTree = ""; }; B414D8CC65221A132C98C29A03A19116 /* FBReactNativeSpec-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FBReactNativeSpec-dummy.m"; sourceTree = ""; }; B41590C1DCAAA35C248A956F2B3F7929 /* BugsnagConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagConfiguration.h; sourceTree = ""; }; B43874C6CBB50E7134FBEC24BABFE14F /* libGoogleUtilities.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGoogleUtilities.a; path = libGoogleUtilities.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B43DE523DEC5C5015D53A04238FFF28A /* GoogleDataTransport.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleDataTransport.xcconfig; sourceTree = ""; }; B440325A10B029C79737D862E693796A /* LICENCE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENCE; sourceTree = ""; }; + B491F35981D199A9F597FA6ADB1CDADD /* bit_reader_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = bit_reader_utils.c; path = src/utils/bit_reader_utils.c; sourceTree = ""; }; + B49950F25B4587A0F1428A0FF4D062F1 /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; + B4A567AE04DB13B59FF8430E58211E82 /* lossless_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_neon.c; path = src/dsp/lossless_neon.c; sourceTree = ""; }; + B4E59C34733EDDB63352F51EA330CB81 /* pb_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_common.h; sourceTree = ""; }; B501E4BAEF3F88DD797B97D436749B45 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; B539A7B9514BB8308B7BC00D8903DEAF /* RCTPackagerClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPackagerClient.h; sourceTree = ""; }; B54554CA08243B0445BEE89CEC127C6F /* UMReactNativeAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMReactNativeAdapter.h; sourceTree = ""; }; + B5609AB6E46F0A418839F14921E70AE4 /* io_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = io_dec.c; path = src/dec/io_dec.c; sourceTree = ""; }; + B59C6445493BACD5876AA3D8176366EB /* cost_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_neon.c; path = src/dsp/cost_neon.c; sourceTree = ""; }; B5BE368005DFD93C79A814B8743A0E9A /* READebugNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = READebugNode.m; sourceTree = ""; }; + B5C4CF7EEBB56E009C17E4CB2CDCD303 /* dec_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_msa.c; path = src/dsp/dec_msa.c; sourceTree = ""; }; B5D32CE02F68EE345F9101FFAF7E3476 /* Pods-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketChatRN.debug.xcconfig"; sourceTree = ""; }; B5F80C9501800379D69EFFFD9BC11E1F /* NSError+BSG_SimpleConstructor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSError+BSG_SimpleConstructor.h"; sourceTree = ""; }; B60EAD97AC08615CF8BA89493710EA13 /* RNFirebaseLinks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseLinks.h; sourceTree = ""; }; - B6219DECE46FCBA0B37B214302C278F1 /* json_pointer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = json_pointer.cpp; path = folly/json_pointer.cpp; sourceTree = ""; }; + B64A61A851185348B2695008405AD490 /* GULMutableDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULMutableDictionary.h; path = GoogleUtilities/Network/Private/GULMutableDictionary.h; sourceTree = ""; }; B6577B973299B70BE40F64482567C803 /* JSIDynamic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSIDynamic.h; sourceTree = ""; }; B65D1E0F95214E2E1AC4F513C1753CC7 /* Pods-ShareRocketChatRN-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ShareRocketChatRN-resources.sh"; sourceTree = ""; }; - B6B1C72E3F0EB30F5121B546F5090E9A /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; - B6B66C3CAF05853DB459D7E95B9AA823 /* RSKImageCropper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSKImageCropper.h; path = RSKImageCropper/RSKImageCropper.h; sourceTree = ""; }; + B68868E9598353F7206899DB35AA264C /* fixed-dtoa.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "fixed-dtoa.cc"; path = "double-conversion/fixed-dtoa.cc"; sourceTree = ""; }; B6B7BACA996C70663A94C0AC4B349908 /* fr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = fr.lproj; path = ios/QBImagePicker/QBImagePicker/fr.lproj; sourceTree = ""; }; + B6DAE9177A3C3A2B93422B1382202FF6 /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; B6EE70348525F32720F5513A236840CB /* RCTCxxBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTCxxBridge.mm; sourceTree = ""; }; + B72D2A1AFE5D8CB8AE76AADD8B87B42B /* pb_decode.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_decode.c; sourceTree = ""; }; B7437E080DBD8540D545B371A38CDE34 /* EXHaptics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EXHaptics.xcconfig; sourceTree = ""; }; B7548BAB87BDEEEC008F4518116A4FB4 /* React-jsiexecutor.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-jsiexecutor.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; B755B5DEA69CA3FE94D40CD2B3D5BDA8 /* BSG_KSCrashReportFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashReportFilter.h; sourceTree = ""; }; B75A261FE3CE62D5A559B997074E70FC /* libreact-native-background-timer.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-background-timer.a"; path = "libreact-native-background-timer.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - B77199EB723C7E6DB6B57BD7FE8D82AE /* Fabric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fabric.h; path = iOS/Fabric.framework/Headers/Fabric.h; sourceTree = ""; }; + B7619685EB70998E0F7EC8865DDD7D94 /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; B776E20C9A189F93824B81E78FC45C39 /* RNCSliderManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCSliderManager.m; path = ios/RNCSliderManager.m; sourceTree = ""; }; - B79D1587D505AC41205B1956A58CDE6D /* encode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = encode.h; path = src/webp/encode.h; sourceTree = ""; }; B7A4880C2EE835771E9D06A2BD538F35 /* RCTTransformAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTransformAnimatedNode.h; sourceTree = ""; }; - B7AD9152F3BD8FC9B15BFBC1B66AA7CB /* FIRLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLogger.h; path = Firebase/Core/Private/FIRLogger.h; sourceTree = ""; }; B7E0EB48FBFC098528F3AFFD3FF860C5 /* RCTModalHostView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTModalHostView.m; sourceTree = ""; }; B7E6A981F9F4AE159DBB3DAD00EB4403 /* RNDateTimePicker.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNDateTimePicker.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; B7F0074FC2D8A9EA66D202D5DCE0A2A5 /* RCTNetworkTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTNetworkTask.m; sourceTree = ""; }; - B80484046E542C11B4649FCC8CAC9C52 /* GDTCCTNanopbHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTNanopbHelpers.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTNanopbHelpers.m; sourceTree = ""; }; - B8408F86535310EC07AD7AB9FE1B5212 /* UIApplication+RSKImageCropper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIApplication+RSKImageCropper.m"; path = "RSKImageCropper/UIApplication+RSKImageCropper.m"; sourceTree = ""; }; - B843C0444B6E7D0D440EBE7179AB662C /* GDTEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTEvent.m; path = GoogleDataTransport/GDTLibrary/GDTEvent.m; sourceTree = ""; }; - B87E79843B4EA59AB699E20F9EB2ECD0 /* FIRInstanceIDCheckinPreferences+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDCheckinPreferences+Internal.h"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h"; sourceTree = ""; }; - B8E0F7766A408C07F547DE4D5D2B2979 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; + B8B19D7098E1C36EB82CCA7E162D0984 /* glog.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = glog.xcconfig; sourceTree = ""; }; B8FC91299498ED4C8360B3FA9F79E38D /* RCTImageDataDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageDataDecoder.h; path = Libraries/Image/RCTImageDataDecoder.h; sourceTree = ""; }; B90B4942E1ED0199158E5ACC0EF66E35 /* RCTUIManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUIManager.h; sourceTree = ""; }; - B9229E59D5CCD6CED8B744A44D0EC198 /* GDTStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTStorage.m; path = GoogleDataTransport/GDTLibrary/GDTStorage.m; sourceTree = ""; }; - B956A57AB40A828151E2DDC55448CCB3 /* FIRInstanceID+Private.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceID+Private.m"; path = "Firebase/InstanceID/FIRInstanceID+Private.m"; sourceTree = ""; }; B96641B5D9DCA4C6DE1C0D7235BAA942 /* EXWebBrowser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXWebBrowser.m; path = EXWebBrowser/EXWebBrowser.m; sourceTree = ""; }; B96C2FB80F4A61F7610D6663DB9DC0B1 /* LongLivedObject.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = LongLivedObject.cpp; path = turbomodule/core/LongLivedObject.cpp; sourceTree = ""; }; B9935A42776FF18709A2F382332B44DA /* RCTObjcExecutor.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTObjcExecutor.mm; sourceTree = ""; }; B99E5695594CBE8CFD931027DD3C667C /* YGValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGValue.h; path = yoga/YGValue.h; sourceTree = ""; }; - B9A1B0E64A972AF42DC39566FEE8C89F /* types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = types.h; path = src/webp/types.h; sourceTree = ""; }; B9D904F1C8064C21F44FCF652E65AAA8 /* RNFirebaseStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseStorage.m; sourceTree = ""; }; B9F9868FE878EA3D72E95B136344BEC1 /* REATransitionAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REATransitionAnimation.m; sourceTree = ""; }; + BA065BF226D7D8BE5F672D1B12FD2519 /* FBLPromise+Retry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Retry.m"; path = "Sources/FBLPromises/FBLPromise+Retry.m"; sourceTree = ""; }; BA407E1C13578F7B43F9461BB02A73C4 /* RNTapHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNTapHandler.h; sourceTree = ""; }; BA44C408D387162B22E4CD223D65C7B2 /* RCTStatusBarManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTStatusBarManager.m; sourceTree = ""; }; BA906CC25277C293D1CFF35A617152B4 /* RCTImageStoreManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageStoreManager.h; path = React/CoreModules/RCTImageStoreManager.h; sourceTree = ""; }; + BA97DE2A8EF2E1432F205EFE746D7873 /* GDTCORPrioritizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORPrioritizer.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORPrioritizer.h; sourceTree = ""; }; BAA6411C85426B36C85020C4B1C208E6 /* JSBundleType.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = JSBundleType.cpp; sourceTree = ""; }; BAA7D6FBDA74E2838646EFC29397B571 /* RNCommandsHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCommandsHandler.m; path = RNNotifications/RNCommandsHandler.m; sourceTree = ""; }; BAC744DF840B073F67D86E407066568C /* BSGConnectivity.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSGConnectivity.m; sourceTree = ""; }; BAE4E2BC7E0C20A3AA1DB5C880F2695F /* React-RCTImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTImage-dummy.m"; sourceTree = ""; }; + BB117D47D780DC71082229222E18A9BB /* lossless_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc.c; path = src/dsp/lossless_enc.c; sourceTree = ""; }; BB201F23A57E266A0E92BEF7B46EB16E /* REAValueNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REAValueNode.h; sourceTree = ""; }; - BB4BF48A648AF492AE8FCDE9F4545A29 /* String.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = String.cpp; path = folly/String.cpp; sourceTree = ""; }; + BB3994268A3900BB3EC0B6E41C8ACEEC /* RSKTouchView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSKTouchView.m; path = RSKImageCropper/RSKTouchView.m; sourceTree = ""; }; + BB473672F668467D6664FFB5D1B0E078 /* DoubleConversion.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DoubleConversion.xcconfig; sourceTree = ""; }; BB93BB2CD1410819A6FEEBB03477DAE8 /* RNRootView.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNRootView.xcconfig; sourceTree = ""; }; - BB9490D5D6C2A4D58F4DE53CA64B65F4 /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; BB9605D1B5460502B2344AE8267BB8CA /* BSG_KSDynamicLinker.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSDynamicLinker.c; sourceTree = ""; }; BBCAF914EB2DC456D8150A87B6FB5C97 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; BC0F6ABA02DFEA3979B090303AFE0BC1 /* KeyCommands.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = KeyCommands.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - BC76E2FBF45298FFC195C1BACE29276A /* FIRInstanceIDCheckinService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinService.m; path = Firebase/InstanceID/FIRInstanceIDCheckinService.m; sourceTree = ""; }; - BC9B332A6829DBEC2A6BEED66CA30C36 /* color_cache_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = color_cache_utils.c; path = src/utils/color_cache_utils.c; sourceTree = ""; }; + BC36EC56CD213D984C4B7F24FD1B9665 /* FIRCoreDiagnosticsInterop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRCoreDiagnosticsInterop.h; path = Interop/CoreDiagnostics/Public/FIRCoreDiagnosticsInterop.h; sourceTree = ""; }; + BC41853A6450E14F865A02ADC3D019D7 /* anim_decode.c */ = {isa = PBXFileReference; includeInIndex = 1; name = anim_decode.c; path = src/demux/anim_decode.c; sourceTree = ""; }; BC9D529BF5731E3078C6EECBDF867328 /* RCTBaseTextViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBaseTextViewManager.h; sourceTree = ""; }; BC9D7CFECF0E1016A7AC15B8E44E1539 /* RCTBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBridge.h; sourceTree = ""; }; BCB2FAFE4C12BA32A8EADC9720F53E34 /* RCTAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAssert.h; sourceTree = ""; }; - BCBB7D5FBD7D716F754F9E1C34C1EC74 /* GDTEvent_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTEvent_Private.h; path = GoogleDataTransport/GDTLibrary/Private/GDTEvent_Private.h; sourceTree = ""; }; - BCC4CC6682FE82D7FD68D5C478533F62 /* rescaler.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler.c; path = src/dsp/rescaler.c; sourceTree = ""; }; BCC8958D94FEB92227099ACBE9C9FB36 /* ARTGroupManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARTGroupManager.h; sourceTree = ""; }; + BCDC1F0FF0B1E2E4C213D78D24F0F9CD /* GDTCORPlatform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORPlatform.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORPlatform.m; sourceTree = ""; }; BCEAF35223D82BA11CD63E498B46EDA1 /* BSG_KSJSONCodec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSJSONCodec.h; sourceTree = ""; }; - BD02FE5A2E5FEA9FC370768CE07C74A3 /* RSKTouchView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSKTouchView.m; path = RSKImageCropper/RSKTouchView.m; sourceTree = ""; }; + BD2D19249B0E5F20B228D7924697E712 /* FIRInstanceIDTokenManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenManager.m; path = Firebase/InstanceID/FIRInstanceIDTokenManager.m; sourceTree = ""; }; BD46AC5385CC84A5952D1E255FF9A689 /* RCTAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTAnimatedNode.m; sourceTree = ""; }; + BD58A224BC63CD1E1BB8C5E6A0AC8AD7 /* FBLPromise+Any.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Any.m"; path = "Sources/FBLPromises/FBLPromise+Any.m"; sourceTree = ""; }; BD6F5B85E73250F0136EDD338592C8DE /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; BD71E2539823621820F84384064C253A /* libReact-Core.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-Core.a"; path = "libReact-Core.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + BD7302148CAB101FE972B11E7D6DB858 /* GULSecureCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULSecureCoding.h; path = GoogleUtilities/Environment/Public/GULSecureCoding.h; sourceTree = ""; }; BD8E04118ED59087038A3197896170AE /* RAMBundleRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RAMBundleRegistry.h; sourceTree = ""; }; - BDBE26D1AFAFADA908C7EC0D26845579 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; BDCD5401FA368574693A20794B33DA3F /* RCTVibration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTVibration.h; path = Libraries/Vibration/RCTVibration.h; sourceTree = ""; }; + BDEA5C38759AB791A74D4E71063DB293 /* RSKImageScrollView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSKImageScrollView.h; path = RSKImageCropper/RSKImageScrollView.h; sourceTree = ""; }; BDF7143096F238E5F373CE201997766C /* JSCRuntime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSCRuntime.h; sourceTree = ""; }; BE06FAF60C7586CDF0EBB38218A8E5B0 /* UMBarCodeScannerInterface.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UMBarCodeScannerInterface.xcconfig; sourceTree = ""; }; BE07A41A7E2BE53BFC6B0863EDD5137C /* React-cxxreact.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-cxxreact.xcconfig"; sourceTree = ""; }; BE09031574CDEACBB49CE1AC66544EDB /* RCTTextTransform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTTextTransform.h; path = Libraries/Text/RCTTextTransform.h; sourceTree = ""; }; - BE65063F801DD1E37BBFCF89EB4B25A3 /* libwebp-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "libwebp-prefix.pch"; sourceTree = ""; }; - BE9C297AE3F56D077125FAF26B6B5DE7 /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; + BE710B81BB8CB34A3D44E178C59ED0D3 /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; + BE9A40D3A7B0498886FB7048EF92990B /* FIRCoreDiagnostics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCoreDiagnostics.m; path = Firebase/CoreDiagnostics/FIRCDLibrary/FIRCoreDiagnostics.m; sourceTree = ""; }; BEA2EA1E087459E4C63B1E4E71562822 /* REATransitionValues.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REATransitionValues.h; sourceTree = ""; }; + BEAA4F63A52753F14D4888D08369618E /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; BEF99ADC4DDE3984F46775A1AC8A3678 /* RCTReloadCommand.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTReloadCommand.h; sourceTree = ""; }; + BF0E8DD8BC7FDA879032926A40B37AA3 /* bignum-dtoa.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "bignum-dtoa.h"; path = "double-conversion/bignum-dtoa.h"; sourceTree = ""; }; BF115FF8ADFE0DB9FE090BF6D8064175 /* UMFontManagerInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMFontManagerInterface.h; path = UMFontInterface/UMFontManagerInterface.h; sourceTree = ""; }; BF45BB6462C515794294F19F13B4BB37 /* Instance.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = Instance.cpp; sourceTree = ""; }; BF5CBB0DE4D0AA9DE287CF7AE6A51CEF /* RCTActivityIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTActivityIndicatorView.m; sourceTree = ""; }; BF75FB52132595BFDC41B0278ADAEE91 /* RNLocalize.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNLocalize.m; path = ios/RNLocalize.m; sourceTree = ""; }; - BF904877DC532C867E65B62EAB5AC8DD /* GoogleUtilities-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleUtilities-dummy.m"; sourceTree = ""; }; - BF97D9E3AB424B03E0D472FE750E447F /* GDTTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTTransformer.m; path = GoogleDataTransport/GDTLibrary/GDTTransformer.m; sourceTree = ""; }; BFA3D1106C1072A2B733533A2E770794 /* Pods-ShareRocketChatRN-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ShareRocketChatRN-acknowledgements.plist"; sourceTree = ""; }; BFA466318F7726718D3485D2E96C30E4 /* RCTSurfaceView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceView.mm; sourceTree = ""; }; BFCE4058442BFB8DEB89BA3F261A76BA /* libRNUserDefaults.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNUserDefaults.a; path = libRNUserDefaults.a; sourceTree = BUILT_PRODUCTS_DIR; }; BFEFE51A7E6B91C9E46778BE0E61BFDF /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; C000D12BF94907F234EED6E2EC242655 /* installation.md */ = {isa = PBXFileReference; includeInIndex = 1; name = installation.md; path = docs/installation.md; sourceTree = ""; }; C003E82845B79893D5C223AF9F0D9547 /* RCTManagedPointer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTManagedPointer.h; sourceTree = ""; }; - C01777BFA2467300977CA3FEF913D5F4 /* frame_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = frame_enc.c; path = src/enc/frame_enc.c; sourceTree = ""; }; + C02C313B7B5553296D2F7158CBE25081 /* GDTCOREvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCOREvent.m; path = GoogleDataTransport/GDTCORLibrary/GDTCOREvent.m; sourceTree = ""; }; C0422BBB11687EFE612D490B8B0C77DE /* RNFirebaseDatabase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseDatabase.m; sourceTree = ""; }; C046E8B167E889528CF9671EC0A9C7CD /* RCTSurfaceRootShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceRootShadowView.h; sourceTree = ""; }; + C06F60B264CEB19482C4DFD3476D64D2 /* FBLPromise+Always.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Always.m"; path = "Sources/FBLPromises/FBLPromise+Always.m"; sourceTree = ""; }; C0AFA44A2045D5AC96AB70C780E3244E /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; C0C99EE7CEEF2ECF943384B07DEFBF58 /* Yoga.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Yoga.cpp; path = yoga/Yoga.cpp; sourceTree = ""; }; + C0DCE0BB52AF13A0B41211860EA0CDCA /* GDTCCTUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTUploader.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTUploader.h; sourceTree = ""; }; C0DF36E5B1109A8017EE36132A740A1B /* Yoga-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Yoga-prefix.pch"; sourceTree = ""; }; - C12A2CAC51F8034811D57FAEE5A3A459 /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; C1481AC3372BA057871887B7964B537A /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - C1485CBAB7240610926802178F495435 /* Fabric.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Fabric.xcconfig; sourceTree = ""; }; + C17CE26530BAEFDE35C1E982341393BB /* DoubleConversion-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DoubleConversion-prefix.pch"; sourceTree = ""; }; C189945D9B7E0350FFF117B433DA54FA /* YGNodePrint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGNodePrint.h; path = yoga/YGNodePrint.h; sourceTree = ""; }; C18F74C4680E509627B27F971FFE7F07 /* RCTCxxMethod.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTCxxMethod.mm; sourceTree = ""; }; C1A919103EAC9813D236486C34FC0A21 /* libReact-RCTVibration.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-RCTVibration.a"; path = "libReact-RCTVibration.a"; sourceTree = BUILT_PRODUCTS_DIR; }; C1BDAF7514D177B767F3850F0608EBF3 /* RCTJavaScriptLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTJavaScriptLoader.h; sourceTree = ""; }; C1E9AC90B7DAF68E7C5B579D368FF30B /* EXFileSystemAssetLibraryHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXFileSystemAssetLibraryHandler.m; path = EXFileSystem/EXFileSystemAssetLibraryHandler.m; sourceTree = ""; }; C1F15DAD777D61E47556A49390A2CB1C /* BugsnagNotifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagNotifier.m; sourceTree = ""; }; - C1F62027A357E86846B1913AE4D9178C /* FIRAppInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAppInternal.h; path = Firebase/Core/Private/FIRAppInternal.h; sourceTree = ""; }; C211084854232733B6106F84F2060236 /* RCTFollyConvert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFollyConvert.h; sourceTree = ""; }; C2205758F4EAEBB746E096C755FAD032 /* UMFaceDetectorManagerProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMFaceDetectorManagerProvider.h; path = UMFaceDetectorInterface/UMFaceDetectorManagerProvider.h; sourceTree = ""; }; - C222210BC14529A331E3ECF70A2EED5E /* yuv_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_mips32.c; path = src/dsp/yuv_mips32.c; sourceTree = ""; }; C2517F65DB4D4963955B79BCC8FB2A1D /* RCTNativeAnimatedModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTNativeAnimatedModule.h; path = Libraries/NativeAnimation/RCTNativeAnimatedModule.h; sourceTree = ""; }; C26A935CB0E6EA873152D98DFDB862DF /* MaterialIcons.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = MaterialIcons.ttf; path = Fonts/MaterialIcons.ttf; sourceTree = ""; }; C29328094405CED92A7C7819B81EC90E /* RCTPlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTPlatform.h; path = React/CoreModules/RCTPlatform.h; sourceTree = ""; }; C2DC0411F3D040280C23BA49ABA4BF3C /* UMReactFontManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = UMReactFontManager.m; sourceTree = ""; }; - C2F2A0EACBCFF372BA3D861762FA3918 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; - C312E4CB1D08B208EAE28642C3490978 /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; - C31E5FC96B7E9A28293CF0E6C071B867 /* FIRInstanceID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceID.m; path = Firebase/InstanceID/FIRInstanceID.m; sourceTree = ""; }; + C31EC300C1418FF40CB367611BE8EB41 /* dec_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_mips32.c; path = src/dsp/dec_mips32.c; sourceTree = ""; }; C3311B35B5431B68BDAD6D00E792EA16 /* RCTDevLoadingView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDevLoadingView.h; sourceTree = ""; }; - C3316057687A0E4CB96C6EADC68B8584 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; - C33CB5AB34B70CE551120CF7195044D9 /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; + C33B5059A86C095F0D92336CBCB1F51B /* FIRInstanceIDBackupExcludedPlist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDBackupExcludedPlist.h; path = Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.h; sourceTree = ""; }; C355DC38001EC1DC404881B238ADC3B4 /* RCTNativeModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTNativeModule.h; sourceTree = ""; }; C358DCFDF7DB17909BE6CDF6AE5AFF7A /* RNFetchBlobRequest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNFetchBlobRequest.h; path = ios/RNFetchBlobRequest.h; sourceTree = ""; }; - C35E7FE27DAB66CBC23CF55C160F9F81 /* ColdClass.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = ColdClass.cpp; path = folly/lang/ColdClass.cpp; sourceTree = ""; }; C382C4B6DF1722D9953FF2B3DCD27F4E /* Bugsnag.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = Bugsnag.m; sourceTree = ""; }; C3A398FB2047D8FB5C115BB7C9C44E07 /* RCTPackagerClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTPackagerClient.m; sourceTree = ""; }; C3AF558283E7E128FB626F24EDADC103 /* RCTPointerEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPointerEvents.h; sourceTree = ""; }; - C3B73D30EBF2384AD1F89DAE90DD80A5 /* GDTRegistrar_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTRegistrar_Private.h; path = GoogleDataTransport/GDTLibrary/Private/GDTRegistrar_Private.h; sourceTree = ""; }; C3DAE7153508F7F0B6671673C25A424C /* react-native-notifications.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "react-native-notifications.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - C45BBE85AD818400CB1A3129182DD6CB /* logging.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = logging.cc; path = src/logging.cc; sourceTree = ""; }; - C4632797BCED5CA7E43264D6EF175EB8 /* backward_references_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = backward_references_enc.h; path = src/enc/backward_references_enc.h; sourceTree = ""; }; + C422929093AA864A077D3201B48F2AD0 /* FIRInstallationsItem+RegisterInstallationAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstallationsItem+RegisterInstallationAPI.m"; path = "FirebaseInstallations/Source/Library/InstallationsAPI/FIRInstallationsItem+RegisterInstallationAPI.m"; sourceTree = ""; }; + C4479616B9A8800084821451D7E8362A /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; + C4539C0D5139FA433EA40799F1AC83A5 /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; + C460DA70768C93ED1BE2D6D8F8EB4963 /* FIRDependency.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDependency.m; path = FirebaseCore/Sources/FIRDependency.m; sourceTree = ""; }; C46431CFE02C9A38B7F8ACD3747A235B /* React-RCTLinking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTLinking-dummy.m"; sourceTree = ""; }; - C46905CBF59E505239D2FBEE8A2482ED /* FIRComponentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentType.h; path = Firebase/Core/Private/FIRComponentType.h; sourceTree = ""; }; C4741A74FB1A6CD3FE3B6FA8EC517E84 /* RNAudio.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNAudio.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - C476CADBE585CCBC4E285BDCE9C9B9B6 /* stl_logging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = stl_logging.h; path = src/glog/stl_logging.h; sourceTree = ""; }; C486485423B3730492ECFD48D1453907 /* BugsnagCrashSentry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BugsnagCrashSentry.m; sourceTree = ""; }; - C49BB1DB9017B92D7A60FF49B674F10E /* idec_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = idec_dec.c; path = src/dec/idec_dec.c; sourceTree = ""; }; C4ACA86B0CE6802F5303BB625FF3E0F4 /* RCTSinglelineTextInputView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSinglelineTextInputView.h; sourceTree = ""; }; C4D27DC1954AA7BF4D04B07CAA3A188F /* RNFirebaseFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseFunctions.m; sourceTree = ""; }; C4F47A60F5BCB7F76EED93F1C33E870A /* RNNotifications.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNNotifications.h; path = RNNotifications/RNNotifications.h; sourceTree = ""; }; - C507B3571991755F03AFAE7FAA0A698D /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; - C52620374CCE79F63474832E84684EDF /* FIRInstanceIDKeyPairUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeyPairUtilities.h; path = Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.h; sourceTree = ""; }; + C4FFE67DC13EEC2EBC31ADD1DEBB2A2A /* FIRInstallationsStoredAuthToken.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsStoredAuthToken.h; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredAuthToken.h; sourceTree = ""; }; C558069696C77025B946DE8910693620 /* RCTKeyCommandsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTKeyCommandsManager.h; path = ios/KeyCommands/RCTKeyCommandsManager.h; sourceTree = ""; }; - C56B144313F11160699FC870103B147B /* GoogleDataTransport-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleDataTransport-dummy.m"; sourceTree = ""; }; - C599D37E0638CACC8F72727A8ACBC6E8 /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; C5BEB9A848B453A49069AB5DAC45D1EF /* React-jsi-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-jsi-prefix.pch"; sourceTree = ""; }; - C5E50AFB60DE75A7F2AE919BBEB66E7E /* vp8l_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = vp8l_dec.c; path = src/dec/vp8l_dec.c; sourceTree = ""; }; C6195A96E3126C5962D909EFFAE81ACC /* RNFlingHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFlingHandler.h; sourceTree = ""; }; C64D7B0743BF13D2875ED1AD6F5B1BBF /* RCTShadowView+Internal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTShadowView+Internal.m"; sourceTree = ""; }; C651F8C614465833939221AC4CFF9313 /* UMReactNativeAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = UMReactNativeAdapter.m; sourceTree = ""; }; - C662555DEFDD7CFFF2487F4277C6C686 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; + C65235A5B4462861F568033127D5801F /* dynamic.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = dynamic.cpp; path = folly/dynamic.cpp; sourceTree = ""; }; + C6624A128D06B1B7C27D2FBFA0584A44 /* upsampling.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling.c; path = src/dsp/upsampling.c; sourceTree = ""; }; C66EB41246D9082724732E634930C37D /* RCTImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageCache.h; path = Libraries/Image/RCTImageCache.h; sourceTree = ""; }; + C67A04FD4DB80B332055C981539D61A1 /* cct.nanopb.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cct.nanopb.c; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.c; sourceTree = ""; }; + C6A63FCD6FAFEE69391E5C3FC275512F /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; C6B5FE04EF96F3DBDA6FA2EACB05DA49 /* RCTBackedTextInputDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBackedTextInputDelegate.h; sourceTree = ""; }; - C6D51E11A724780AD122EAAB74D10317 /* GDTCCTPrioritizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCCTPrioritizer.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Private/GDTCCTPrioritizer.h; sourceTree = ""; }; - C6D764A8FFC016671C8031425E8EE2F5 /* Conv.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Conv.cpp; path = folly/Conv.cpp; sourceTree = ""; }; + C6C1424961A6648F4F404DB4D5B51284 /* PromisesObjC-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PromisesObjC-dummy.m"; sourceTree = ""; }; C711D324C097D28645BE1368E672C76B /* RCTRawTextShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRawTextShadowView.m; sourceTree = ""; }; C71C5AB1403BC17521FDEF0FDBF14CDB /* NativeToJsBridge.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = NativeToJsBridge.cpp; sourceTree = ""; }; C72F668DD60E0AAB30EDB1330EFA94FA /* RCTMaskedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMaskedView.h; sourceTree = ""; }; - C753E2C0E88ECD9993A02DF28C858778 /* Firebase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Firebase.h; path = CoreOnly/Sources/Firebase.h; sourceTree = ""; }; + C74C60148A4948BAD446E2F2B11586EB /* dsp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = dsp.h; path = src/dsp/dsp.h; sourceTree = ""; }; + C75A86B18664AF17C832083530EBC07C /* raw_logging.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = raw_logging.cc; path = src/raw_logging.cc; sourceTree = ""; }; C75D6141B889C90F12173F1E3786508E /* RNLongPressHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNLongPressHandler.h; sourceTree = ""; }; + C75F6B7CCC80F365375AE3D64978BE9F /* utilities.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = utilities.cc; path = src/utilities.cc; sourceTree = ""; }; C7699AFD882E9DB82C6396CD2B33D5D9 /* RCTBundleURLProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBundleURLProvider.h; sourceTree = ""; }; C777CF2FB1E39A45CBBDB54E8693F471 /* libRNReanimated.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNReanimated.a; path = libRNReanimated.a; sourceTree = BUILT_PRODUCTS_DIR; }; - C78D47F722BB1CAF44A836ED125A9FD7 /* anim_encode.c */ = {isa = PBXFileReference; includeInIndex = 1; name = anim_encode.c; path = src/mux/anim_encode.c; sourceTree = ""; }; - C7E16FB85FF0BDA0B29022320BDF1B66 /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; + C7EFB60008DF9B71E0BF22DE8B9F1110 /* FIRInstallationsStoredItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsStoredItem.m; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStoredItem.m; sourceTree = ""; }; C81F654D7818C2EE9EF9C05806424B36 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; C830DA96237FF0F27DC906DD364FC1BD /* React-RCTVibration.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTVibration.xcconfig"; sourceTree = ""; }; - C8441C7C956DD16F599D219757963B47 /* pb_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_common.h; sourceTree = ""; }; C887A99E09489A56DE2379D37D1AA86E /* RNFirebaseAdMob.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseAdMob.h; sourceTree = ""; }; C88FF80CF46E6A7B8FF8FD176C8397E0 /* RCTTextAttributes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTextAttributes.m; sourceTree = ""; }; - C8ADDD3DE5B9D58ABDF6D510A502F85F /* libwebp.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = libwebp.xcconfig; sourceTree = ""; }; + C8AAC00DA3B23BFCDC15277B87A9557B /* GULOriginalIMPConvenienceMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULOriginalIMPConvenienceMacros.h; path = GoogleUtilities/MethodSwizzler/Private/GULOriginalIMPConvenienceMacros.h; sourceTree = ""; }; C8C38C11207926949E1F8094DFCEE99F /* RNPinchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNPinchHandler.m; sourceTree = ""; }; C8C4C62EDE5BA4D7F161B54E1D83F566 /* RCTImageEditingManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageEditingManager.h; path = React/CoreModules/RCTImageEditingManager.h; sourceTree = ""; }; C8CDFAE1DC19C13D3DA945619871BD92 /* RNSScreenContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNSScreenContainer.m; path = ios/RNSScreenContainer.m; sourceTree = ""; }; - C8F458DAF6DA4D546BAC86772B2CDF26 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; C9013C562EB93A1E3B006E509A27A411 /* RCTLocalAssetImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTLocalAssetImageLoader.m; sourceTree = ""; }; C92512161C2301398F3E08A8BDCC12D0 /* RCTImageUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTImageUtils.m; sourceTree = ""; }; - C993DF06793B7954B7AE6F9F0A64ED07 /* bignum.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bignum.h; path = "double-conversion/bignum.h"; sourceTree = ""; }; + C9483040D5F6D422F682396B87AF87D3 /* alpha_processing_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing_sse41.c; path = src/dsp/alpha_processing_sse41.c; sourceTree = ""; }; + C98669397B6EB380F73981625F007E41 /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; + C99B6ED7E39443CBF47A64AE5D60CD8E /* FIRInstallations.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallations.h; path = FirebaseInstallations/Source/Library/Public/FIRInstallations.h; sourceTree = ""; }; C9AFBB9FA5EF794E37A4AE54452BCCF7 /* android_date.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = android_date.png; path = docs/images/android_date.png; sourceTree = ""; }; + C9C21A13DD4599456884602B0D4C6757 /* RSKImageScrollView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSKImageScrollView.m; path = RSKImageCropper/RSKImageScrollView.m; sourceTree = ""; }; C9C25D35DBEAD6FD160BAA8C91BC077A /* RCTEventDispatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTEventDispatcher.h; sourceTree = ""; }; C9C40E7B6B5993D70A5D70F7D30FD3B4 /* UMModuleRegistryAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMModuleRegistryAdapter.h; sourceTree = ""; }; C9CD2D78E8F41D39A64B4383E335683A /* REAModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = REAModule.h; path = ios/REAModule.h; sourceTree = ""; }; C9F29936E7E20B3CFD89B9C48AE3C54A /* RNCSlider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCSlider.h; path = ios/RNCSlider.h; sourceTree = ""; }; - CA00F20CD47382A4E8F6B2B57C44447B /* Demangle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Demangle.cpp; path = folly/Demangle.cpp; sourceTree = ""; }; CA1241D3B5EEE4FD5C20C761219A6335 /* RCTTurboModule.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTTurboModule.mm; sourceTree = ""; }; + CA21C40AB9E6792C5EB386BCA0C5CF9D /* filters_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_neon.c; path = src/dsp/filters_neon.c; sourceTree = ""; }; CA21EDA115C0A41E286ADB005D6A38CA /* EXFileSystemAssetLibraryHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXFileSystemAssetLibraryHandler.h; path = EXFileSystem/EXFileSystemAssetLibraryHandler.h; sourceTree = ""; }; CA225D5A2E6D717CD7870ED6432FA37F /* RNNotificationUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNNotificationUtils.m; path = RNNotifications/RNNotificationUtils.m; sourceTree = ""; }; - CA38D19C15EE7062FC041C4582E5472D /* glog-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "glog-prefix.pch"; sourceTree = ""; }; CA3C674A38DA149BA329634D1B2F2B08 /* YGEnums.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGEnums.h; path = yoga/YGEnums.h; sourceTree = ""; }; + CAB97B058E412E0CFCBF16E6AD07DCA2 /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; CAC46DBE9FF571BF7244115D067D58EC /* EXPermissions.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EXPermissions.xcconfig; sourceTree = ""; }; + CB0E66A3C33EB8EEC21616C116ABB4A4 /* GDTCORAssert.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCORAssert.m; path = GoogleDataTransport/GDTCORLibrary/GDTCORAssert.m; sourceTree = ""; }; CB45C71AA8B34A612BAED8BF10703C66 /* RNCAppearanceProvider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCAppearanceProvider.m; path = ios/Appearance/RNCAppearanceProvider.m; sourceTree = ""; }; - CB747B3063C14FFE271EBE8037CAC091 /* RSKInternalUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSKInternalUtility.h; path = RSKImageCropper/RSKInternalUtility.h; sourceTree = ""; }; - CBBE0652EE9A9CDDA0DF797B7FDA8F59 /* UIImage+WebP.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+WebP.m"; path = "SDWebImageWebPCoder/Classes/UIImage+WebP.m"; sourceTree = ""; }; CBD234B82B5CCAF78C77FA9DF5E9585E /* UMLogManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = UMLogManager.m; sourceTree = ""; }; + CBD554C9D80E29A82E56D1B7897C0E38 /* rescaler_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_neon.c; path = src/dsp/rescaler_neon.c; sourceTree = ""; }; CBF28F20DB25164617538A4344BB107D /* UMModuleRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMModuleRegistry.h; sourceTree = ""; }; CC034D566D928405177A6168FCC656C5 /* react-native-slider-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-slider-dummy.m"; sourceTree = ""; }; - CC306A91677E008B485C2693BBF1C7BF /* huffman_encode_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = huffman_encode_utils.h; path = src/utils/huffman_encode_utils.h; sourceTree = ""; }; + CC36153E97819CC766DFEB874BBF6500 /* FIRInstallationsIIDTokenStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsIIDTokenStore.m; path = FirebaseInstallations/Source/Library/IIDMigration/FIRInstallationsIIDTokenStore.m; sourceTree = ""; }; CC3A25758C48E41849D21816D17AE1E8 /* ARTBrush.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ARTBrush.m; sourceTree = ""; }; + CC558CC663CA045F998F5CA528ADEDB7 /* enc_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_mips_dsp_r2.c; path = src/dsp/enc_mips_dsp_r2.c; sourceTree = ""; }; CC612AEFC201E55CBF50D8F1C40E3C3A /* RCTScrollableProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollableProtocol.h; sourceTree = ""; }; CCA0576919667EC33DF985E4FC2910DE /* TurboModuleBinding.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = TurboModuleBinding.cpp; path = turbomodule/core/TurboModuleBinding.cpp; sourceTree = ""; }; CCA75C4910342977B6F64CA73A753E66 /* RCTRefreshControlManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRefreshControlManager.m; sourceTree = ""; }; - CCC714DCDA38C719574933AD4BB18BEA /* FIRComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponent.h; path = Firebase/Core/Private/FIRComponent.h; sourceTree = ""; }; - CCD312A444D75714EE72AB0FD34CE7F1 /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; + CCE13B65AEE9DB27E1676D172D142597 /* FIRErrorCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrorCode.h; path = FirebaseCore/Sources/Private/FIRErrorCode.h; sourceTree = ""; }; + CCE294EC7F18FA41E37CBBE707B45FEA /* FIRInstanceIDCombinedHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCombinedHandler.h; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.h; sourceTree = ""; }; CCEBD8208E1F25947DBF57D76B5C55C5 /* REAAllTransitions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REAAllTransitions.h; sourceTree = ""; }; CD0FE9AEC71E72BBA5EDC48C7AD1A511 /* React-jsiexecutor.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-jsiexecutor.xcconfig"; sourceTree = ""; }; CD1A41557D9711A38CCC49769B2E64DD /* RCTBaseTextShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBaseTextShadowView.h; sourceTree = ""; }; @@ -5936,10 +6235,7 @@ CD3B18274C7390B7F392369B851990AD /* RCTRequired.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RCTRequired.xcconfig; sourceTree = ""; }; CD3C78B7160EC7119BD39667D355E1DD /* RCTWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTWeakProxy.m; sourceTree = ""; }; CD6A04E34E320C574D92651833E61C62 /* KeyboardTrackingViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KeyboardTrackingViewManager.h; path = lib/KeyboardTrackingViewManager.h; sourceTree = ""; }; - CD7864EB1FCB4EFCCDE103F9D8F50114 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; - CD8C1567FE91AF3DC28C2CCDF841BCE9 /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; - CDAB2A362C37E561051D58E59B8C6295 /* yuv_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_mips_dsp_r2.c; path = src/dsp/yuv_mips_dsp_r2.c; sourceTree = ""; }; - CDABE96C15F9B4FD9B3FA2B5448EFF61 /* dec_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_sse41.c; path = src/dsp/dec_sse41.c; sourceTree = ""; }; + CDAD3963A0F8EA40EAE6B916D5AA0A1F /* FBLPromise+Await.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Await.h"; path = "Sources/FBLPromises/include/FBLPromise+Await.h"; sourceTree = ""; }; CDB5F578E2042E693A3F18E5B3DA855A /* RCTWebSocketExecutor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTWebSocketExecutor.m; path = Libraries/WebSocket/RCTWebSocketExecutor.m; sourceTree = ""; }; CDBBCFB76DC32DEC120D50C17B098C0E /* RNFirebasePerformance.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebasePerformance.m; sourceTree = ""; }; CDCB0F44C93968319F5B2F7B8EBC8DEA /* RCTSurfaceStage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceStage.h; sourceTree = ""; }; @@ -5949,383 +6245,376 @@ CE0FCE9C44F84A0134940CC28EBE8AAF /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; CE2680792DF7834893B2F58F450A3ED6 /* RNFirebase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNFirebase.m; path = RNFirebase/RNFirebase.m; sourceTree = ""; }; CE4F6A837ACAFDF071968B59BBF37B73 /* RNDeviceInfo.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RNDeviceInfo.xcconfig; sourceTree = ""; }; + CE50447D6089FD034C451BE7675B6D7A /* picture_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_enc.c; path = src/enc/picture_enc.c; sourceTree = ""; }; CE5C53A1B492CD6BA850C71383973F6E /* RNNotificationCenterListener.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNNotificationCenterListener.m; path = RNNotifications/RNNotificationCenterListener.m; sourceTree = ""; }; - CE60F49EF77406B156BFE39692C9CCF7 /* nanopb-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "nanopb-dummy.m"; sourceTree = ""; }; CE61B3F28EBD3E2F62F2C9156F67624B /* RNUserDefaults.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNUserDefaults.m; path = ios/RNUserDefaults.m; sourceTree = ""; }; - CE88AE68164F8E5A2B29F0E225DD861F /* GULLoggerCodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLoggerCodes.h; path = GoogleUtilities/Common/GULLoggerCodes.h; sourceTree = ""; }; + CE71CD3D3C773A121030FB81AB751D1A /* GDTCORPlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORPlatform.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORPlatform.h; sourceTree = ""; }; CEB2BCA0F0DD370D4283F50B7F88290F /* RCTConvert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTConvert.h; sourceTree = ""; }; - CF2CA478943CD6319CC326CBC7DCA605 /* tree_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = tree_enc.c; path = src/enc/tree_enc.c; sourceTree = ""; }; + CF05DD10D852093D157806E5E953BD23 /* iterator_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = iterator_enc.c; path = src/enc/iterator_enc.c; sourceTree = ""; }; + CF993D633A32BC1ADCF4B996EA47AB13 /* FIRInstanceIDCheckinService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinService.h; path = Firebase/InstanceID/FIRInstanceIDCheckinService.h; sourceTree = ""; }; CFD5AEA230ECA97BDD5DFA2CB6101BD2 /* UMUserNotificationCenterProxyInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMUserNotificationCenterProxyInterface.h; path = UMPermissionsInterface/UMUserNotificationCenterProxyInterface.h; sourceTree = ""; }; - D012AFD43F6B9E215E2529EE1DE37372 /* RSKImageCropperStrings.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = RSKImageCropperStrings.bundle; path = RSKImageCropper/RSKImageCropperStrings.bundle; sourceTree = ""; }; + D00145960C57E93C0FE7769437FEFA04 /* FIRInstanceIDTokenDeleteOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenDeleteOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.h; sourceTree = ""; }; D02317A1264D11D9C88D834F0437492E /* BSG_KSCrashSentry_CPPException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashSentry_CPPException.h; sourceTree = ""; }; D02DEFE53D76538671483BD6ABAFF332 /* EXDownloadDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXDownloadDelegate.h; path = EXFileSystem/EXDownloadDelegate.h; sourceTree = ""; }; D051CE3F548B77940F8E4B0E54D0A708 /* EXWebBrowser.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EXWebBrowser.xcconfig; sourceTree = ""; }; D093A63288644F13E10F340EED802CBE /* RNFetchBlob.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFetchBlob.m; sourceTree = ""; }; D09A584413A8371E3BE799A82AD2D5EF /* React-RCTVibration.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTVibration.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - D0BBB1D952E11B5F023EB0D3FD91C887 /* FABAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FABAttributes.h; path = iOS/Fabric.framework/Headers/FABAttributes.h; sourceTree = ""; }; D0E0DFCD14E67C11706909A6A99C5344 /* React-RCTAnimation.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTAnimation.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + D0FE094866BD845597950E5E71ABA095 /* boost-for-react-native.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "boost-for-react-native.xcconfig"; sourceTree = ""; }; D115542288AF9DA2B7799D6CCF398704 /* BugsnagSessionTrackingPayload.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagSessionTrackingPayload.h; sourceTree = ""; }; D13E6CA127225217B17223047126DCF0 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; D1585C3D95C3736930C300B0FB361CAC /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; D16147733BCE6219197491A1619D4057 /* ios_date.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = ios_date.png; path = docs/images/ios_date.png; sourceTree = ""; }; D2126D3931AD02B5F31B449780DB9354 /* REAParamNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REAParamNode.h; sourceTree = ""; }; - D21357691A211111FCF423A64E04CAD4 /* boost-for-react-native.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "boost-for-react-native.xcconfig"; sourceTree = ""; }; + D21939B5F49D3C368E0AE91BCDCB1CF4 /* histogram_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = histogram_enc.h; path = src/enc/histogram_enc.h; sourceTree = ""; }; + D2339AD0FFA27A5E25CA38B3E89E724E /* FIRInstanceIDUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDUtilities.h; path = Firebase/InstanceID/FIRInstanceIDUtilities.h; sourceTree = ""; }; + D2435B61807A015F7C86DCAB5E5A19AC /* vp8li_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8li_enc.h; path = src/enc/vp8li_enc.h; sourceTree = ""; }; D25CB0CC8CE447B4C42427B04DFA8320 /* RNVectorIconsManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNVectorIconsManager.m; path = RNVectorIconsManager/RNVectorIconsManager.m; sourceTree = ""; }; - D2ACF36489C9B96840468D3F72ED2479 /* io_dec.c */ = {isa = PBXFileReference; includeInIndex = 1; name = io_dec.c; path = src/dec/io_dec.c; sourceTree = ""; }; D2E9528C15F34FC663E46FCF92A0ABB1 /* RCTSwitchManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSwitchManager.h; sourceTree = ""; }; - D307D68C68FE4F52BA3146D3C90DDE83 /* lossless_enc_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_mips_dsp_r2.c; path = src/dsp/lossless_enc_mips_dsp_r2.c; sourceTree = ""; }; D31D1C26D5CC77343AF15248ADE7F6BA /* ARTText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ARTText.m; path = ios/ARTText.m; sourceTree = ""; }; D32FD2DC67C23F6E6A8180188AD1592C /* RCTRedBox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRedBox.h; sourceTree = ""; }; + D34AAFE9C37C1A4DC2FFAF19DFF69CDC /* dec_clip_tables.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_clip_tables.c; path = src/dsp/dec_clip_tables.c; sourceTree = ""; }; + D3601FC2175A7805C42496F6D3F25E1D /* GDTCOREventDataObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCOREventDataObject.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCOREventDataObject.h; sourceTree = ""; }; D38935DB2A21836A8A17D87C02FE8DCC /* RCTClipboard.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTClipboard.m; sourceTree = ""; }; D3902FEAF386765D6D0AE0F129445AC6 /* REACallFuncNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REACallFuncNode.h; sourceTree = ""; }; D392E813171E4AF47DB543E300F51995 /* RCTSettingsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTSettingsManager.h; path = Libraries/Settings/RCTSettingsManager.h; sourceTree = ""; }; D3962AC3887D0F520323B79177D86337 /* UMFaceDetectorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMFaceDetectorManager.h; path = UMFaceDetectorInterface/UMFaceDetectorManager.h; sourceTree = ""; }; + D3ABC6469D72A242803A91AF2DA0B153 /* FIRInstallationsItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsItem.h; path = FirebaseInstallations/Source/Library/FIRInstallationsItem.h; sourceTree = ""; }; D3CEBF185736931401D88D86C390B09E /* RNFirebaseStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseStorage.h; sourceTree = ""; }; - D3FE0D74F6529795B2FC779F7DC99CF2 /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; - D40726BFD729316AABE7209F9CE71ECB /* alpha_processing_sse41.c */ = {isa = PBXFileReference; includeInIndex = 1; name = alpha_processing_sse41.c; path = src/dsp/alpha_processing_sse41.c; sourceTree = ""; }; + D4389EC289745BCEF60BEA7CDAC784D2 /* GULAppDelegateSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULAppDelegateSwizzler.m; path = GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m; sourceTree = ""; }; D43DE3DC7792E0B353371829F68C0FFD /* Pods-ShareRocketChatRN-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ShareRocketChatRN-acknowledgements.markdown"; sourceTree = ""; }; - D4576431923B32B28E848D30EB34BD00 /* Unicode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Unicode.cpp; path = folly/Unicode.cpp; sourceTree = ""; }; - D4A123FC94E7410BEA6E2DC48D0926F3 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; D4D3029D489B9CC30FC5E9DFF1C63994 /* UMCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UMCore-dummy.m"; sourceTree = ""; }; - D4FD56965FE3FFBFD0C50087FDE7D6F4 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; D50D717ED039514E7E3EF72E9ED56463 /* RCTFont.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFont.h; sourceTree = ""; }; - D54A835DCAEBC10A120B48CEBA085CC1 /* FIRIMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRIMessageCode.h; path = Firebase/InstanceID/FIRIMessageCode.h; sourceTree = ""; }; - D54F6EA8F501C29E00AD8D0F3E53A1CA /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; - D563B3F8B5F2EC3024FAB3290E161100 /* muxread.c */ = {isa = PBXFileReference; includeInIndex = 1; name = muxread.c; path = src/mux/muxread.c; sourceTree = ""; }; - D57BF655F31F1339675D0B395963F052 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; + D525C8CC60B15909F0B82D63E338E963 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; + D53A23815D628A7C3EFFC59488C8EA44 /* filters_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters_utils.c; path = src/utils/filters_utils.c; sourceTree = ""; }; + D53CE5F9F1B3C1396FB3444A3DC670B0 /* FIRInstanceIDURLQueryItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDURLQueryItem.m; path = Firebase/InstanceID/FIRInstanceIDURLQueryItem.m; sourceTree = ""; }; D5AE47A56689398D07D34765AF4F992F /* KeyCommands-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "KeyCommands-prefix.pch"; sourceTree = ""; }; - D5B7CF80A43E501BEA20FB90FF049DD4 /* FIRInstanceIDTokenManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenManager.m; path = Firebase/InstanceID/FIRInstanceIDTokenManager.m; sourceTree = ""; }; + D5B3BDB0DF8A0EE45046BCB479E4B62C /* GDTCORDataFuture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORDataFuture.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORDataFuture.h; sourceTree = ""; }; D5C775614AC76D44CECB6BE08B022F1F /* libReactCommon.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libReactCommon.a; path = libReactCommon.a; sourceTree = BUILT_PRODUCTS_DIR; }; D5EB99574208D9F9DC8FB859A56BEFED /* REAPropsNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REAPropsNode.h; sourceTree = ""; }; D5EBFB7008852607CECC355E06C9C6E0 /* BugsnagReactNative.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = BugsnagReactNative.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; D62B7A3B4AF1152F21105D3B2E827CE0 /* UMSingletonModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = UMSingletonModule.m; path = UMCore/UMSingletonModule.m; sourceTree = ""; }; D638C2BB3396581FAFA06A88C595108E /* BSG_KSCrashReportVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashReportVersion.h; sourceTree = ""; }; + D63B972B95C4ACEAA36C351BF1B2CDDD /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; D63D5DE507EB9E643CA55FF3A3F4B965 /* RNGestureHandlerRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNGestureHandlerRegistry.m; path = ios/RNGestureHandlerRegistry.m; sourceTree = ""; }; D65685F530E8F51BABCEE69624EBCEEA /* BSG_KSCrashState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSG_KSCrashState.m; sourceTree = ""; }; D66376417C047FE531FA96D8FE8291E2 /* RCTModalManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTModalManager.m; sourceTree = ""; }; - D685191518CCCE8477FBB30EA847D2D9 /* FIRAnalyticsConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRAnalyticsConfiguration.h; path = Firebase/Core/Private/FIRAnalyticsConfiguration.h; sourceTree = ""; }; - D68865F99A8F6659659285B0079FA045 /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; - D691A336ECF8181AE201DD7D26ADEBD4 /* GULLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLogger.h; path = GoogleUtilities/Logger/Private/GULLogger.h; sourceTree = ""; }; + D66719B7E0573E532519532723F67812 /* Assume.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Assume.cpp; path = folly/lang/Assume.cpp; sourceTree = ""; }; D6B3569005FEF35CBCD397365AD669B3 /* RCTSurface.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurface.mm; sourceTree = ""; }; D6B419897B04EAAC0A2AB67C32CA7463 /* FBLazyIterator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLazyIterator.h; path = FBLazyVector/FBLazyIterator.h; sourceTree = ""; }; - D6DD593F04D58A5F3553692C25B27A02 /* GULNetworkMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkMessageCode.h; path = GoogleUtilities/Network/Private/GULNetworkMessageCode.h; sourceTree = ""; }; D6F407857CF8E797D83CF81B4DDA0B83 /* RCTDivisionAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDivisionAnimatedNode.m; sourceTree = ""; }; D7009140009F7E9B686F2ADB91FDB555 /* RNFirebaseLinks.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseLinks.m; sourceTree = ""; }; + D701D1816B81717849B176050ED98E4F /* FBLPromise+Testing.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Testing.m"; path = "Sources/FBLPromises/FBLPromise+Testing.m"; sourceTree = ""; }; D71A3992E7CF3B86949CE9209EB49D59 /* RNNativeViewHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNNativeViewHandler.m; sourceTree = ""; }; D71AAC75BDB588DFAAE75A0084139675 /* react-native-document-picker-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-document-picker-prefix.pch"; sourceTree = ""; }; + D74BB20E1BC0B778FF8CFFA36C0840CF /* rescaler_sse2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_sse2.c; path = src/dsp/rescaler_sse2.c; sourceTree = ""; }; + D7593711A2E6EAD105E206B03D6E3616 /* UIColor+HexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+HexString.m"; path = "SDWebImage/Private/UIColor+HexString.m"; sourceTree = ""; }; D75C4193CBE762C23A5DC2FB6DFF2462 /* log.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = log.h; path = yoga/log.h; sourceTree = ""; }; + D76568A132A5A42C9799FAF84FB8BD09 /* GDTCORStorage_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORStorage_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORStorage_Private.h; sourceTree = ""; }; + D78FEB55F9E2565E62801C68DC429BCE /* FIRInstanceID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceID.m; path = Firebase/InstanceID/FIRInstanceID.m; sourceTree = ""; }; D798488795753C7103E292B908093381 /* ARTTextFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ARTTextFrame.h; path = ios/ARTTextFrame.h; sourceTree = ""; }; + D79E6FEE7691DA5E934AADB1851C0232 /* encode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = encode.h; path = src/webp/encode.h; sourceTree = ""; }; D7ABCAC09C0A0EA009BA1246F79595CB /* React-RCTBlob-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTBlob-dummy.m"; sourceTree = ""; }; - D7AF0EEF43F86081748C36A1C9D9A230 /* GDTCCTPrioritizer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTPrioritizer.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTPrioritizer.m; sourceTree = ""; }; D7B69490D4E712916566E0CCCDF08953 /* RCTSlider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSlider.h; sourceTree = ""; }; D7E4D46622518C9F84C86F8D27596A4A /* RCTRootView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRootView.m; sourceTree = ""; }; D800362A1EAC706DB637DDDA815FCB64 /* RCTAsyncLocalStorage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTAsyncLocalStorage.m; sourceTree = ""; }; D80D5D7DE95EF5FEBB5FCFC91ACE7124 /* UMFileSystemInterface.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = UMFileSystemInterface.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; D8138F80FD52EEC80E47EADAFF73B580 /* RNFetchBlobFS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNFetchBlobFS.h; path = ios/RNFetchBlobFS.h; sourceTree = ""; }; + D8183FDF6CBBC2458D910575E0B9AE45 /* rescaler_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = rescaler_utils.h; path = src/utils/rescaler_utils.h; sourceTree = ""; }; D83142FBA1E2CB2148D3EED347D483FB /* react-native-appearance-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-appearance-prefix.pch"; sourceTree = ""; }; D86B87674697BCE5BC5B2C09E088521A /* RCTRootViewDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRootViewDelegate.h; sourceTree = ""; }; D87EC78B85E8485FBD61F0D265007A55 /* ARTLinearGradient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ARTLinearGradient.m; sourceTree = ""; }; D88A8CB93215FC62B8F7F4B729D1A2D3 /* UIView+React.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIView+React.h"; sourceTree = ""; }; D89B07927047B4DADE70F271874C1179 /* RCTView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTView.m; sourceTree = ""; }; + D8ABBD704A725E7E0D996145CBF6F03A /* bit_reader_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bit_reader_utils.h; path = src/utils/bit_reader_utils.h; sourceTree = ""; }; D8B8D5E98E85919D0D2AE0E7AA270542 /* ARTText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ARTText.h; path = ios/ARTText.h; sourceTree = ""; }; D8D6E02317F787EC529CB53BDD23902B /* RCTUIUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUIUtils.m; sourceTree = ""; }; + D8DE3BC13CAB60BD0F12942A7720BC23 /* FIRDiagnosticsData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRDiagnosticsData.m; path = FirebaseCore/Sources/FIRDiagnosticsData.m; sourceTree = ""; }; + D91483DC2ACFBE14D934FB42131A0745 /* webpi_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = webpi_dec.h; path = src/dec/webpi_dec.h; sourceTree = ""; }; D9170605CA60EF92BD30F13A4F040A04 /* EXSystemBrightnessRequester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXSystemBrightnessRequester.h; path = EXPermissions/EXSystemBrightnessRequester.h; sourceTree = ""; }; + D93D3654709D1331D79514EC1B960450 /* lossless_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_mips_dsp_r2.c; path = src/dsp/lossless_mips_dsp_r2.c; sourceTree = ""; }; D9515AF621FACD624F464EB9B8404E4F /* RCTTouchEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTouchEvent.h; sourceTree = ""; }; + D996FB83753842B15AAE13001FED927E /* UIApplication+RSKImageCropper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIApplication+RSKImageCropper.m"; path = "RSKImageCropper/UIApplication+RSKImageCropper.m"; sourceTree = ""; }; D9A8502E9AE2B82E3B1A952D5000C0ED /* react-native-orientation-locker-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-orientation-locker-prefix.pch"; sourceTree = ""; }; D9B5BCAD33B439C0015688D73B83F8C7 /* RNAudio-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNAudio-prefix.pch"; sourceTree = ""; }; D9B6A539690F8003219B15082B9B25C7 /* Yoga.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Yoga.xcconfig; sourceTree = ""; }; D9BE4D1608A09FE10A9E3B412A392C07 /* BSG_KSObjC.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSObjC.c; sourceTree = ""; }; - D9C066C867C0E4440BCF224357AEA143 /* GDTPlatform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTPlatform.h; path = GoogleDataTransport/GDTLibrary/Public/GDTPlatform.h; sourceTree = ""; }; + D9C3D3CC551D9381EB6D1805585CF24D /* FIRInstanceIDAuthKeyChain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAuthKeyChain.m; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.m; sourceTree = ""; }; D9D21E025012A678F9BBDDA66EC83FCD /* React-RCTVibration-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTVibration-prefix.pch"; sourceTree = ""; }; - D9E1543EA3F83B6350BB339D31E74A42 /* lossless_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_neon.c; path = src/dsp/lossless_neon.c; sourceTree = ""; }; D9F334F2E90E3EE462FC4192AF5C03BD /* libReact-jsi.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-jsi.a"; path = "libReact-jsi.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - DA29FECAE359C2F2950641F461432B96 /* FIRInstanceIDUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDUtilities.h; path = Firebase/InstanceID/FIRInstanceIDUtilities.h; sourceTree = ""; }; DA3AB05FE90FFEEA3D320C38916D44AC /* Orientation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Orientation.h; path = iOS/RCTOrientation/Orientation.h; sourceTree = ""; }; DA46EC3F7B4ACC9EE9EFC228D62084F1 /* RCTTiming.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTiming.m; sourceTree = ""; }; - DA4A37B4969CB37F3A28EC8850F7C400 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; DA8B43484450F255AC756580DC3F49C0 /* UMSensorsInterface.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = UMSensorsInterface.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; DA9AAE44CF3B1F9CBD5F932B34C3A912 /* RCTShadowView+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTShadowView+Internal.h"; sourceTree = ""; }; DAA490AB8CAED42668DC35D43BA2575D /* UMViewManagerAdapterClassesRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMViewManagerAdapterClassesRegistry.h; sourceTree = ""; }; DAA759120E9B45A001D557D37AAD677D /* rn-extensions-share-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "rn-extensions-share-prefix.pch"; sourceTree = ""; }; + DAD1EC07061CD01D8DB00C1DF9CBA5B9 /* SDWebImageWebPCoder-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImageWebPCoder-dummy.m"; sourceTree = ""; }; DB1A81F1252B43F5F5ECB2C3F5872E62 /* RCTModuleMethod.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModuleMethod.h; sourceTree = ""; }; - DB35135339DD95C379CB3511AB5F8F99 /* CLSLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSLogging.h; path = iOS/Crashlytics.framework/Headers/CLSLogging.h; sourceTree = ""; }; + DB4059D2FB364A28E6585D247CD47FBA /* lossless.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lossless.h; path = src/dsp/lossless.h; sourceTree = ""; }; DB738437742B8F8F39C9F91C3FBD639A /* RNFirebase-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNFirebase-prefix.pch"; sourceTree = ""; }; DB772E12EF9B7EF2053FA1739EE01341 /* react-native-video.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "react-native-video.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - DB99F2676D30EF6AB07A50ACC6AD4D23 /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; DBC55BDAFCF76EF408F711747E2104F6 /* UMViewManagerAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMViewManagerAdapter.h; sourceTree = ""; }; DBCA195BCAFC9C66DBE902BE6B9EF2E8 /* READebugNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = READebugNode.h; sourceTree = ""; }; - DBD19985FDA6E09B99A41FCAEBE6B1BE /* picture_rescale_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = picture_rescale_enc.c; path = src/enc/picture_rescale_enc.c; sourceTree = ""; }; DBE6E85653366321A31E90396130F69E /* RCTReconnectingWebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTReconnectingWebSocket.h; path = Libraries/WebSocket/RCTReconnectingWebSocket.h; sourceTree = ""; }; DC0B02E92152D5231A7995E9D166C4C0 /* RNDateTimePickerManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNDateTimePickerManager.h; path = ios/RNDateTimePickerManager.h; sourceTree = ""; }; - DC1ED14685D94D7B65AD30A55F657B68 /* backward_references_cost_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = backward_references_cost_enc.c; path = src/enc/backward_references_cost_enc.c; sourceTree = ""; }; - DCB22A38791F748AE8290C77D99CCC56 /* cost_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_neon.c; path = src/dsp/cost_neon.c; sourceTree = ""; }; + DC3FBA3E5B2AE0036A215BD1C8E37D31 /* ColdClass.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = ColdClass.cpp; path = folly/lang/ColdClass.cpp; sourceTree = ""; }; + DC834FE770DBAFD4CAD544AB5F592ED4 /* FIRInstallations.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallations.m; path = FirebaseInstallations/Source/Library/FIRInstallations.m; sourceTree = ""; }; + DCA1074616EEF1BC09293FE2105C9CFC /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; + DCADAF076921DEC4D671151F9E0C9584 /* lossless_enc_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc_mips_dsp_r2.c; path = src/dsp/lossless_enc_mips_dsp_r2.c; sourceTree = ""; }; + DCB16C1702DEA720BC36211E43A6596E /* logging.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = logging.cc; path = src/logging.cc; sourceTree = ""; }; + DCB23ABFC8B49A5E319D843667A25D15 /* rescaler.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler.c; path = src/dsp/rescaler.c; sourceTree = ""; }; DCD7924BE0A9DE6A96D091A46DC54D9A /* RCTSinglelineTextInputViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSinglelineTextInputViewManager.m; sourceTree = ""; }; - DCF4CED8CD3D2B43426543E727D6D881 /* FirebaseAnalytics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseAnalytics.xcconfig; sourceTree = ""; }; + DD2806395B36E55041B47CB2F212D053 /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; DD62AC3EB3E406698321F90D62839E7C /* REASetNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REASetNode.m; sourceTree = ""; }; - DD6632004F2003DCDE912F11C44CEA56 /* alphai_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = alphai_dec.h; path = src/dec/alphai_dec.h; sourceTree = ""; }; - DD6D91740B8B962C4CE62F898542B1A6 /* GoogleDataTransport.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleDataTransport.xcconfig; sourceTree = ""; }; + DD709B78F7B831FDC9366D13746333E0 /* GULNetworkURLSession.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkURLSession.h; path = GoogleUtilities/Network/Private/GULNetworkURLSession.h; sourceTree = ""; }; DD854D6DCDCAC32BB6D0CAA3C459B62D /* ARTNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ARTNode.m; path = ios/ARTNode.m; sourceTree = ""; }; - DD9132B64FBE45A4C87A571D30B33B93 /* histogram_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = histogram_enc.c; path = src/enc/histogram_enc.c; sourceTree = ""; }; DDAA8B9633804B8827E8837B91A28A1D /* ios_time.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = ios_time.png; path = docs/images/ios_time.png; sourceTree = ""; }; - DDD8773720268ECF1673636082B7B0D9 /* FIRComponentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainer.h; path = Firebase/Core/Private/FIRComponentContainer.h; sourceTree = ""; }; - DDE8F8D657B4AD8D68519848C7E00D6E /* SDWebImageWebPCoder-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImageWebPCoder-dummy.m"; sourceTree = ""; }; DE05734837A6096134BCC6E569C3139D /* api.md */ = {isa = PBXFileReference; includeInIndex = 1; name = api.md; path = docs/api.md; sourceTree = ""; }; DE374EF524BADF6A8BBCC5700C4FF753 /* UMReactNativeEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMReactNativeEventEmitter.h; sourceTree = ""; }; - DE53658AF11CD49486D35DB8F2FE3A22 /* decode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = decode.h; path = src/webp/decode.h; sourceTree = ""; }; DE94B45B20EBA3A79B75B576DB1CE5B4 /* RCTPickerManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTPickerManager.m; sourceTree = ""; }; DE9504A2A6B1C25558882AE62B22F9A5 /* BugsnagCrashSentry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagCrashSentry.h; sourceTree = ""; }; - DE96E733840BAB2944ACD371EAEE2C12 /* FIRInstanceID+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceID+Private.h"; path = "Firebase/InstanceID/Private/FIRInstanceID+Private.h"; sourceTree = ""; }; - DE9969CA71BDB274B67CCEA11C0020C2 /* vp8li_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = vp8li_enc.h; path = src/enc/vp8li_enc.h; sourceTree = ""; }; - DEA0269F260ECF8399E22CDBCE670D9D /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; - DEA1AFC7815DE289321DB234082AB133 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; - DEB68940C750201971089751E74F2668 /* SDImageWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageWebPCoder.m; path = SDWebImageWebPCoder/Classes/SDImageWebPCoder.m; sourceTree = ""; }; - DEC91BA0271EDD25AC990885269AAA63 /* GoogleAppMeasurement.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAppMeasurement.xcconfig; sourceTree = ""; }; + DED9FC57D70D86176F806A8A2529655A /* RSKImageCropper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RSKImageCropper.xcconfig; sourceTree = ""; }; DF0F7834E6C0999B04A1ABAE902B1297 /* BSG_KSCrash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrash.h; sourceTree = ""; }; DF18B8EFC438372BC3B6F6B072B43455 /* RCTFrameAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFrameAnimation.h; sourceTree = ""; }; - DF1C9C2F9BBA22563F68A4571E4CF429 /* GULAppDelegateSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppDelegateSwizzler.h; path = GoogleUtilities/AppDelegateSwizzler/Private/GULAppDelegateSwizzler.h; sourceTree = ""; }; DF2A3F848353E02D17E28812EC17B706 /* react-native-keyboard-input-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-keyboard-input-prefix.pch"; sourceTree = ""; }; DF342B6B052DB50BEC1415A3036A6F39 /* UMMagnetometerUncalibratedInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMMagnetometerUncalibratedInterface.h; path = UMSensorsInterface/UMMagnetometerUncalibratedInterface.h; sourceTree = ""; }; - DF3B6A5615D38501C12A332422F0D8FD /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; - DF9802471B3C38BE71E6DFC462B60585 /* pb_decode.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_decode.c; sourceTree = ""; }; + DFC6BCB3B33D02DBB888628D1E52A351 /* histogram_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = histogram_enc.c; path = src/enc/histogram_enc.c; sourceTree = ""; }; DFF060107B7AABE7F62B8FEEA39C3610 /* RNFirebaseAdMob.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseAdMob.m; sourceTree = ""; }; DFF6B66AD8BD4CED51BA0C7DB2168BC6 /* YGLayout.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = YGLayout.cpp; path = yoga/YGLayout.cpp; sourceTree = ""; }; DFFA4E87052B6065E039BA191735CB91 /* RCTAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTAnimatedImage.m; sourceTree = ""; }; DFFEB90D12B0A3D0EC41CA71AEDD6485 /* RCTCxxUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxUtils.h; sourceTree = ""; }; - E003996EDDFC4DAC0E9DA2A7A151C5C9 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; + E05491038895B9B893771A35A083EAA8 /* FirebaseInstanceID-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseInstanceID-dummy.m"; sourceTree = ""; }; + E06128CB543E05DF7D4F8B8A3EF8EEF2 /* GDTCORStoredEvent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORStoredEvent.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORStoredEvent.h; sourceTree = ""; }; E07D0B943DAD7D7AB04C7BFE016DCBFF /* UMKernelService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMKernelService.h; sourceTree = ""; }; E08255D813D805A74DF0E2AC2D562207 /* UMModuleRegistryProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMModuleRegistryProvider.h; sourceTree = ""; }; E09BBD190BFD8F1D383C10221631F5DC /* RCTScrollContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollContentView.m; sourceTree = ""; }; + E0E17F86AEE63B4E96B07B6417885A38 /* GDTCORLifecycle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORLifecycle.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORLifecycle.h; sourceTree = ""; }; E0EA2AA36E21EDB27E8CBCE76EC31EEC /* RCTNetworkTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTNetworkTask.h; path = Libraries/Network/RCTNetworkTask.h; sourceTree = ""; }; E0F498276475AF9EB123E331A4CCB2F3 /* RNPanHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNPanHandler.m; sourceTree = ""; }; E0FE6533198104C97DB047DD5CD8AC67 /* libRNDeviceInfo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNDeviceInfo.a; path = libRNDeviceInfo.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E10C2950FAF761DCACFC19CB9D52CF9C /* upsampling_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_msa.c; path = src/dsp/upsampling_msa.c; sourceTree = ""; }; E12DA10290867974F37743E322B25F95 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; E1468AC437F1F375A17C5232350DF95F /* BSG_KSMach.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSMach.c; sourceTree = ""; }; + E146C49FCEE4ED98740C53D8AF16B54A /* FIRInstallationsStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsStore.h; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.h; sourceTree = ""; }; E147E303AD172D0F1385F1896F47B2D0 /* REAJSCallNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REAJSCallNode.m; sourceTree = ""; }; + E154067690FE650334C7C3D34DA323A1 /* filters.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filters.c; path = src/dsp/filters.c; sourceTree = ""; }; E16B31693808D9810E08D38B3EF71479 /* RNFirebaseMessaging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseMessaging.m; sourceTree = ""; }; E16F32AB7DCAAD31BCA1ABF27AD35118 /* RNRootView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNRootView-dummy.m"; sourceTree = ""; }; E179A8C165A31CC3B2B02FE8FAFD6CF7 /* Entypo.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = Entypo.ttf; path = Fonts/Entypo.ttf; sourceTree = ""; }; E18F9D50F84AB4FDC09863F28B537CED /* UMReactNativeAdapter-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UMReactNativeAdapter-prefix.pch"; sourceTree = ""; }; E1AC7446DCA0665C90D621BE057E9256 /* RCTDevSettings.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTDevSettings.mm; sourceTree = ""; }; - E1B228189E45D0324E55F165C73F0C90 /* upsampling_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = upsampling_msa.c; path = src/dsp/upsampling_msa.c; sourceTree = ""; }; E1B9853EEABB86B11759DFCB1EBCA3B8 /* RCTInspectorDevServerHelper.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTInspectorDevServerHelper.mm; sourceTree = ""; }; E1BC3269BA7653A13FEAAD56B72D8271 /* react-native-appearance.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "react-native-appearance.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - E1EEF36D6AEB82A30BC411B8B360BF77 /* GDTPrioritizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTPrioritizer.h; path = GoogleDataTransport/GDTLibrary/Public/GDTPrioritizer.h; sourceTree = ""; }; - E1FF3ABBB86D23C6F4AF464146BCB44E /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; + E1E98A139B0A1E84E12ACFECE2DCC7BC /* MallocImpl.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = MallocImpl.cpp; path = folly/memory/detail/MallocImpl.cpp; sourceTree = ""; }; E20BECAAF117D13FDFA68D903AB2823F /* RCTTouchEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTouchEvent.m; sourceTree = ""; }; E22B3EB392ABB38E366C116EA756EF58 /* React-RCTLinking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-RCTLinking-prefix.pch"; sourceTree = ""; }; E22FF3121770287992115335C6CBFE83 /* EXConstants-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EXConstants-dummy.m"; sourceTree = ""; }; - E258A8E46A886DA9F51CC133614C1696 /* lossless_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_enc.c; path = src/dsp/lossless_enc.c; sourceTree = ""; }; - E25C54E541F5F5072F951EC6F023180F /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; + E24A9D8245F7C2A76A8F628651409D86 /* cost_mips_dsp_r2.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost_mips_dsp_r2.c; path = src/dsp/cost_mips_dsp_r2.c; sourceTree = ""; }; E2967FC394675462ECF917E020B88494 /* UMJavaScriptContextProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMJavaScriptContextProvider.h; sourceTree = ""; }; E2AA0ED6787A5B84B6EE8F547631B88A /* REASetNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REASetNode.h; sourceTree = ""; }; E2AC3A79DBAB72A429EBF14D12AAC4FF /* EXWebBrowser-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EXWebBrowser-prefix.pch"; sourceTree = ""; }; E2B63D462DB7F827C4B11FD51E4F8E2D /* libFirebaseCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFirebaseCore.a; path = libFirebaseCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E2E3C8E6D99317CEB9799CEDC4EF10E0 /* FIRInstallationsLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsLogger.h; path = FirebaseInstallations/Source/Library/FIRInstallationsLogger.h; sourceTree = ""; }; + E2FDE91FD70FFC43E88F683DC84004E6 /* FIRBundleUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRBundleUtil.m; path = FirebaseCore/Sources/FIRBundleUtil.m; sourceTree = ""; }; E320C50D0CCAE45C2D45611E61C085EE /* ARTShapeManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ARTShapeManager.m; sourceTree = ""; }; - E33417ACBFBAB178C661615BA5AB68FD /* FIRInstanceIDKeyPairUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeyPairUtilities.m; path = Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.m; sourceTree = ""; }; E33C46C6703349E1B249516B38ABD63C /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; - E33DB78328A822A9C5D7101BE31F544A /* thread_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = thread_utils.c; path = src/utils/thread_utils.c; sourceTree = ""; }; - E35994BA61AA03850DB1775AB78F5240 /* histogram_enc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = histogram_enc.h; path = src/enc/histogram_enc.h; sourceTree = ""; }; - E36BC1838BBE0A3C1226042850FB19C3 /* nanopb.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = nanopb.xcconfig; sourceTree = ""; }; E375C63826F12FB78D6646874BE63CEF /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; E383A34BBE4DF7BC8C5EC68FB84DE350 /* RNPushKit.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNPushKit.m; path = RNNotifications/RNPushKit.m; sourceTree = ""; }; E40D66AD3F0AA0EC528EA8FA8910211C /* RCTWebSocketModule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTWebSocketModule.h; path = Libraries/WebSocket/RCTWebSocketModule.h; sourceTree = ""; }; E411B627C7408136EA1D39A3F6696869 /* BSG_KSCrash.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSG_KSCrash.m; sourceTree = ""; }; - E4376CCDB1E042F671C3D5BABF69B876 /* enc_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = enc_mips32.c; path = src/dsp/enc_mips32.c; sourceTree = ""; }; + E427482FF0816F936F72DF5FD9CAB3BC /* pb_common.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pb_common.c; sourceTree = ""; }; E44F908151A562A3AF20B69A1D54098E /* RNFetchBlobReqBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNFetchBlobReqBuilder.m; path = ios/RNFetchBlobReqBuilder.m; sourceTree = ""; }; E46B1AF5E106478A68F22A098B1BEC5C /* UMUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMUtilities.h; path = UMCore/UMUtilities.h; sourceTree = ""; }; E496A53A92B4E464B5C30DC5B1E4E257 /* libRNRootView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNRootView.a; path = libRNRootView.a; sourceTree = BUILT_PRODUCTS_DIR; }; - E4ABD4161A335B5730AA14BC21DFBFD1 /* UIColor+HexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+HexString.h"; path = "SDWebImage/Private/UIColor+HexString.h"; sourceTree = ""; }; - E4DEC78771EBC06D1CC9FFE168FB912D /* FIROptions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIROptions.m; path = Firebase/Core/FIROptions.m; sourceTree = ""; }; E4FCD746909AA36FD59C8BE52573CC6E /* RCTInspector.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTInspector.mm; sourceTree = ""; }; + E4FD42C315AF54A28629FCA573EB25FA /* Fabric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fabric.h; path = iOS/Fabric.framework/Headers/Fabric.h; sourceTree = ""; }; + E50163A58ADB7FB1A0B8C52679BD982C /* CLSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSStackFrame.h; path = iOS/Crashlytics.framework/Headers/CLSStackFrame.h; sourceTree = ""; }; + E503EE768F7FB7BA45AF2BCAD9C1BFED /* FBLPromise+Delay.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FBLPromise+Delay.m"; path = "Sources/FBLPromises/FBLPromise+Delay.m"; sourceTree = ""; }; E50F1BDB59560C2208BC53CD88107847 /* UMAppLifecycleListener.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMAppLifecycleListener.h; sourceTree = ""; }; E5385A8D8663E76400E26DE09608AD04 /* RCTUITextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUITextView.h; sourceTree = ""; }; - E55949C58B399743C8A2FAF2397938F2 /* GULUserDefaults.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULUserDefaults.m; path = GoogleUtilities/UserDefaults/GULUserDefaults.m; sourceTree = ""; }; E55EA3C6F285F6FA8067C5C8A428FA64 /* libRNFastImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNFastImage.a; path = libRNFastImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; E569D86CD050677F1EF7A85AF453CFA7 /* NSValue+Interpolation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NSValue+Interpolation.h"; sourceTree = ""; }; E5878A1E7D3087A8215BF63C5CAA5193 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + E5BFD2113CD9F64E3ED9DA735B433731 /* syntax_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = syntax_enc.c; path = src/enc/syntax_enc.c; sourceTree = ""; }; E5C7FEE81D653379FD6F11F5976D61FB /* RCTSliderManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSliderManager.h; sourceTree = ""; }; E5D1EC5C7CAF9E367FAD46B57EBF977F /* RCTDecayAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDecayAnimation.h; sourceTree = ""; }; - E63334E9E147920AD55E8F4B08B6FDF8 /* GDTUploadPackage_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTUploadPackage_Private.h; path = GoogleDataTransport/GDTLibrary/Private/GDTUploadPackage_Private.h; sourceTree = ""; }; E63C65400C7C42AB2ADFD6A72C8D8036 /* Utils.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Utils.cpp; path = yoga/Utils.cpp; sourceTree = ""; }; E68BE7F4B132FCD9FC730DDAE3630F8D /* EXCalendarRequester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXCalendarRequester.h; path = EXPermissions/EXCalendarRequester.h; sourceTree = ""; }; - E697151248E9D0827AB6DF49ADAA73EA /* FIRInstanceIDCheckinPreferences_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinPreferences_Private.h; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences_Private.h; sourceTree = ""; }; E6A16705C69FC7DE11C2469A4A0F8358 /* libReact-RCTText.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-RCTText.a"; path = "libReact-RCTText.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - E6A4AB4466400E7177CD81A00D56EC7D /* endian_inl_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = endian_inl_utils.h; path = src/utils/endian_inl_utils.h; sourceTree = ""; }; - E6ADD528E5DC12441ED796F0C6E118D6 /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; + E6D457DA870054C0D84E3800FDA55894 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; E6EA9651E5B0FD1B215952D8D2002607 /* ReactCommon-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ReactCommon-prefix.pch"; sourceTree = ""; }; - E6F1D1E9706AB9D1DCDD8ABE42EB7FE9 /* cost.c */ = {isa = PBXFileReference; includeInIndex = 1; name = cost.c; path = src/dsp/cost.c; sourceTree = ""; }; - E715A7145663F9339D4E7F52DA5E3932 /* FIRInstanceIDConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDConstants.m; path = Firebase/InstanceID/FIRInstanceIDConstants.m; sourceTree = ""; }; + E71363AF216BF6A9FDEDA89C8D14B6A2 /* muxedit.c */ = {isa = PBXFileReference; includeInIndex = 1; name = muxedit.c; path = src/mux/muxedit.c; sourceTree = ""; }; + E728B448CD6DE78410A3FA3D7DFFAF58 /* FIRInstanceIDCheckinPreferences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinPreferences.m; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences.m; sourceTree = ""; }; + E73C501A0EB747305BB4AAD7978E3E0E /* GULSceneDelegateSwizzler_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULSceneDelegateSwizzler_Private.h; path = GoogleUtilities/SceneDelegateSwizzler/Internal/GULSceneDelegateSwizzler_Private.h; sourceTree = ""; }; E74648815DF469E32BC60D459AC2BAA3 /* React-RCTText.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTText.xcconfig"; sourceTree = ""; }; E75BE57A61B40A7B224FE39774231435 /* UIResponder+FirstResponder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIResponder+FirstResponder.h"; path = "lib/UIResponder+FirstResponder.h"; sourceTree = ""; }; + E76F1E8AD66134342407C6C7C3FD17A8 /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; E7855F1C527C5192F72CFF6A5D46C931 /* RCTSafeAreaView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaView.m; sourceTree = ""; }; E7AFB949AA68523D3816D43F5D0B6829 /* JSIExecutor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSIExecutor.h; path = jsireact/JSIExecutor.h; sourceTree = ""; }; E7B3640BF5E94E328E51EA79A6AAC58F /* RNFirebaseFirestoreCollectionReference.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseFirestoreCollectionReference.m; sourceTree = ""; }; - E7CE121DF2DE02220806316553608552 /* FIRDiagnosticsData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDiagnosticsData.h; path = Firebase/Core/Private/FIRDiagnosticsData.h; sourceTree = ""; }; - E7D311016AE55CFBF49595940BB2F606 /* GDTUploadPackage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTUploadPackage.m; path = GoogleDataTransport/GDTLibrary/GDTUploadPackage.m; sourceTree = ""; }; - E7DBE578144365956009AA5CE27574C9 /* lossless.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = lossless.h; path = src/dsp/lossless.h; sourceTree = ""; }; + E7DE8C91E01DA1613F5EC7CD66F28061 /* FIRInstanceIDCheckinPreferences_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinPreferences_Private.h; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences_Private.h; sourceTree = ""; }; + E818294C08CF5776BB1D71226C8C1B0A /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; + E82A30AEF74EE71AF0B62661B8B26951 /* GULLoggerCodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLoggerCodes.h; path = GoogleUtilities/Common/GULLoggerCodes.h; sourceTree = ""; }; E8335B1EF2FC21B6CD5BBD4DF5226B66 /* RNReanimated.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNReanimated.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - E850ABD360807BF5FC6195D804CDC73F /* Answers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Answers.h; path = iOS/Crashlytics.framework/Headers/Answers.h; sourceTree = ""; }; + E843DB2D9152A6891CEC690C8919CC3A /* GDTCORUploader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORUploader.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORUploader.h; sourceTree = ""; }; E855FCF102DC5906560617510B8CD083 /* react-native-jitsi-meet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-jitsi-meet.xcconfig"; sourceTree = ""; }; E86D949368DBA5DAD2D805EA66DBEDBA /* RCTScrollContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentView.h; sourceTree = ""; }; E86EAAE85254BEA5727D1E88DF730008 /* EXFileSystem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXFileSystem.m; path = EXFileSystem/EXFileSystem.m; sourceTree = ""; }; E878C1F2050BF8CB9FC08C84EDE84445 /* RNDateTimePickerManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNDateTimePickerManager.m; path = ios/RNDateTimePickerManager.m; sourceTree = ""; }; E884225A748A58F5B833530DFC1CE0A8 /* UMFontScalersManagerInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMFontScalersManagerInterface.h; path = UMFontInterface/UMFontScalersManagerInterface.h; sourceTree = ""; }; E921DC8EDE043AA484BBA1A749AC157E /* RNReanimated-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNReanimated-dummy.m"; sourceTree = ""; }; - E9377C29F942AF66A3D72A0AF35997BF /* GULReachabilityChecker+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GULReachabilityChecker+Internal.h"; path = "GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h"; sourceTree = ""; }; - E94CCAA4B5D0B31346AD905F24B5C788 /* random_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = random_utils.h; path = src/utils/random_utils.h; sourceTree = ""; }; E969E0281AFFBB8E4657559C0100F794 /* RNFetchBlobConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNFetchBlobConst.m; path = ios/RNFetchBlobConst.m; sourceTree = ""; }; + E97C6B62E60E3076A98791068DE7D7C1 /* FIRInstanceIDKeychain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeychain.m; path = Firebase/InstanceID/FIRInstanceIDKeychain.m; sourceTree = ""; }; E99AFBF30A3D56FE587EF4FDA58BDAC4 /* RCTKeyCommands.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTKeyCommands.m; sourceTree = ""; }; E9CE00B5CE44E78B47E746CCA313CBA0 /* EXAppLoaderProvider.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EXAppLoaderProvider.xcconfig; sourceTree = ""; }; - E9EDB57C8A7B9A567D2B7E1DFD51750A /* yuv_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_neon.c; path = src/dsp/yuv_neon.c; sourceTree = ""; }; + E9FEBF5B13B80FBCD53AF5D844C38822 /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; EA0BFB9CED579761C61A19D4B239A6D8 /* REAAlwaysNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REAAlwaysNode.m; sourceTree = ""; }; EA144FF00D58E014F32E879A876E5E39 /* YGEnums.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = YGEnums.cpp; path = yoga/YGEnums.cpp; sourceTree = ""; }; EA27D397082A0630D8A137FE7CE51625 /* RCTInspectorPackagerConnection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTInspectorPackagerConnection.m; sourceTree = ""; }; - EA6AC78AD06EBD597B03B38F91D2D065 /* cct.nanopb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = cct.nanopb.h; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/Protogen/nanopb/cct.nanopb.h; sourceTree = ""; }; - EA728C8DE06AF12632054567A645AB9C /* GDTRegistrar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTRegistrar.m; path = GoogleDataTransport/GDTLibrary/GDTRegistrar.m; sourceTree = ""; }; + EA3786891CC282557AB2EF14638CDE2D /* filter_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = filter_enc.c; path = src/enc/filter_enc.c; sourceTree = ""; }; + EA3905F7E6892A7956DD8078E9E87116 /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; EA7D43AB936D50A81723BA9C97BB3326 /* RCTErrorCustomizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTErrorCustomizer.h; sourceTree = ""; }; - EA8733A840E5BF5CB7160E71BC70F136 /* GULNetworkLoggerProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkLoggerProtocol.h; path = GoogleUtilities/Network/Private/GULNetworkLoggerProtocol.h; sourceTree = ""; }; EA972EEF98A6E6063A59FA70C8963000 /* RNEventEmitter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNEventEmitter.m; path = RNNotifications/RNEventEmitter.m; sourceTree = ""; }; + EAB62C963029E8092CA65348E89AD1C6 /* common_sse2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = common_sse2.h; path = src/dsp/common_sse2.h; sourceTree = ""; }; EB1BE5978B196C0A8829D5BB8DDF3138 /* react-native-slider.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-slider.xcconfig"; sourceTree = ""; }; - EB2B0BD91CA5870A2E60FB5BC4F7B9B3 /* CLSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSStackFrame.h; path = iOS/Crashlytics.framework/Headers/CLSStackFrame.h; sourceTree = ""; }; EB2BDA32F9D8827CD2E9C6BD3D8D811F /* RCTUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUtils.m; sourceTree = ""; }; + EB3D678D3F78C857A36FCEE91C3A72E5 /* FIRInstanceIDDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDDefines.h; path = Firebase/InstanceID/FIRInstanceIDDefines.h; sourceTree = ""; }; EB4D088E6A053132E874D3F79EACD884 /* Octicons.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = Octicons.ttf; path = Fonts/Octicons.ttf; sourceTree = ""; }; + EB58C1A1A2B45B20B44F908DC5FFD1D5 /* rescaler_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_mips32.c; path = src/dsp/rescaler_mips32.c; sourceTree = ""; }; + EB70BE00723008AAD156EB27A07FE171 /* FIRInstallationsErrorUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstallationsErrorUtil.h; path = FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.h; sourceTree = ""; }; EB731F52BCE9B41E27D5C618E184F494 /* RCTAssert.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTAssert.m; sourceTree = ""; }; EB80F80723C4A8413AA092BCF137D242 /* RNBootSplash-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNBootSplash-prefix.pch"; sourceTree = ""; }; EBAB452EFC2E62AC9BDDA0C948A39F1C /* UMAppDelegateWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMAppDelegateWrapper.h; path = UMCore/UMAppDelegateWrapper.h; sourceTree = ""; }; EBC7B2F4677382CBD60210CA455E8F86 /* RCTAccessibilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAccessibilityManager.h; sourceTree = ""; }; - EBDF0BB8287EE7675B3313716DA7CFCF /* bignum-dtoa.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "bignum-dtoa.cc"; path = "double-conversion/bignum-dtoa.cc"; sourceTree = ""; }; - EBF3A066DD720BB3B76A4D77BDF40D0F /* GDTDataFuture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTDataFuture.h; path = GoogleDataTransport/GDTLibrary/Public/GDTDataFuture.h; sourceTree = ""; }; EC25F30193FE87CEA5708B5D8793D7C5 /* RNUserDefaults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNUserDefaults.h; path = ios/RNUserDefaults.h; sourceTree = ""; }; EC6526582EC82F315F21184165A9D33A /* RCTConvert+Text.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTConvert+Text.m"; sourceTree = ""; }; EC7D2AC4F90F73F003928CD123DEACD6 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = FontAwesome5_Regular.ttf; path = Fonts/FontAwesome5_Regular.ttf; sourceTree = ""; }; EC7F2D94E3973F2448BF2399A82AEAE0 /* RCTAsyncLocalStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAsyncLocalStorage.h; sourceTree = ""; }; - EC832A43F0BD80A7DCD2D42A6A83BBE3 /* quant_levels_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = quant_levels_utils.h; path = src/utils/quant_levels_utils.h; sourceTree = ""; }; EC8DAF60DBAAAE08BB977674B94A8589 /* UMFontInterface.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UMFontInterface.xcconfig; sourceTree = ""; }; ECA1FB0F407E17C0D9E1776F51DB8395 /* ARTShapeManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARTShapeManager.h; sourceTree = ""; }; ECAF2F04ACCF39BF7E4DD7FBF6BE4009 /* RNCAppearanceProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCAppearanceProvider.h; path = ios/Appearance/RNCAppearanceProvider.h; sourceTree = ""; }; ECC27A56848B03CC648EC2BF28BCC55F /* RCTSRWebSocket.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTSRWebSocket.m; path = Libraries/WebSocket/RCTSRWebSocket.m; sourceTree = ""; }; - ECEDE0D5F2E5C9837501F2C507064EC3 /* quant_levels_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = quant_levels_utils.c; path = src/utils/quant_levels_utils.c; sourceTree = ""; }; ECF350EEF9D4CB89A936158E831C3E76 /* RCTTextDecorationLineType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextDecorationLineType.h; sourceTree = ""; }; + ECF6CDD59A57C47D27B4C64E3C83F6EB /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; + ECFF7646CDA1C9BC7B92C2364D35EB4F /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; ED1E3FC0DC90F4A787472917BFB6B235 /* libEXFileSystem.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libEXFileSystem.a; path = libEXFileSystem.a; sourceTree = BUILT_PRODUCTS_DIR; }; - ED36BC453E7E9F44D4DA76E824785DF6 /* symbolize.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = symbolize.cc; path = src/symbolize.cc; sourceTree = ""; }; ED3DDD34A859972FFA084A37793D713F /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + ED5D4ABF81DB0F6F91E1A25F93EE1DEB /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; EDAB014F5408461B18E0134D71B273FC /* RNCWebView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCWebView.h; path = ios/RNCWebView.h; sourceTree = ""; }; EDBAC99A7274E858D9F6D3A2910C2E1D /* RCTConvertHelpers.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTConvertHelpers.mm; sourceTree = ""; }; - EDC3EA1DDFF95BAE78F476F4F6CF2874 /* GDTConsoleLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTConsoleLogger.m; path = GoogleDataTransport/GDTLibrary/GDTConsoleLogger.m; sourceTree = ""; }; - EDC5880EEB4755D48F83AD2787FA78EF /* FIRErrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrors.h; path = Firebase/Core/Private/FIRErrors.h; sourceTree = ""; }; EDCB561D274C78BAB42BDF5266FEEFF6 /* RCTAdditionAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAdditionAnimatedNode.h; sourceTree = ""; }; EDDC8849FFF32858D86EF726C43EBADE /* EXRemindersRequester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXRemindersRequester.h; path = EXPermissions/EXRemindersRequester.h; sourceTree = ""; }; EDF366CD72859BE99653A7517F199B6D /* BugsnagReactNative.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BugsnagReactNative.xcconfig; sourceTree = ""; }; - EE1A35EFE4C42EFA941515040AF2489B /* vp8l_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = vp8l_enc.c; path = src/enc/vp8l_enc.c; sourceTree = ""; }; + EE1AB32C49A2A285235B4FDC69A39BAC /* FIRInstallationsStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsStore.m; path = FirebaseInstallations/Source/Library/InstallationsStore/FIRInstallationsStore.m; sourceTree = ""; }; EE8FD87FC265122514D84E9883251CDD /* EXHaptics-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EXHaptics-dummy.m"; sourceTree = ""; }; - EEB2E8240966298FEA727263F58AF026 /* huffman_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = huffman_utils.c; path = src/utils/huffman_utils.c; sourceTree = ""; }; EEC0E6E9AC18BBFC719102A5C56D9AAD /* BugsnagNotifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagNotifier.h; sourceTree = ""; }; - EED9275A1D632EBAF320EF1A80E7B5C2 /* strtod.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = strtod.h; path = "double-conversion/strtod.h"; sourceTree = ""; }; + EEC39363574592DDD2C4DE7211730B12 /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; EEDBF403E8E0B3885E65C2741B536BC5 /* libReact-RCTImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-RCTImage.a"; path = "libReact-RCTImage.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + EEE7EDE32D47E34C402A333EA97DECAB /* logging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = logging.h; path = src/glog/logging.h; sourceTree = ""; }; EF12E615FDDDC5DC67C7B27029CB52D3 /* EXConstantsService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXConstantsService.h; path = EXConstants/EXConstantsService.h; sourceTree = ""; }; + EF173724C22DB7D2C3F88CAA10675F80 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; EF1F0F24D6B249F14C0FFA5C73F33D1C /* RCTWrapperViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTWrapperViewController.h; sourceTree = ""; }; - EF27139234F208AEE736571E47FBD2B5 /* FIRInstanceIDTokenInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenInfo.h; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.h; sourceTree = ""; }; EF2A4E69D80B6EDB5E27EAD8CF0618BF /* RNJitsiMeetViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNJitsiMeetViewManager.m; path = ios/RNJitsiMeetViewManager.m; sourceTree = ""; }; + EF4EB3533CCB7A84BFF17BE881F535D0 /* FBLPromiseError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLPromiseError.h; path = Sources/FBLPromises/include/FBLPromiseError.h; sourceTree = ""; }; EF7332D22F963E1ABDF5B443A56C2AD1 /* experiments-inl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "experiments-inl.h"; sourceTree = ""; }; - EF7C77B591898E327390DEE0741690F3 /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; EFC95FBCDBB6142B436FA9581338BFD5 /* UMCameraInterface.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = UMCameraInterface.xcconfig; sourceTree = ""; }; EFE587B647AEA797A88F2C365DAC8EC2 /* RCTKeyCommandConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTKeyCommandConstants.m; path = ios/KeyCommands/RCTKeyCommandConstants.m; sourceTree = ""; }; EFEE57B5E9B7E6FFAE0FBB71BB7F7C04 /* RCTConvert+REATransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTConvert+REATransition.m"; sourceTree = ""; }; F006204547FEC6498B166EFA2D35B2B8 /* BSG_KSCrashCallCompletion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashCallCompletion.h; sourceTree = ""; }; F0171EC8BC3009153E594A4B4AEF8326 /* RCTSurfaceStage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSurfaceStage.m; sourceTree = ""; }; - F01F019DEF200D6F9339D79937FF6498 /* Folly-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Folly-prefix.pch"; sourceTree = ""; }; - F021A39527BED58621A6690E610B4A40 /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; - F02235FA0AF90E49431E197512A6AD01 /* SDImageAPNGCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoderInternal.h; path = SDWebImage/Private/SDImageAPNGCoderInternal.h; sourceTree = ""; }; + F02ACAE8DEE115DBBC18C44F0AE2128C /* quant.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = quant.h; path = src/dsp/quant.h; sourceTree = ""; }; F06E69D19CB17124A98CAC4A351F247F /* BSG_KSCrashDoctor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSG_KSCrashDoctor.m; sourceTree = ""; }; F07161B28792B01620ED2BCCF6E0BF02 /* RCTConvert+UIBackgroundFetchResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTConvert+UIBackgroundFetchResult.m"; sourceTree = ""; }; - F07AB9A93907E76E3C570F14ADF3E275 /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; F07BA3F4F9FA3F8EB130BB58422488F8 /* EXAppLoaderProvider.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = EXAppLoaderProvider.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - F08EE550D1AEB06952E8879746FC9947 /* GDTStorage_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTStorage_Private.h; path = GoogleDataTransport/GDTLibrary/Private/GDTStorage_Private.h; sourceTree = ""; }; + F08B0F9A4D8A738B0F5EF58D5545D0A9 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; F095906BDA3965C76D41B3547C91D8F5 /* RCTVirtualTextViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTVirtualTextViewManager.m; sourceTree = ""; }; + F09D66808FCE05691A438366BC25B746 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; F0C13DD5B14F39844489AA533439C11C /* UMReactNativeAdapter-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UMReactNativeAdapter-dummy.m"; sourceTree = ""; }; F10EFF0CD575AC43A53D01C7D23AD50E /* RCTUITextField.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUITextField.m; sourceTree = ""; }; - F1278B603ADC956F51E3304081668BFE /* mux.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mux.h; path = src/webp/mux.h; sourceTree = ""; }; + F12DAF7528A201C09ADE0D2FC9600260 /* GULLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULLogger.m; path = GoogleUtilities/Logger/GULLogger.m; sourceTree = ""; }; F1591CF497A71B0B4B05EFD3E3656A52 /* RCTUIManagerUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUIManagerUtils.h; sourceTree = ""; }; + F15A1B308313E7B51B2753B9D83EDFA5 /* SDImageWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageWebPCoder.m; path = SDWebImageWebPCoder/Classes/SDImageWebPCoder.m; sourceTree = ""; }; F170556229F32C7D7FDE04E6D4B8DF5E /* React-RCTNetwork.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTNetwork.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; F174D9CC21F0D1762B87F5D148999515 /* RCTPickerManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPickerManager.h; sourceTree = ""; }; + F17947A41DC67706AD2ADAD8C7C559C3 /* GULNetworkLoggerProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkLoggerProtocol.h; path = GoogleUtilities/Network/Private/GULNetworkLoggerProtocol.h; sourceTree = ""; }; F1831FDF795AAFF008805D1C8B5DAF7A /* RCTSubtractionAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSubtractionAnimatedNode.m; sourceTree = ""; }; F18D82D105EFEAF96ABEC19B66F0AD0E /* JSCallInvoker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSCallInvoker.h; path = jscallinvoker/ReactCommon/JSCallInvoker.h; sourceTree = ""; }; F19F79B8441F90165D2F5B44C1CF1A88 /* react-native-document-picker-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-document-picker-dummy.m"; sourceTree = ""; }; - F1EFD5B46A034F0A431926E8B5FF6501 /* GDTDataFuture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTDataFuture.m; path = GoogleDataTransport/GDTLibrary/GDTDataFuture.m; sourceTree = ""; }; + F1A4FFD0829F895C7CB4CE1DADA8C124 /* dec_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = dec_neon.c; path = src/dsp/dec_neon.c; sourceTree = ""; }; + F1B1144A35ACFEBD4E96E634A66733F6 /* SDWebImageWebPCoder-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImageWebPCoder-prefix.pch"; sourceTree = ""; }; + F1D65D982EF85292BB9FDEA34BBE516E /* symbolize.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = symbolize.cc; path = src/symbolize.cc; sourceTree = ""; }; F1FAFECEA2BB7BEB6BDAFAF39FC426C6 /* RCTScrollContentViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentViewManager.h; sourceTree = ""; }; F208CB3F8E89D985AB203CAD66B7B0EE /* RNSScreenContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNSScreenContainer.h; path = ios/RNSScreenContainer.h; sourceTree = ""; }; F20F066B0F018C6B2B233B5AA947D408 /* RCTSwitch.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSwitch.m; sourceTree = ""; }; - F234F18B2FBFFFCBC641916943E9642B /* FIRInstanceIDTokenOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenOperation.m; sourceTree = ""; }; F24F94A3FBFBBBA8ABCC077D41D91AFB /* REAClockNodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REAClockNodes.h; sourceTree = ""; }; F254BA39B80F635278F87ECA06DBFD0D /* ARTPattern.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = ARTPattern.m; sourceTree = ""; }; + F2659EE472B6D6569574FAB9D3BCFB98 /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; F269EA1A423BE65A1543239DB727E92D /* EXLocationRequester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXLocationRequester.h; path = EXPermissions/EXLocationRequester.h; sourceTree = ""; }; - F27020B27DE70C7188CEEE5F520684FA /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; - F27874372F3317E7A40B56B92674FF9E /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; + F26BB59FEC9CBF96A4426D94923EF71D /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; F29860ACF6D3192CE27B72D8D9BF7CC6 /* RCTInspectorPackagerConnection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInspectorPackagerConnection.h; sourceTree = ""; }; - F2CD43E6A24897BE60EF619B608BF7DC /* pb_decode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_decode.h; sourceTree = ""; }; F2E7C88DFCD460A4B46B913ADEB8A641 /* libReact-jsiexecutor.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-jsiexecutor.a"; path = "libReact-jsiexecutor.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - F305EC9958D746DA8AAEA33A39DC6A65 /* FirebaseCoreDiagnosticsInterop.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseCoreDiagnosticsInterop.xcconfig; sourceTree = ""; }; - F30855EBA5C5D5DF32296D69B4CAE212 /* thread_utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = thread_utils.h; path = src/utils/thread_utils.h; sourceTree = ""; }; F31A0471859CCA5EAC081F7810DBB406 /* React-RCTActionSheet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-RCTActionSheet-dummy.m"; sourceTree = ""; }; F3263CC7CDAAC78D64ECE2AF8DF05354 /* RCTSurfaceView+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTSurfaceView+Internal.h"; sourceTree = ""; }; F330F62465D1AC3978641F665A77320D /* JSBundleType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = JSBundleType.h; sourceTree = ""; }; F341B196FB24869F5A0581AE42F32956 /* YGLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGLayout.h; path = yoga/YGLayout.h; sourceTree = ""; }; - F3A324E400A01F6B751011F6DE9698F6 /* FIRConfigurationInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRConfigurationInternal.h; path = Firebase/Core/Private/FIRConfigurationInternal.h; sourceTree = ""; }; + F3AD925B23A79ECA6E6EBDF8DB7412D2 /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; F3AEB1F91EA369268AF481BB6B67FD95 /* REAStyleNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = REAStyleNode.h; sourceTree = ""; }; F3AECBC515351386CAB369DF62BE8458 /* Foundation.ttf */ = {isa = PBXFileReference; includeInIndex = 1; name = Foundation.ttf; path = Fonts/Foundation.ttf; sourceTree = ""; }; F3BEBAA5D1ED553CB8FCF2B22DF6606C /* RCTPicker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTPicker.m; sourceTree = ""; }; + F3C820FC2BBE1761DA1AA527AA0093BF /* FirebaseInstallations-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseInstallations-dummy.m"; sourceTree = ""; }; + F3EA4E1C67B5BF8BD4E1E55A6409EB28 /* FIRInstanceIDAuthKeyChain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthKeyChain.h; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.h; sourceTree = ""; }; F3F7E00DBEF80A2A87BC5A2C4198D0CE /* ARTTextManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARTTextManager.h; sourceTree = ""; }; - F40A68A5A790E9F7437AC7A11A10E049 /* neon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = neon.h; path = src/dsp/neon.h; sourceTree = ""; }; - F416804666984323CB6BE6671AB4FE08 /* GDTUploadCoordinator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTUploadCoordinator.h; path = GoogleDataTransport/GDTLibrary/Private/GDTUploadCoordinator.h; sourceTree = ""; }; + F4110D159EB83763AAC648B1B81D2F9D /* bignum.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = bignum.h; path = "double-conversion/bignum.h"; sourceTree = ""; }; + F41672D8B6EA45CF462409479614FB31 /* predictor_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = predictor_enc.c; path = src/enc/predictor_enc.c; sourceTree = ""; }; + F43FC1D38479CA8483FA503030EE4B5B /* FIRErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRErrors.m; path = FirebaseCore/Sources/FIRErrors.m; sourceTree = ""; }; F44086620DAB6F77CF3BD6506D06798F /* UMEventEmitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMEventEmitter.h; sourceTree = ""; }; - F44EE0313A65B3D0BB64ECA3C3C7D0E8 /* FIRInstanceIDStringEncoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDStringEncoding.h; path = Firebase/InstanceID/FIRInstanceIDStringEncoding.h; sourceTree = ""; }; F4810CC9A18EA364361E1F4DF90E27D0 /* RCTTextSelection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTextSelection.m; sourceTree = ""; }; F48F0465A6D63E3E02891CE558A1DCDC /* RCTActionSheetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTActionSheetManager.m; sourceTree = ""; }; + F4B0846CC9420B2A99D2842B5596A174 /* GDTCOREvent_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCOREvent_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCOREvent_Private.h; sourceTree = ""; }; F4BDA12CC1F9BEBEA8803C87DD3AB8EE /* RCTSurfaceSizeMeasureMode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceSizeMeasureMode.h; sourceTree = ""; }; + F4EB52F7237332185617C32F718E1270 /* color_cache_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = color_cache_utils.c; path = src/utils/color_cache_utils.c; sourceTree = ""; }; F52AF8FBB89BF50C43022FA550FC224E /* BSG_KSJSONCodec.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSJSONCodec.c; sourceTree = ""; }; F52C1187542EE6BDDCA763ED03072E5F /* RNCWebViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCWebViewManager.m; path = ios/RNCWebViewManager.m; sourceTree = ""; }; F52D381D6283844DF39C9278B7E0E583 /* EXAppLoaderProvider-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EXAppLoaderProvider-prefix.pch"; sourceTree = ""; }; F5340F41B48EAB99948E68E58639D98A /* RNCommandsHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCommandsHandler.h; path = RNNotifications/RNCommandsHandler.h; sourceTree = ""; }; - F534DAFAC571CC5B019C05580EB1FADB /* GDTCCTUploader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTCCTUploader.m; path = GoogleDataTransportCCTSupport/GDTCCTLibrary/GDTCCTUploader.m; sourceTree = ""; }; F54A1DE8FD0FC45607B56E1634615E88 /* RCTFollyConvert.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFollyConvert.mm; sourceTree = ""; }; + F55052F42574B7D52A6BA105DCE2F19E /* GDTCORUploadCoordinator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORUploadCoordinator.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORUploadCoordinator.h; sourceTree = ""; }; + F581E835D4B745A1D287B2D9FAFABD0D /* FBLPromises.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FBLPromises.h; path = Sources/FBLPromises/include/FBLPromises.h; sourceTree = ""; }; F58489410FF77E18D59457505B9AA8F0 /* ARTGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ARTGroup.h; path = ios/ARTGroup.h; sourceTree = ""; }; F5AAC602913992146864B8C3BB903AB4 /* RCTComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTComponent.h; sourceTree = ""; }; F5DC4210CA6076B3BBC396A83535BD17 /* RCTCxxMethod.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxMethod.h; sourceTree = ""; }; F5DC588802B42ED16EAEE7DDAA94E6D8 /* JSINativeModules.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = JSINativeModules.cpp; path = jsireact/JSINativeModules.cpp; sourceTree = ""; }; F5E5B8A6650D84ACBAF57A8E248E85D7 /* RNDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNDeviceInfo.m; path = ios/RNDeviceInfo/RNDeviceInfo.m; sourceTree = ""; }; - F5E96D93EA3C646CF7B21BA5C5B356EE /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; - F5EE710F6055B8126303056B0BE1B60B /* FIRInstanceIDVersionUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDVersionUtilities.h; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.h; sourceTree = ""; }; F5FA67FB2C61AF1312DC257FD86270E5 /* RNScreens.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RNScreens.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - F60981B496FE1E2C360A984FD512294A /* Demangle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Demangle.cpp; path = folly/detail/Demangle.cpp; sourceTree = ""; }; + F603F708AE1BF751B3ACE89E154E4673 /* FBLPromise+Then.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FBLPromise+Then.h"; path = "Sources/FBLPromises/include/FBLPromise+Then.h"; sourceTree = ""; }; F60BC6A0E8111DD5ACBEF3CC5959ECD8 /* RCTSurfaceRootShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSurfaceRootShadowView.m; sourceTree = ""; }; + F62A51F0D87C21CBDCC1B8756AE451C6 /* nanopb-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "nanopb-dummy.m"; sourceTree = ""; }; F65F1F278B0F93DF76C27745779138E5 /* RCTAutoInsetsProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAutoInsetsProtocol.h; sourceTree = ""; }; F6B6688D83418759724326835A4BDDC9 /* RCTTextView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTextView.m; sourceTree = ""; }; - F6BC72E7DD48A1994CDB1E6FFF3B439E /* cached-powers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "cached-powers.h"; path = "double-conversion/cached-powers.h"; sourceTree = ""; }; F6C495F26CFBEFBC26967005E92B0173 /* RCTConvertHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTConvertHelpers.h; sourceTree = ""; }; + F7181E6712382186FEFE1FAEE124DC30 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; F71EBF73F354B475D465FF6DE9A66707 /* libReact-RCTBlob.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-RCTBlob.a"; path = "libReact-RCTBlob.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + F72625A8093D89ACAEF9ACBC3883C014 /* fast-dtoa.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = "fast-dtoa.cc"; path = "double-conversion/fast-dtoa.cc"; sourceTree = ""; }; F72659CDABBCCB4186E4ACFCED8EC514 /* RNJitsiMeetView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNJitsiMeetView.m; path = ios/RNJitsiMeetView.m; sourceTree = ""; }; - F73448C5E41D0B6AED5A89E493E41FDC /* token_enc.c */ = {isa = PBXFileReference; includeInIndex = 1; name = token_enc.c; path = src/enc/token_enc.c; sourceTree = ""; }; F75184F86F3E79DE210E71936545C57D /* RCTShadowView+Layout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTShadowView+Layout.m"; sourceTree = ""; }; F75E382715FBE5250A79F0C98DE6E678 /* RCTSegmentedControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSegmentedControl.h; sourceTree = ""; }; F76035A1C60156C30D8C7AC85A25B87E /* RCTBridgeDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBridgeDelegate.h; sourceTree = ""; }; - F762F0A56AD644160EE40F2C9ED7DC7D /* animi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = animi.h; path = src/mux/animi.h; sourceTree = ""; }; - F789322912D13D98F15BEB706E0A630D /* demux.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = demux.h; path = src/webp/demux.h; sourceTree = ""; }; + F78C3AEA250BDD82BE7FE666904B87A3 /* DoubleConversion-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DoubleConversion-dummy.m"; sourceTree = ""; }; + F790E8CC5AC5310B53CA380DA817176B /* ieee.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ieee.h; path = "double-conversion/ieee.h"; sourceTree = ""; }; F79445FDFB8F1C28B17B142380CA2575 /* react-native-video-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-video-dummy.m"; sourceTree = ""; }; F7C3364F0E0F6F42CB93E2B0560C2DA0 /* EXCameraRollRequester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXCameraRollRequester.h; path = EXPermissions/EXCameraRollRequester.h; sourceTree = ""; }; F7C90F3A98224D6DE3458CF9B4592563 /* RNNotificationParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNNotificationParser.h; path = RNNotifications/RNNotificationParser.h; sourceTree = ""; }; F7D4F70EF52ABE13A3914E7AF82CDDFF /* RNReanimated-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNReanimated-prefix.pch"; sourceTree = ""; }; - F7F1E72F15A3AF0C35DEF0C1A2BDD5F3 /* firebasecore.nanopb.c */ = {isa = PBXFileReference; includeInIndex = 1; name = firebasecore.nanopb.c; path = Firebase/CoreDiagnostics/FIRCDLibrary/Protogen/nanopb/firebasecore.nanopb.c; sourceTree = ""; }; F81866F14F3E7E970AA2D4ED60838FCC /* React-cxxreact.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-cxxreact.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - F83BFECA194D5D3A53CCA3AF2C359335 /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; - F84CFF851919F4C8C90C7A0A02A4EDBC /* FIRInstanceIDKeyPair.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeyPair.m; path = Firebase/InstanceID/FIRInstanceIDKeyPair.m; sourceTree = ""; }; F8752475D668F72AEAB301382F7113DE /* DeviceUID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DeviceUID.m; path = ios/RNDeviceInfo/DeviceUID.m; sourceTree = ""; }; + F87F6A22FB4F600954FB2663E53340C6 /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; F89473948C947E5DF0BAAC2B2AD27FA6 /* TurboModuleUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = TurboModuleUtils.h; path = turbomodule/core/TurboModuleUtils.h; sourceTree = ""; }; F8B7263BADCFD744E32F1CC23ECA5549 /* RCTAppState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAppState.h; sourceTree = ""; }; F8BED19E476483C03DEC417A2219CFE7 /* UMModuleRegistryConsumer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMModuleRegistryConsumer.h; sourceTree = ""; }; F8ED706A6936A4268543107344BFAC7A /* RNFetchBlobProgress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNFetchBlobProgress.h; path = ios/RNFetchBlobProgress.h; sourceTree = ""; }; F8F307FF3CDA1C47B9333A1B34AEAEBC /* REAOperatorNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = REAOperatorNode.m; sourceTree = ""; }; F8F37064246BEE9F8C7A69671281433B /* RCTLayoutAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTLayoutAnimation.m; sourceTree = ""; }; - F913CAE0697648283B36B0E6B9F9E0E8 /* FIRInstanceIDBackupExcludedPlist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDBackupExcludedPlist.h; path = Firebase/InstanceID/FIRInstanceIDBackupExcludedPlist.h; sourceTree = ""; }; + F934561A4844BCB1A5D2C72516F4A72A /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; F93E285BE4F106BF8932B2B288E0B96A /* es.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = es.lproj; path = ios/QBImagePicker/QBImagePicker/es.lproj; sourceTree = ""; }; F958876A082BF810B342435CE3FB5AF6 /* libRCTTypeSafety.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRCTTypeSafety.a; path = libRCTTypeSafety.a; sourceTree = BUILT_PRODUCTS_DIR; }; F96DFC58F11AE0F9F57A856E86C307F0 /* ARTContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ARTContainer.h; path = ios/ARTContainer.h; sourceTree = ""; }; @@ -6334,19 +6623,19 @@ F9BD0857EE43DA88E1FB5A23EE203CE5 /* JSBigString.cpp */ = {isa = PBXFileReference; includeInIndex = 1; path = JSBigString.cpp; sourceTree = ""; }; F9CB16021EA923F80F4E44BCBDD21E82 /* react-native-webview.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "react-native-webview.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; F9E65561A4F759756BFA0999219E99FC /* LICENSE.txt */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE.txt; sourceTree = ""; }; + F9FDF1E88D043740EACFF1DC73E36B23 /* FIRDiagnosticsData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRDiagnosticsData.h; path = FirebaseCore/Sources/Private/FIRDiagnosticsData.h; sourceTree = ""; }; F9FEF1D228AABFA6A55230C1568B4054 /* react-native-slider.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "react-native-slider.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; FA12DD048A9A27567FE7075E7732FD3E /* RNFirebaseAuth.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RNFirebaseAuth.m; sourceTree = ""; }; FA1C3016E3389BBCE59AD8B7649F0956 /* RNFirebaseFirestoreCollectionReference.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebaseFirestoreCollectionReference.h; sourceTree = ""; }; FA2193D233F784FDA8D14E5ED56629C0 /* Pods-RocketChatRN-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketChatRN-frameworks.sh"; sourceTree = ""; }; - FA224BD245F6880CF82A97B34F57EA47 /* lossless_msa.c */ = {isa = PBXFileReference; includeInIndex = 1; name = lossless_msa.c; path = src/dsp/lossless_msa.c; sourceTree = ""; }; + FA26B5A8A32F2F522F09863C5C0477C0 /* GoogleDataTransportCCTSupport.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleDataTransportCCTSupport.xcconfig; sourceTree = ""; }; FA3074A70780F5BDE91D7A2AE0333441 /* ReactNativeART.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = ReactNativeART.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - FA33B60640BF328BF0DFC68784B43B8F /* FIRInstanceIDCheckinPreferences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinPreferences.m; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences.m; sourceTree = ""; }; FA3C9C05A2745796C90E164493003F98 /* RCTUIManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUIManager.m; sourceTree = ""; }; + FA4ECAC99B83A66CECD026177446CB77 /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; FA61EA52F6BD937338BB3E55FAAC5537 /* EXAppLoaderProvider-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EXAppLoaderProvider-dummy.m"; sourceTree = ""; }; - FA981CB894230861E709B35205EE9407 /* GDTTransport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTTransport.m; path = GoogleDataTransport/GDTLibrary/GDTTransport.m; sourceTree = ""; }; - FACB29702ACD77D66D657A8CCAA16447 /* FIRInstanceIDTokenInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenInfo.m; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.m; sourceTree = ""; }; + FA6C315437C3214205593E74AB412E48 /* FIRVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVersion.m; path = FirebaseCore/Sources/FIRVersion.m; sourceTree = ""; }; + FAEB584D2FCC43846A157044BC9D5E46 /* yuv_neon.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_neon.c; path = src/dsp/yuv_neon.c; sourceTree = ""; }; FB055070A2B8C6DC50CBAF64EBD58A68 /* FBReactNativeSpec.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = FBReactNativeSpec.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - FB64DAEF321D4A129D5F296408A320DC /* SDWebImageWebPCoder.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImageWebPCoder.xcconfig; sourceTree = ""; }; FB6EE44FA7F3B55552E8366D392E5AF7 /* BugsnagHandledState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BugsnagHandledState.h; sourceTree = ""; }; FB7BCEFC749CA8C6FC0E8F8A35708B1C /* RNFetchBlobRequest.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNFetchBlobRequest.m; path = ios/RNFetchBlobRequest.m; sourceTree = ""; }; FB7CEE5036E73D34C54DE51B53DA7EE3 /* RCTLayoutAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTLayoutAnimation.h; sourceTree = ""; }; @@ -6354,44 +6643,44 @@ FB900A939C4D5CD6FC137C114524DE71 /* RCTScrollContentShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentShadowView.h; sourceTree = ""; }; FBA0A0A797AF05C4739D1E5917DD321E /* RCTPerformanceLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPerformanceLogger.h; sourceTree = ""; }; FBABE6A668BF55191A9D843480C414A5 /* BSG_KSMach_Arm64.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSMach_Arm64.c; sourceTree = ""; }; + FBB3943BA57703F03AC1AE6E9180EC2B /* FIRInstanceIDLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDLogger.h; path = Firebase/InstanceID/FIRInstanceIDLogger.h; sourceTree = ""; }; FBCD9EF2870E34294630AADF03530B74 /* BSG_KSCrashIdentifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSCrashIdentifier.h; sourceTree = ""; }; FC1C9BACB409258D55795F22EC30E614 /* RNLocalize-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNLocalize-dummy.m"; sourceTree = ""; }; - FC2DD08031380836E714D119660B0C71 /* NSError+FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSError+FIRInstanceID.h"; path = "Firebase/InstanceID/NSError+FIRInstanceID.h"; sourceTree = ""; }; - FC5893DE036925F219400B1B91DDA49C /* GULAppEnvironmentUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppEnvironmentUtil.h; path = GoogleUtilities/Environment/third_party/GULAppEnvironmentUtil.h; sourceTree = ""; }; + FC39B30F26E84F6B31EE5DC99AA7A735 /* FIRInstallationsErrorUtil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstallationsErrorUtil.m; path = FirebaseInstallations/Source/Library/Errors/FIRInstallationsErrorUtil.m; sourceTree = ""; }; + FC4D1271006F3F19FD1F32ED18916996 /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; FC6AFFF17DED4DDFD06E638BD2D35B9F /* UMLogManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = UMLogManager.h; sourceTree = ""; }; + FC7479F169BDFA83A763E71935B39C0A /* rescaler_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = rescaler_utils.c; path = src/utils/rescaler_utils.c; sourceTree = ""; }; FC77272D5D1D48B43F12E55DDD9F80C1 /* EXConstantsService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXConstantsService.m; path = EXConstants/EXConstantsService.m; sourceTree = ""; }; FC803D1BE9A2CB384D5AAB212AFFCFB6 /* EXVideoManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = EXVideoManager.m; sourceTree = ""; }; - FCBA8C8C8D9E02658B2AAA645469C0A1 /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; - FCC11573AB7D5B652772C6126FE31C36 /* FIRCoreDiagnosticsConnector.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRCoreDiagnosticsConnector.m; path = Firebase/Core/FIRCoreDiagnosticsConnector.m; sourceTree = ""; }; + FCB6EDCCFB847FE622558CA7FACF0C21 /* FIRAnalyticsConnector.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FIRAnalyticsConnector.framework; path = Frameworks/FIRAnalyticsConnector.framework; sourceTree = ""; }; FCCF3DEE4FAB690782F0F7F0ACA51C41 /* RNUserDefaults-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNUserDefaults-dummy.m"; sourceTree = ""; }; - FCF58272F65ED034BE22E4A8C0456B72 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; FCF61D9B2B75054A9A3185DDC609B7FF /* libSDWebImageWebPCoder.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSDWebImageWebPCoder.a; path = libSDWebImageWebPCoder.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FD022A7C3D909D8519F310D4392F2421 /* alphai_dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = alphai_dec.h; path = src/dec/alphai_dec.h; sourceTree = ""; }; FD1C084D4C106EAE54D8104F9545A691 /* react-native-keyboard-tracking-view.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "react-native-keyboard-tracking-view.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; FD2BC437BCA1441EE529ACCFB8EAE072 /* React-CoreModules.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-CoreModules.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; FD38B2E5F8FDC009EE3930FE406607A0 /* RCTSafeAreaViewLocalData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaViewLocalData.m; sourceTree = ""; }; + FD463EFB922CF38263587F78A3E403E1 /* FIRComponentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentType.h; path = FirebaseCore/Sources/Private/FIRComponentType.h; sourceTree = ""; }; FD46A0FA38F89A3EBB4D1D8F2C6C82B6 /* BSGOutOfMemoryWatchdog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BSGOutOfMemoryWatchdog.m; sourceTree = ""; }; - FD7691D43748739B72817CB68865006A /* FIRErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRErrors.m; path = Firebase/Core/FIRErrors.m; sourceTree = ""; }; FD8B1EA2CDA612644CBF7C60CE5A76C6 /* EXConstants.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EXConstants.xcconfig; sourceTree = ""; }; FDE02055864DF5DC8FADA071B185C63E /* BSG_KSMach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BSG_KSMach.h; sourceTree = ""; }; + FE1CC5E059EA91AFC5ABF8BF527E9F10 /* huffman_utils.c */ = {isa = PBXFileReference; includeInIndex = 1; name = huffman_utils.c; path = src/utils/huffman_utils.c; sourceTree = ""; }; FE374D9CEFC75D3ED87923EAD6DDC295 /* UMGyroscopeInterface.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = UMGyroscopeInterface.h; path = UMSensorsInterface/UMGyroscopeInterface.h; sourceTree = ""; }; FE5F61B11785B4AF3CB9741A37B367DD /* BSG_KSMach_x86_64.c */ = {isa = PBXFileReference; includeInIndex = 1; path = BSG_KSMach_x86_64.c; sourceTree = ""; }; - FE63103F5165EC0A1900FC6BD658D52B /* GDTReachability.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GDTReachability.m; path = GoogleDataTransport/GDTLibrary/GDTReachability.m; sourceTree = ""; }; FE7B9294FF05AAFD1653E2104E10844A /* libReact-RCTAnimation.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libReact-RCTAnimation.a"; path = "libReact-RCTAnimation.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - FE95110A46FCBDDFDF5AEEDAFE1C082D /* GoogleDataTransport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GoogleDataTransport.h; path = GoogleDataTransport/GDTLibrary/Public/GoogleDataTransport.h; sourceTree = ""; }; - FE9D8DD53AB4F688CFE58BF275771887 /* FIRInstanceIDTokenDeleteOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenDeleteOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m; sourceTree = ""; }; + FE99DA2A671583AFDB9A25490E656721 /* FBLPromiseError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FBLPromiseError.m; path = Sources/FBLPromises/FBLPromiseError.m; sourceTree = ""; }; FEB4A88EF0391F3499D3CDDF99BA1B8E /* RCTImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageLoader.h; path = React/CoreModules/RCTImageLoader.h; sourceTree = ""; }; - FEC3F7B47F6DD538B443A895DD5D9591 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; + FED3E487A355D9CE1B0445AF9E4FA899 /* GDTCORAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORAssert.h; path = GoogleDataTransport/GDTCORLibrary/Public/GDTCORAssert.h; sourceTree = ""; }; FEE17FF191607545AB35410F4FC71A32 /* React-RCTNetwork.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "React-RCTNetwork.xcconfig"; sourceTree = ""; }; + FF00CDB7A8232AE4158B172CB16D57C2 /* animi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = animi.h; path = src/mux/animi.h; sourceTree = ""; }; FF2321EA1129CD7B9A3C570468E6AD70 /* RCTModalManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModalManager.h; sourceTree = ""; }; - FF5EBC9A5E12D5281CC29EAB37CD1E5E /* GDTTransformer_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTTransformer_Private.h; path = GoogleDataTransport/GDTLibrary/Private/GDTTransformer_Private.h; sourceTree = ""; }; + FF4A1A447F74EECB8C2AC14492FA6CA0 /* GDTCORReachability_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GDTCORReachability_Private.h; path = GoogleDataTransport/GDTCORLibrary/Private/GDTCORReachability_Private.h; sourceTree = ""; }; FF61105B6BE647061B73DB8202543064 /* RNCWKProcessPoolManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCWKProcessPoolManager.h; path = ios/RNCWKProcessPoolManager.h; sourceTree = ""; }; FF707174B2503E5C71F8EF8F5FECB06F /* RNFirebasePerformance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RNFirebasePerformance.h; sourceTree = ""; }; - FF7126802A814DA73C4EAE011D1333A2 /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; FF8601C5E3FB42A14A655AB71907929D /* React-RCTText.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = "React-RCTText.podspec"; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; FF905AF5FDF55125E6D055EEB4E6D87B /* RCTTiming.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTiming.h; sourceTree = ""; }; - FF93806C208335D001155DDC1F559DB7 /* GULNetwork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetwork.h; path = GoogleUtilities/Network/Private/GULNetwork.h; sourceTree = ""; }; - FFA8CB977BF4AD6E90224C3F5F650B0A /* FIRInstanceIDCombinedHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCombinedHandler.m; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.m; sourceTree = ""; }; + FF92B16CAA4A7AFB4FC58207B113E26A /* yuv_mips32.c */ = {isa = PBXFileReference; includeInIndex = 1; name = yuv_mips32.c; path = src/dsp/yuv_mips32.c; sourceTree = ""; }; FFC5D879ED9F5C124C1039F164C7B009 /* RNCAppearance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCAppearance.h; path = ios/Appearance/RNCAppearance.h; sourceTree = ""; }; + FFE34689D2E3DE37AC652BA9C6743AD3 /* FIRHeartbeatInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRHeartbeatInfo.m; path = FirebaseCore/Sources/FIRHeartbeatInfo.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -6409,6 +6698,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 0D62B59AA78AC18F1F6FA511C5D196A8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 0F22F363690501476F87C3CF49F3CAAE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -6549,13 +6845,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 4ED403BDD27312674468E8ADFA6651E3 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 4F462D92F40C3C688FE86B3420ECC4B0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -6696,6 +6985,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9252EA6E5701E34F8A22D830F6A5FDD4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 944DA2862FE10F8DB828F048576ED733 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -6871,13 +7167,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - EE3FEEB374134A0B7F94417E8B62176D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; EFDD2D6A15FCDC194552FE8924845D66 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -6906,6 +7195,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F9F980DC834907E78328428C80BB719A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; FAB5F3C34BD1B070D71D80200079D10B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -6913,6 +7209,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FC525E87A35EFFE777E6455E72FECB05 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; FDB4EC2E2C6AD56063E55E372E24F5D0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -6930,6 +7233,64 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 014C12EE5AF00EF9920FD4EE73C3B7A9 /* NSData+zlib */ = { + isa = PBXGroup; + children = ( + 93C7F9D33807C629347B5CC327303501 /* GULNSData+zlib.h */, + 6B3000A1D45E185CABEFD0B060F04FC4 /* GULNSData+zlib.m */, + ); + name = "NSData+zlib"; + sourceTree = ""; + }; + 01A7461C3ACCF8ECB35555ED922F8825 /* FirebaseCore */ = { + isa = PBXGroup; + children = ( + 9E799F0463BF1E9CB29AB2DD41EB7846 /* FIRAnalyticsConfiguration.h */, + 7FE52EC86FAD6477499E13343ED2C1DF /* FIRAnalyticsConfiguration.m */, + 1D31DB622D9EBAA4FBD560D40618BCBA /* FIRApp.h */, + 0162C892BDD766E04E2714F47090AB60 /* FIRApp.m */, + 59EDFE4884DAF3E61B6C33A8BE503617 /* FIRAppAssociationRegistration.h */, + 6C8B9AF946127A4CCC12F6DA5E9EFD4E /* FIRAppAssociationRegistration.m */, + 14E9D8CDCDCDC635008003D55AC6728F /* FIRAppInternal.h */, + 108CB420FAB407BE3178EAEC6141D97E /* FIRBundleUtil.h */, + E2FDE91FD70FFC43E88F683DC84004E6 /* FIRBundleUtil.m */, + 11613175A36C6EBE31343B6BACA3302C /* FIRComponent.h */, + 73DF275591A289869A037B732ACCE445 /* FIRComponent.m */, + ABBAB6A3B14167BE15806D2D4C391430 /* FIRComponentContainer.h */, + 0723D9254A0FF8AAD5189C6A5CDB013B /* FIRComponentContainer.m */, + 51D0EC206B3FF3FD54D207F3F5C70719 /* FIRComponentContainerInternal.h */, + FD463EFB922CF38263587F78A3E403E1 /* FIRComponentType.h */, + 5E5CC8F6A5743198CEE068F4A629834B /* FIRComponentType.m */, + 31CCEDC883A767472D9DE6E98B55225A /* FIRConfiguration.h */, + A85363A0C59C12E9ABF0D991127F666D /* FIRConfiguration.m */, + 4BB3E1A796EA4028EC6374B3EACD53CE /* FIRConfigurationInternal.h */, + 52CDBAFD1C6554282FCD586FFBA8FFFD /* FIRCoreDiagnosticsConnector.h */, + 5DB602E4418A6458062E66FDBE8939FB /* FIRCoreDiagnosticsConnector.m */, + 19F7DAA1BD0C331F0062BBC640DBC35E /* FIRDependency.h */, + C460DA70768C93ED1BE2D6D8F8EB4963 /* FIRDependency.m */, + F9FDF1E88D043740EACFF1DC73E36B23 /* FIRDiagnosticsData.h */, + D8DE3BC13CAB60BD0F12942A7720BC23 /* FIRDiagnosticsData.m */, + 325556A95664EB529C31870C6A52D5D8 /* FirebaseCore.h */, + CCE13B65AEE9DB27E1676D172D142597 /* FIRErrorCode.h */, + 514AE00CD420A8229A4F661330A06B47 /* FIRErrors.h */, + F43FC1D38479CA8483FA503030EE4B5B /* FIRErrors.m */, + 26C5912343F09FDEC67C47A7DD500AAF /* FIRHeartbeatInfo.h */, + FFE34689D2E3DE37AC652BA9C6743AD3 /* FIRHeartbeatInfo.m */, + 1C2373D7CD550A7BB6746818ACCFF4A9 /* FIRLibrary.h */, + 1999800C3B5B4E5C0A32818F3D47D45A /* FIRLogger.h */, + A38D33F827E62F685D432C9A01C918E6 /* FIRLogger.m */, + 5844E9E8BBD906339EA96EF1BD79326F /* FIRLoggerLevel.h */, + 017CC1B34A00D5D000439D51172861CF /* FIROptions.h */, + 52C28AD783EE3A1E4AB2B1A936CBEC0A /* FIROptions.m */, + 5A16CE135CC71ACDAB57AB9C085A4213 /* FIROptionsInternal.h */, + 41F62D04DF20EF8EB64F38D9EEEE02A9 /* FIRVersion.h */, + FA6C315437C3214205593E74AB412E48 /* FIRVersion.m */, + FFB3455A3E37A9225E29597AD5CD25E2 /* Support Files */, + ); + name = FirebaseCore; + path = FirebaseCore; + sourceTree = ""; + }; 01BB7A869F9E6F2F20E787CB072C7DB4 /* Pod */ = { isa = PBXGroup; children = ( @@ -6959,6 +7320,23 @@ path = Libraries/NativeAnimation/Drivers; sourceTree = ""; }; + 043F146E221D020B79B780B0AA0BA24D /* GoogleUtilities */ = { + isa = PBXGroup; + children = ( + 6F88DEA2865A43BC2ACD1E85CDD051E9 /* AppDelegateSwizzler */, + 10D07FABCF69DD0EE97B5E881DE54D1F /* Environment */, + C7D050BE37BEB97CCFF3C328E1D81D8A /* Logger */, + 343E456B2AB936C3DDC90D1F4B20237F /* MethodSwizzler */, + 4928610451BAB56E49BA8FF8129BF910 /* Network */, + 014C12EE5AF00EF9920FD4EE73C3B7A9 /* NSData+zlib */, + D19DE6C0AE63B7A962E6D09484F125DB /* Reachability */, + E16AA748B8479800EC9221A9DE4E360E /* Support Files */, + 5DACF37B91672B1B16D7C6F64F5A348F /* UserDefaults */, + ); + name = GoogleUtilities; + path = GoogleUtilities; + sourceTree = ""; + }; 044AFB6A0A90F6C17CE1AEC34CA18553 /* rn-extensions-share */ = { isa = PBXGroup; children = ( @@ -7005,15 +7383,6 @@ path = "../../ios/Pods/Target Support Files/react-native-document-picker"; sourceTree = ""; }; - 06686FA55A8EEBA185AB04FA8AB615DE /* Support Files */ = { - isa = PBXGroup; - children = ( - DEC91BA0271EDD25AC990885269AAA63 /* GoogleAppMeasurement.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/GoogleAppMeasurement"; - sourceTree = ""; - }; 06A1B697F0E97A8D9EDDE9F204DFFC0A /* UMSensorsInterface */ = { isa = PBXGroup; children = ( @@ -7048,27 +7417,6 @@ name = core; sourceTree = ""; }; - 07A5F45AFB97E324EF726D6EE3C6A29B /* demux */ = { - isa = PBXGroup; - children = ( - 784124C11142E87DB1D3FCA0F0DF8284 /* anim_decode.c */, - 281C56FBABFEE9C04A3535E9790A9120 /* demux.c */, - F789322912D13D98F15BEB706E0A630D /* demux.h */, - ); - name = demux; - sourceTree = ""; - }; - 08FA3881FD30F9B416808AAD7D1A8671 /* Reachability */ = { - isa = PBXGroup; - children = ( - A21747766DD83B697F1247CD235A13CD /* GULReachabilityChecker.h */, - 6B3844A27E41E7C5F10BF14FC9A7929A /* GULReachabilityChecker.m */, - E9377C29F942AF66A3D72A0AF35997BF /* GULReachabilityChecker+Internal.h */, - 50C7E75DE032D780D996A33E74AA1D42 /* GULReachabilityMessageCode.h */, - ); - name = Reachability; - sourceTree = ""; - }; 09212FEF239BE83B5FFB0DAA2C9EE3D9 /* Support Files */ = { isa = PBXGroup; children = ( @@ -7101,6 +7449,24 @@ path = "../../ios/Pods/Target Support Files/RNBootSplash"; sourceTree = ""; }; + 0B306EB60859A04AF7CB557F7C204072 /* nanopb */ = { + isa = PBXGroup; + children = ( + 3D469EED379CDAF76B456D41CE1D789E /* pb.h */, + E427482FF0816F936F72DF5FD9CAB3BC /* pb_common.c */, + B4E59C34733EDDB63352F51EA330CB81 /* pb_common.h */, + B72D2A1AFE5D8CB8AE76AADD8B87B42B /* pb_decode.c */, + 4E9D30B663A082E804F4CAA873DD3822 /* pb_decode.h */, + 6F2B281A5C5A6DA83EEDED90A470812A /* pb_encode.c */, + 383A35C11C4C2DD2BADC793667564783 /* pb_encode.h */, + BEFB2B9B5280E10F649378C9E3C14871 /* decode */, + C5AC19D7A9D457167D564B1E75C41A57 /* encode */, + BDECE5E2D91F907FA4086723A3CD134E /* Support Files */, + ); + name = nanopb; + path = nanopb; + sourceTree = ""; + }; 0BB5DD74FC8B5C6FADF0CA66AF171F64 /* Support Files */ = { isa = PBXGroup; children = ( @@ -7142,14 +7508,69 @@ path = TextInput; sourceTree = ""; }; - 0F4E635626BD309E3427F0A7AFCF9061 /* MethodSwizzler */ = { + 0EB22BBFAB12DE43BF0B817235CAED5A /* GoogleDataTransport */ = { isa = PBXGroup; children = ( - 4F51256112D9CF93FA314D5523249742 /* GULOriginalIMPConvenienceMacros.h */, - A7A9619333FE09CF2DFA4A5A7A719200 /* GULSwizzler.h */, - 019EF2F3E1EBEF4B63B42F53A1FE1122 /* GULSwizzler.m */, + FED3E487A355D9CE1B0445AF9E4FA899 /* GDTCORAssert.h */, + CB0E66A3C33EB8EEC21616C116ABB4A4 /* GDTCORAssert.m */, + 1A5B8DD3BD08B970140758525F472335 /* GDTCORClock.h */, + 0DB662C3FB633BCCF0EFD8EBAEEF8AF1 /* GDTCORClock.m */, + 0E711CC040CB2C9B6660541E7C73B310 /* GDTCORConsoleLogger.h */, + 1FC1353AA6CA2364871614AD5734013C /* GDTCORConsoleLogger.m */, + D5B3BDB0DF8A0EE45046BCB479E4B62C /* GDTCORDataFuture.h */, + 93B448CC3FB8A5E0A529641BC3F578C2 /* GDTCORDataFuture.m */, + 921B01A30EBFEA00540CF83973A575F9 /* GDTCOREvent.h */, + C02C313B7B5553296D2F7158CBE25081 /* GDTCOREvent.m */, + F4B0846CC9420B2A99D2842B5596A174 /* GDTCOREvent_Private.h */, + D3601FC2175A7805C42496F6D3F25E1D /* GDTCOREventDataObject.h */, + 6DBFEEEE8490B0AEC5A93E092F2857A5 /* GDTCOREventTransformer.h */, + E0E17F86AEE63B4E96B07B6417885A38 /* GDTCORLifecycle.h */, + 40C0ACE417B604A869EFEBF0F8727F90 /* GDTCORLifecycle.m */, + CE71CD3D3C773A121030FB81AB751D1A /* GDTCORPlatform.h */, + BCDC1F0FF0B1E2E4C213D78D24F0F9CD /* GDTCORPlatform.m */, + BA97DE2A8EF2E1432F205EFE746D7873 /* GDTCORPrioritizer.h */, + 78A5E4508694C25663685CE163B7A18D /* GDTCORReachability.h */, + 8C40A67EE1D77C8674B2974823212EA0 /* GDTCORReachability.m */, + FF4A1A447F74EECB8C2AC14492FA6CA0 /* GDTCORReachability_Private.h */, + 147CFFA41FD70FB3BEA2696A188FD294 /* GDTCORRegistrar.h */, + 43AAE931318CFC65211035F2E169B081 /* GDTCORRegistrar.m */, + 78D16CA96B3633E9D5C63D2D8DEB3AFD /* GDTCORRegistrar_Private.h */, + 1D6EDA25FA893D1DF91AAEA53BA75B9D /* GDTCORStorage.h */, + 0B600A9196EDF7F5CE30EAA93665B08F /* GDTCORStorage.m */, + D76568A132A5A42C9799FAF84FB8BD09 /* GDTCORStorage_Private.h */, + E06128CB543E05DF7D4F8B8A3EF8EEF2 /* GDTCORStoredEvent.h */, + 00A08DD362055E20F1FB0559D19644E4 /* GDTCORStoredEvent.m */, + 43670C6003CB892BF4EEBCCCCF5B1628 /* GDTCORTargets.h */, + 92839ECA01AD51593C6AC08DBD9EBCC2 /* GDTCORTransformer.h */, + 92FA3E16143BD843AB82FBE1484C3175 /* GDTCORTransformer.m */, + AA42C4E98C13EF33E441FE62148783CB /* GDTCORTransformer_Private.h */, + 55ABCD868D69EBB8B226D955E9B65C94 /* GDTCORTransport.h */, + 1D432FED92D53468BB148EBC674FF927 /* GDTCORTransport.m */, + 3DF98BC6C3F20CCC5179F53F73FF41B6 /* GDTCORTransport_Private.h */, + F55052F42574B7D52A6BA105DCE2F19E /* GDTCORUploadCoordinator.h */, + 38CB235F9B094ECF8F8B1B1C082AB298 /* GDTCORUploadCoordinator.m */, + E843DB2D9152A6891CEC690C8919CC3A /* GDTCORUploader.h */, + 8174EE8838427BE46A0885CA8539CA9D /* GDTCORUploadPackage.h */, + 3D213A29F586151F62E7D1190EC36483 /* GDTCORUploadPackage.m */, + 9B6AE09786B2423B11C27D00079FCE17 /* GDTCORUploadPackage_Private.h */, + 66EF89ABD7B5DBBB462B12529A796D9B /* GoogleDataTransport.h */, + 216ED3B7178698D2741E65F697E7BD7F /* Support Files */, ); - name = MethodSwizzler; + name = GoogleDataTransport; + path = GoogleDataTransport; + sourceTree = ""; + }; + 10D07FABCF69DD0EE97B5E881DE54D1F /* Environment */ = { + isa = PBXGroup; + children = ( + 1DCB7B74B4C2EC6C5BAFC108D409C754 /* GULAppEnvironmentUtil.h */, + 9266B058E00473F5A3D7D31E6AFE30EA /* GULAppEnvironmentUtil.m */, + 16FB6D1CB6C00FD26DF39F79C94A3B7C /* GULHeartbeatDateStorage.h */, + 853B2681E8D6B8DC9F55CF27A6E8090C /* GULHeartbeatDateStorage.m */, + BD7302148CAB101FE972B11E7D6DB858 /* GULSecureCoding.h */, + 76248F9402D4DD786D6A8E7AA04A7A4C /* GULSecureCoding.m */, + ); + name = Environment; sourceTree = ""; }; 11286122E16AA6A7EB9997E9E2938367 /* instanceid */ = { @@ -7162,6 +7583,171 @@ path = RNFirebase/instanceid; sourceTree = ""; }; + 113FAA400B44B384ACD031204F85F5A4 /* Support Files */ = { + isa = PBXGroup; + children = ( + 4C94E6DDA61D0E2F0939457B8941960B /* PromisesObjC.xcconfig */, + C6C1424961A6648F4F404DB4D5B51284 /* PromisesObjC-dummy.m */, + ); + name = "Support Files"; + path = "../Target Support Files/PromisesObjC"; + sourceTree = ""; + }; + 11D3F6AF03D8A3626A7FD39925D9BB19 /* webp */ = { + isa = PBXGroup; + children = ( + B1481C8FC99F5FE787F9FBBE96DD5E9F /* alpha_dec.c */, + 3C5D630EAB7ED6E3B3B8A2DA57CE8B0C /* alpha_enc.c */, + 8816AC006C3D22F054F7BAB4EA2511ED /* alpha_processing.c */, + 3E30B8CCF8842538B301F60452DFD5E4 /* alpha_processing_mips_dsp_r2.c */, + AF0ED6FD0E89DAD5362477D5AFF91A2E /* alpha_processing_neon.c */, + 2A2F1FA0788DFD486412DD726FC1C595 /* alpha_processing_sse2.c */, + C9483040D5F6D422F682396B87AF87D3 /* alpha_processing_sse41.c */, + FD022A7C3D909D8519F310D4392F2421 /* alphai_dec.h */, + 61AF1837C4C82F78744ED30517A5031F /* analysis_enc.c */, + 47848D888973B34379A73A1129C8E494 /* backward_references_cost_enc.c */, + 645432A1DF9B3036F4D66BBB89CBAA89 /* backward_references_enc.c */, + 478F25920DDB277A1F4403B7268C02D9 /* backward_references_enc.h */, + 3C4C051A4E9CF5D93B0327AFF8F51044 /* bit_reader_inl_utils.h */, + B491F35981D199A9F597FA6ADB1CDADD /* bit_reader_utils.c */, + D8ABBD704A725E7E0D996145CBF6F03A /* bit_reader_utils.h */, + 5890F013C17AD08F673E9838E1CBC85D /* bit_writer_utils.c */, + 5B528863F8D26E47DBD2FAA61C3FC4FA /* bit_writer_utils.h */, + 079482D8D03370ABEA3B4293E9E0F902 /* buffer_dec.c */, + F4EB52F7237332185617C32F718E1270 /* color_cache_utils.c */, + 726D3479A42B94820104FFB82565ADF8 /* color_cache_utils.h */, + 72F2F55C8488AA7450E778BF58AD47EB /* common_dec.h */, + EAB62C963029E8092CA65348E89AD1C6 /* common_sse2.h */, + B298AD16DF9C7781D252AE8F6F69B0B4 /* common_sse41.h */, + 507484DC13FF28BFA253C3259BC915AF /* config_enc.c */, + 160856CCFCFA358DCF2AAC3EFA195712 /* cost.c */, + 45C98A4D849F92BF74F62E180ABEA4E5 /* cost_enc.c */, + 89C6619CB1C1D1AE75ECCE9C2E6A35A5 /* cost_enc.h */, + 3C4BE532E284D6FC858B445EBCE54BE5 /* cost_mips32.c */, + E24A9D8245F7C2A76A8F628651409D86 /* cost_mips_dsp_r2.c */, + B59C6445493BACD5876AA3D8176366EB /* cost_neon.c */, + 2BB0CFABA51216D7A7818D5F5D3015E7 /* cost_sse2.c */, + 352467F523D37BA242FF792076C4BBA2 /* cpu.c */, + 78E05B5B4544D8C74092E8B0982CF77B /* dec.c */, + D34AAFE9C37C1A4DC2FFAF19DFF69CDC /* dec_clip_tables.c */, + C31EC300C1418FF40CB367611BE8EB41 /* dec_mips32.c */, + 8C64106BB2DF7529C974379A31A7B6EE /* dec_mips_dsp_r2.c */, + B5C4CF7EEBB56E009C17E4CB2CDCD303 /* dec_msa.c */, + F1A4FFD0829F895C7CB4CE1DADA8C124 /* dec_neon.c */, + 4DF0BD63D7D4CFDCC663E62D0F856294 /* dec_sse2.c */, + 2FC5C1273D1024C325327DCD080C4650 /* dec_sse41.c */, + AE42AA2FA59AF812E73CBB61E72ECEA8 /* decode.h */, + C74C60148A4948BAD446E2F2B11586EB /* dsp.h */, + 327D614BA3B1F0B08F1632FD256AEA36 /* enc.c */, + 54AE600BDD27B1D9D24B98E5EA73E2BB /* enc_mips32.c */, + CC558CC663CA045F998F5CA528ADEDB7 /* enc_mips_dsp_r2.c */, + 782DC576EA301487BA3AFF6CDF22C7F0 /* enc_msa.c */, + 7AB2ABB19DF260BF726A2A7DE50BB0C7 /* enc_neon.c */, + 8D34461A66E3259AB0C1167A107511FE /* enc_sse2.c */, + 0707F165A40293C90DB9DB10B0433839 /* enc_sse41.c */, + D79E6FEE7691DA5E934AADB1851C0232 /* encode.h */, + 6D8BCB824FD16FFB5D40146868CEB425 /* endian_inl_utils.h */, + EA3786891CC282557AB2EF14638CDE2D /* filter_enc.c */, + E154067690FE650334C7C3D34DA323A1 /* filters.c */, + AAB27BBE32494400507F8652BE36111F /* filters_mips_dsp_r2.c */, + 371C3A9071849B2A8C9AA73083078BAB /* filters_msa.c */, + CA21C40AB9E6792C5EB386BCA0C5CF9D /* filters_neon.c */, + 387FDB6229B2B5EDABF7EAFC7EB23979 /* filters_sse2.c */, + D53A23815D628A7C3EFFC59488C8EA44 /* filters_utils.c */, + 064078AF10DF91404B3DE14C08B4C6D7 /* filters_utils.h */, + 6638D4A39DF660C0D118FE1FB6420263 /* format_constants.h */, + 0B9BD3B6B09CD5A1C2631CF99883907E /* frame_dec.c */, + 535AA0B78CF70BA9675FAEC421BED1E6 /* frame_enc.c */, + DFC6BCB3B33D02DBB888628D1E52A351 /* histogram_enc.c */, + D21939B5F49D3C368E0AE91BCDCB1CF4 /* histogram_enc.h */, + 762B0734C882B680C9D971AF79E220CA /* huffman_encode_utils.c */, + 102D559173B1A82E75F05608FC7771F9 /* huffman_encode_utils.h */, + FE1CC5E059EA91AFC5ABF8BF527E9F10 /* huffman_utils.c */, + 1C4857A0842D2EBB815D30CCE3A20B92 /* huffman_utils.h */, + AB976C1FBBC26BF65B263E79ED2A0E2D /* idec_dec.c */, + B5609AB6E46F0A418839F14921E70AE4 /* io_dec.c */, + CF05DD10D852093D157806E5E953BD23 /* iterator_enc.c */, + 15B61266CE79A06337D4E2231EBAF1DE /* lossless.c */, + DB4059D2FB364A28E6585D247CD47FBA /* lossless.h */, + 21BBC4149E367B15994D55B0BE6395A3 /* lossless_common.h */, + BB117D47D780DC71082229222E18A9BB /* lossless_enc.c */, + A1F0899513A15CABEC77801711DA43EC /* lossless_enc_mips32.c */, + DCADAF076921DEC4D671151F9E0C9584 /* lossless_enc_mips_dsp_r2.c */, + 9E97258EDDE1B0FF09F0FC66346AD27A /* lossless_enc_msa.c */, + 32E8D2B7930D83212864A4ACCE2292BC /* lossless_enc_neon.c */, + 669E2D815BA85AA4A6BB99088F534BB0 /* lossless_enc_sse2.c */, + 27DCBA8B031ECFD777996CDBB53368B9 /* lossless_enc_sse41.c */, + D93D3654709D1331D79514EC1B960450 /* lossless_mips_dsp_r2.c */, + 32964D290663FAA0AEFD17DAEBD90947 /* lossless_msa.c */, + B4A567AE04DB13B59FF8430E58211E82 /* lossless_neon.c */, + 7E1CF3BEFF840D7071D158D044A4E745 /* lossless_sse2.c */, + B0C730BFACECB7606E3E03C1D15A4BA2 /* mips_macro.h */, + 9602665ED7A4FCF32AFDE7F8439C8C55 /* msa_macro.h */, + 54C80AE83CCD41943A1509A4518CEF1A /* mux_types.h */, + 099A43376A0723FBD49B492ED1DA139D /* near_lossless_enc.c */, + 1B0188F1CFA087DDC5889F8B0B0301C3 /* neon.h */, + 51EE49DA7F1EB208F9461CB6483D55F0 /* picture_csp_enc.c */, + CE50447D6089FD034C451BE7675B6D7A /* picture_enc.c */, + 54D0A0D72E5409D9555B3AB6C444425A /* picture_psnr_enc.c */, + 28360F116ACE0C01D969AB83563A87B3 /* picture_rescale_enc.c */, + 2691CB449C5A42D1964D19F13F61C0B7 /* picture_tools_enc.c */, + F41672D8B6EA45CF462409479614FB31 /* predictor_enc.c */, + F02ACAE8DEE115DBBC18C44F0AE2128C /* quant.h */, + 0F838A60D7566E3ED6EAAAB29782AD39 /* quant_dec.c */, + 5C3170CE50BA839FD7FFABDF189D8F38 /* quant_enc.c */, + 2BDC9CA7E51DCBAD996FE36076C1898E /* quant_levels_dec_utils.c */, + 0500B10E6BA68DF16917B05F920FA4CE /* quant_levels_dec_utils.h */, + 36437C1B03AC2005FE5AE9B6ABB4A399 /* quant_levels_utils.c */, + 93606334B2DB3E80CC396AEDC2F909F5 /* quant_levels_utils.h */, + 64963B0AD90508C9D1DAD41D65CBBC0C /* random_utils.c */, + 6BB4E471066205C1B9F8413CE80BAB3E /* random_utils.h */, + DCB23ABFC8B49A5E319D843667A25D15 /* rescaler.c */, + EB58C1A1A2B45B20B44F908DC5FFD1D5 /* rescaler_mips32.c */, + 893353C22879F217358868739D8C89E9 /* rescaler_mips_dsp_r2.c */, + 476178CDB7F6A524306920EEDD3D60DC /* rescaler_msa.c */, + CBD554C9D80E29A82E56D1B7897C0E38 /* rescaler_neon.c */, + D74BB20E1BC0B778FF8CFFA36C0840CF /* rescaler_sse2.c */, + FC7479F169BDFA83A763E71935B39C0A /* rescaler_utils.c */, + D8183FDF6CBBC2458D910575E0B9AE45 /* rescaler_utils.h */, + 2D591C821A51F0825209BC1C05DFFB03 /* ssim.c */, + 0F2BEB3203326DA9994D2329F5515A34 /* ssim_sse2.c */, + E5BFD2113CD9F64E3ED9DA735B433731 /* syntax_enc.c */, + 21BCCE9D22EB85259CE081E0A923EDB6 /* thread_utils.c */, + 36F488E2824DFEFCE2DA5121F3EFF1AF /* thread_utils.h */, + A99DA828BE8FDFE29CCA18FF1A666E27 /* token_enc.c */, + 7E8C6A830011E9B4493E7F2FC363A651 /* tree_dec.c */, + 392B3106DCD1282949C544B07B1586E4 /* tree_enc.c */, + 2F373F964FD76A572A5BB6D473B3233B /* types.h */, + C6624A128D06B1B7C27D2FBFA0584A44 /* upsampling.c */, + 73D1E0BDB42EE2F595BCB0C3E231490F /* upsampling_mips_dsp_r2.c */, + E10C2950FAF761DCACFC19CB9D52CF9C /* upsampling_msa.c */, + 6A5DB3B95A61733B29846B836C5FE77A /* upsampling_neon.c */, + 288BE286F03060115DD9AF8F02177A9A /* upsampling_sse2.c */, + 6C8FC56CD5FE60871A148C7D2580D8D2 /* upsampling_sse41.c */, + 037F5EC90407C5CE3418149B6C7A824B /* utils.c */, + 6E2CDB4C30DCF3C644EBFB1CB6F8B63C /* utils.h */, + 0605FB329064F4B740AB3DA84343A94A /* vp8_dec.c */, + B0D7F4389F6E6CC404907A69EE8797DE /* vp8_dec.h */, + 37AECEE6AC0671E260C2B1BE9B3738AD /* vp8i_dec.h */, + 754C1763718FE74C32CF806FF8384D33 /* vp8i_enc.h */, + B18979D7EEF1DB0BD8B390FAE4FA6123 /* vp8l_dec.c */, + 872F0037F0BE0480407ABDF7F96FBAF6 /* vp8l_enc.c */, + 0AF863C6208094AACCEA61A2F59700AB /* vp8li_dec.h */, + D2435B61807A015F7C86DCAB5E5A19AC /* vp8li_enc.h */, + 8D7029D8FB8076E86500FDD8484FDDD4 /* webp_dec.c */, + 369513EEA056867CD6A5F02835B302FE /* webp_enc.c */, + D91483DC2ACFBE14D934FB42131A0745 /* webpi_dec.h */, + 82C307D1CC81EE4425E3DE4DFA23E2F3 /* yuv.c */, + 0B2C19870540C57176CD67F1135A50CA /* yuv.h */, + FF92B16CAA4A7AFB4FC58207B113E26A /* yuv_mips32.c */, + 574C5FDCBE394444827C0B4B3C7DE9A5 /* yuv_mips_dsp_r2.c */, + FAEB584D2FCC43846A157044BC9D5E46 /* yuv_neon.c */, + 3967559F2F789C16C8ECC9F64D330D0F /* yuv_sse2.c */, + 8E103C191260FD8059A70EBEAD980250 /* yuv_sse41.c */, + ); + name = webp; + sourceTree = ""; + }; 120C841D0981AFEF45AA0A18FAF3DE27 /* RNFastImage */ = { isa = PBXGroup; children = ( @@ -7239,26 +7825,6 @@ name = Resources; sourceTree = ""; }; - 12F02807DA86ADBA33A1C4BBE5B74CDD /* Support Files */ = { - isa = PBXGroup; - children = ( - 95D858BFDF2F99A6F3D810DEAD6A9300 /* Firebase.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Firebase"; - sourceTree = ""; - }; - 132E7188EFE6AA2EF66D9BFB818FF427 /* Support Files */ = { - isa = PBXGroup; - children = ( - C8ADDD3DE5B9D58ABDF6D510A502F85F /* libwebp.xcconfig */, - 567FF870D1397FAA1691FB0CD6CB3562 /* libwebp-dummy.m */, - BE65063F801DD1E37BBFCF89EB4B25A3 /* libwebp-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/libwebp"; - sourceTree = ""; - }; 137BD35ACC837DDCBB1F79BAC6F186AA /* Support Files */ = { isa = PBXGroup; children = ( @@ -7280,21 +7846,13 @@ name = Pod; sourceTree = ""; }; - 1571351D44DDA44B0522DAC3CC174204 /* GoogleUtilities */ = { + 15A7F9318FA0157E39897677596C6638 /* Frameworks */ = { isa = PBXGroup; children = ( - 730DB5449723E314904FA26F91779A89 /* AppDelegateSwizzler */, - E53C9CC3497634A2C855D1ADC4914341 /* Environment */, - 9550F5053A5585C399A2BED6D5F485D9 /* Logger */, - 0F4E635626BD309E3427F0A7AFCF9061 /* MethodSwizzler */, - 176A13F1785BE8ED053845E30FE0CF72 /* Network */, - 52F43ECD26A7C91B93A004BAF6FAA80B /* NSData+zlib */, - 08FA3881FD30F9B416808AAD7D1A8671 /* Reachability */, - 5900543A95485F383AA39FFDC83A331D /* Support Files */, - 3FFCE7BE739742CA2D2F988E9E825982 /* UserDefaults */, + FCB6EDCCFB847FE622558CA7FACF0C21 /* FIRAnalyticsConnector.framework */, + 5E6CBF3BA9FA871AD606BAA54F66FC97 /* FirebaseAnalytics.framework */, ); - name = GoogleUtilities; - path = GoogleUtilities; + name = Frameworks; sourceTree = ""; }; 15B0FD077CFC5788A5954EC9F4B593CC /* Pod */ = { @@ -7344,23 +7902,6 @@ name = Pod; sourceTree = ""; }; - 176A13F1785BE8ED053845E30FE0CF72 /* Network */ = { - isa = PBXGroup; - children = ( - 095C3A99BAD601DEF79FEC7E58053AA8 /* GULMutableDictionary.h */, - 69A4DE0309583DD90D1046C5499B1BF4 /* GULMutableDictionary.m */, - FF93806C208335D001155DDC1F559DB7 /* GULNetwork.h */, - 31D6386A910752DB6206410DE1299650 /* GULNetwork.m */, - 7F5540001EC3C541DE53A5E0C4D860B9 /* GULNetworkConstants.h */, - 2B591EBDB62B59175625167A78E88D03 /* GULNetworkConstants.m */, - EA8733A840E5BF5CB7160E71BC70F136 /* GULNetworkLoggerProtocol.h */, - D6DD593F04D58A5F3553692C25B27A02 /* GULNetworkMessageCode.h */, - A90EEA3E24B6338A093526F3631E6B57 /* GULNetworkURLSession.h */, - 00EF713613E649AF69AC589CAB985955 /* GULNetworkURLSession.m */, - ); - name = Network; - sourceTree = ""; - }; 17D3AF23ACC0C15926BBC96EAF8121E9 /* Support Files */ = { isa = PBXGroup; children = ( @@ -7372,6 +7913,64 @@ path = "../../../ios/Pods/Target Support Files/ReactNativeART"; sourceTree = ""; }; + 18149080C63A878FBB6D5866B0791E49 /* Support Files */ = { + isa = PBXGroup; + children = ( + 75E84073A3FF1C0075C2A143F4BBA591 /* Crashlytics.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/Crashlytics"; + sourceTree = ""; + }; + 18597F6C4B50A03F961BD4702AB28CEE /* PromisesObjC */ = { + isa = PBXGroup; + children = ( + 6E1351AE14BC4DCE7B93E301AA99026B /* FBLPromise.h */, + 919435F4CD2ADBE3C210FD10F56B568A /* FBLPromise.m */, + 6FAC32E62B1F1A5CF4B7035D16475866 /* FBLPromise+All.h */, + 6D7591D0402DD814820F0F732E55134A /* FBLPromise+All.m */, + 47B052E1FD1233F07E279610681D4C0B /* FBLPromise+Always.h */, + C06F60B264CEB19482C4DFD3476D64D2 /* FBLPromise+Always.m */, + 93F8311DDBE0DBF0536063DB1283834E /* FBLPromise+Any.h */, + BD58A224BC63CD1E1BB8C5E6A0AC8AD7 /* FBLPromise+Any.m */, + 1731BEB8C2C3368DB5FDF5403C2F7DF3 /* FBLPromise+Async.h */, + 4D7BE8D11D0BE425A162D262300BF5D5 /* FBLPromise+Async.m */, + CDAD3963A0F8EA40EAE6B916D5AA0A1F /* FBLPromise+Await.h */, + 459EF69C87F0423DE3DAFA049CEC05EC /* FBLPromise+Await.m */, + 47BAFD858ABCC55478AF6AB0854547DF /* FBLPromise+Catch.h */, + 9338EA7FE417C2BDF76DEEE30198B2B8 /* FBLPromise+Catch.m */, + 68041748F69925013F2E5E2E941E5D0B /* FBLPromise+Delay.h */, + E503EE768F7FB7BA45AF2BCAD9C1BFED /* FBLPromise+Delay.m */, + A05BCBED3EF0DF896274C0F7F49E194B /* FBLPromise+Do.h */, + 86670E276CC761C5AD9108582C55EDC3 /* FBLPromise+Do.m */, + 7F5EDA23D6D2D1ACE2F5DFFCB0B53C29 /* FBLPromise+Race.h */, + 6B3DCE3E62D468D58DE3FECB07CFAB5C /* FBLPromise+Race.m */, + 81CE6C1BD2CD84627ACB2375ECEDDBF0 /* FBLPromise+Recover.h */, + 9DC3538131FBA43CF7F442029413C750 /* FBLPromise+Recover.m */, + 616B59B78E41E0F8743C2A2FDFBA466B /* FBLPromise+Reduce.h */, + 5AD246BB1DA917A3E16D3F36B4867501 /* FBLPromise+Reduce.m */, + 933895F5689A726BB5DBED7880848CEA /* FBLPromise+Retry.h */, + BA065BF226D7D8BE5F672D1B12FD2519 /* FBLPromise+Retry.m */, + 2C015C102D6AB79D534F16ADF531CE8A /* FBLPromise+Testing.h */, + D701D1816B81717849B176050ED98E4F /* FBLPromise+Testing.m */, + F603F708AE1BF751B3ACE89E154E4673 /* FBLPromise+Then.h */, + 05F2BC055A4813F5A29FBD88A3F3261D /* FBLPromise+Then.m */, + 812DCB2F8F49903836E6EBBDD65655F2 /* FBLPromise+Timeout.h */, + 5B3A6A7C3F776BAF61AC51C5A02FBFA0 /* FBLPromise+Timeout.m */, + 09F74600A3F236533A7364611CBCD0A9 /* FBLPromise+Validate.h */, + 1959F3ECFABC8A4D200C1715ED0696A0 /* FBLPromise+Validate.m */, + 3FECE8B750D858CB3C6E9F3EC41E9A9F /* FBLPromise+Wrap.h */, + 070C05407939F9DFE5B7ED06A3FE346E /* FBLPromise+Wrap.m */, + EF4EB3533CCB7A84BFF17BE881F535D0 /* FBLPromiseError.h */, + FE99DA2A671583AFDB9A25490E656721 /* FBLPromiseError.m */, + B1E3B9B644AA67562AB8AF3F6ADB7F0C /* FBLPromisePrivate.h */, + F581E835D4B745A1D287B2D9FAFABD0D /* FBLPromises.h */, + 113FAA400B44B384ACD031204F85F5A4 /* Support Files */, + ); + name = PromisesObjC; + path = PromisesObjC; + sourceTree = ""; + }; 195E608FEFFC6177D6727580B75A402E /* Pod */ = { isa = PBXGroup; children = ( @@ -7416,24 +8015,6 @@ path = ios/Handlers; sourceTree = ""; }; - 1A9A8F7748BD4A4ECA30D287F5D5F67F /* JitsiMeetSDK */ = { - isa = PBXGroup; - children = ( - F74417EBA7079E353532E43164085A3C /* Frameworks */, - 5BD2FD9E5F338A311C76828869F32E72 /* Support Files */, - ); - name = JitsiMeetSDK; - path = JitsiMeetSDK; - sourceTree = ""; - }; - 1C993B9F03DEA570E666CA88E462252A /* Frameworks */ = { - isa = PBXGroup; - children = ( - 4285516BB63AD69A2F0BEDB2C5506374 /* GoogleAppMeasurement.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 1CAD0C2E00566D19F5D303B192CEC9C8 /* Pod */ = { isa = PBXGroup; children = ( @@ -7494,6 +8075,73 @@ path = "../../../../ios/Pods/Target Support Files/React-RCTSettings"; sourceTree = ""; }; + 1F7EC6C11018294EBF40CA4AAD13152A /* FirebaseInstanceID */ = { + isa = PBXGroup; + children = ( + 50D7273241DE97D0F9D835E4AFD14299 /* FirebaseInstanceID.h */, + 31AFD104F69CCD2F1C24B01B859DDA5A /* FIRIMessageCode.h */, + 9BE700AB1A857567583B903EB1F58B73 /* FIRInstanceID.h */, + D78FEB55F9E2565E62801C68DC429BCE /* FIRInstanceID.m */, + 62E764263319E7C9A53A9AF39D7723E5 /* FIRInstanceID+Private.h */, + 36585169EB94500CF044692BF107C3A0 /* FIRInstanceID+Private.m */, + 28FAFC7FE3AEBCDC53B7E984681EB602 /* FIRInstanceID_Private.h */, + 7121DEBABF2BDFF8481B59788B8C759F /* FIRInstanceIDAPNSInfo.h */, + 59B76FA92742AFE4EC1B07FB04CDCEFE /* FIRInstanceIDAPNSInfo.m */, + F3EA4E1C67B5BF8BD4E1E55A6409EB28 /* FIRInstanceIDAuthKeyChain.h */, + D9C3D3CC551D9381EB6D1805585CF24D /* FIRInstanceIDAuthKeyChain.m */, + 297C759A2A6FB64610A331F75C41FC8D /* FIRInstanceIDAuthService.h */, + A4B5638048C9BE689A53D2981A56EE93 /* FIRInstanceIDAuthService.m */, + C33B5059A86C095F0D92336CBCB1F51B /* FIRInstanceIDBackupExcludedPlist.h */, + 60BC27AD9ED5029E588DEDFB282BC600 /* FIRInstanceIDBackupExcludedPlist.m */, + 340F8DC0B45AE963FE9FEB6290B2F0BA /* FIRInstanceIDCheckinPreferences.h */, + E728B448CD6DE78410A3FA3D7DFFAF58 /* FIRInstanceIDCheckinPreferences.m */, + 64858CBC195C53A245090C9C8C11D8DB /* FIRInstanceIDCheckinPreferences+Internal.h */, + 4CC3251FDA9E9F879B68C261CF445809 /* FIRInstanceIDCheckinPreferences+Internal.m */, + E7DE8C91E01DA1613F5EC7CD66F28061 /* FIRInstanceIDCheckinPreferences_Private.h */, + CF993D633A32BC1ADCF4B996EA47AB13 /* FIRInstanceIDCheckinService.h */, + 1DF066F20D14665E0A04D678CAD81F85 /* FIRInstanceIDCheckinService.m */, + 5D7200E0CD187410B1D095CC51FF6E72 /* FIRInstanceIDCheckinStore.h */, + A3EF6DDC9ECF54BEBC12FEF5478C225C /* FIRInstanceIDCheckinStore.m */, + CCE294EC7F18FA41E37CBBE707B45FEA /* FIRInstanceIDCombinedHandler.h */, + 905B1BD1CB9FFBC1DD7770F2DBD5FD19 /* FIRInstanceIDCombinedHandler.m */, + AC3787BF1E614D7EEDF5E1142F012247 /* FIRInstanceIDConstants.h */, + 39D1DB7D0AB5BA90F8138F64EBA4323B /* FIRInstanceIDConstants.m */, + EB3D678D3F78C857A36FCEE91C3A72E5 /* FIRInstanceIDDefines.h */, + 4D68CBDDD5A7D610F9E436686A07B74A /* FIRInstanceIDKeychain.h */, + E97C6B62E60E3076A98791068DE7D7C1 /* FIRInstanceIDKeychain.m */, + FBB3943BA57703F03AC1AE6E9180EC2B /* FIRInstanceIDLogger.h */, + 57F3CF73401C2A7D1861DD573FA5AAAB /* FIRInstanceIDLogger.m */, + 608E4B0589801079221FEB94B6D394AC /* FIRInstanceIDStore.h */, + 7BC2EF7B3BFD238AB12617D31274CEF8 /* FIRInstanceIDStore.m */, + A0DE2AA756FD1093A58487EEF833F499 /* FIRInstanceIDStringEncoding.h */, + 580123A082788AF220ECF528D65896DE /* FIRInstanceIDStringEncoding.m */, + D00145960C57E93C0FE7769437FEFA04 /* FIRInstanceIDTokenDeleteOperation.h */, + 9CB6851B50895A42D3F7C877300D7C7A /* FIRInstanceIDTokenDeleteOperation.m */, + 08419E1C07242E0A29A26A675DC67E63 /* FIRInstanceIDTokenFetchOperation.h */, + 4B78E7E3DBE12168C17E886E24FB2F51 /* FIRInstanceIDTokenFetchOperation.m */, + 9DC55014AFA153FD4E3CBC4A4A6CEF69 /* FIRInstanceIDTokenInfo.h */, + 5372D71E7AAFE0D044943DB958C2F428 /* FIRInstanceIDTokenInfo.m */, + ABB34BE98015F83F80BC4216458D9FE9 /* FIRInstanceIDTokenManager.h */, + BD2D19249B0E5F20B228D7924697E712 /* FIRInstanceIDTokenManager.m */, + 95F672D173395EBA22AF0884C6C8915F /* FIRInstanceIDTokenOperation.h */, + 50B1336BF0B799990F11A2C6C846FEC9 /* FIRInstanceIDTokenOperation.m */, + 7DA120FFE328161A90702286BAB6CDA6 /* FIRInstanceIDTokenOperation+Private.h */, + 81DA341D791704280F8256A98FF27460 /* FIRInstanceIDTokenStore.h */, + 3CA2FA4336B15BA4DCCD78A997AEC892 /* FIRInstanceIDTokenStore.m */, + 77028BA581AF00AEF7C147D7449E82B9 /* FIRInstanceIDURLQueryItem.h */, + D53CE5F9F1B3C1396FB3444A3DC670B0 /* FIRInstanceIDURLQueryItem.m */, + D2339AD0FFA27A5E25CA38B3E89E724E /* FIRInstanceIDUtilities.h */, + 51087434509AC9D80EDBA3801FBA46D9 /* FIRInstanceIDUtilities.m */, + 3995372A68A43A67B051244F80037938 /* FIRInstanceIDVersionUtilities.h */, + 014FBCA79FB8FD0C06F5F4EBBC1B6BE8 /* FIRInstanceIDVersionUtilities.m */, + 325C4D831CC5588DA91A39FF53FA5BB0 /* NSError+FIRInstanceID.h */, + 8DFBAA668DAA11EFFF653C4F4F65920D /* NSError+FIRInstanceID.m */, + 3AFE7C92461044B160C47A6C0AAAB752 /* Support Files */, + ); + name = FirebaseInstanceID; + path = FirebaseInstanceID; + sourceTree = ""; + }; 21318A240F7F17BFB699F36FFA95A5A5 /* Support Files */ = { isa = PBXGroup; children = ( @@ -7505,15 +8153,14 @@ path = "../../ios/Pods/Target Support Files/RNDeviceInfo"; sourceTree = ""; }; - 215F22565843CB30C76C33F6CA2789FD /* FirebaseCoreDiagnosticsInterop */ = { + 216ED3B7178698D2741E65F697E7BD7F /* Support Files */ = { isa = PBXGroup; children = ( - 4A101D6AA53CF88031BB16C9B3E7F9D6 /* FIRCoreDiagnosticsData.h */, - 349D2D31BB70D54765B7F471065C958E /* FIRCoreDiagnosticsInterop.h */, - 64262144F4E5F4033E4F0A0B9609FED0 /* Support Files */, + B43DE523DEC5C5015D53A04238FFF28A /* GoogleDataTransport.xcconfig */, + 2EA1D92B58046A683FB99792F54C738E /* GoogleDataTransport-dummy.m */, ); - name = FirebaseCoreDiagnosticsInterop; - path = FirebaseCoreDiagnosticsInterop; + name = "Support Files"; + path = "../Target Support Files/GoogleDataTransport"; sourceTree = ""; }; 2188DAB106F0A2AC9B7BA6704B34E13F /* Pod */ = { @@ -7725,6 +8372,20 @@ path = UMCore/UMModuleRegistry; sourceTree = ""; }; + 248C867CFC61347DCAF2D42E96528B93 /* SDWebImageWebPCoder */ = { + isa = PBXGroup; + children = ( + 4539E3108AC9825410E6FE95CBEB6EA7 /* SDImageWebPCoder.h */, + F15A1B308313E7B51B2753B9D83EDFA5 /* SDImageWebPCoder.m */, + 8825B0D3568A19F57CDF00412E9B2DD6 /* SDWebImageWebPCoder.h */, + 30B2778F70E9E7B0D2AE6C69B7F5FA18 /* UIImage+WebP.h */, + 84EC518D9D034614AA1F401DB6FF9D92 /* UIImage+WebP.m */, + 6CF7EC609CAD8174E757012DA4B177A1 /* Support Files */, + ); + name = SDWebImageWebPCoder; + path = SDWebImageWebPCoder; + sourceTree = ""; + }; 24F3E149DAFB7D2E3DEC32CA31798F23 /* react-native-jitsi-meet */ = { isa = PBXGroup; children = ( @@ -7790,89 +8451,6 @@ name = Pod; sourceTree = ""; }; - 2831255621399A1A95B6A58D28D3B520 /* Products */ = { - isa = PBXGroup; - children = ( - 3EEAA606F6866DA20E6601B9655B1027 /* libBugsnagReactNative.a */, - 6FFB7B2992BB53405E6B771A5BA1E97D /* libDoubleConversion.a */, - A225ED83E33DC48D25B9FF35BA50CCD0 /* libEXAppLoaderProvider.a */, - AD40A94AE1ADFA1CDF9602BA3B04C90E /* libEXAV.a */, - 220361FF3B2778F8F38C2C4DCC5B49FD /* libEXConstants.a */, - ED1E3FC0DC90F4A787472917BFB6B235 /* libEXFileSystem.a */, - 80A51B61FECFED8D1A0D95AAD32A2938 /* libEXHaptics.a */, - 72E494917AC5EC2582197F07061A28B0 /* libEXPermissions.a */, - 574E8A849B86DCF8EE5726418D974721 /* libEXWebBrowser.a */, - ABFEEA82A6C346B22843FBE0B0582182 /* libFBReactNativeSpec.a */, - E2B63D462DB7F827C4B11FD51E4F8E2D /* libFirebaseCore.a */, - 8CC9178C366942FD6FF6A115604EAD58 /* libFirebaseCoreDiagnostics.a */, - 2DA0D814DFCB860D31D7BCD63D795858 /* libFirebaseInstanceID.a */, - 06489499588BFA8FD5E63DD6375CD533 /* libFolly.a */, - 3CA7A9404CCDD6BA22C97F8348CE3209 /* libglog.a */, - 856B5CD56F194FAD26EA91620B66D614 /* libGoogleDataTransport.a */, - 6942351307BC1F54575D9853307EAE0E /* libGoogleDataTransportCCTSupport.a */, - B43874C6CBB50E7134FBEC24BABFE14F /* libGoogleUtilities.a */, - 279390C893577F74DD2049383E1EDD1A /* libKeyCommands.a */, - 5E4674603A5D5B9215FFA0F8E69F8B71 /* liblibwebp.a */, - 06FC5C9CF96D60C50FCD47D339C91951 /* libnanopb.a */, - 586602EDE69E2D273945D156ECB89853 /* libPods-RocketChatRN.a */, - ABCA9F4CD6EE0D4686EBA505F526A436 /* libPods-ShareRocketChatRN.a */, - F958876A082BF810B342435CE3FB5AF6 /* libRCTTypeSafety.a */, - BD71E2539823621820F84384064C253A /* libReact-Core.a */, - 6771D231F4C8C5976470A369C474B32E /* libReact-CoreModules.a */, - 37592FDAD45752511010F4B06AC57355 /* libReact-cxxreact.a */, - D9F334F2E90E3EE462FC4192AF5C03BD /* libReact-jsi.a */, - F2E7C88DFCD460A4B46B913ADEB8A641 /* libReact-jsiexecutor.a */, - 2577F299FCB0A19824FE989BE77B8E8F /* libReact-jsinspector.a */, - 242758B9EDFF146ABE411909CAC8F130 /* libreact-native-appearance.a */, - B75A261FE3CE62D5A559B997074E70FC /* libreact-native-background-timer.a */, - 8C3E2A6E6F93E60E397F6C0BBA710BF5 /* libreact-native-cameraroll.a */, - 08D1FFC2980C1ED72AE9A4C44A0544C3 /* libreact-native-document-picker.a */, - 8074129DF318155B29544548E1CAF4A3 /* libreact-native-jitsi-meet.a */, - 5CA8F1A20B87DBB263F925DD7FE29947 /* libreact-native-keyboard-input.a */, - 686FA236B3A0EDC2B7D10C6CB83450C8 /* libreact-native-keyboard-tracking-view.a */, - 012242E4480B29DF1D5791EC61C27FEE /* libreact-native-notifications.a */, - 48425DA2F01D82A20786D5E55E264A29 /* libreact-native-orientation-locker.a */, - 2B17A71888AA28CEFEC37B72F2A68A91 /* libreact-native-slider.a */, - B058F035CFD84ECBF8414E4EAE5834FC /* libreact-native-video.a */, - 8DF63376066E2275FF26820B3A512A9B /* libreact-native-webview.a */, - 73F8A95B79671F501F31EA4F1D04AA8B /* libReact-RCTActionSheet.a */, - FE7B9294FF05AAFD1653E2104E10844A /* libReact-RCTAnimation.a */, - F71EBF73F354B475D465FF6DE9A66707 /* libReact-RCTBlob.a */, - EEDBF403E8E0B3885E65C2741B536BC5 /* libReact-RCTImage.a */, - 802121F5B756ACBFDD6D08C36246DADD /* libReact-RCTLinking.a */, - A68E5A9B69A3BA0FD52CAF7A354EC93B /* libReact-RCTNetwork.a */, - 269BE773C9482484B70949A40F4EA525 /* libReact-RCTSettings.a */, - E6A16705C69FC7DE11C2469A4A0F8358 /* libReact-RCTText.a */, - C1A919103EAC9813D236486C34FC0A21 /* libReact-RCTVibration.a */, - D5C775614AC76D44CECB6BE08B022F1F /* libReactCommon.a */, - 51B50F20C76CF72E2BEF8D4764235306 /* libReactNativeART.a */, - 858AFA83985937825473045CF6808B15 /* librn-extensions-share.a */, - 4FDA96879D96070EB1983E98E655CBDC /* librn-fetch-blob.a */, - 3B65CB9B6DCD893501BDCF1DE7BA926C /* libRNAudio.a */, - 202722AA0D229A11350F6DC0F267A0BA /* libRNBootSplash.a */, - 72DE4BF3FB9CE0858E90F96FEF8A53AE /* libRNDateTimePicker.a */, - E0FE6533198104C97DB047DD5CD8AC67 /* libRNDeviceInfo.a */, - E55EA3C6F285F6FA8067C5C8A428FA64 /* libRNFastImage.a */, - 4EAF7225D8D498E7D232AE1520E6CBD3 /* libRNFirebase.a */, - 8F65F9361F2069CF9E9D751272968DE4 /* libRNGestureHandler.a */, - 3AEA4A114C08533A2C0F8E039A4C5EB9 /* libRNImageCropPicker.a */, - 15912309AA610251329D74FA111DE5CA /* libRNLocalize.a */, - C777CF2FB1E39A45CBBDB54E8693F471 /* libRNReanimated.a */, - E496A53A92B4E464B5C30DC5B1E4E257 /* libRNRootView.a */, - 50B5347C9A6E93B7D4CFC3673BA6FB7E /* libRNScreens.a */, - BFCE4058442BFB8DEB89BA3F261A76BA /* libRNUserDefaults.a */, - 8998273719FDD789E6F9C7541AFD0B33 /* libRNVectorIcons.a */, - 580712ADE0DDE9601ED35B000EC802D6 /* libRSKImageCropper.a */, - B0B214D775196BA7CA8E17E53048A493 /* libSDWebImage.a */, - FCF61D9B2B75054A9A3185DDC609B7FF /* libSDWebImageWebPCoder.a */, - AF72FD600DE7E2D330BA50F877993E05 /* libUMCore.a */, - 3B640835BAA914DD267B5E780D8CFEC7 /* libUMReactNativeAdapter.a */, - 65D0A19C165FA1126B1360680FE6DB12 /* libYoga.a */, - 3DCCC9C42EB3E07CFD81800EC8A2515D /* QBImagePicker.bundle */, - ); - name = Products; - sourceTree = ""; - }; 28DEB85CF0F94B3BA3F4E2368695F0E2 /* Pod */ = { isa = PBXGroup; children = ( @@ -7881,6 +8459,26 @@ name = Pod; sourceTree = ""; }; + 298EEA19A87671656A4C853C89031B0D /* Frameworks */ = { + isa = PBXGroup; + children = ( + 02B92AD44CE84D68E6DC4BD460DA089D /* Fabric.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 29CCB6618EF5BA556C5A34E647C5F5A3 /* FirebaseCoreDiagnostics */ = { + isa = PBXGroup; + children = ( + BE9A40D3A7B0498886FB7048EF92990B /* FIRCoreDiagnostics.m */, + 29E2C22FF879C56A44707455873A657F /* firebasecore.nanopb.c */, + A15D9453B10C17715504A05E32605847 /* firebasecore.nanopb.h */, + 77E5437F2565ABF89F8E76F4530936A3 /* Support Files */, + ); + name = FirebaseCoreDiagnostics; + path = FirebaseCoreDiagnostics; + sourceTree = ""; + }; 29F54DE9492FAB16F3A6F6CC90BF02ED /* BaseText */ = { isa = PBXGroup; children = ( @@ -7964,6 +8562,15 @@ path = Recording; sourceTree = ""; }; + 2CFB22E97429F69EF0B16000B9744E75 /* Support Files */ = { + isa = PBXGroup; + children = ( + 1488EEFA6E3BB4A30E0FA6D3CAB794CC /* FirebaseAnalytics.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/FirebaseAnalytics"; + sourceTree = ""; + }; 2DF32949BF959F7FFCCDB08901300C06 /* Pod */ = { isa = PBXGroup; children = ( @@ -8081,30 +8688,37 @@ path = ios/Nodes; sourceTree = ""; }; - 3753A903489A2CBC645231993C8E6737 /* RSKImageCropper */ = { + 343E456B2AB936C3DDC90D1F4B20237F /* MethodSwizzler */ = { isa = PBXGroup; children = ( - 2AD9D6D015FBBB5D23A16236EFDC21EA /* CGGeometry+RSKImageCropper.h */, - A6E0D58232EF1BE4057DF65FDD108841 /* CGGeometry+RSKImageCropper.m */, - B6B66C3CAF05853DB459D7E95B9AA823 /* RSKImageCropper.h */, - 097257AFA6B9ABB50D1D8D460C297CE1 /* RSKImageCropViewController.h */, - 02C05262BFECC90910E7E70E31AD9520 /* RSKImageCropViewController.m */, - 5C698118A106815F6AB507E9C315C27E /* RSKImageCropViewController+Protected.h */, - 72C4B8A7FB6E16BCE4CDCCB39D680712 /* RSKImageScrollView.h */, - 2132ED6BB290718E77492CADF518EEAA /* RSKImageScrollView.m */, - CB747B3063C14FFE271EBE8037CAC091 /* RSKInternalUtility.h */, - 773EFFD9502444FAACFF9DEAF0B811F7 /* RSKInternalUtility.m */, - 64FF2026735EBE214C8F6A877CC5B06F /* RSKTouchView.h */, - BD02FE5A2E5FEA9FC370768CE07C74A3 /* RSKTouchView.m */, - 463FBAE4CC12986BA5E6A2BF56A0D785 /* UIApplication+RSKImageCropper.h */, - B8408F86535310EC07AD7AB9FE1B5212 /* UIApplication+RSKImageCropper.m */, - 2238DF0F9A33FE9E1C8F07154BC375B0 /* UIImage+RSKImageCropper.h */, - 1ABEBFC8AF8824A623B2CCBDA9B3EDD3 /* UIImage+RSKImageCropper.m */, - E8EEAD52B1001C6E42DE46FA67FFC33B /* Resources */, - BD62BB88BAFD525AE7E898BBB5BCA27B /* Support Files */, + C8AAC00DA3B23BFCDC15277B87A9557B /* GULOriginalIMPConvenienceMacros.h */, + 9CE153AFAE2F96D0F934D1BAF6939CCD /* GULSwizzler.h */, + 238912792225FCFD2816B4E4CF1D3D79 /* GULSwizzler.m */, ); - name = RSKImageCropper; - path = RSKImageCropper; + name = MethodSwizzler; + sourceTree = ""; + }; + 34C9625F8E0C707FA11F358702EB8A04 /* GoogleDataTransportCCTSupport */ = { + isa = PBXGroup; + children = ( + C67A04FD4DB80B332055C981539D61A1 /* cct.nanopb.c */, + 3EE448D03DC1030CB1623347E60A913A /* cct.nanopb.h */, + 5847FD2633BC9047F028FE38A7084AD7 /* GDTCCTCompressionHelper.h */, + 636D6783185DE1F442D58AEE9C52B4B1 /* GDTCCTCompressionHelper.m */, + 06F15669F5B860FA4E51821B5C31DD25 /* GDTCCTNanopbHelpers.h */, + 583F2384046EE63CCD0360AE527E4565 /* GDTCCTNanopbHelpers.m */, + 037048A23ACDD15887BD75AFB6F14662 /* GDTCCTPrioritizer.h */, + 4C90CBA13EADC2DE8CBA3C3E38DBAD8D /* GDTCCTPrioritizer.m */, + C0DCE0BB52AF13A0B41211860EA0CDCA /* GDTCCTUploader.h */, + 23D5AA523F9126F7D30ECF8AA9BBE433 /* GDTCCTUploader.m */, + 33446CC862D2173DA53D5E95665C24A8 /* GDTFLLPrioritizer.h */, + 500E76CDFB8113AFD9AC1DB0CB454843 /* GDTFLLPrioritizer.m */, + 6B8FEC8581AD19DDD78ABBB18ECE2F22 /* GDTFLLUploader.h */, + 2D6E08DDF45483F5A4732B16AF971B03 /* GDTFLLUploader.m */, + 6B6C32C73706CF621C5AF986E93AFEA5 /* Support Files */, + ); + name = GoogleDataTransportCCTSupport; + path = GoogleDataTransportCCTSupport; sourceTree = ""; }; 390785AB55707AC1FD98984D744EBB8E /* VirtualText */ = { @@ -8189,6 +8803,16 @@ path = Singleline; sourceTree = ""; }; + 3AFE7C92461044B160C47A6C0AAAB752 /* Support Files */ = { + isa = PBXGroup; + children = ( + 2F9FF75DBA3C633DA045206F6C039C91 /* FirebaseInstanceID.xcconfig */, + E05491038895B9B893771A35A083EAA8 /* FirebaseInstanceID-dummy.m */, + ); + name = "Support Files"; + path = "../Target Support Files/FirebaseInstanceID"; + sourceTree = ""; + }; 3BEA7F395A5379E3F7494E212CC95F8F /* React-jsi */ = { isa = PBXGroup; children = ( @@ -8218,14 +8842,6 @@ path = SafeAreaView; sourceTree = ""; }; - 3CAF10CB331D545D1790DB9BD7E08531 /* CoreOnly */ = { - isa = PBXGroup; - children = ( - C753E2C0E88ECD9993A02DF28C858778 /* Firebase.h */, - ); - name = CoreOnly; - sourceTree = ""; - }; 3CD5A5DBD0C39E34669F609FA418F17B /* Services */ = { isa = PBXGroup; children = ( @@ -8271,13 +8887,12 @@ name = Pod; sourceTree = ""; }; - 3FFCE7BE739742CA2D2F988E9E825982 /* UserDefaults */ = { + 3F6F28E6BE7C21FFF5BEC8EA83FCA9A1 /* Resources */ = { isa = PBXGroup; children = ( - 63FD78AD9CEFB2DE5FF77E72C8C7A453 /* GULUserDefaults.h */, - E55949C58B399743C8A2FAF2397938F2 /* GULUserDefaults.m */, + 50E82E5A5409C6B9B611DFB5A5C88A38 /* RSKImageCropperStrings.bundle */, ); - name = UserDefaults; + name = Resources; sourceTree = ""; }; 40C89F6D1E92923AAF9C432C853DEDDE /* DevSupport */ = { @@ -8340,16 +8955,6 @@ path = "../../node_modules/react-native/Libraries/Image"; sourceTree = ""; }; - 42DB5497D0205BE1831E7686A491E95F /* Firebase */ = { - isa = PBXGroup; - children = ( - 3CAF10CB331D545D1790DB9BD7E08531 /* CoreOnly */, - 12F02807DA86ADBA33A1C4BBE5B74CDD /* Support Files */, - ); - name = Firebase; - path = Firebase; - sourceTree = ""; - }; 432DD7F734385DFE0A23B541CBE8FE93 /* Pod */ = { isa = PBXGroup; children = ( @@ -8370,6 +8975,17 @@ path = "../../../ios/Pods/Target Support Files/UMCameraInterface"; sourceTree = ""; }; + 43B8BB7576E1183520FEAE7BF9E22D8D /* Support Files */ = { + isa = PBXGroup; + children = ( + BB473672F668467D6664FFB5D1B0E078 /* DoubleConversion.xcconfig */, + F78C3AEA250BDD82BE7FE666904B87A3 /* DoubleConversion-dummy.m */, + C17CE26530BAEFDE35C1E982341393BB /* DoubleConversion-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/DoubleConversion"; + sourceTree = ""; + }; 452B819A64D54ED90C10B819DDA2B1E8 /* UMTaskManagerInterface */ = { isa = PBXGroup; children = ( @@ -8385,6 +9001,17 @@ path = "../../node_modules/unimodules-task-manager-interface/ios"; sourceTree = ""; }; + 472D0655A441F438064A68603A68705A /* Support Files */ = { + isa = PBXGroup; + children = ( + DED9FC57D70D86176F806A8A2529655A /* RSKImageCropper.xcconfig */, + 52EB1989DFD74CEB5377A42F0481FCAC /* RSKImageCropper-dummy.m */, + 11C183F4C4B1F1E989B5028A735C3B2A /* RSKImageCropper-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/RSKImageCropper"; + sourceTree = ""; + }; 47384517E877F69FF0829F827FE8F393 /* RCTImageHeaders */ = { isa = PBXGroup; children = ( @@ -8474,6 +9101,23 @@ name = Pod; sourceTree = ""; }; + 4928610451BAB56E49BA8FF8129BF910 /* Network */ = { + isa = PBXGroup; + children = ( + B64A61A851185348B2695008405AD490 /* GULMutableDictionary.h */, + 545D3B715E5AF6AFEC5AE16325F9E898 /* GULMutableDictionary.m */, + 899A689BA65BA61151C1DDFB19F5BE93 /* GULNetwork.h */, + AAC30C36CEF4ACB54CE1E6E49DCF3E31 /* GULNetwork.m */, + 9AB0FF969520EECB0B36AF7E6D88CD2D /* GULNetworkConstants.h */, + 67495001F5CD5835C2BB0CC49D35E686 /* GULNetworkConstants.m */, + F17947A41DC67706AD2ADAD8C7C559C3 /* GULNetworkLoggerProtocol.h */, + 0383EBC057B08B3B4D8E2D06F7D33F38 /* GULNetworkMessageCode.h */, + DD709B78F7B831FDC9366D13746333E0 /* GULNetworkURLSession.h */, + 1876F2F1E1CB7222FA2BE64E89BC0A68 /* GULNetworkURLSession.m */, + ); + name = Network; + sourceTree = ""; + }; 4959A9D24132890691AF88E4AD67A636 /* Interfaces */ = { isa = PBXGroup; children = ( @@ -8526,168 +9170,15 @@ path = "../../ios/Pods/Target Support Files/react-native-webview"; sourceTree = ""; }; - 4D9C7557ECB54D5FB587C4FF3E2BB92B /* Support Files */ = { + 4EE5506810A48BF6790471E58A60007A /* Support Files */ = { isa = PBXGroup; children = ( - 0807A09287F78F29B2AC03E88390E82E /* Crashlytics.xcconfig */, + B8B19D7098E1C36EB82CCA7E162D0984 /* glog.xcconfig */, + 8ECEDAD2A838321D345DEE9D05E6BB90 /* glog-dummy.m */, + 951060CAC29689856FF5CE28D672D5F9 /* glog-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/Crashlytics"; - sourceTree = ""; - }; - 4E4AC296B53242E0B91BDB018D55CA0B /* webp */ = { - isa = PBXGroup; - children = ( - 489E83582CEC6E57822FE6F259E47CE1 /* alpha_dec.c */, - 56326E64636C5860ADD9D8717D8B8C9B /* alpha_enc.c */, - 6CF1F51F10F527FFA49F8C35BCC08D4A /* alpha_processing.c */, - 83F1B2BD4B45BF9CD1B13B3F8EE023A3 /* alpha_processing_mips_dsp_r2.c */, - 5E2A92E98E8DBDA927A8118442EA22BB /* alpha_processing_neon.c */, - 3DFF4DA664C9CAA3AE8F80888BBEE863 /* alpha_processing_sse2.c */, - D40726BFD729316AABE7209F9CE71ECB /* alpha_processing_sse41.c */, - DD6632004F2003DCDE912F11C44CEA56 /* alphai_dec.h */, - 30EA317F2FE8EB6FA84DCD6525D08D40 /* analysis_enc.c */, - DC1ED14685D94D7B65AD30A55F657B68 /* backward_references_cost_enc.c */, - 358C919544CAD4E88269535A33E18FBE /* backward_references_enc.c */, - C4632797BCED5CA7E43264D6EF175EB8 /* backward_references_enc.h */, - 814BC5DE2797DF0C936CF03839974699 /* bit_reader_inl_utils.h */, - AC615868BE8E9F48A3A6A126EAA7DA56 /* bit_reader_utils.c */, - 66BF521E492F11C1AAEE17475971CB70 /* bit_reader_utils.h */, - 38A4FA5B11D3DBFA1186FAB230AC87CA /* bit_writer_utils.c */, - 941713D7F2ED661F6F62848161C4ACCD /* bit_writer_utils.h */, - 5807EB6D92C08024B83553174ACA5DD1 /* buffer_dec.c */, - BC9B332A6829DBEC2A6BEED66CA30C36 /* color_cache_utils.c */, - B2CB01CE9E07412C5A22C1E15F8F4859 /* color_cache_utils.h */, - 9951AFB14B84D5988BFB7DC34F63160E /* common_dec.h */, - A942963ED07E6DEB650FA128366D8156 /* common_sse2.h */, - 1BC69F9FE2E8DBE28E99666C455B61BD /* common_sse41.h */, - 7223382B9B79F03CB07B899C151304FA /* config_enc.c */, - E6F1D1E9706AB9D1DCDD8ABE42EB7FE9 /* cost.c */, - 1479715D7848A8E4C2D19640161BB45D /* cost_enc.c */, - 7B4C9226B4D3A7B6A7E8418CF95CBCC4 /* cost_enc.h */, - 67D1334CEA80F39AAF27FF022F320928 /* cost_mips32.c */, - 3106BC87F2CAE5827507F197753E8093 /* cost_mips_dsp_r2.c */, - DCB22A38791F748AE8290C77D99CCC56 /* cost_neon.c */, - 222A34B911FF9FCFF752C596AE492C54 /* cost_sse2.c */, - 52EA42A6C8276F0CBCB74687737707C3 /* cpu.c */, - 190B39A0F3F2FA4A66BF58DD49E9BCFB /* dec.c */, - 870525D77085BDC7FD874AC0C6EE096B /* dec_clip_tables.c */, - 2F3473B6568C15F43FDFEAEBB5BC8625 /* dec_mips32.c */, - 0143E920C1C46322DEAACDA3FEED6B7A /* dec_mips_dsp_r2.c */, - 79CB84FBC11AB9D21E3012451C45CB96 /* dec_msa.c */, - 07917CB28CC07843C9E23E4D4CB0FE07 /* dec_neon.c */, - 55C0E8840659DD2BA9398CCE45C84796 /* dec_sse2.c */, - CDABE96C15F9B4FD9B3FA2B5448EFF61 /* dec_sse41.c */, - DE53658AF11CD49486D35DB8F2FE3A22 /* decode.h */, - 34BF1241D53E178690864E349AD0D6CB /* dsp.h */, - 3FDBF5EADD2E3AD2936BAD2E5FBA95D0 /* enc.c */, - E4376CCDB1E042F671C3D5BABF69B876 /* enc_mips32.c */, - 669FED7B0C83E29684D6A0598821FBD9 /* enc_mips_dsp_r2.c */, - 8DDE75E72B2E19F5B9CA9F1434A1B294 /* enc_msa.c */, - 0729A290877CECD5381E28D8670BA702 /* enc_neon.c */, - 9B4880B22F4A12C9C9791F4B32571F9C /* enc_sse2.c */, - 1C3933A150F307BEBEA5276E79AE9939 /* enc_sse41.c */, - B79D1587D505AC41205B1956A58CDE6D /* encode.h */, - E6A4AB4466400E7177CD81A00D56EC7D /* endian_inl_utils.h */, - 7B0A69B6FACD7C8A7159992BEA265099 /* filter_enc.c */, - 353D6BB05EF772EEB577A534B8E2C1EB /* filters.c */, - 62E3416996F9DBED8A49ADD5F352C1E1 /* filters_mips_dsp_r2.c */, - 51532E710DF75FD878886A5E6C8F1977 /* filters_msa.c */, - AA736E438B04D91D11B081155E2CF4E0 /* filters_neon.c */, - 7E96099942FD1BC96E81912D52A2DD99 /* filters_sse2.c */, - 8EC2141037CFBBAB3FA9E1072F9D6F23 /* filters_utils.c */, - 1C993823267D96AA814B7C38AF6C7369 /* filters_utils.h */, - 4D6BDAF7F393697F29CD3C449B02F883 /* format_constants.h */, - 8CD8755AF098A173E00AA86509262962 /* frame_dec.c */, - C01777BFA2467300977CA3FEF913D5F4 /* frame_enc.c */, - DD9132B64FBE45A4C87A571D30B33B93 /* histogram_enc.c */, - E35994BA61AA03850DB1775AB78F5240 /* histogram_enc.h */, - AF6E7AD32B0CAFD0E83AA25B15391D05 /* huffman_encode_utils.c */, - CC306A91677E008B485C2693BBF1C7BF /* huffman_encode_utils.h */, - EEB2E8240966298FEA727263F58AF026 /* huffman_utils.c */, - 71D84307C5CFE93C1EA2452F993A5334 /* huffman_utils.h */, - C49BB1DB9017B92D7A60FF49B674F10E /* idec_dec.c */, - D2ACF36489C9B96840468D3F72ED2479 /* io_dec.c */, - 49CD23BE81224DB8D95529CC8205EBAA /* iterator_enc.c */, - 6608F2F8DDC7A9422458F90A885EA723 /* lossless.c */, - E7DBE578144365956009AA5CE27574C9 /* lossless.h */, - 0FAEBE5D58863C9A3B5B59A94EA01F80 /* lossless_common.h */, - E258A8E46A886DA9F51CC133614C1696 /* lossless_enc.c */, - 7336EA76552B82F831BCF41D5DBFC597 /* lossless_enc_mips32.c */, - D307D68C68FE4F52BA3146D3C90DDE83 /* lossless_enc_mips_dsp_r2.c */, - 8D29688C643B920F82DE60C7F438D732 /* lossless_enc_msa.c */, - 4D420AC726A223105A3A66DD59C7E9A6 /* lossless_enc_neon.c */, - 00F8B0C7A4D6446D5585DCDC4DEB566C /* lossless_enc_sse2.c */, - 78F3FBD7C471BA4C5B6D151E01926216 /* lossless_enc_sse41.c */, - 5B3821D4D649D9795E1609C4D166AE59 /* lossless_mips_dsp_r2.c */, - FA224BD245F6880CF82A97B34F57EA47 /* lossless_msa.c */, - D9E1543EA3F83B6350BB339D31E74A42 /* lossless_neon.c */, - 5B2535034DE2FFF715358C483D50EC8C /* lossless_sse2.c */, - 1FEA399CF91DC9F45F91622F9ACFBB2D /* mips_macro.h */, - 0B1AE985C329624758A2E5C9F691D7D1 /* msa_macro.h */, - 6978AE3655589E7A3736CE24EF459AE0 /* mux_types.h */, - 9B1DED816870AF0C0B03329B34DC15BD /* near_lossless_enc.c */, - F40A68A5A790E9F7437AC7A11A10E049 /* neon.h */, - 52FF01E96854D8F37412901CC140380F /* picture_csp_enc.c */, - 85DDB9877837BA0AF9B0F7B6DEC362A9 /* picture_enc.c */, - 492152604E4FD300199AC37801C7C124 /* picture_psnr_enc.c */, - DBD19985FDA6E09B99A41FCAEBE6B1BE /* picture_rescale_enc.c */, - 804AD74736151223ADA3BC5674D5EBD5 /* picture_tools_enc.c */, - 693DA1F565A6FF66C8393EEABBBBDE86 /* predictor_enc.c */, - 3C1BC541497F9D69CFB6FF7A5F1D16E5 /* quant.h */, - 9360604531512771A9FD089A9837C676 /* quant_dec.c */, - 369C36A413EA1CD682B6C7998A87C369 /* quant_enc.c */, - AC67BC726D036DB665F8D256B87CE29D /* quant_levels_dec_utils.c */, - 250CF8B419B162FB992D8736BE4DBC17 /* quant_levels_dec_utils.h */, - ECEDE0D5F2E5C9837501F2C507064EC3 /* quant_levels_utils.c */, - EC832A43F0BD80A7DCD2D42A6A83BBE3 /* quant_levels_utils.h */, - 16539A1962C2EA438882C01AA585AA85 /* random_utils.c */, - E94CCAA4B5D0B31346AD905F24B5C788 /* random_utils.h */, - BCC4CC6682FE82D7FD68D5C478533F62 /* rescaler.c */, - 323084A9C7E3739A9C9108ABE90C5364 /* rescaler_mips32.c */, - 70FC2444F6223914BEA560B3136110B7 /* rescaler_mips_dsp_r2.c */, - 3653B913D7CA70CA4C51EC4C9CA27F3A /* rescaler_msa.c */, - 2CE8A788BAAD4C7C8CF9143DFD3B9506 /* rescaler_neon.c */, - 29E6BDF2F5D56B7867030711E63DFE1D /* rescaler_sse2.c */, - 0C3A03091625137666805ABD9CD63C4F /* rescaler_utils.c */, - 6AA57940434E3AAD7AEEE00A590613E6 /* rescaler_utils.h */, - 514F3A9AD50449219C6E0E6AF2186349 /* ssim.c */, - AD02169BFC7C99B84A56BB3FE5948E4E /* ssim_sse2.c */, - 09597B21C975650436C74DFFD48A1EF1 /* syntax_enc.c */, - E33DB78328A822A9C5D7101BE31F544A /* thread_utils.c */, - F30855EBA5C5D5DF32296D69B4CAE212 /* thread_utils.h */, - F73448C5E41D0B6AED5A89E493E41FDC /* token_enc.c */, - 7563DA5563314C4D44215ED308EF7C77 /* tree_dec.c */, - CF2CA478943CD6319CC326CBC7DCA605 /* tree_enc.c */, - B9A1B0E64A972AF42DC39566FEE8C89F /* types.h */, - 88DEDF68D8C60CEAF48D94503FA3FA5A /* upsampling.c */, - 0E60844790501A0F180987D73BF7982A /* upsampling_mips_dsp_r2.c */, - E1B228189E45D0324E55F165C73F0C90 /* upsampling_msa.c */, - 889DD58E7BECAD23FDAC21530CD7D0B8 /* upsampling_neon.c */, - 79056B8415873E79B2C8F6C636A96E00 /* upsampling_sse2.c */, - 861C44D58795A70D3338BEA3807EBD22 /* upsampling_sse41.c */, - 89160B8C3B26D7474A95630C72EA1E5F /* utils.c */, - 39B20C33D2A8CC7A30CD500AEC10C4EA /* utils.h */, - 863D399BA928C8368D2AC66969BA7496 /* vp8_dec.c */, - 133986823449A7882523C4DF4CDAB704 /* vp8_dec.h */, - A7B1B6D5299F4C34E1103231A3B70571 /* vp8i_dec.h */, - 74FC2D6D369BA24B26EF115DD14D1CE2 /* vp8i_enc.h */, - C5E50AFB60DE75A7F2AE919BBEB66E7E /* vp8l_dec.c */, - EE1A35EFE4C42EFA941515040AF2489B /* vp8l_enc.c */, - AAFF9C0E0B5630B174793EC35C4C38D0 /* vp8li_dec.h */, - DE9969CA71BDB274B67CCEA11C0020C2 /* vp8li_enc.h */, - 254440D91C3A7ECA89F32B4582B454A5 /* webp_dec.c */, - 14A2693CDD9952524E83AD5C56A37DD8 /* webp_enc.c */, - 47F13B34B5F0D50BE1C2DECA8367236B /* webpi_dec.h */, - 39DC876762D2607F9452231B276AA8AD /* yuv.c */, - 612EB3CB4B257025F648D62D327C6602 /* yuv.h */, - C222210BC14529A331E3ECF70A2EED5E /* yuv_mips32.c */, - CDAB2A362C37E561051D58E59B8C6295 /* yuv_mips_dsp_r2.c */, - E9EDB57C8A7B9A567D2B7E1DFD51750A /* yuv_neon.c */, - 922FE223C439FC87898DD0C6C980A908 /* yuv_sse2.c */, - 0B87E9F95E955F70802BB09E14E71817 /* yuv_sse41.c */, - ); - name = webp; + path = "../Target Support Files/glog"; sourceTree = ""; }; 4F0FFB87B03C6CD9AF36CED6F066442F /* Pod */ = { @@ -8744,13 +9235,21 @@ path = jsi; sourceTree = ""; }; - 52F43ECD26A7C91B93A004BAF6FAA80B /* NSData+zlib */ = { + 532D65DCF750E9E2E8BE97FC42B35BCC /* Crashlytics */ = { isa = PBXGroup; children = ( - 8A43A3193B00F38A7A85002BB97B1AC5 /* GULNSData+zlib.h */, - B2735CE302680854AA3529AFCC29CA03 /* GULNSData+zlib.m */, + 4D7A4F8652C719FD780B45A40A0104C1 /* ANSCompatibility.h */, + 29BA4E5D5665A96984B0753F69FC38F7 /* Answers.h */, + 8282D52E552AB2125F97A62608C8C38B /* CLSAttributes.h */, + 742DA574AD9989337C7A051B2C2DC52F /* CLSLogging.h */, + 76B1D8152D1957AC23B75A79D58FDEB3 /* CLSReport.h */, + E50163A58ADB7FB1A0B8C52679BD982C /* CLSStackFrame.h */, + A5018CAA450033C9F40CBBDC23FA4A74 /* Crashlytics.h */, + B2951A464D62F689D3C6044C7F73302B /* Frameworks */, + 18149080C63A878FBB6D5866B0791E49 /* Support Files */, ); - name = "NSData+zlib"; + name = Crashlytics; + path = Crashlytics; sourceTree = ""; }; 53EE14387551717C4A69D79729D5ADF7 /* event */ = { @@ -8763,6 +9262,39 @@ path = yoga/event; sourceTree = ""; }; + 54220516EB0979A39034CFA10C3D2092 /* Fabric */ = { + isa = PBXGroup; + children = ( + 6A9DF5E9B3012A39ED9F672E0C8D62E4 /* FABAttributes.h */, + E4FD42C315AF54A28629FCA573EB25FA /* Fabric.h */, + 298EEA19A87671656A4C853C89031B0D /* Frameworks */, + FE43C14EE339FF31B74ECE47E1D075CD /* Support Files */, + ); + name = Fabric; + path = Fabric; + sourceTree = ""; + }; + 54619EDD154634B16B1A2CD1E2D3F38D /* FirebaseAnalytics */ = { + isa = PBXGroup; + children = ( + 15A7F9318FA0157E39897677596C6638 /* Frameworks */, + 2CFB22E97429F69EF0B16000B9744E75 /* Support Files */, + ); + name = FirebaseAnalytics; + path = FirebaseAnalytics; + sourceTree = ""; + }; + 5476F94A9AFF27699EE6C6E13433578E /* FirebaseCoreDiagnosticsInterop */ = { + isa = PBXGroup; + children = ( + 9C6750D1449BBDDD153063D5BC8E25D0 /* FIRCoreDiagnosticsData.h */, + BC36EC56CD213D984C4B7F24FD1B9665 /* FIRCoreDiagnosticsInterop.h */, + 9BCEFBA6F728DA1423C8D80E348E9F24 /* Support Files */, + ); + name = FirebaseCoreDiagnosticsInterop; + path = FirebaseCoreDiagnosticsInterop; + sourceTree = ""; + }; 54F616DD112705B2D565737FAB46F81B /* Support Files */ = { isa = PBXGroup; children = ( @@ -8774,17 +9306,6 @@ path = "../../../../ios/Pods/Target Support Files/React-RCTAnimation"; sourceTree = ""; }; - 55136C75EB4F5BD0AFD5E22CEAF26273 /* Support Files */ = { - isa = PBXGroup; - children = ( - 865A76C3046C18A7DA36E67E3DE72F88 /* Folly.xcconfig */, - AE0B90E0468091ECE32ED3647927E0A0 /* Folly-dummy.m */, - F01F019DEF200D6F9339D79937FF6498 /* Folly-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/Folly"; - sourceTree = ""; - }; 5531B78708217E9C42B3BE349FF2A5E1 /* Pod */ = { isa = PBXGroup; children = ( @@ -8793,6 +9314,27 @@ name = Pod; sourceTree = ""; }; + 55B18D8D8BE5E5FB139159F9864ED8CA /* glog */ = { + isa = PBXGroup; + children = ( + 001B7F2F6A312651D3606F252836C2F5 /* demangle.cc */, + 63743B445C8FAC8021EC41CC4362CF9F /* log_severity.h */, + DCB16C1702DEA720BC36211E43A6596E /* logging.cc */, + EEE7EDE32D47E34C402A333EA97DECAB /* logging.h */, + C75A86B18664AF17C832083530EBC07C /* raw_logging.cc */, + 2D2804B1DCF18B3386453877783E3BBC /* raw_logging.h */, + 993AC02EC1C111E4334D17D3E0BBE05E /* signalhandler.cc */, + 5CFEB116ECB9A495D54B314D795B805B /* stl_logging.h */, + F1D65D982EF85292BB9FDEA34BBE516E /* symbolize.cc */, + C75F6B7CCC80F365375AE3D64978BE9F /* utilities.cc */, + 0F354B2F01F2D88BF64EFB54C7F55D9B /* vlog_is_on.cc */, + 03D64694CDD23D5AA5D2926DA6659EED /* vlog_is_on.h */, + 4EE5506810A48BF6790471E58A60007A /* Support Files */, + ); + name = glog; + path = glog; + sourceTree = ""; + }; 55D0203549318272E90FF88826213028 /* Pod */ = { isa = PBXGroup; children = ( @@ -8803,16 +9345,6 @@ name = Pod; sourceTree = ""; }; - 5647FAA622C078EF86A89F328A3BD7D3 /* SDWebImage */ = { - isa = PBXGroup; - children = ( - 6B194D56D85D3315180273BBBCA6F374 /* Core */, - 762BE18B9C9F5EE8B4272C7F227FE59D /* Support Files */, - ); - name = SDWebImage; - path = SDWebImage; - sourceTree = ""; - }; 56DF1E0035FC1E9E01841F2A264DF4FA /* UMViewManagerAdapter */ = { isa = PBXGroup; children = ( @@ -8894,15 +9426,31 @@ path = KSCrash; sourceTree = ""; }; - 5900543A95485F383AA39FFDC83A331D /* Support Files */ = { + 588BB8EA70D0562BF2408368B973356B /* DoubleConversion */ = { isa = PBXGroup; children = ( - 9C0AE2466BA4C974BC84C214B080C357 /* GoogleUtilities.xcconfig */, - BF904877DC532C867E65B62EAB5AC8DD /* GoogleUtilities-dummy.m */, - 4A935CACAB35FE24F3C981E8C4A6A26C /* GoogleUtilities-prefix.pch */, + 5EE46B386E95AC9FBBEE856CF2383198 /* bignum.cc */, + F4110D159EB83763AAC648B1B81D2F9D /* bignum.h */, + 9A4D3B3B310D9827F2482B1F3DE8CC69 /* bignum-dtoa.cc */, + BF0E8DD8BC7FDA879032926A40B37AA3 /* bignum-dtoa.h */, + A6279E1E2E3335F1103BFA5A97B32CAA /* cached-powers.cc */, + 2B60F0B412AB14099AD2E2BCB853B9F5 /* cached-powers.h */, + 842C1C29367F774BD441F53EB6BD4437 /* diy-fp.cc */, + 19C61133E42FEBE0031138AEB2C96709 /* diy-fp.h */, + 9CC2E2273ED5FE89DBB756223A07E524 /* double-conversion.cc */, + 67126F01CF3D1827B3B8FF2A8F677A2F /* double-conversion.h */, + F72625A8093D89ACAEF9ACBC3883C014 /* fast-dtoa.cc */, + 35C331504D9FED2A78645DE10B40A14F /* fast-dtoa.h */, + B68868E9598353F7206899DB35AA264C /* fixed-dtoa.cc */, + 15762D6096B65B02F92828DF3C3101E4 /* fixed-dtoa.h */, + F790E8CC5AC5310B53CA380DA817176B /* ieee.h */, + 4D7305392656B07787D0BAA87B5735C4 /* strtod.cc */, + 1B408AE390C2CD577F7EF23E9F2D97CA /* strtod.h */, + B2BDA968F3FED747EC612A14381CAFCB /* utils.h */, + 43B8BB7576E1183520FEAE7BF9E22D8D /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/GoogleUtilities"; + name = DoubleConversion; + path = DoubleConversion; sourceTree = ""; }; 592E5AE3C7A199890705A33C4DF23F55 /* Support Files */ = { @@ -8941,53 +9489,6 @@ path = "../../node_modules/react-native/Libraries/Settings"; sourceTree = ""; }; - 5AC8DD3A22DE15FED6107CBAF45D37A2 /* FirebaseCore */ = { - isa = PBXGroup; - children = ( - D685191518CCCE8477FBB30EA847D2D9 /* FIRAnalyticsConfiguration.h */, - 7FAC33E8263E9BEFAC11A7DFF34AD0BE /* FIRAnalyticsConfiguration.m */, - 0CE22CAD125F9462C815704C23AB8010 /* FIRApp.h */, - 302B8DE670717BA41E14F4F5F4905743 /* FIRApp.m */, - 0BB289DB92FF1A08F326924844309EEE /* FIRAppAssociationRegistration.h */, - 417D73313E1EBA932B71E1DD4ED1E357 /* FIRAppAssociationRegistration.m */, - C1F62027A357E86846B1913AE4D9178C /* FIRAppInternal.h */, - 4D280BD85D66E4E6F08E9D7AF3638731 /* FIRBundleUtil.h */, - 48E62AAA99323AAF6FC8A4C5D988DBDB /* FIRBundleUtil.m */, - CCC714DCDA38C719574933AD4BB18BEA /* FIRComponent.h */, - 64E3F75CCBF052877127694AF8D51F61 /* FIRComponent.m */, - DDD8773720268ECF1673636082B7B0D9 /* FIRComponentContainer.h */, - 703C19B7DA7D14697A7DA9E62F10EC52 /* FIRComponentContainer.m */, - 850EC46C044A0D75CF74813A69913DEC /* FIRComponentContainerInternal.h */, - C46905CBF59E505239D2FBEE8A2482ED /* FIRComponentType.h */, - 7F057988909AE054F78191124C83EE28 /* FIRComponentType.m */, - A6554CAC66AB58DD6D06EC2E8F89E196 /* FIRConfiguration.h */, - 5E7B62E6910F30CA5877D34DC7AA5887 /* FIRConfiguration.m */, - F3A324E400A01F6B751011F6DE9698F6 /* FIRConfigurationInternal.h */, - 38B418D43F61C1B419AB3F337FC541B6 /* FIRCoreDiagnosticsConnector.h */, - FCC11573AB7D5B652772C6126FE31C36 /* FIRCoreDiagnosticsConnector.m */, - 2D8FD8F174DBC0600594D0ACA475512E /* FIRDependency.h */, - 1EA8FF5764F81F464D320E1177895992 /* FIRDependency.m */, - E7CE121DF2DE02220806316553608552 /* FIRDiagnosticsData.h */, - 6750678139A1A6899CB0DEC8000545FE /* FIRDiagnosticsData.m */, - AEB04230EF187F0097DCADD95323A008 /* FirebaseCore.h */, - B1FE0D366F6E3BEEE492394D7E4FD699 /* FIRErrorCode.h */, - EDC5880EEB4755D48F83AD2787FA78EF /* FIRErrors.h */, - FD7691D43748739B72817CB68865006A /* FIRErrors.m */, - 479B38160D59438D69CC69BD7C3FCCB2 /* FIRLibrary.h */, - B7AD9152F3BD8FC9B15BFBC1B66AA7CB /* FIRLogger.h */, - 8175885836544CD4D80DDBE66EEFAA45 /* FIRLogger.m */, - 407248094230C4CB540340AFC5FDF3B3 /* FIRLoggerLevel.h */, - 58C1F1702169DF372D6719CB18B37FE6 /* FIROptions.h */, - E4DEC78771EBC06D1CC9FFE168FB912D /* FIROptions.m */, - 080E2FD90E9D759670B5110850479F74 /* FIROptionsInternal.h */, - A47B0FD5533369CBB8D4F5907D6C95B0 /* FIRVersion.h */, - 73E49B69B89A89D1209D071D4F21208A /* FIRVersion.m */, - A6F18B90ADD5F3C489E841EC3046432D /* Support Files */, - ); - name = FirebaseCore; - path = FirebaseCore; - sourceTree = ""; - }; 5BC84B20A147F43812CDB5B6EB0DEF95 /* DevSupport */ = { isa = PBXGroup; children = ( @@ -8997,15 +9498,6 @@ name = DevSupport; sourceTree = ""; }; - 5BD2FD9E5F338A311C76828869F32E72 /* Support Files */ = { - isa = PBXGroup; - children = ( - AEAFF03F736A590CC3D80A40C1C64FCF /* JitsiMeetSDK.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/JitsiMeetSDK"; - sourceTree = ""; - }; 5BF29734ACC36944167E843E796C2D80 /* Pod */ = { isa = PBXGroup; children = ( @@ -9053,12 +9545,13 @@ path = RNFirebase/notifications; sourceTree = ""; }; - 5D9EC42F0961A55DCDCD0744E2F448CB /* Frameworks */ = { + 5DACF37B91672B1B16D7C6F64F5A348F /* UserDefaults */ = { isa = PBXGroup; children = ( - 22EEF06C78D16BA53279CA421CEED4B7 /* Fabric.framework */, + 4BE1EB0C0D097F1CEF044EABD60FA2B0 /* GULUserDefaults.h */, + 760D77A4F668A9C3F29BC76736A73378 /* GULUserDefaults.m */, ); - name = Frameworks; + name = UserDefaults; sourceTree = ""; }; 5E3DFB7FBE620C2F5AFDD1DDFFB7A356 /* TextInput */ = { @@ -9082,6 +9575,27 @@ path = Libraries/Text/TextInput; sourceTree = ""; }; + 5EAB6EF45478102AC30052B27D569C04 /* Support Files */ = { + isa = PBXGroup; + children = ( + 56E78EE0CF3ED46276B3F9962DBC7817 /* libwebp.xcconfig */, + 7290A8B4E4F31EF8E2A4BB18F88F59D6 /* libwebp-dummy.m */, + 10518D1EE8B03DD5443764694A2E2192 /* libwebp-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/libwebp"; + sourceTree = ""; + }; + 5F64FEC8FB4233DE20828ABBFA0CEF12 /* Firebase */ = { + isa = PBXGroup; + children = ( + DB6752B59873A91592A7998C80544B13 /* CoreOnly */, + A93FC5B030CC5395435DD39670F9E756 /* Support Files */, + ); + name = Firebase; + path = Firebase; + sourceTree = ""; + }; 624F1172FAFC23FE46520AF51847FF2A /* Pod */ = { isa = PBXGroup; children = ( @@ -9138,27 +9652,6 @@ path = "../../../../ios/Pods/Target Support Files/FBLazyVector"; sourceTree = ""; }; - 64262144F4E5F4033E4F0A0B9609FED0 /* Support Files */ = { - isa = PBXGroup; - children = ( - F305EC9958D746DA8AAEA33A39DC6A65 /* FirebaseCoreDiagnosticsInterop.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/FirebaseCoreDiagnosticsInterop"; - sourceTree = ""; - }; - 6460E7B3271EEC81C32880A1A5991660 /* libwebp */ = { - isa = PBXGroup; - children = ( - 07A5F45AFB97E324EF726D6EE3C6A29B /* demux */, - F0044B9650E6BC845F649EE7C95040E3 /* mux */, - 132E7188EFE6AA2EF66D9BFB818FF427 /* Support Files */, - 4E4AC296B53242E0B91BDB018D55CA0B /* webp */, - ); - name = libwebp; - path = libwebp; - sourceTree = ""; - }; 649D8C29B884773C1E1BB80BA5DA15D2 /* Core */ = { isa = PBXGroup; children = ( @@ -9228,128 +9721,24 @@ path = RNFirebase/functions; sourceTree = ""; }; - 6B194D56D85D3315180273BBBCA6F374 /* Core */ = { + 6B316D4F61F7D349A2A4EEB4B290CEE6 /* Support Files */ = { isa = PBXGroup; children = ( - 273439589765A5A66AC272F5E174994D /* NSBezierPath+RoundedCorners.h */, - 66D51687A4FFDF194B556DE4B2DD8EFB /* NSBezierPath+RoundedCorners.m */, - BDBE26D1AFAFADA908C7EC0D26845579 /* NSButton+WebCache.h */, - 8A06434A333E319EE6F329F7AD16700F /* NSButton+WebCache.m */, - 8D131A8E4A5603427F19241AF701AF94 /* NSData+ImageContentType.h */, - 36980163009EA4BB2A710FDB6500AE39 /* NSData+ImageContentType.m */, - 1874FFEDFA6B268EFD16DEDF5C0ABF72 /* NSImage+Compatibility.h */, - 37911D6525A8CE75A5166F52B23B3851 /* NSImage+Compatibility.m */, - BE9C297AE3F56D077125FAF26B6B5DE7 /* SDAnimatedImage.h */, - 2626AA8E24B62228D329C312E5C13F1A /* SDAnimatedImage.m */, - C7E16FB85FF0BDA0B29022320BDF1B66 /* SDAnimatedImageRep.h */, - E6ADD528E5DC12441ED796F0C6E118D6 /* SDAnimatedImageRep.m */, - 8CAA2DBF00DFE036CB71047FCE811813 /* SDAnimatedImageView.h */, - C507B3571991755F03AFAE7FAA0A698D /* SDAnimatedImageView.m */, - FF7126802A814DA73C4EAE011D1333A2 /* SDAnimatedImageView+WebCache.h */, - 9697CB449E3F9E17D2460CE1D27DDBEC /* SDAnimatedImageView+WebCache.m */, - F5E96D93EA3C646CF7B21BA5C5B356EE /* SDAsyncBlockOperation.h */, - 7A239E55139C2F75E79338C50AB6FC8D /* SDAsyncBlockOperation.m */, - EF7C77B591898E327390DEE0741690F3 /* SDDiskCache.h */, - 6D5FBAB8AE41CDA37DFFF760ACFFB922 /* SDDiskCache.m */, - 4E01B3FF47FD4437F8126BA499140720 /* SDImageAPNGCoder.h */, - 7DB46ED09C638AB50343B0949E766343 /* SDImageAPNGCoder.m */, - F02235FA0AF90E49431E197512A6AD01 /* SDImageAPNGCoderInternal.h */, - C12A2CAC51F8034811D57FAEE5A3A459 /* SDImageAssetManager.h */, - F07AB9A93907E76E3C570F14ADF3E275 /* SDImageAssetManager.m */, - C312E4CB1D08B208EAE28642C3490978 /* SDImageCache.h */, - C3316057687A0E4CB96C6EADC68B8584 /* SDImageCache.m */, - 87A2920C46D0CC20B60A655E9FF18B0F /* SDImageCacheConfig.h */, - AEA0DC5B6845AB5B1AFD86B44151D246 /* SDImageCacheConfig.m */, - FCBA8C8C8D9E02658B2AAA645469C0A1 /* SDImageCacheDefine.h */, - 5DA2D4D1364530875FFC9C34F5E9DFCE /* SDImageCacheDefine.m */, - 487A7C585227E41DAC704B8715A93237 /* SDImageCachesManager.h */, - 4B2AFFB16527B8EBEC2327785BCE1654 /* SDImageCachesManager.m */, - CD8C1567FE91AF3DC28C2CCDF841BCE9 /* SDImageCachesManagerOperation.h */, - 70890F33DE7A2F89F7A6D02F11156613 /* SDImageCachesManagerOperation.m */, - CCD312A444D75714EE72AB0FD34CE7F1 /* SDImageCoder.h */, - 69479128234A29F965EAC5E5AC7A110C /* SDImageCoder.m */, - C33CB5AB34B70CE551120CF7195044D9 /* SDImageCoderHelper.h */, - 3600E8FD97B8F09E8E346C5FA16D9774 /* SDImageCoderHelper.m */, - 21DD77BC4C9F446030612C2B4AB20317 /* SDImageCodersManager.h */, - C599D37E0638CACC8F72727A8ACBC6E8 /* SDImageCodersManager.m */, - DF3B6A5615D38501C12A332422F0D8FD /* SDImageFrame.h */, - 5AC3610A19BBC0F2EACD04CBA96AE998 /* SDImageFrame.m */, - DB99F2676D30EF6AB07A50ACC6AD4D23 /* SDImageGIFCoder.h */, - AB59CAFB02638F9819664583A263EEC6 /* SDImageGIFCoder.m */, - B3125C414316843B2D464D1AFF4A848C /* SDImageGIFCoderInternal.h */, - 9113EA59A61B4CBF5ED6E953CCFA9F01 /* SDImageGraphics.h */, - C8F458DAF6DA4D546BAC86772B2CDF26 /* SDImageGraphics.m */, - A08F869266F38519AEA0AAE93ECAD2A7 /* SDImageIOCoder.h */, - 78E6B460E72CC20396C19DC0B73930E7 /* SDImageIOCoder.m */, - A1392FB10E0827593617B7AA05394353 /* SDImageLoader.h */, - 270B61094921448E80F733E74AF42855 /* SDImageLoader.m */, - 3F45975E2E2B867B4476E71F8FF0F6EC /* SDImageLoadersManager.h */, - 65270F773D1F907E9E884457D88A1E97 /* SDImageLoadersManager.m */, - 9423585289F0FEE1EDBF88CC077C5BA9 /* SDImageTransformer.h */, - F83BFECA194D5D3A53CCA3AF2C359335 /* SDImageTransformer.m */, - 63F33ED36C0322764AFBD658D2E32149 /* SDInternalMacros.h */, - 1A3205E89D7E14C616E752AE578B2DB3 /* SDInternalMacros.m */, - 18765F99260DDACA363C4D54C9396C3C /* SDMemoryCache.h */, - F27874372F3317E7A40B56B92674FF9E /* SDMemoryCache.m */, - 8C73BC466081F293E4D01A6633E29FB0 /* SDmetamacros.h */, - 9837BE777B812E8919321296E0674F0C /* SDWeakProxy.h */, - 3B6E180F517D3B5E97B2822EB303FCEE /* SDWeakProxy.m */, - A8D66EB87FF1052564109710F3EC6D0F /* SDWebImage.h */, - E1FF3ABBB86D23C6F4AF464146BCB44E /* SDWebImageCacheKeyFilter.h */, - E25C54E541F5F5072F951EC6F023180F /* SDWebImageCacheKeyFilter.m */, - B6B1C72E3F0EB30F5121B546F5090E9A /* SDWebImageCacheSerializer.h */, - 719678554CEA5B56015186C2FDB53C4B /* SDWebImageCacheSerializer.m */, - D4FD56965FE3FFBFD0C50087FDE7D6F4 /* SDWebImageCompat.h */, - D54F6EA8F501C29E00AD8D0F3E53A1CA /* SDWebImageCompat.m */, - D68865F99A8F6659659285B0079FA045 /* SDWebImageDefine.h */, - BB9490D5D6C2A4D58F4DE53CA64B65F4 /* SDWebImageDefine.m */, - C662555DEFDD7CFFF2487F4277C6C686 /* SDWebImageDownloader.h */, - 960C7132FDACCCBC602818FF9F87C10A /* SDWebImageDownloader.m */, - 9A09930B6AF4D29B74B05A4AA77C3AAE /* SDWebImageDownloaderConfig.h */, - A211DE5FFA61917BE4C69FFF1971DEE6 /* SDWebImageDownloaderConfig.m */, - A984D3FECA3FC20063DBB2260C3340F6 /* SDWebImageDownloaderOperation.h */, - FEC3F7B47F6DD538B443A895DD5D9591 /* SDWebImageDownloaderOperation.m */, - CD7864EB1FCB4EFCCDE103F9D8F50114 /* SDWebImageDownloaderRequestModifier.h */, - 623D5F4BD01E3D890087793ED0AE50C5 /* SDWebImageDownloaderRequestModifier.m */, - 5080E1E9F662041ACF60804ACBB04CE3 /* SDWebImageError.h */, - 1213AB99B5CC77DF90E77DCF5420383F /* SDWebImageError.m */, - D3FE0D74F6529795B2FC779F7DC99CF2 /* SDWebImageIndicator.h */, - 4F3FA0B1FB5B9C2F68BBAD227716F23A /* SDWebImageIndicator.m */, - 3F3E48665DAFDDB3F7A5623962507725 /* SDWebImageManager.h */, - 28FD7F961165BA72E393450F992F2048 /* SDWebImageManager.m */, - FCF58272F65ED034BE22E4A8C0456B72 /* SDWebImageOperation.h */, - 18083C0F8FB874B63881DB343401FE81 /* SDWebImageOptionsProcessor.h */, - B30EC1C70EBBBF1AE74DCF889632A04B /* SDWebImageOptionsProcessor.m */, - 838D7C69C1B531C642465B4BAA4320CF /* SDWebImagePrefetcher.h */, - 3A9FE38B282E70BB60453725831AC9FB /* SDWebImagePrefetcher.m */, - D57BF655F31F1339675D0B395963F052 /* SDWebImageTransition.h */, - 0E3F600AA82D949DC333DA5269FFB8FD /* SDWebImageTransition.m */, - AD4C5E8F109E5073C9334BC16646134A /* UIButton+WebCache.h */, - 37A87692EC0A3E0DAF1F246BF8094715 /* UIButton+WebCache.m */, - E4ABD4161A335B5730AA14BC21DFBFD1 /* UIColor+HexString.h */, - 4C4C342770D787159225FE9960204DBE /* UIColor+HexString.m */, - DA4A37B4969CB37F3A28EC8850F7C400 /* UIImage+ForceDecode.h */, - 338364BF8659B692A5C38072A7EEDC55 /* UIImage+ForceDecode.m */, - 830A9E503A916D0977B7C704E7CDDA7D /* UIImage+GIF.h */, - F27020B27DE70C7188CEEE5F520684FA /* UIImage+GIF.m */, - F021A39527BED58621A6690E610B4A40 /* UIImage+MemoryCacheCost.h */, - AA16F20ABE77B8DD649F24D5CD6DDC3F /* UIImage+MemoryCacheCost.m */, - DEA1AFC7815DE289321DB234082AB133 /* UIImage+Metadata.h */, - 66EB73F92E6B3CAF9B57FF76C5040D0C /* UIImage+Metadata.m */, - C2F2A0EACBCFF372BA3D861762FA3918 /* UIImage+MultiFormat.h */, - E003996EDDFC4DAC0E9DA2A7A151C5C9 /* UIImage+MultiFormat.m */, - 81D7A46E2069BF2C08EB125AB419D0CA /* UIImage+Transform.h */, - 32AC64561B534482CCA37BB93EC068B7 /* UIImage+Transform.m */, - 5BB41289CA45FAD1326154C61667467B /* UIImageView+HighlightedWebCache.h */, - D4A123FC94E7410BEA6E2DC48D0926F3 /* UIImageView+HighlightedWebCache.m */, - 9397687440D5BA05368492717B39B5C6 /* UIImageView+WebCache.h */, - B8E0F7766A408C07F547DE4D5D2B2979 /* UIImageView+WebCache.m */, - 939A7FD22EFE867355B9D8C52DC10ACF /* UIView+WebCache.h */, - 3D1A278B5D9E61566522B152532F1034 /* UIView+WebCache.m */, - 3786DC3F685C9387F570BEF33D84FDBA /* UIView+WebCacheOperation.h */, - ABB5C981E713091255D71AAE8FE466A0 /* UIView+WebCacheOperation.m */, + 3F3CB5FABF8ADED7650DF34AE8C9567D /* FirebaseInstallations.xcconfig */, + F3C820FC2BBE1761DA1AA527AA0093BF /* FirebaseInstallations-dummy.m */, ); - name = Core; + name = "Support Files"; + path = "../Target Support Files/FirebaseInstallations"; + sourceTree = ""; + }; + 6B6C32C73706CF621C5AF986E93AFEA5 /* Support Files */ = { + isa = PBXGroup; + children = ( + FA26B5A8A32F2F522F09863C5C0477C0 /* GoogleDataTransportCCTSupport.xcconfig */, + 4E5A82E2D83D68A798CF22B1F77829FC /* GoogleDataTransportCCTSupport-dummy.m */, + ); + name = "Support Files"; + path = "../Target Support Files/GoogleDataTransportCCTSupport"; sourceTree = ""; }; 6C4AE4ECD10D124D99520C22026D0E50 /* Pod */ = { @@ -9360,6 +9749,17 @@ name = Pod; sourceTree = ""; }; + 6CF7EC609CAD8174E757012DA4B177A1 /* Support Files */ = { + isa = PBXGroup; + children = ( + B05C43896E9F95B6A4756C24B12C8DBB /* SDWebImageWebPCoder.xcconfig */, + DAD1EC07061CD01D8DB00C1DF9CBA5B9 /* SDWebImageWebPCoder-dummy.m */, + F1B1144A35ACFEBD4E96E634A66733F6 /* SDWebImageWebPCoder-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/SDWebImageWebPCoder"; + sourceTree = ""; + }; 6D794FCD258DA83D2D406AE3CEC9B23B /* Pod */ = { isa = PBXGroup; children = ( @@ -9370,13 +9770,6 @@ name = Pod; sourceTree = ""; }; - 6D91D3EC80868FF87950FE7AE01B2049 /* decode */ = { - isa = PBXGroup; - children = ( - ); - name = decode; - sourceTree = ""; - }; 6E59B6B2491036805A97C5720192EB1C /* ViewManagers */ = { isa = PBXGroup; children = ( @@ -9448,63 +9841,19 @@ path = "../../node_modules/react-native/Libraries/Network"; sourceTree = ""; }; - 6FF0F000A20F65D87C7C2474482A0F89 /* GoogleDataTransport */ = { + 6F88DEA2865A43BC2ACD1E85CDD051E9 /* AppDelegateSwizzler */ = { isa = PBXGroup; children = ( - 4FB7AC3B2DAC233057078CA6A102339E /* GDTAssert.h */, - A35FD940F25DDA9B77B7AFCE50EF51FB /* GDTAssert.m */, - 7AA4A743371045970B504A8B2B3C56BF /* GDTClock.h */, - A1D610CA53E44198C6CF77461DF107ED /* GDTClock.m */, - 2497D5165EC0A35BD96AD57FC55949E6 /* GDTConsoleLogger.h */, - EDC3EA1DDFF95BAE78F476F4F6CF2874 /* GDTConsoleLogger.m */, - EBF3A066DD720BB3B76A4D77BDF40D0F /* GDTDataFuture.h */, - F1EFD5B46A034F0A431926E8B5FF6501 /* GDTDataFuture.m */, - AFD2AC81AC5FA51E82EFED1BA17B7573 /* GDTEvent.h */, - B843C0444B6E7D0D440EBE7179AB662C /* GDTEvent.m */, - BCBB7D5FBD7D716F754F9E1C34C1EC74 /* GDTEvent_Private.h */, - 236BD84A3D7A0BCA0879CEFAA83975BA /* GDTEventDataObject.h */, - 4E5ACC036BB30F9E9969A8E34135F235 /* GDTEventTransformer.h */, - AE60B3A27F287887508D97080546ADAF /* GDTLifecycle.h */, - 13721102B03A8ECF1B4691430FB78793 /* GDTLifecycle.m */, - D9C066C867C0E4440BCF224357AEA143 /* GDTPlatform.h */, - 04BCA88F7ADC8587075F74C4BF52094A /* GDTPlatform.m */, - E1EEF36D6AEB82A30BC411B8B360BF77 /* GDTPrioritizer.h */, - 0D975F4A710D3FF97114CA725B087D04 /* GDTReachability.h */, - FE63103F5165EC0A1900FC6BD658D52B /* GDTReachability.m */, - 2A1CA7669FE65C9DB40A235FA8026681 /* GDTReachability_Private.h */, - 130BEEABCFE093EE423DDC47BE879AA4 /* GDTRegistrar.h */, - EA728C8DE06AF12632054567A645AB9C /* GDTRegistrar.m */, - C3B73D30EBF2384AD1F89DAE90DD80A5 /* GDTRegistrar_Private.h */, - 824F6DDB5733946BF470102D4A2B06CB /* GDTStorage.h */, - B9229E59D5CCD6CED8B744A44D0EC198 /* GDTStorage.m */, - F08EE550D1AEB06952E8879746FC9947 /* GDTStorage_Private.h */, - 772A0E739DDA6F457BF35D3662285A59 /* GDTStoredEvent.h */, - 2CF2534628CCC7E0CB60511001A24B96 /* GDTStoredEvent.m */, - 3AB86A467AD7828E4F2E55DA0BBDAD3A /* GDTTargets.h */, - 4CFDF61A090051FCE603DE9E0332AFAC /* GDTTransformer.h */, - BF97D9E3AB424B03E0D472FE750E447F /* GDTTransformer.m */, - FF5EBC9A5E12D5281CC29EAB37CD1E5E /* GDTTransformer_Private.h */, - 950A1A041BCF19C89D591AA28F944791 /* GDTTransport.h */, - FA981CB894230861E709B35205EE9407 /* GDTTransport.m */, - 01FAF80891432F62857FFDA6B6F8ABC8 /* GDTTransport_Private.h */, - F416804666984323CB6BE6671AB4FE08 /* GDTUploadCoordinator.h */, - 3D30A9F40B2A36F04D29DABB3C01B945 /* GDTUploadCoordinator.m */, - 42EE7E5F427054E1DC3D903A71DF485E /* GDTUploader.h */, - 64EBE5F53B6247CF96532AA0FDA3C827 /* GDTUploadPackage.h */, - E7D311016AE55CFBF49595940BB2F606 /* GDTUploadPackage.m */, - E63334E9E147920AD55E8F4B08B6FDF8 /* GDTUploadPackage_Private.h */, - FE95110A46FCBDDFDF5AEEDAFE1C082D /* GoogleDataTransport.h */, - BC6B18D35CF03D08AD2F96C31BB3E7FA /* Support Files */, + 921C25810B4533D9E001D73370A577B6 /* GULAppDelegateSwizzler.h */, + D4389EC289745BCEF60BEA7CDAC784D2 /* GULAppDelegateSwizzler.m */, + 2728A14783AB5E811E5251887AADACAF /* GULAppDelegateSwizzler_Private.h */, + 8FE78D699DF0963CA715538E756C4EE2 /* GULApplication.h */, + E82A30AEF74EE71AF0B62661B8B26951 /* GULLoggerCodes.h */, + 360D859E4F26E0D45AC34F09DA57FE65 /* GULSceneDelegateSwizzler.h */, + 21A7E3A6A97682E28E064E912B3B4371 /* GULSceneDelegateSwizzler.m */, + E73C501A0EB747305BB4AAD7978E3E0E /* GULSceneDelegateSwizzler_Private.h */, ); - name = GoogleDataTransport; - path = GoogleDataTransport; - sourceTree = ""; - }; - 704B9610866573E6E82D5558FE1081C4 /* encode */ = { - isa = PBXGroup; - children = ( - ); - name = encode; + name = AppDelegateSwizzler; sourceTree = ""; }; 718E955F05CA0EE12785D49BD7302E30 /* firestore */ = { @@ -9532,18 +9881,6 @@ path = "../../ios/Pods/Target Support Files/RNFastImage"; sourceTree = ""; }; - 730DB5449723E314904FA26F91779A89 /* AppDelegateSwizzler */ = { - isa = PBXGroup; - children = ( - DF1C9C2F9BBA22563F68A4571E4CF429 /* GULAppDelegateSwizzler.h */, - B3D892AE8597A9B7DD8584C0AA7DA67F /* GULAppDelegateSwizzler.m */, - 4465E9E8D02F3CEEE80D33E736D98665 /* GULAppDelegateSwizzler_Private.h */, - 38306BBBC3C64D7DF03BEC71BC608DBF /* GULApplication.h */, - CE88AE68164F8E5A2B29F0E225DD861F /* GULLoggerCodes.h */, - ); - name = AppDelegateSwizzler; - sourceTree = ""; - }; 738D7C374CE849CBD7E89140967869F6 /* ScrollView */ = { isa = PBXGroup; children = ( @@ -9563,17 +9900,6 @@ path = ScrollView; sourceTree = ""; }; - 7391E3BA3BB62691ABCD0990D99A3EEC /* Support Files */ = { - isa = PBXGroup; - children = ( - 03B728F92DB283E8246EA83B5CEFAEAA /* glog.xcconfig */, - 46B502B21F8455A7A211D7FB38182741 /* glog-dummy.m */, - CA38D19C15EE7062FC041C4582E5472D /* glog-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/glog"; - sourceTree = ""; - }; 75BB39673C1CBF1C64F11CCE0220D757 /* Video */ = { isa = PBXGroup; children = ( @@ -9618,17 +9944,6 @@ path = "Target Support Files/Pods-ShareRocketChatRN"; sourceTree = ""; }; - 762BE18B9C9F5EE8B4272C7F227FE59D /* Support Files */ = { - isa = PBXGroup; - children = ( - 9BF61CFC891BBB889FA4A1BD2CA3E955 /* SDWebImage.xcconfig */, - DEA0269F260ECF8399E22CDBCE670D9D /* SDWebImage-dummy.m */, - 50B8ABB68528EF52A4BB054EAC5BC865 /* SDWebImage-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/SDWebImage"; - sourceTree = ""; - }; 762E7F7B6D53D1128C928D4972EE3C57 /* react-native-cameraroll */ = { isa = PBXGroup; children = ( @@ -9693,6 +10008,16 @@ path = "../../node_modules/react-native-orientation-locker"; sourceTree = ""; }; + 77E5437F2565ABF89F8E76F4530936A3 /* Support Files */ = { + isa = PBXGroup; + children = ( + 746D3D964458B43BFFB90666578396AE /* FirebaseCoreDiagnostics.xcconfig */, + AE40F8A55B4E0868CA1A35733818234B /* FirebaseCoreDiagnostics-dummy.m */, + ); + name = "Support Files"; + path = "../Target Support Files/FirebaseCoreDiagnostics"; + sourceTree = ""; + }; 77FDE58A2B6CAB8C42F5568166122882 /* Support Files */ = { isa = PBXGroup; children = ( @@ -9896,23 +10221,6 @@ name = Pod; sourceTree = ""; }; - 7FB97AA06C19FB7FB455F477F2961F80 /* GoogleDataTransportCCTSupport */ = { - isa = PBXGroup; - children = ( - 1493995A8BFB7373CDD744F29FB45E51 /* cct.nanopb.c */, - EA6AC78AD06EBD597B03B38F91D2D065 /* cct.nanopb.h */, - 08605099D3DD551B75AE7B66CA074A26 /* GDTCCTNanopbHelpers.h */, - B80484046E542C11B4649FCC8CAC9C52 /* GDTCCTNanopbHelpers.m */, - C6D51E11A724780AD122EAAB74D10317 /* GDTCCTPrioritizer.h */, - D7AF0EEF43F86081748C36A1C9D9A230 /* GDTCCTPrioritizer.m */, - 6E6E78446D4C66AB49A9367C4B33947A /* GDTCCTUploader.h */, - F534DAFAC571CC5B019C05580EB1FADB /* GDTCCTUploader.m */, - 99DE0DAAD1BFD1A124EF4C0B63BBDE80 /* Support Files */, - ); - name = GoogleDataTransportCCTSupport; - path = GoogleDataTransportCCTSupport; - sourceTree = ""; - }; 7FDF4E745F812DD8A2EB66D467DC774E /* links */ = { isa = PBXGroup; children = ( @@ -10189,20 +10497,6 @@ path = ios; sourceTree = ""; }; - 8D436834128E652E6596ABE44DEF437D /* SDWebImageWebPCoder */ = { - isa = PBXGroup; - children = ( - 68CE49DDB2DF81CFFEFD9BBCC492FEEC /* SDImageWebPCoder.h */, - DEB68940C750201971089751E74F2668 /* SDImageWebPCoder.m */, - 4556E026447A016363B5E448CCAC7EAC /* SDWebImageWebPCoder.h */, - 49D8B4ECBCC3CC3CCA6C5A1B97D266F7 /* UIImage+WebP.h */, - CBBE0652EE9A9CDDA0DF797B7FDA8F59 /* UIImage+WebP.m */, - EEBFE49148F1CF5A03CA08723969E319 /* Support Files */, - ); - name = SDWebImageWebPCoder; - path = SDWebImageWebPCoder; - sourceTree = ""; - }; 8D5B19163CA6D41154D94054A165A4A1 /* UMBarCodeScannerInterface */ = { isa = PBXGroup; children = ( @@ -10250,6 +10544,37 @@ name = Pod; sourceTree = ""; }; + 9160F20DFF7DC7F1CACEE969035ACE20 /* Pods */ = { + isa = PBXGroup; + children = ( + D55310A3D7A33E73CB444A32C1FF022B /* boost-for-react-native */, + 532D65DCF750E9E2E8BE97FC42B35BCC /* Crashlytics */, + 588BB8EA70D0562BF2408368B973356B /* DoubleConversion */, + 54220516EB0979A39034CFA10C3D2092 /* Fabric */, + 5F64FEC8FB4233DE20828ABBFA0CEF12 /* Firebase */, + 54619EDD154634B16B1A2CD1E2D3F38D /* FirebaseAnalytics */, + 01A7461C3ACCF8ECB35555ED922F8825 /* FirebaseCore */, + 29CCB6618EF5BA556C5A34E647C5F5A3 /* FirebaseCoreDiagnostics */, + 5476F94A9AFF27699EE6C6E13433578E /* FirebaseCoreDiagnosticsInterop */, + 98796D2B4A35C296B4C2230305F1F484 /* FirebaseInstallations */, + 1F7EC6C11018294EBF40CA4AAD13152A /* FirebaseInstanceID */, + BE81D7E783097ABE8C9B3F942F42FC1F /* Folly */, + 55B18D8D8BE5E5FB139159F9864ED8CA /* glog */, + F4E8C74AE7E1C7626C68E1FBF69F4B75 /* GoogleAppMeasurement */, + 0EB22BBFAB12DE43BF0B817235CAED5A /* GoogleDataTransport */, + 34C9625F8E0C707FA11F358702EB8A04 /* GoogleDataTransportCCTSupport */, + 043F146E221D020B79B780B0AA0BA24D /* GoogleUtilities */, + BEBA91E83D1604502A927D103DA78889 /* JitsiMeetSDK */, + BE06AA569AB87C4AD6137682F7A41400 /* libwebp */, + 0B306EB60859A04AF7CB557F7C204072 /* nanopb */, + 18597F6C4B50A03F961BD4702AB28CEE /* PromisesObjC */, + F81EBDFF90F8EF7E9C7FD80A121F087B /* RSKImageCropper */, + D6F490C034FF3884052422C414FFF53A /* SDWebImage */, + 248C867CFC61347DCAF2D42E96528B93 /* SDWebImageWebPCoder */, + ); + name = Pods; + sourceTree = ""; + }; 927FC05AD6B14B696177D57F6849D94B /* Pod */ = { isa = PBXGroup; children = ( @@ -10324,16 +10649,6 @@ name = Pod; sourceTree = ""; }; - 9550F5053A5585C399A2BED6D5F485D9 /* Logger */ = { - isa = PBXGroup; - children = ( - D691A336ECF8181AE201DD7D26ADEBD4 /* GULLogger.h */, - 7138C521F354FCB1A269DDA495C7D2FB /* GULLogger.m */, - 663D8A7DE61E19F411CA269EABCC27CC /* GULLoggerLevel.h */, - ); - name = Logger; - sourceTree = ""; - }; 95D5B36387E87767B9FB7CCD5DDEF04D /* RCTAnimationHeaders */ = { isa = PBXGroup; children = ( @@ -10346,23 +10661,53 @@ name = RCTAnimationHeaders; sourceTree = ""; }; - 980CB63D38BFD9A5C4593515A9DFFD9B /* Support Files */ = { + 98796D2B4A35C296B4C2230305F1F484 /* FirebaseInstallations */ = { isa = PBXGroup; children = ( - C1485CBAB7240610926802178F495435 /* Fabric.xcconfig */, + 7D0B134B634581BF0AB4FFB905334766 /* FirebaseInstallations.h */, + C99B6ED7E39443CBF47A64AE5D60CD8E /* FIRInstallations.h */, + DC834FE770DBAFD4CAD544AB5F592ED4 /* FIRInstallations.m */, + A0EA3217B857F6515E5C3725E793D70A /* FIRInstallationsAPIService.h */, + 4B019F88D183D8F0E9D8BF083F3699B1 /* FIRInstallationsAPIService.m */, + 30B6C6D8A65E6CF1025DC7B7A6DEE0CD /* FIRInstallationsAuthTokenResult.h */, + ABFDDF7E2B4A60522C6DC5915D034318 /* FIRInstallationsAuthTokenResult.m */, + A8C2E718EEB7FC61E0AF4FF7745365F7 /* FIRInstallationsAuthTokenResultInternal.h */, + 0E28FEB864CD8E6FC7A5CD387F3CE7FD /* FIRInstallationsErrors.h */, + EB70BE00723008AAD156EB27A07FE171 /* FIRInstallationsErrorUtil.h */, + FC39B30F26E84F6B31EE5DC99AA7A735 /* FIRInstallationsErrorUtil.m */, + 5A09F908C75D99E518BBF382A235C2DB /* FIRInstallationsHTTPError.h */, + 505638042E3CDED31ED33340DD6E648E /* FIRInstallationsHTTPError.m */, + 289A7FAC33616CEAE154163C9869020A /* FIRInstallationsIDController.h */, + AA4F5619775B05EAF3BD82EDACD91B98 /* FIRInstallationsIDController.m */, + 06736283C77882D931377C3AF94D64FD /* FIRInstallationsIIDStore.h */, + 0B1BB1A3C8627427538472C2BEF119CE /* FIRInstallationsIIDStore.m */, + 09A8F5B7DA6974622D6C9A6189F7FAEE /* FIRInstallationsIIDTokenStore.h */, + CC36153E97819CC766DFEB874BBF6500 /* FIRInstallationsIIDTokenStore.m */, + D3ABC6469D72A242803A91AF2DA0B153 /* FIRInstallationsItem.h */, + 43E958E567C22BA0032023C305BEC2AD /* FIRInstallationsItem.m */, + 8E8C019C75FF4F789E40C8784D2EEB25 /* FIRInstallationsItem+RegisterInstallationAPI.h */, + C422929093AA864A077D3201B48F2AD0 /* FIRInstallationsItem+RegisterInstallationAPI.m */, + 01FEFA98B5E8668AD537CEE144C68D35 /* FIRInstallationsKeychainUtils.h */, + 4341798946137AA9F80EA098E35B9931 /* FIRInstallationsKeychainUtils.m */, + E2E3C8E6D99317CEB9799CEDC4EF10E0 /* FIRInstallationsLogger.h */, + 999C11E9F0B6529BC62034D8CCC9BC0B /* FIRInstallationsLogger.m */, + 6129D17144193C727D68FFB158130674 /* FIRInstallationsSingleOperationPromiseCache.h */, + 677829C82932437E90068CC931C2D606 /* FIRInstallationsSingleOperationPromiseCache.m */, + 226470D5AC918D710F1EE1BDBAADC256 /* FIRInstallationsStatus.h */, + E146C49FCEE4ED98740C53D8AF16B54A /* FIRInstallationsStore.h */, + EE1AB32C49A2A285235B4FDC69A39BAC /* FIRInstallationsStore.m */, + C4FFE67DC13EEC2EBC31ADD1DEBB2A2A /* FIRInstallationsStoredAuthToken.h */, + 9FE7CAD15D46DC8EB22E034ACFB28888 /* FIRInstallationsStoredAuthToken.m */, + 4A7647A1716C841E08616F47541DCD7B /* FIRInstallationsStoredItem.h */, + C7EFB60008DF9B71E0BF22DE8B9F1110 /* FIRInstallationsStoredItem.m */, + 668DB3196C8AC5E9F322863CBC018C56 /* FIRInstallationsVersion.h */, + 81B9283887252C3A5BFACBC794BD9596 /* FIRInstallationsVersion.m */, + 3831B2A00965967014DC2303A0B27F59 /* FIRSecureStorage.h */, + 2987EA104168329CA646DE0B0609C594 /* FIRSecureStorage.m */, + 6B316D4F61F7D349A2A4EEB4B290CEE6 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Fabric"; - sourceTree = ""; - }; - 99DE0DAAD1BFD1A124EF4C0B63BBDE80 /* Support Files */ = { - isa = PBXGroup; - children = ( - 8C563801A978525A6184D0F9DD82905D /* GoogleDataTransportCCTSupport.xcconfig */, - 6ECB58F32CD17FF9912C0569E7AAD5E3 /* GoogleDataTransportCCTSupport-dummy.m */, - ); - name = "Support Files"; - path = "../Target Support Files/GoogleDataTransportCCTSupport"; + name = FirebaseInstallations; + path = FirebaseInstallations; sourceTree = ""; }; 9B60C34B9DDFBC2756520D0858254DA9 /* Pod */ = { @@ -10373,6 +10718,15 @@ name = Pod; sourceTree = ""; }; + 9BCEFBA6F728DA1423C8D80E348E9F24 /* Support Files */ = { + isa = PBXGroup; + children = ( + 979A76AD19363B9D26207764CC5EE2C2 /* FirebaseCoreDiagnosticsInterop.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/FirebaseCoreDiagnosticsInterop"; + sourceTree = ""; + }; 9D97246403426DF0F2CBA4FA32E78DAD /* Pod */ = { isa = PBXGroup; children = ( @@ -10410,6 +10764,15 @@ name = Pod; sourceTree = ""; }; + 9EA5F86655592B693DE74D95DF3A3C23 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 210731369AB3AD93BEB294C250CD20AA /* JitsiMeet.framework */, + 0752B852E884FC47B65B0C2D2105EE8E /* WebRTC.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9FFD6C48AA84AA0129A6513D521A3D8D /* messaging */ = { isa = PBXGroup; children = ( @@ -10464,6 +10827,91 @@ path = Multiline; sourceTree = ""; }; + A3766D147E465BA857B7CA0A26C0163D /* Products */ = { + isa = PBXGroup; + children = ( + 3EEAA606F6866DA20E6601B9655B1027 /* libBugsnagReactNative.a */, + 6FFB7B2992BB53405E6B771A5BA1E97D /* libDoubleConversion.a */, + A225ED83E33DC48D25B9FF35BA50CCD0 /* libEXAppLoaderProvider.a */, + AD40A94AE1ADFA1CDF9602BA3B04C90E /* libEXAV.a */, + 220361FF3B2778F8F38C2C4DCC5B49FD /* libEXConstants.a */, + ED1E3FC0DC90F4A787472917BFB6B235 /* libEXFileSystem.a */, + 80A51B61FECFED8D1A0D95AAD32A2938 /* libEXHaptics.a */, + 72E494917AC5EC2582197F07061A28B0 /* libEXPermissions.a */, + 574E8A849B86DCF8EE5726418D974721 /* libEXWebBrowser.a */, + ABFEEA82A6C346B22843FBE0B0582182 /* libFBReactNativeSpec.a */, + E2B63D462DB7F827C4B11FD51E4F8E2D /* libFirebaseCore.a */, + 8CC9178C366942FD6FF6A115604EAD58 /* libFirebaseCoreDiagnostics.a */, + 13C8C8B254851998F9289F71229B28A2 /* libFirebaseInstallations.a */, + 2DA0D814DFCB860D31D7BCD63D795858 /* libFirebaseInstanceID.a */, + 06489499588BFA8FD5E63DD6375CD533 /* libFolly.a */, + 3CA7A9404CCDD6BA22C97F8348CE3209 /* libglog.a */, + 856B5CD56F194FAD26EA91620B66D614 /* libGoogleDataTransport.a */, + 6942351307BC1F54575D9853307EAE0E /* libGoogleDataTransportCCTSupport.a */, + B43874C6CBB50E7134FBEC24BABFE14F /* libGoogleUtilities.a */, + 279390C893577F74DD2049383E1EDD1A /* libKeyCommands.a */, + 5E4674603A5D5B9215FFA0F8E69F8B71 /* liblibwebp.a */, + 06FC5C9CF96D60C50FCD47D339C91951 /* libnanopb.a */, + 586602EDE69E2D273945D156ECB89853 /* libPods-RocketChatRN.a */, + ABCA9F4CD6EE0D4686EBA505F526A436 /* libPods-ShareRocketChatRN.a */, + 3347A1AB6546F0A3977529B8F199DC41 /* libPromisesObjC.a */, + F958876A082BF810B342435CE3FB5AF6 /* libRCTTypeSafety.a */, + BD71E2539823621820F84384064C253A /* libReact-Core.a */, + 6771D231F4C8C5976470A369C474B32E /* libReact-CoreModules.a */, + 37592FDAD45752511010F4B06AC57355 /* libReact-cxxreact.a */, + D9F334F2E90E3EE462FC4192AF5C03BD /* libReact-jsi.a */, + F2E7C88DFCD460A4B46B913ADEB8A641 /* libReact-jsiexecutor.a */, + 2577F299FCB0A19824FE989BE77B8E8F /* libReact-jsinspector.a */, + 242758B9EDFF146ABE411909CAC8F130 /* libreact-native-appearance.a */, + B75A261FE3CE62D5A559B997074E70FC /* libreact-native-background-timer.a */, + 8C3E2A6E6F93E60E397F6C0BBA710BF5 /* libreact-native-cameraroll.a */, + 08D1FFC2980C1ED72AE9A4C44A0544C3 /* libreact-native-document-picker.a */, + 8074129DF318155B29544548E1CAF4A3 /* libreact-native-jitsi-meet.a */, + 5CA8F1A20B87DBB263F925DD7FE29947 /* libreact-native-keyboard-input.a */, + 686FA236B3A0EDC2B7D10C6CB83450C8 /* libreact-native-keyboard-tracking-view.a */, + 012242E4480B29DF1D5791EC61C27FEE /* libreact-native-notifications.a */, + 48425DA2F01D82A20786D5E55E264A29 /* libreact-native-orientation-locker.a */, + 2B17A71888AA28CEFEC37B72F2A68A91 /* libreact-native-slider.a */, + B058F035CFD84ECBF8414E4EAE5834FC /* libreact-native-video.a */, + 8DF63376066E2275FF26820B3A512A9B /* libreact-native-webview.a */, + 73F8A95B79671F501F31EA4F1D04AA8B /* libReact-RCTActionSheet.a */, + FE7B9294FF05AAFD1653E2104E10844A /* libReact-RCTAnimation.a */, + F71EBF73F354B475D465FF6DE9A66707 /* libReact-RCTBlob.a */, + EEDBF403E8E0B3885E65C2741B536BC5 /* libReact-RCTImage.a */, + 802121F5B756ACBFDD6D08C36246DADD /* libReact-RCTLinking.a */, + A68E5A9B69A3BA0FD52CAF7A354EC93B /* libReact-RCTNetwork.a */, + 269BE773C9482484B70949A40F4EA525 /* libReact-RCTSettings.a */, + E6A16705C69FC7DE11C2469A4A0F8358 /* libReact-RCTText.a */, + C1A919103EAC9813D236486C34FC0A21 /* libReact-RCTVibration.a */, + D5C775614AC76D44CECB6BE08B022F1F /* libReactCommon.a */, + 51B50F20C76CF72E2BEF8D4764235306 /* libReactNativeART.a */, + 858AFA83985937825473045CF6808B15 /* librn-extensions-share.a */, + 4FDA96879D96070EB1983E98E655CBDC /* librn-fetch-blob.a */, + 3B65CB9B6DCD893501BDCF1DE7BA926C /* libRNAudio.a */, + 202722AA0D229A11350F6DC0F267A0BA /* libRNBootSplash.a */, + 72DE4BF3FB9CE0858E90F96FEF8A53AE /* libRNDateTimePicker.a */, + E0FE6533198104C97DB047DD5CD8AC67 /* libRNDeviceInfo.a */, + E55EA3C6F285F6FA8067C5C8A428FA64 /* libRNFastImage.a */, + 4EAF7225D8D498E7D232AE1520E6CBD3 /* libRNFirebase.a */, + 8F65F9361F2069CF9E9D751272968DE4 /* libRNGestureHandler.a */, + 3AEA4A114C08533A2C0F8E039A4C5EB9 /* libRNImageCropPicker.a */, + 15912309AA610251329D74FA111DE5CA /* libRNLocalize.a */, + C777CF2FB1E39A45CBBDB54E8693F471 /* libRNReanimated.a */, + E496A53A92B4E464B5C30DC5B1E4E257 /* libRNRootView.a */, + 50B5347C9A6E93B7D4CFC3673BA6FB7E /* libRNScreens.a */, + BFCE4058442BFB8DEB89BA3F261A76BA /* libRNUserDefaults.a */, + 8998273719FDD789E6F9C7541AFD0B33 /* libRNVectorIcons.a */, + 580712ADE0DDE9601ED35B000EC802D6 /* libRSKImageCropper.a */, + B0B214D775196BA7CA8E17E53048A493 /* libSDWebImage.a */, + FCF61D9B2B75054A9A3185DDC609B7FF /* libSDWebImageWebPCoder.a */, + AF72FD600DE7E2D330BA50F877993E05 /* libUMCore.a */, + 3B640835BAA914DD267B5E780D8CFEC7 /* libUMReactNativeAdapter.a */, + 65D0A19C165FA1126B1360680FE6DB12 /* libYoga.a */, + 3DCCC9C42EB3E07CFD81800EC8A2515D /* QBImagePicker.bundle */, + ); + name = Products; + sourceTree = ""; + }; A4BCB9D79480D43D95CAB8DE0F7AA6DB /* Pod */ = { isa = PBXGroup; children = ( @@ -10558,16 +11006,6 @@ name = Pod; sourceTree = ""; }; - A6F18B90ADD5F3C489E841EC3046432D /* Support Files */ = { - isa = PBXGroup; - children = ( - 452318FDD594B5923B177B4FD6115A90 /* FirebaseCore.xcconfig */, - AD6F0184C9B0D921A0733BB5A058FF11 /* FirebaseCore-dummy.m */, - ); - name = "Support Files"; - path = "../Target Support Files/FirebaseCore"; - sourceTree = ""; - }; A718D11B54AC65BB9896DBA26EC395C4 /* Support Files */ = { isa = PBXGroup; children = ( @@ -10590,17 +11028,6 @@ path = "../../ios/Pods/Target Support Files/RNVectorIcons"; sourceTree = ""; }; - A73232D7B575C52303AFCBA0D1952B59 /* Support Files */ = { - isa = PBXGroup; - children = ( - 2EE491B9F0B95B8A20B38302F6434248 /* DoubleConversion.xcconfig */, - 11B31E00DF16B6278B172C44FA57D3DA /* DoubleConversion-dummy.m */, - 645711EC4391753669A172BC1C7B1F65 /* DoubleConversion-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/DoubleConversion"; - sourceTree = ""; - }; A8186EDD0FA77C2DB3EF37A65D27093E /* Drivers */ = { isa = PBXGroup; children = ( @@ -10641,6 +11068,23 @@ path = "../../node_modules/react-native-background-timer"; sourceTree = ""; }; + A8C71C322026C911F1F90E2B03F26405 /* Frameworks */ = { + isa = PBXGroup; + children = ( + AD6234B3E3CB445DBD2389BF9FB6E66F /* GoogleAppMeasurement.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + A93FC5B030CC5395435DD39670F9E756 /* Support Files */ = { + isa = PBXGroup; + children = ( + 8A4DD3054BCAAC1DD111B122592F96DD /* Firebase.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/Firebase"; + sourceTree = ""; + }; A96923899F2F14E2364CB7C8325C5577 /* Support Files */ = { isa = PBXGroup; children = ( @@ -10660,6 +11104,152 @@ name = Pod; sourceTree = ""; }; + AA4F6AAD65B434D8E494DA264036AFDA /* Core */ = { + isa = PBXGroup; + children = ( + 0C3136B59B61BB160560C616ED25BC08 /* NSBezierPath+RoundedCorners.h */, + 3762F4EB37B62BDA42A52139A2CE184A /* NSBezierPath+RoundedCorners.m */, + 2EE8ED7B82F5E3A7EF109FDD2E17A97F /* NSButton+WebCache.h */, + 0B8C2145C378EBCD15C3B414625FD2D0 /* NSButton+WebCache.m */, + 336D56D9272DA9C7A6F5356D0DB9B248 /* NSData+ImageContentType.h */, + F934561A4844BCB1A5D2C72516F4A72A /* NSData+ImageContentType.m */, + 8B4C2C687BA9A4F482BCC6E3550747BE /* NSImage+Compatibility.h */, + A6C7344EA1DD6836B5D82E682D0A59D7 /* NSImage+Compatibility.m */, + B1151875A2C24A78423CC58505388627 /* SDAnimatedImage.h */, + 6689EFD327C141249C36F84B370FCC15 /* SDAnimatedImage.m */, + 6456BEB6732CB1208721A93717E83ACB /* SDAnimatedImagePlayer.h */, + 378C25F0844A70F6AF0AD604D5B04960 /* SDAnimatedImagePlayer.m */, + 31D19F7F78897D1BC258DE9692B90D33 /* SDAnimatedImageRep.h */, + ECFF7646CDA1C9BC7B92C2364D35EB4F /* SDAnimatedImageRep.m */, + 2F107D99DE30C03FC83538F1745C81DE /* SDAnimatedImageView.h */, + 22DA47BB069C91769B82987265E8AA4F /* SDAnimatedImageView.m */, + 55172F9BCA61ED8903813A0BE84F0A81 /* SDAnimatedImageView+WebCache.h */, + 0695A738C7F41C79A285AD67DCD00EE2 /* SDAnimatedImageView+WebCache.m */, + 23AF27BB8FC1D90102AF761B02C48033 /* SDAssociatedObject.h */, + E9FEBF5B13B80FBCD53AF5D844C38822 /* SDAssociatedObject.m */, + F2659EE472B6D6569574FAB9D3BCFB98 /* SDAsyncBlockOperation.h */, + C4539C0D5139FA433EA40799F1AC83A5 /* SDAsyncBlockOperation.m */, + DD2806395B36E55041B47CB2F212D053 /* SDDeviceHelper.h */, + CAB97B058E412E0CFCBF16E6AD07DCA2 /* SDDeviceHelper.m */, + 55DEC1E6B4290093E9B0766AC1D19DFF /* SDDiskCache.h */, + 587AD88BD32631BB096534980CA556E2 /* SDDiskCache.m */, + 6FFD07CA8CC396C11428C8593FC6E959 /* SDDisplayLink.h */, + 3F19DADEA197E3EB0A522E8E1D520775 /* SDDisplayLink.m */, + AC5BBA5FEB96505850A90FBE111B046F /* SDFileAttributeHelper.h */, + 88FB1508A1C9E9DF1C4FCF0644BFB25D /* SDFileAttributeHelper.m */, + A2CB7B6EE46AF3166A4B3053A322A61C /* SDGraphicsImageRenderer.h */, + A88DF20441288B71F15D147211C1C64B /* SDGraphicsImageRenderer.m */, + 5EE39A7B4283BEFE43E66F46862951DC /* SDImageAPNGCoder.h */, + 7612B1F9763549EA1DC383D43FC8950C /* SDImageAPNGCoder.m */, + 1246B4FC24C785047CD95D5E8BB7AE12 /* SDImageAssetManager.h */, + 85F22489B98808C5DA103C7B579C00A3 /* SDImageAssetManager.m */, + 2AA5FDE5D455838C40D597792B73FDCC /* SDImageCache.h */, + 06E1729FCDB517FF8E598520953361E3 /* SDImageCache.m */, + C4479616B9A8800084821451D7E8362A /* SDImageCacheConfig.h */, + D63B972B95C4ACEAA36C351BF1B2CDDD /* SDImageCacheConfig.m */, + BE710B81BB8CB34A3D44E178C59ED0D3 /* SDImageCacheDefine.h */, + 7AE11FC733D32808154EE0C7975D70AD /* SDImageCacheDefine.m */, + 1FF50E5ECFD2E8272C61A10AF4ED50A1 /* SDImageCachesManager.h */, + AD5C654D5F9C65609BC75BEDEB1C2EF1 /* SDImageCachesManager.m */, + 11C0A683D9914E0CCC77E6DCABB2816C /* SDImageCachesManagerOperation.h */, + E818294C08CF5776BB1D71226C8C1B0A /* SDImageCachesManagerOperation.m */, + 82C5CB61A36D2F0DDF60097EB08DBD66 /* SDImageCoder.h */, + 877F0D1D9A0A956008B6F07FD23EC8B1 /* SDImageCoder.m */, + 7480B7F4FAB96A496173DE0E7C617B9C /* SDImageCoderHelper.h */, + 28AD1F843F1DFF344E92B8B18AB1A0FB /* SDImageCoderHelper.m */, + A54A0AB081F02B68C732C27229CC546A /* SDImageCodersManager.h */, + 0DFCFAD3BB3A6A89D23F127637FA0517 /* SDImageCodersManager.m */, + 445FADAAD22E2C0B298304BB38E55693 /* SDImageFrame.h */, + EEC39363574592DDD2C4DE7211730B12 /* SDImageFrame.m */, + ECF6CDD59A57C47D27B4C64E3C83F6EB /* SDImageGIFCoder.h */, + B6DAE9177A3C3A2B93422B1382202FF6 /* SDImageGIFCoder.m */, + 66BB28169F8562B9DE334B74B5B456EB /* SDImageGraphics.h */, + D525C8CC60B15909F0B82D63E338E963 /* SDImageGraphics.m */, + FC4D1271006F3F19FD1F32ED18916996 /* SDImageHEICCoder.h */, + 82F6DE05F32E14B763473B91688324E1 /* SDImageHEICCoder.m */, + 264FC1F2B694A07F9E99ECECA1434258 /* SDImageHEICCoderInternal.h */, + 0078CF9DAC8CC4187F6E291B8F51727E /* SDImageIOAnimatedCoder.h */, + 8047865EF52BDB8F74E450253525FD98 /* SDImageIOAnimatedCoder.m */, + 7EAF77B51624F49BDB16C3865BA59750 /* SDImageIOAnimatedCoderInternal.h */, + 9823CB2C7479BFFC9C9AA170BD0CBB10 /* SDImageIOCoder.h */, + F87F6A22FB4F600954FB2663E53340C6 /* SDImageIOCoder.m */, + 70BF969C7EE75D6BABCC43461AAEF644 /* SDImageLoader.h */, + F26BB59FEC9CBF96A4426D94923EF71D /* SDImageLoader.m */, + 458BC6D0F0ABCC8D2958F42C9A3F3820 /* SDImageLoadersManager.h */, + 0A50C6F190916F34A6C994F0FA9A369F /* SDImageLoadersManager.m */, + A38CE196FAF4456B06F77B5B9E0CFDBE /* SDImageTransformer.h */, + 4D7F7DEEE1B431B212DE4B6E85BFD120 /* SDImageTransformer.m */, + 1CA3042722DE6BE862DDD182F6A65072 /* SDInternalMacros.h */, + B7619685EB70998E0F7EC8865DDD7D94 /* SDInternalMacros.m */, + BEAA4F63A52753F14D4888D08369618E /* SDMemoryCache.h */, + 93B11D5857328B9B8C43CEFE929288EC /* SDMemoryCache.m */, + 188DE396BFE9BACC9E475E966B3ECB4C /* SDmetamacros.h */, + 85852013697E914BA35F277826FB9CEE /* SDWeakProxy.h */, + 9A65228A597C9CDF1630D3E33E79C2E7 /* SDWeakProxy.m */, + C6A63FCD6FAFEE69391E5C3FC275512F /* SDWebImage.h */, + 5C366C49F593DF61C1B36CA3537E513C /* SDWebImageCacheKeyFilter.h */, + 183A3C0267913A961293F8FCB8FCF81D /* SDWebImageCacheKeyFilter.m */, + 5E395510D11DCC7395A036D8E1F57BA3 /* SDWebImageCacheSerializer.h */, + C98669397B6EB380F73981625F007E41 /* SDWebImageCacheSerializer.m */, + 3479DAFDB6E7103FA78860240F0C3A7C /* SDWebImageCompat.h */, + 65985823BA9E59CD5D699B8553FBFC7A /* SDWebImageCompat.m */, + 435C84BA7D4AB3EB7649F9B26277DA8E /* SDWebImageDefine.h */, + 55331CDCA3E4E9F322A2CA7CE5915A6A /* SDWebImageDefine.m */, + 3C3849B9FE871B8A9BFFEA94781CC286 /* SDWebImageDownloader.h */, + ED5D4ABF81DB0F6F91E1A25F93EE1DEB /* SDWebImageDownloader.m */, + EA3905F7E6892A7956DD8078E9E87116 /* SDWebImageDownloaderConfig.h */, + E76F1E8AD66134342407C6C7C3FD17A8 /* SDWebImageDownloaderConfig.m */, + 8EDA6DF3A3B6AF0071D4A7A9742995B2 /* SDWebImageDownloaderDecryptor.h */, + B49950F25B4587A0F1428A0FF4D062F1 /* SDWebImageDownloaderDecryptor.m */, + 2DAA01CE0749CD75B5D864D9C3DB8B11 /* SDWebImageDownloaderOperation.h */, + 0ACF31EDEFE1E569CF6189573939269F /* SDWebImageDownloaderOperation.m */, + 62DCD8FC43D8554520EF5C154FB8D476 /* SDWebImageDownloaderRequestModifier.h */, + 3912963231AA3AA7436B53843E64EE76 /* SDWebImageDownloaderRequestModifier.m */, + 7B75AFFDAD90901B97B9F59583DB4E96 /* SDWebImageDownloaderResponseModifier.h */, + 66228ED45E198EDBDEA21A197E306C7E /* SDWebImageDownloaderResponseModifier.m */, + 726CEC5D657E14C2D28E2608DB007104 /* SDWebImageError.h */, + B2910F746BA799CA787EFCE48845B524 /* SDWebImageError.m */, + 436BEED2A30591A8D4E5DB90E45FC2FA /* SDWebImageIndicator.h */, + 63B31FE76518F6AD1B9C7FC4FC3BE0FD /* SDWebImageIndicator.m */, + 6F8611F8EC76BA0AD83706FBD552AEFF /* SDWebImageManager.h */, + AB686584E542E1751A41715CD307E524 /* SDWebImageManager.m */, + 0BB0025F1EC6EF96CB0113EBC33D3711 /* SDWebImageOperation.h */, + FA4ECAC99B83A66CECD026177446CB77 /* SDWebImageOptionsProcessor.h */, + 76870B32976CD2CF19434FE44E4DAB9E /* SDWebImageOptionsProcessor.m */, + AE786E2067197B64CADFCEB08C452C84 /* SDWebImagePrefetcher.h */, + F7181E6712382186FEFE1FAEE124DC30 /* SDWebImagePrefetcher.m */, + E6D457DA870054C0D84E3800FDA55894 /* SDWebImageTransition.h */, + 438B0AFC915C650C7DD6BBD7E1482856 /* SDWebImageTransition.m */, + A1C0F847D5B6DD6759E31413551F6F58 /* UIButton+WebCache.h */, + 6D9558B896F99A90A93DC099BD7C8D88 /* UIButton+WebCache.m */, + 93FD2FCA283A90F02414FA05025F9086 /* UIColor+HexString.h */, + D7593711A2E6EAD105E206B03D6E3616 /* UIColor+HexString.m */, + 108BA2E99330882B915006784045B5A9 /* UIImage+ExtendedCacheData.h */, + 395775162350335AB985C2E53A0F2AFA /* UIImage+ExtendedCacheData.m */, + F08B0F9A4D8A738B0F5EF58D5545D0A9 /* UIImage+ForceDecode.h */, + B101A21C2A5287012254B056CFA7D4FC /* UIImage+ForceDecode.m */, + 54FDDD0372DB70DE5506C1BE95A23BE4 /* UIImage+GIF.h */, + 2BA675DA25C52E2FD5633ACE43240432 /* UIImage+GIF.m */, + 5469BFF90FA3FA7460B0D79CE5197D1D /* UIImage+MemoryCacheCost.h */, + 1E5CFD24886A762C411A37478D6B0296 /* UIImage+MemoryCacheCost.m */, + 19B4CD2BCA1F7FD16045A42310FCE9F0 /* UIImage+Metadata.h */, + 6ECC10905A36138211973FA8BFF62640 /* UIImage+Metadata.m */, + EF173724C22DB7D2C3F88CAA10675F80 /* UIImage+MultiFormat.h */, + 63F237C28969479FD39F0D8EB9063B79 /* UIImage+MultiFormat.m */, + F3AD925B23A79ECA6E6EBDF8DB7412D2 /* UIImage+Transform.h */, + 91CF14832C73F2B333714483F06B3C9A /* UIImage+Transform.m */, + 4B9414D353B3774B94F6BC07EDA11C7C /* UIImageView+HighlightedWebCache.h */, + 34ACC90522BF9626ADB3630C6DD72733 /* UIImageView+HighlightedWebCache.m */, + 975D51C22494655692ADF60A40FC9F94 /* UIImageView+WebCache.h */, + AF56195464AFAF7C34D6F48C7CFF702E /* UIImageView+WebCache.m */, + 5FA7BEFCEE456CEE557E176D2373B2AE /* UIView+WebCache.h */, + 2EE96081B960EB5843F26F6558A40730 /* UIView+WebCache.m */, + 6A21588A6554E872D0F5137FF593521A /* UIView+WebCacheOperation.h */, + DCA1074616EEF1BC09293FE2105C9CFC /* UIView+WebCacheOperation.m */, + ); + name = Core; + sourceTree = ""; + }; AB377B3B92224DFB1AF61E3C42865A4C /* RCTTypeSafety */ = { isa = PBXGroup; children = ( @@ -10694,40 +11284,6 @@ name = Pod; sourceTree = ""; }; - AEA9BACD48867572A3F1E34A434EA210 /* Folly */ = { - isa = PBXGroup; - children = ( - 51C0EC44F93E37F2F7956B7F1CF1BD7A /* Assume.cpp */, - C35E7FE27DAB66CBC23CF55C160F9F81 /* ColdClass.cpp */, - C6D764A8FFC016671C8031425E8EE2F5 /* Conv.cpp */, - CA00F20CD47382A4E8F6B2B57C44447B /* Demangle.cpp */, - F60981B496FE1E2C360A984FD512294A /* Demangle.cpp */, - 98517DAD4810F45ED8FA59BC3F947354 /* dynamic.cpp */, - 3966AA9F1E79E5A7F4EBC038DB4558B6 /* F14Table.cpp */, - A3E63A13602882E51CE5359C7B370400 /* Format.cpp */, - 729A38040F88573F71437BC50CBBB96A /* json.cpp */, - B6219DECE46FCBA0B37B214302C278F1 /* json_pointer.cpp */, - 3751758E274BD3C87E1AAE2DE4C1B366 /* MallocImpl.cpp */, - 983D468F8C9A0B2C350475DFE638F4C6 /* ScopeGuard.cpp */, - 1AE4FFEE6A9488A6CE72466623293BE4 /* SpookyHashV2.cpp */, - BB4BF48A648AF492AE8FCDE9F4545A29 /* String.cpp */, - D4576431923B32B28E848D30EB34BD00 /* Unicode.cpp */, - 55136C75EB4F5BD0AFD5E22CEAF26273 /* Support Files */, - ); - name = Folly; - path = Folly; - sourceTree = ""; - }; - AFACDE4DCC23BDEA99D5C31756E2E2FA /* GoogleAppMeasurement */ = { - isa = PBXGroup; - children = ( - 1C993B9F03DEA570E666CA88E462252A /* Frameworks */, - 06686FA55A8EEBA185AB04FA8AB615DE /* Support Files */, - ); - name = GoogleAppMeasurement; - path = GoogleAppMeasurement; - sourceTree = ""; - }; B02E5B3AC1BFCED3D92AC1C87235253B /* Views */ = { isa = PBXGroup; children = ( @@ -10884,6 +11440,14 @@ path = lib/ios/LNInterpolation; sourceTree = ""; }; + B2951A464D62F689D3C6044C7F73302B /* Frameworks */ = { + isa = PBXGroup; + children = ( + 176DC1CC909FEC82CDF5716487143CF4 /* Crashlytics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; B34945BD3380F76C26DF4ACCF60C6D1C /* RCTRequired */ = { isa = PBXGroup; children = ( @@ -10895,15 +11459,6 @@ path = "../../node_modules/react-native/Libraries/RCTRequired"; sourceTree = ""; }; - B4938EC6831DA7FA371B4207AAB74D27 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 219BAC5E878DD89ED1E40A58350D5474 /* FIRAnalyticsConnector.framework */, - 7CEDECEDD97547E548051D0BF989401A /* FirebaseAnalytics.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; B68067CA807F7B14A302B72645ECBAD6 /* Pod */ = { isa = PBXGroup; children = ( @@ -10912,17 +11467,6 @@ name = Pod; sourceTree = ""; }; - B6A83DC00D9E4675456B2DE4508CADFD /* Support Files */ = { - isa = PBXGroup; - children = ( - E36BC1838BBE0A3C1226042850FB19C3 /* nanopb.xcconfig */, - CE60F49EF77406B156BFE39692C9CCF7 /* nanopb-dummy.m */, - 2E0810763BC65EA4F8EEA770DA72C91F /* nanopb-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/nanopb"; - sourceTree = ""; - }; B79DBA2AB47499BB433C98EB6567959E /* RCTWebSocket */ = { isa = PBXGroup; children = ( @@ -10985,14 +11529,15 @@ path = "../../node_modules/react-native-appearance"; sourceTree = ""; }; - BBA877DD1554291622AD1862CF160973 /* Support Files */ = { + B8FD7B66934E4234AD5AB2D5EE791A85 /* Support Files */ = { isa = PBXGroup; children = ( - 8A126C06795FE746C9901F5ED989C79D /* FirebaseInstanceID.xcconfig */, - 366329A40E8A1E715FE041B79A1E789B /* FirebaseInstanceID-dummy.m */, + ACAF6F97C93480DEF850BDAA7DE9577A /* Folly.xcconfig */, + 2FA8915E0D8D275C898AC3CC45B0C183 /* Folly-dummy.m */, + 2BD8EAE53B4A1B7062C4C439BA87951A /* Folly-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/FirebaseInstanceID"; + path = "../Target Support Files/Folly"; sourceTree = ""; }; BBFF655567CB14D7432C188C1C518533 /* Pod */ = { @@ -11003,25 +11548,70 @@ name = Pod; sourceTree = ""; }; - BC6B18D35CF03D08AD2F96C31BB3E7FA /* Support Files */ = { + BD2D1D74DC7B94DF4049B5D3BE7A4B0E /* Support Files */ = { isa = PBXGroup; children = ( - DD6D91740B8B962C4CE62F898542B1A6 /* GoogleDataTransport.xcconfig */, - C56B144313F11160699FC870103B147B /* GoogleDataTransport-dummy.m */, + 3E41B296571AC95DE177C8BDD92082EE /* JitsiMeetSDK.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/GoogleDataTransport"; + path = "../Target Support Files/JitsiMeetSDK"; sourceTree = ""; }; - BD62BB88BAFD525AE7E898BBB5BCA27B /* Support Files */ = { + BDECE5E2D91F907FA4086723A3CD134E /* Support Files */ = { isa = PBXGroup; children = ( - 79915C4E2EB6C0B1E346BE2B093CC0C9 /* RSKImageCropper.xcconfig */, - 7F3A1CF3578311FCD5BB2B8C51729FDB /* RSKImageCropper-dummy.m */, - A00FA0A24655CB8F5AB8B70AE509BB18 /* RSKImageCropper-prefix.pch */, + A504DDAED24ACC8CF4D4D4E69E078BAA /* nanopb.xcconfig */, + F62A51F0D87C21CBDCC1B8756AE451C6 /* nanopb-dummy.m */, + 2F7C021AFD37BBD8879F4CED45D3CBB6 /* nanopb-prefix.pch */, ); name = "Support Files"; - path = "../Target Support Files/RSKImageCropper"; + path = "../Target Support Files/nanopb"; + sourceTree = ""; + }; + BE06AA569AB87C4AD6137682F7A41400 /* libwebp */ = { + isa = PBXGroup; + children = ( + F6908B7F3DAA9157C0C6086537CC4F7A /* demux */, + E8B6A85956573B9F30CD1427074D8E31 /* mux */, + 5EAB6EF45478102AC30052B27D569C04 /* Support Files */, + 11D3F6AF03D8A3626A7FD39925D9BB19 /* webp */, + ); + name = libwebp; + path = libwebp; + sourceTree = ""; + }; + BE81D7E783097ABE8C9B3F942F42FC1F /* Folly */ = { + isa = PBXGroup; + children = ( + D66719B7E0573E532519532723F67812 /* Assume.cpp */, + DC3FBA3E5B2AE0036A215BD1C8E37D31 /* ColdClass.cpp */, + 54EB650E96F37C37F0F35851F8C12BA6 /* Conv.cpp */, + 192CCAEA3A7BD283727CC8F0076D4F1F /* Demangle.cpp */, + 47667B177B8F7040093014A945593A04 /* Demangle.cpp */, + C65235A5B4462861F568033127D5801F /* dynamic.cpp */, + AE6009DB9E0286F743D5CFA5415F06EF /* F14Table.cpp */, + 965EC53F67148F2FB7C1C52C636A654B /* Format.cpp */, + 951EA411C3609031BB767BB3EC28580E /* json.cpp */, + 08ECB6371492FBD46314AE3703CD8DAF /* json_pointer.cpp */, + E1E98A139B0A1E84E12ACFECE2DCC7BC /* MallocImpl.cpp */, + 9AE4C4F557F4921C9D27A6E75DDB9A1A /* ScopeGuard.cpp */, + 2281519202E71413AA842990FD9E7D77 /* SpookyHashV2.cpp */, + 5F1C5F873FB22C5A73E967F1C3900F05 /* String.cpp */, + 05D21B2E62B525961EA9BE1309FB1D32 /* Unicode.cpp */, + B8FD7B66934E4234AD5AB2D5EE791A85 /* Support Files */, + ); + name = Folly; + path = Folly; + sourceTree = ""; + }; + BEBA91E83D1604502A927D103DA78889 /* JitsiMeetSDK */ = { + isa = PBXGroup; + children = ( + 9EA5F86655592B693DE74D95DF3A3C23 /* Frameworks */, + BD2D1D74DC7B94DF4049B5D3BE7A4B0E /* Support Files */, + ); + name = JitsiMeetSDK; + path = JitsiMeetSDK; sourceTree = ""; }; BED2C0FBBE99BB99619F4B9BE5A2927F /* RNAudio */ = { @@ -11036,6 +11626,13 @@ path = "../../node_modules/react-native-audio"; sourceTree = ""; }; + BEFB2B9B5280E10F649378C9E3C14871 /* decode */ = { + isa = PBXGroup; + children = ( + ); + name = decode; + sourceTree = ""; + }; BFEE45F1AAED6EDEAE970DDF52C1F61F /* RNVectorIcons */ = { isa = PBXGroup; children = ( @@ -11113,6 +11710,13 @@ name = Pod; sourceTree = ""; }; + C5AC19D7A9D457167D564B1E75C41A57 /* encode */ = { + isa = PBXGroup; + children = ( + ); + name = encode; + sourceTree = ""; + }; C621711C72CCEECB2747920B1775F252 /* Pod */ = { isa = PBXGroup; children = ( @@ -11159,29 +11763,6 @@ path = "../../node_modules/react-native/Libraries/LinkingIOS"; sourceTree = ""; }; - C6EAA678CE34CC24B34CB5A710052FC0 /* boost-for-react-native */ = { - isa = PBXGroup; - children = ( - C9E9CA8F82E4F06733FA3FF55AFC1BA9 /* Support Files */, - ); - name = "boost-for-react-native"; - path = "boost-for-react-native"; - sourceTree = ""; - }; - C6F58A381FB1BC7A3DEB0FB1D0C5345E /* FirebaseCoreDiagnostics */ = { - isa = PBXGroup; - children = ( - 326F4393F9730A5FCBBD861903F4E98C /* FIRCoreDiagnostics.m */, - 5CD44221A26E3F51CDD22BABCB58B202 /* FIRCoreDiagnosticsDateFileStorage.h */, - 0B86658594281C1E99C699518F4B8838 /* FIRCoreDiagnosticsDateFileStorage.m */, - F7F1E72F15A3AF0C35DEF0C1A2BDD5F3 /* firebasecore.nanopb.c */, - A72FB0A1AC1D24670509A274650EA2F3 /* firebasecore.nanopb.h */, - D4E0275CBF7FAA8236649E00F1C8078C /* Support Files */, - ); - name = FirebaseCoreDiagnostics; - path = FirebaseCoreDiagnostics; - sourceTree = ""; - }; C6FF59578801B8BD98D5B56D5CD53A44 /* React-jsiexecutor */ = { isa = PBXGroup; children = ( @@ -11220,12 +11801,14 @@ path = "../../node_modules/react-native/Libraries/FBReactNativeSpec"; sourceTree = ""; }; - C78784711C677018497E8D5457CAB129 /* Frameworks */ = { + C7D050BE37BEB97CCFF3C328E1D81D8A /* Logger */ = { isa = PBXGroup; children = ( - 7A5466C3CC27EC54A45A65F3085F873B /* Crashlytics.framework */, + 7FE80A0E5A04BEDCC2FE998068C2E8A5 /* GULLogger.h */, + F12DAF7528A201C09ADE0D2FC9600260 /* GULLogger.m */, + 63FC874B85C176CC532B90BB75E6546F /* GULLoggerLevel.h */, ); - name = Frameworks; + name = Logger; sourceTree = ""; }; C8AC68C3E1079E3AB11A0AE9BA44C6BD /* Support Files */ = { @@ -11239,13 +11822,13 @@ path = "../../../../ios/Pods/Target Support Files/React-jsinspector"; sourceTree = ""; }; - C9E9CA8F82E4F06733FA3FF55AFC1BA9 /* Support Files */ = { + C9762B9B989E3D2E0734F2D20257BA15 /* Support Files */ = { isa = PBXGroup; children = ( - D21357691A211111FCF423A64E04CAD4 /* boost-for-react-native.xcconfig */, + 3705D82A3DC4CA7F5EDBE3BE24EB6EE3 /* GoogleAppMeasurement.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/boost-for-react-native"; + path = "../Target Support Files/GoogleAppMeasurement"; sourceTree = ""; }; CB52C4E07F056BDFB85AC3C205A116B0 /* React-cxxreact */ = { @@ -11299,6 +11882,15 @@ name = Pod; sourceTree = ""; }; + CC2718A0477F08C40D8D833570D6DCF7 /* Support Files */ = { + isa = PBXGroup; + children = ( + D0FE094866BD845597950E5E71ABA095 /* boost-for-react-native.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/boost-for-react-native"; + sourceTree = ""; + }; CCDDAAE69E1395EE41AE31D3FD03FAB5 /* Transitioning */ = { isa = PBXGroup; children = ( @@ -11355,26 +11947,14 @@ path = RNFirebase/analytics; sourceTree = ""; }; - CEB97193EFC32D087D832BADA04E1AFD /* Fabric */ = { - isa = PBXGroup; - children = ( - D0BBB1D952E11B5F023EB0D3FD91C887 /* FABAttributes.h */, - B77199EB723C7E6DB6B57BD7FE8D82AE /* Fabric.h */, - 5D9EC42F0961A55DCDCD0744E2F448CB /* Frameworks */, - 980CB63D38BFD9A5C4593515A9DFFD9B /* Support Files */, - ); - name = Fabric; - path = Fabric; - sourceTree = ""; - }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 2400411D160157C0F8B8C8D820D017A9 /* Development Pods */, D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, - F3CF337684CF232BC0A534A0C924468A /* Pods */, - 2831255621399A1A95B6A58D28D3B520 /* Products */, + 9160F20DFF7DC7F1CACEE969035ACE20 /* Pods */, + A3766D147E465BA857B7CA0A26C0163D /* Products */, A5ADA69422B84A7580C82CAA5A9168D1 /* Targets Support Files */, ); sourceTree = ""; @@ -11424,6 +12004,17 @@ path = "../../node_modules/react-native/ReactCommon/jsinspector"; sourceTree = ""; }; + D19DE6C0AE63B7A962E6D09484F125DB /* Reachability */ = { + isa = PBXGroup; + children = ( + 13BC4224F66908DB532F9B44C792439A /* GULReachabilityChecker.h */, + A2894FAA81841C7DE26398644B1F3ACD /* GULReachabilityChecker.m */, + 4D352643E8BC0C05FAD0BB5404F73E27 /* GULReachabilityChecker+Internal.h */, + 464C3A02594F9D69187EC87E695B4726 /* GULReachabilityMessageCode.h */, + ); + name = Reachability; + sourceTree = ""; + }; D4077CE69563C7626C35FB4A16C6DB7F /* Pod */ = { isa = PBXGroup; children = ( @@ -11434,14 +12025,23 @@ name = Pod; sourceTree = ""; }; - D4E0275CBF7FAA8236649E00F1C8078C /* Support Files */ = { + D55310A3D7A33E73CB444A32C1FF022B /* boost-for-react-native */ = { isa = PBXGroup; children = ( - 8B43F094AB5E433A936FF4B4F031A70D /* FirebaseCoreDiagnostics.xcconfig */, - 549CC56FC99AAB064C41404A60ACDCA7 /* FirebaseCoreDiagnostics-dummy.m */, + CC2718A0477F08C40D8D833570D6DCF7 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/FirebaseCoreDiagnostics"; + name = "boost-for-react-native"; + path = "boost-for-react-native"; + sourceTree = ""; + }; + D6F490C034FF3884052422C414FFF53A /* SDWebImage */ = { + isa = PBXGroup; + children = ( + AA4F6AAD65B434D8E494DA264036AFDA /* Core */, + DDCB62EC2967968D87E1AA9AE1D0355A /* Support Files */, + ); + name = SDWebImage; + path = SDWebImage; sourceTree = ""; }; D741E1DAA8A74DDFEF00C622475515C1 /* RNRootView */ = { @@ -11569,25 +12169,12 @@ path = KSCrash; sourceTree = ""; }; - DBBD1F13765A25CC8BCBBFBC641BF012 /* glog */ = { + DB6752B59873A91592A7998C80544B13 /* CoreOnly */ = { isa = PBXGroup; children = ( - 081DBE46ED8562B7ECAEDB8FBF8206C9 /* demangle.cc */, - 7A39EDD3E7E23D5FD4B1E1E340CE326E /* log_severity.h */, - C45BBE85AD818400CB1A3129182DD6CB /* logging.cc */, - 313C94AD1D24DABED4DACECE329E5171 /* logging.h */, - 05C2010B25DD2DBB84A02AD7D9CC3D4E /* raw_logging.cc */, - 4DFBB6DEF544E77BA121C1D1031EC0DF /* raw_logging.h */, - 971B256811855BF0D6867E3A723FA37E /* signalhandler.cc */, - C476CADBE585CCBC4E285BDCE9C9B9B6 /* stl_logging.h */, - ED36BC453E7E9F44D4DA76E824785DF6 /* symbolize.cc */, - 1F108CA515F3E008514F1B556040E00C /* utilities.cc */, - 5D46682E47471017D25EE31D4CD7C097 /* vlog_is_on.cc */, - 8BFB30ED854B8C01AD34F0014DAF9AF4 /* vlog_is_on.h */, - 7391E3BA3BB62691ABCD0990D99A3EEC /* Support Files */, + 24B86369C499373261B640769283284B /* Firebase.h */, ); - name = glog; - path = glog; + name = CoreOnly; sourceTree = ""; }; DC3F6B2FAE740701720365BAD2F818D5 /* Video */ = { @@ -11667,6 +12254,17 @@ name = Pod; sourceTree = ""; }; + DDCB62EC2967968D87E1AA9AE1D0355A /* Support Files */ = { + isa = PBXGroup; + children = ( + A4CCD66701BA3DC52D7F6038E6A0FE21 /* SDWebImage.xcconfig */, + F09D66808FCE05691A438366BC25B746 /* SDWebImage-dummy.m */, + 34576144E62481590800B259D7FB76E9 /* SDWebImage-prefix.pch */, + ); + name = "Support Files"; + path = "../Target Support Files/SDWebImage"; + sourceTree = ""; + }; DE4FACEFC9AD5255EA1FE12928C14307 /* React-CoreModules */ = { isa = PBXGroup; children = ( @@ -11694,24 +12292,6 @@ path = "../../../../ios/Pods/Target Support Files/React-RCTNetwork"; sourceTree = ""; }; - DF46527C239687489BF2D72AE4C69774 /* nanopb */ = { - isa = PBXGroup; - children = ( - 00FFEC094BBA2326B97D61C8A235B8CF /* pb.h */, - 2B4DE5FDBADC18037B2EFE8D8FF57828 /* pb_common.c */, - C8441C7C956DD16F599D219757963B47 /* pb_common.h */, - DF9802471B3C38BE71E6DFC462B60585 /* pb_decode.c */, - F2CD43E6A24897BE60EF619B608BF7DC /* pb_decode.h */, - 62F518EAE564CDB7FE22608053F08839 /* pb_encode.c */, - A2309B02D4CBE5D68836BD94999C64E2 /* pb_encode.h */, - 6D91D3EC80868FF87950FE7AE01B2049 /* decode */, - 704B9610866573E6E82D5558FE1081C4 /* encode */, - B6A83DC00D9E4675456B2DE4508CADFD /* Support Files */, - ); - name = nanopb; - path = nanopb; - sourceTree = ""; - }; DF73CEB83498278ABF84F5261280E606 /* RNGestureHandler */ = { isa = PBXGroup; children = ( @@ -11739,77 +12319,15 @@ path = "../../node_modules/react-native-gesture-handler"; sourceTree = ""; }; - E095C3347AF50DDADDDF6CC031DAA6D9 /* FirebaseInstanceID */ = { + E16AA748B8479800EC9221A9DE4E360E /* Support Files */ = { isa = PBXGroup; children = ( - 46B9E8FDC0BB235B05F6736A33FD68B8 /* FirebaseInstanceID.h */, - D54A835DCAEBC10A120B48CEBA085CC1 /* FIRIMessageCode.h */, - 241E57CE7B8A8A9A0C30B2F4727E17F5 /* FIRInstanceID.h */, - C31E5FC96B7E9A28293CF0E6C071B867 /* FIRInstanceID.m */, - DE96E733840BAB2944ACD371EAEE2C12 /* FIRInstanceID+Private.h */, - B956A57AB40A828151E2DDC55448CCB3 /* FIRInstanceID+Private.m */, - 0A346F7EB324ED60BD0277D524F7464F /* FIRInstanceID_Private.h */, - 609D910B5A8FEB743D2A62CDA193939B /* FIRInstanceIDAPNSInfo.h */, - 21E202A7C5AD705849C005996A458957 /* FIRInstanceIDAPNSInfo.m */, - 1B1A1C95AA27C1D36C6270D41774B010 /* FIRInstanceIDAuthKeyChain.h */, - 1EC329653A5CE5C65DB4A68C3E2D5C2D /* FIRInstanceIDAuthKeyChain.m */, - 6B31C55B0080450813DC71445DA97515 /* FIRInstanceIDAuthService.h */, - 8492A0BD43CFF65B38C003A996898AFA /* FIRInstanceIDAuthService.m */, - F913CAE0697648283B36B0E6B9F9E0E8 /* FIRInstanceIDBackupExcludedPlist.h */, - 2BBC2EA548E00A132F008D4552E8CABD /* FIRInstanceIDBackupExcludedPlist.m */, - 5EAE9AC10C7125CB916DA112DF625F6C /* FIRInstanceIDCheckinPreferences.h */, - FA33B60640BF328BF0DFC68784B43B8F /* FIRInstanceIDCheckinPreferences.m */, - B87E79843B4EA59AB699E20F9EB2ECD0 /* FIRInstanceIDCheckinPreferences+Internal.h */, - 6E44F680ED7C0AF205ABF2F732D5BF1E /* FIRInstanceIDCheckinPreferences+Internal.m */, - E697151248E9D0827AB6DF49ADAA73EA /* FIRInstanceIDCheckinPreferences_Private.h */, - 2D1BFEB2857C8000A201EFA5B2A22488 /* FIRInstanceIDCheckinService.h */, - BC76E2FBF45298FFC195C1BACE29276A /* FIRInstanceIDCheckinService.m */, - 9598C47569571A616A8E6DDD9E675729 /* FIRInstanceIDCheckinStore.h */, - 3C2A85A735F523B7B67CE1ED2DFDF5D8 /* FIRInstanceIDCheckinStore.m */, - 7990BC8A7C7229119CF767CCAD9AAF62 /* FIRInstanceIDCombinedHandler.h */, - FFA8CB977BF4AD6E90224C3F5F650B0A /* FIRInstanceIDCombinedHandler.m */, - 884C00138AD3CAF3B4B0B63BD80BED30 /* FIRInstanceIDConstants.h */, - E715A7145663F9339D4E7F52DA5E3932 /* FIRInstanceIDConstants.m */, - 169C59D4B7CFD8544456F26E526BB4F7 /* FIRInstanceIDDefines.h */, - 3B086A0ED5925BD59CEF6134AF11EEB4 /* FIRInstanceIDKeychain.h */, - 3E84014E280F5F6717F909372864D169 /* FIRInstanceIDKeychain.m */, - 4B18AB04CABC858BF04C827C6B5470F5 /* FIRInstanceIDKeyPair.h */, - F84CFF851919F4C8C90C7A0A02A4EDBC /* FIRInstanceIDKeyPair.m */, - 1E7AA5171F7BFA958025DC698C194776 /* FIRInstanceIDKeyPairStore.h */, - 1B17E24DB6A1D37F25B7A56EC2AD431E /* FIRInstanceIDKeyPairStore.m */, - C52620374CCE79F63474832E84684EDF /* FIRInstanceIDKeyPairUtilities.h */, - E33417ACBFBAB178C661615BA5AB68FD /* FIRInstanceIDKeyPairUtilities.m */, - 42AF09E5E83635479F79553B7BC9BB92 /* FIRInstanceIDLogger.h */, - A180D1561EE0153CEAE325FB966800B0 /* FIRInstanceIDLogger.m */, - 685DFF57A1534B9C433EDBE0B2A0B0D3 /* FIRInstanceIDStore.h */, - 400C4C1D16088D9B17F94F449FD66EEC /* FIRInstanceIDStore.m */, - F44EE0313A65B3D0BB64ECA3C3C7D0E8 /* FIRInstanceIDStringEncoding.h */, - 15D81EE7F5F3714858C7FF9A5982EA34 /* FIRInstanceIDStringEncoding.m */, - 593434FB0205C22E5A950A80442758C9 /* FIRInstanceIDTokenDeleteOperation.h */, - FE9D8DD53AB4F688CFE58BF275771887 /* FIRInstanceIDTokenDeleteOperation.m */, - 1583CB301D61E5B65FA78359FE12CAD9 /* FIRInstanceIDTokenFetchOperation.h */, - 90EF6699ACCAB7C72CD5324F892A9215 /* FIRInstanceIDTokenFetchOperation.m */, - EF27139234F208AEE736571E47FBD2B5 /* FIRInstanceIDTokenInfo.h */, - FACB29702ACD77D66D657A8CCAA16447 /* FIRInstanceIDTokenInfo.m */, - 43DBD59E9011A4508B947E00654A82BF /* FIRInstanceIDTokenManager.h */, - D5B7CF80A43E501BEA20FB90FF049DD4 /* FIRInstanceIDTokenManager.m */, - 8DD51EADE5D09DE44C32D69103CFDC53 /* FIRInstanceIDTokenOperation.h */, - F234F18B2FBFFFCBC641916943E9642B /* FIRInstanceIDTokenOperation.m */, - 0499B8CE4FABCF6E65F81D68962C5DA1 /* FIRInstanceIDTokenOperation+Private.h */, - 357F2F1FC1E767EE78BF6EED5BD212E3 /* FIRInstanceIDTokenStore.h */, - 67947E69A5ABC8DF1DBF4B86B362C3EB /* FIRInstanceIDTokenStore.m */, - 0CA316AB9B1E087EE087129012E3ED1A /* FIRInstanceIDURLQueryItem.h */, - 44049E08C2816776C227F1102380AA46 /* FIRInstanceIDURLQueryItem.m */, - DA29FECAE359C2F2950641F461432B96 /* FIRInstanceIDUtilities.h */, - 9265904108AB9D3393DC3CE7F91A9B47 /* FIRInstanceIDUtilities.m */, - F5EE710F6055B8126303056B0BE1B60B /* FIRInstanceIDVersionUtilities.h */, - 3031A7731A02E0B42E97610B692B2468 /* FIRInstanceIDVersionUtilities.m */, - FC2DD08031380836E714D119660B0C71 /* NSError+FIRInstanceID.h */, - 23EECA421B7288F614E7ABE957561AC3 /* NSError+FIRInstanceID.m */, - BBA877DD1554291622AD1862CF160973 /* Support Files */, + A2F98D797C5A100E3115EA3505C1DA82 /* GoogleUtilities.xcconfig */, + 7EA24205E9A7B87800BCFEEC108BFF33 /* GoogleUtilities-dummy.m */, + 91359A1A9D71282B8617D5BF30B86B04 /* GoogleUtilities-prefix.pch */, ); - name = FirebaseInstanceID; - path = FirebaseInstanceID; + name = "Support Files"; + path = "../Target Support Files/GoogleUtilities"; sourceTree = ""; }; E1D93C4A7DDA9F70E2DE8A958BDDB27B /* Support Files */ = { @@ -11872,15 +12390,6 @@ name = Pod; sourceTree = ""; }; - E53C9CC3497634A2C855D1ADC4914341 /* Environment */ = { - isa = PBXGroup; - children = ( - FC5893DE036925F219400B1B91DDA49C /* GULAppEnvironmentUtil.h */, - 87668906696C273A559873C1EDF6F7AA /* GULAppEnvironmentUtil.m */, - ); - name = Environment; - sourceTree = ""; - }; E5414C3857C4790B6064426592A6DCCE /* Support Files */ = { isa = PBXGroup; children = ( @@ -11899,15 +12408,6 @@ path = "../../../ios/Pods/Target Support Files/UMSensorsInterface"; sourceTree = ""; }; - E7827566348E22ABE932A130C01B6751 /* Support Files */ = { - isa = PBXGroup; - children = ( - DCF4CED8CD3D2B43426543E727D6D881 /* FirebaseAnalytics.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/FirebaseAnalytics"; - sourceTree = ""; - }; E79D1BC8A5DB98EC2396D6DC6F3753A2 /* Support Files */ = { isa = PBXGroup; children = ( @@ -11943,12 +12443,18 @@ name = QBImagePickerController; sourceTree = ""; }; - E8EEAD52B1001C6E42DE46FA67FFC33B /* Resources */ = { + E8B6A85956573B9F30CD1427074D8E31 /* mux */ = { isa = PBXGroup; children = ( - D012AFD43F6B9E215E2529EE1DE37372 /* RSKImageCropperStrings.bundle */, + 96BA55D82ECFF1108092369C40805752 /* anim_encode.c */, + FF00CDB7A8232AE4158B172CB16D57C2 /* animi.h */, + 27AACFC75C230014487A026D8216B40F /* mux.h */, + E71363AF216BF6A9FDEDA89C8D14B6A2 /* muxedit.c */, + 2B5CA70816F8CA51268D097D84CE8B5B /* muxi.h */, + 9A5D533C41D3DCA0AE4501ABA408A5EF /* muxinternal.c */, + 285481B86C63C48528603907702089DB /* muxread.c */, ); - name = Resources; + name = mux; sourceTree = ""; }; EC500DA14D373AF1EABEAF2C9AF30A2C /* Pod */ = { @@ -11959,33 +12465,6 @@ name = Pod; sourceTree = ""; }; - ECD336A7C45854EB4022B9D5DF23021F /* DoubleConversion */ = { - isa = PBXGroup; - children = ( - 9307A5FA57000E38FBF9EC08FFF8A2BF /* bignum.cc */, - C993DF06793B7954B7AE6F9F0A64ED07 /* bignum.h */, - EBDF0BB8287EE7675B3313716DA7CFCF /* bignum-dtoa.cc */, - 62D58564597AD3FA1680CA444EE3153F /* bignum-dtoa.h */, - 27471F34AEEB9F553D525EC2E01F3CE5 /* cached-powers.cc */, - F6BC72E7DD48A1994CDB1E6FFF3B439E /* cached-powers.h */, - 8C702ABF343F6407668963298BF734C7 /* diy-fp.cc */, - 4AF26D3C24076E62CEE06B987C6D1D6F /* diy-fp.h */, - 70A2C57EB51078DE137D607F34867F54 /* double-conversion.cc */, - B37B061BCFAEAF0A54D7854C6C0322C7 /* double-conversion.h */, - 514A2F253442115AFA4B6EDDAFFFE085 /* fast-dtoa.cc */, - 310B5509506DB448A66995284AA9A9CF /* fast-dtoa.h */, - A7F28B7C648243F665EB4806AE5569F6 /* fixed-dtoa.cc */, - 6E1205BF8DB94D1E1D3698CBE66EBF47 /* fixed-dtoa.h */, - 0BE6814863EBB3F1C85ACC78CD1A0667 /* ieee.h */, - 7B74342AA866FE731DC0FDD2C2028F04 /* strtod.cc */, - EED9275A1D632EBAF320EF1A80E7B5C2 /* strtod.h */, - 617CCEC26BE49CEAB04CC0C3BD375E6C /* utils.h */, - A73232D7B575C52303AFCBA0D1952B59 /* Support Files */, - ); - name = DoubleConversion; - path = DoubleConversion; - sourceTree = ""; - }; ECE3CFC6B733646AACDA8B2FFD0BB0C3 /* Nodes */ = { isa = PBXGroup; children = ( @@ -12007,17 +12486,6 @@ path = Libraries/NativeAnimation/Nodes; sourceTree = ""; }; - EEBFE49148F1CF5A03CA08723969E319 /* Support Files */ = { - isa = PBXGroup; - children = ( - FB64DAEF321D4A129D5F296408A320DC /* SDWebImageWebPCoder.xcconfig */, - DDE8F8D657B4AD8D68519848C7E00D6E /* SDWebImageWebPCoder-dummy.m */, - 8D8E152A9BC39CB6B4F112BE7933F62A /* SDWebImageWebPCoder-prefix.pch */, - ); - name = "Support Files"; - path = "../Target Support Files/SDWebImageWebPCoder"; - sourceTree = ""; - }; EEDDE5C993CBBDBF48EADF5CE85C4D21 /* RNFirebase */ = { isa = PBXGroup; children = ( @@ -12067,30 +12535,6 @@ path = RNFirebase/perf; sourceTree = ""; }; - EF4FF077384894C92E4814E8E288BDD5 /* FirebaseAnalytics */ = { - isa = PBXGroup; - children = ( - B4938EC6831DA7FA371B4207AAB74D27 /* Frameworks */, - E7827566348E22ABE932A130C01B6751 /* Support Files */, - ); - name = FirebaseAnalytics; - path = FirebaseAnalytics; - sourceTree = ""; - }; - F0044B9650E6BC845F649EE7C95040E3 /* mux */ = { - isa = PBXGroup; - children = ( - C78D47F722BB1CAF44A836ED125A9FD7 /* anim_encode.c */, - F762F0A56AD644160EE40F2C9ED7DC7D /* animi.h */, - F1278B603ADC956F51E3304081668BFE /* mux.h */, - 23EFDD9E4FD7AF73F60CA08A78677637 /* muxedit.c */, - 1B2955D4AD48DE04BBCC5DB14A864B06 /* muxi.h */, - 8C47D1D35F481ACA0F8701C734BA781B /* muxinternal.c */, - D563B3F8B5F2EC3024FAB3290E161100 /* muxread.c */, - ); - name = mux; - sourceTree = ""; - }; F0926636B296F05464EB022485D23721 /* EXFileSystem */ = { isa = PBXGroup; children = ( @@ -12138,35 +12582,6 @@ path = "../../node_modules/unimodules-image-loader-interface/ios"; sourceTree = ""; }; - F3CF337684CF232BC0A534A0C924468A /* Pods */ = { - isa = PBXGroup; - children = ( - C6EAA678CE34CC24B34CB5A710052FC0 /* boost-for-react-native */, - FA96FD2F5FF83DA4DC289C7788B0E8CC /* Crashlytics */, - ECD336A7C45854EB4022B9D5DF23021F /* DoubleConversion */, - CEB97193EFC32D087D832BADA04E1AFD /* Fabric */, - 42DB5497D0205BE1831E7686A491E95F /* Firebase */, - EF4FF077384894C92E4814E8E288BDD5 /* FirebaseAnalytics */, - 5AC8DD3A22DE15FED6107CBAF45D37A2 /* FirebaseCore */, - C6F58A381FB1BC7A3DEB0FB1D0C5345E /* FirebaseCoreDiagnostics */, - 215F22565843CB30C76C33F6CA2789FD /* FirebaseCoreDiagnosticsInterop */, - E095C3347AF50DDADDDF6CC031DAA6D9 /* FirebaseInstanceID */, - AEA9BACD48867572A3F1E34A434EA210 /* Folly */, - DBBD1F13765A25CC8BCBBFBC641BF012 /* glog */, - AFACDE4DCC23BDEA99D5C31756E2E2FA /* GoogleAppMeasurement */, - 6FF0F000A20F65D87C7C2474482A0F89 /* GoogleDataTransport */, - 7FB97AA06C19FB7FB455F477F2961F80 /* GoogleDataTransportCCTSupport */, - 1571351D44DDA44B0522DAC3CC174204 /* GoogleUtilities */, - 1A9A8F7748BD4A4ECA30D287F5D5F67F /* JitsiMeetSDK */, - 6460E7B3271EEC81C32880A1A5991660 /* libwebp */, - DF46527C239687489BF2D72AE4C69774 /* nanopb */, - 3753A903489A2CBC645231993C8E6737 /* RSKImageCropper */, - 5647FAA622C078EF86A89F328A3BD7D3 /* SDWebImage */, - 8D436834128E652E6596ABE44DEF437D /* SDWebImageWebPCoder */, - ); - name = Pods; - sourceTree = ""; - }; F42C49BE8293DAE275EF2C6270BE4B37 /* Support Files */ = { isa = PBXGroup; children = ( @@ -12259,6 +12674,16 @@ path = Source; sourceTree = ""; }; + F4E8C74AE7E1C7626C68E1FBF69F4B75 /* GoogleAppMeasurement */ = { + isa = PBXGroup; + children = ( + A8C71C322026C911F1F90E2B03F26405 /* Frameworks */, + C9762B9B989E3D2E0734F2D20257BA15 /* Support Files */, + ); + name = GoogleAppMeasurement; + path = GoogleAppMeasurement; + sourceTree = ""; + }; F67177150FB7594317F1C8FCEE31A4E7 /* Inspector */ = { isa = PBXGroup; children = ( @@ -12282,6 +12707,16 @@ path = "../../../../ios/Pods/Target Support Files/React-RCTVibration"; sourceTree = ""; }; + F6908B7F3DAA9157C0C6086537CC4F7A /* demux */ = { + isa = PBXGroup; + children = ( + BC41853A6450E14F865A02ADC3D019D7 /* anim_decode.c */, + 66BE2E56E1110F499C048713FEB1CE2A /* demux.c */, + 2536DE7D124E9784E2285002DB68F17A /* demux.h */, + ); + name = demux; + sourceTree = ""; + }; F6C884388081F3AC6A1D5E593BE711FB /* Support Files */ = { isa = PBXGroup; children = ( @@ -12293,15 +12728,6 @@ path = "../../../ios/Pods/Target Support Files/RNFirebase"; sourceTree = ""; }; - F74417EBA7079E353532E43164085A3C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 9ADAC6CD45640D9EABC1DB283FA2B30F /* JitsiMeet.framework */, - 855FA7499F1A41F34D4ABFB10B0E1D73 /* WebRTC.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; F74AA74E1C62ACF85293872EB742261D /* Support Files */ = { isa = PBXGroup; children = ( @@ -12323,6 +12749,32 @@ path = crashlytics; sourceTree = ""; }; + F81EBDFF90F8EF7E9C7FD80A121F087B /* RSKImageCropper */ = { + isa = PBXGroup; + children = ( + 112CFA9961DCCEA1D55E037EE24E1C38 /* CGGeometry+RSKImageCropper.h */, + A1EC5104042BAFCD052B353B775968D7 /* CGGeometry+RSKImageCropper.m */, + 106194880B0291DBB2CB25096A7764E5 /* RSKImageCropper.h */, + 6853D0C0275C488A7AFF75D5BF9ACC72 /* RSKImageCropViewController.h */, + 481BAF2737C4B9EED2882A2C4CB20C17 /* RSKImageCropViewController.m */, + 068267BE04ED7FFA08E2A827F9406A85 /* RSKImageCropViewController+Protected.h */, + BDEA5C38759AB791A74D4E71063DB293 /* RSKImageScrollView.h */, + C9C21A13DD4599456884602B0D4C6757 /* RSKImageScrollView.m */, + 084DF8B81E62B3FA2DD1A9E2620122EC /* RSKInternalUtility.h */, + 7C78B03E18C3C58965E80B1E11C3CAC7 /* RSKInternalUtility.m */, + A31F188D4B66F6B22F8E86B908FDCAFE /* RSKTouchView.h */, + BB3994268A3900BB3EC0B6E41C8ACEEC /* RSKTouchView.m */, + 195034DDBA6E2F083A2BB6F020769C4F /* UIApplication+RSKImageCropper.h */, + D996FB83753842B15AAE13001FED927E /* UIApplication+RSKImageCropper.m */, + 631C18F49615412D4C905B1C37D9ADA9 /* UIImage+RSKImageCropper.h */, + 65F4CD4AED2AC4EF14B118A58EDEE355 /* UIImage+RSKImageCropper.m */, + 3F6F28E6BE7C21FFF5BEC8EA83FCA9A1 /* Resources */, + 472D0655A441F438064A68603A68705A /* Support Files */, + ); + name = RSKImageCropper; + path = RSKImageCropper; + sourceTree = ""; + }; F867CEFD1BF8FB67A7D0AF9E505B7560 /* KeyCommands */ = { isa = PBXGroup; children = ( @@ -12357,23 +12809,6 @@ name = RCTLinkingHeaders; sourceTree = ""; }; - FA96FD2F5FF83DA4DC289C7788B0E8CC /* Crashlytics */ = { - isa = PBXGroup; - children = ( - 1DDEB27E88339BEF722E14FFCB3E3630 /* ANSCompatibility.h */, - E850ABD360807BF5FC6195D804CDC73F /* Answers.h */, - 8C6645411C554858ADA26C648BCBCEE0 /* CLSAttributes.h */, - DB35135339DD95C379CB3511AB5F8F99 /* CLSLogging.h */, - 988633FF40146D245E34784171890089 /* CLSReport.h */, - EB2B0BD91CA5870A2E60FB5BC4F7B9B3 /* CLSStackFrame.h */, - 6E6A07445A6C67484E9EAD3649AEA9DD /* Crashlytics.h */, - C78784711C677018497E8D5457CAB129 /* Frameworks */, - 4D9C7557ECB54D5FB587C4FF3E2BB92B /* Support Files */, - ); - name = Crashlytics; - path = Crashlytics; - sourceTree = ""; - }; FB3B9A1DBDC252416661F3F95C715416 /* React-RCTActionSheet */ = { isa = PBXGroup; children = ( @@ -12513,6 +12948,15 @@ path = React/Base; sourceTree = ""; }; + FE43C14EE339FF31B74ECE47E1D075CD /* Support Files */ = { + isa = PBXGroup; + children = ( + 3185ACD9193E4C2844B2A264ECC81F13 /* Fabric.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/Fabric"; + sourceTree = ""; + }; FEA54FE692DAF6D4F42F93B2A6A67B68 /* Pod */ = { isa = PBXGroup; children = ( @@ -12530,6 +12974,16 @@ path = Source; sourceTree = ""; }; + FFB3455A3E37A9225E29597AD5CD25E2 /* Support Files */ = { + isa = PBXGroup; + children = ( + AC94EA86B185F27AFFDD010481B75ED0 /* FirebaseCore.xcconfig */, + ABFB99715FD05FB4DB35E948155D825C /* FirebaseCore-dummy.m */, + ); + name = "Support Files"; + path = "../Target Support Files/FirebaseCore"; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -12691,6 +13145,37 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 1885C5BF353A272A0826345099A7D423 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 29EF263F0219112B7A83EB6282AC6BC8 /* FIRAnalyticsConfiguration.h in Headers */, + 36C7EF28833E6681D834301FE13A86F9 /* FIRApp.h in Headers */, + 530798D8A1CF3289921987D9FDC7B884 /* FIRAppAssociationRegistration.h in Headers */, + EF6ED61C297982CF31DF19548C24548C /* FIRAppInternal.h in Headers */, + 0D7E2BB25F84CFE2561BE6FCCF597EF7 /* FIRBundleUtil.h in Headers */, + 6A6811BCCAFE9B118E3913633F9D1A9D /* FIRComponent.h in Headers */, + E49C99B16AE53555FE7A7CB8A8BE5382 /* FIRComponentContainer.h in Headers */, + 674B78DEE8CC679498E5DE48188B81FA /* FIRComponentContainerInternal.h in Headers */, + BA5E0CA71A36D82490FA1A0B3127E89D /* FIRComponentType.h in Headers */, + DB5A7C7920EAF6928FBD7479829670B3 /* FIRConfiguration.h in Headers */, + 9796980DC5E2693A40E90235CE55CA24 /* FIRConfigurationInternal.h in Headers */, + 19BB6A5959515A1DBDDC1B41C2E63739 /* FIRCoreDiagnosticsConnector.h in Headers */, + FEE81DDBC8EE950322B4DFBC3C91A8F5 /* FIRDependency.h in Headers */, + 9704F9F1F14DAD1518EDEB3FAB732873 /* FIRDiagnosticsData.h in Headers */, + 3A6B7B5EA8B4C74A3B3628907AF2C361 /* FirebaseCore.h in Headers */, + 533F5B5A43499AF92AB8DBF7CC1CF84B /* FIRErrorCode.h in Headers */, + 91BBF552A2FF6BB3042AA2B96075C326 /* FIRErrors.h in Headers */, + 8BA04E1FA3708A51146E5A1218DA87B3 /* FIRHeartbeatInfo.h in Headers */, + 3EC8C2462B60DB403104F22B294A4B24 /* FIRLibrary.h in Headers */, + BC383056F1DB2F7478B30CCF6FFE5F60 /* FIRLogger.h in Headers */, + C8A1E2B5B461F13C1F45D6B15FFD6DE8 /* FIRLoggerLevel.h in Headers */, + 6954C7E327E3C06A6AA626163C0C4B69 /* FIROptions.h in Headers */, + 82E00AB632629A007250F0155CA70AF1 /* FIROptionsInternal.h in Headers */, + B6C5B18E7D63F47D4127BEFAEB0E082E /* FIRVersion.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 18CCACFE94CCD4DDBAEB3CD1965CC7B1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -12706,48 +13191,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 1C74D6215F0C3A85E599235A13CD942E /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E590557528529B8071B97A4AB8EDF4CF /* FirebaseInstanceID.h in Headers */, - 0D0B0F672F1016D9C9B72AFD4E83E04A /* FIRIMessageCode.h in Headers */, - A48A78367616FA23CDE0EE8BFD8C2870 /* FIRInstanceID+Private.h in Headers */, - 9E26D5D25561683EEEE343BA59A8D932 /* FIRInstanceID.h in Headers */, - 395183D9069FB94B71C8E24EA8A21FCD /* FIRInstanceID_Private.h in Headers */, - 7B469D1BA649E2A3DEA56273C87DD9B5 /* FIRInstanceIDAPNSInfo.h in Headers */, - C5CEDA86340AD47E9F861BA2E90C0098 /* FIRInstanceIDAuthKeyChain.h in Headers */, - 4DF24B425494D2F5095463CA148CCD40 /* FIRInstanceIDAuthService.h in Headers */, - FC7637AE23AF20DDA06CE6C7CD5BC193 /* FIRInstanceIDBackupExcludedPlist.h in Headers */, - EE5C2C00E8185B79989EC2EB1A7A1FA5 /* FIRInstanceIDCheckinPreferences+Internal.h in Headers */, - 893A87DB2A3762C63B0FAC772BB3EDC1 /* FIRInstanceIDCheckinPreferences.h in Headers */, - 8992866FD890EAB7CCDC06AF809602BD /* FIRInstanceIDCheckinPreferences_Private.h in Headers */, - E272409F0AB241D83659D93F160A6BEA /* FIRInstanceIDCheckinService.h in Headers */, - 49CDF4B546A26C030AE55779EF9F63EF /* FIRInstanceIDCheckinStore.h in Headers */, - 62AE5C4EFFF8C486F27736EA796AC818 /* FIRInstanceIDCombinedHandler.h in Headers */, - 30BBF147562E0292D0D75BDC762DE85E /* FIRInstanceIDConstants.h in Headers */, - 65A7CF7828FC4B009CBCEA5EE57938E3 /* FIRInstanceIDDefines.h in Headers */, - 3FD14FDCB0DCCD257A3AE028913722A1 /* FIRInstanceIDKeychain.h in Headers */, - ACA88DFA5AB4A617551CF5306214183B /* FIRInstanceIDKeyPair.h in Headers */, - 97A46257E974C4FCF70DD15A759720F5 /* FIRInstanceIDKeyPairStore.h in Headers */, - D3427935755BF962371D067EFC408DE4 /* FIRInstanceIDKeyPairUtilities.h in Headers */, - 7416EBB83257207F58A9B56829018B1F /* FIRInstanceIDLogger.h in Headers */, - CB64648C0E1E4414FD4489211DD002D7 /* FIRInstanceIDStore.h in Headers */, - 790CED3B2746C8BF72B9C0F037A74EB8 /* FIRInstanceIDStringEncoding.h in Headers */, - 0923FD3747647148D132AB7CCB7B375A /* FIRInstanceIDTokenDeleteOperation.h in Headers */, - 7A773ABDF9C553C818BBEA466D3CF195 /* FIRInstanceIDTokenFetchOperation.h in Headers */, - F7FAC1E73D94665C2A71AF67FE7A9930 /* FIRInstanceIDTokenInfo.h in Headers */, - E47C254AD48009FE84A72BF9BD0A2013 /* FIRInstanceIDTokenManager.h in Headers */, - 761E0A568CDCE9B772917B337430A542 /* FIRInstanceIDTokenOperation+Private.h in Headers */, - 4F7E32A059ED4485D7CF79F3B74CDF01 /* FIRInstanceIDTokenOperation.h in Headers */, - 5FFED67AC7B45A372C816803664090C3 /* FIRInstanceIDTokenStore.h in Headers */, - 2DD5EF0EB4B7DC767D1006CA43D91FA3 /* FIRInstanceIDURLQueryItem.h in Headers */, - FCD79EFFF5C8B0950B52990E332E637E /* FIRInstanceIDUtilities.h in Headers */, - BE4F13C44F376AE339DD73231DCFBACA /* FIRInstanceIDVersionUtilities.h in Headers */, - 9B328C7EB8E9F91C9E4940B976F51EDC /* NSError+FIRInstanceID.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 1E4ACAD149C74B00A7AA9EB780AAD1D6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -12774,36 +13217,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 26ECF0A641AED3FB908106E975F2CA61 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 063A7D878ACB2A6037E13C4A23179557 /* FIRAnalyticsConfiguration.h in Headers */, - ADFB5CBF150ABD49A5569C139D2F926E /* FIRApp.h in Headers */, - 52FC0092CAC6137CD80C517EFF257494 /* FIRAppAssociationRegistration.h in Headers */, - 0EAC2ADA214241BD4899DB8B47726FD2 /* FIRAppInternal.h in Headers */, - C207569F8719A271C767D198587CFF0F /* FIRBundleUtil.h in Headers */, - 495B0B15E14BC401DE45CAB2A4674C02 /* FIRComponent.h in Headers */, - E65C399538D7D89567465C7B349F2C04 /* FIRComponentContainer.h in Headers */, - EDC7C6753DD7336A6DAB5677E860B474 /* FIRComponentContainerInternal.h in Headers */, - C9C06DB7739CC4EDD00EE60BD45AB526 /* FIRComponentType.h in Headers */, - 78B9DE85D610820ACD6ED40A11F08E58 /* FIRConfiguration.h in Headers */, - AA7FCA9F298C4986D79923FBC1807573 /* FIRConfigurationInternal.h in Headers */, - 3A32F3DF1F3A28FD3A9E28078BB3EB2A /* FIRCoreDiagnosticsConnector.h in Headers */, - 1E39EB7CE27A1A84AF4831760FF1A643 /* FIRDependency.h in Headers */, - F729FF2845CD5C8CA9F83BC033C4A4D5 /* FIRDiagnosticsData.h in Headers */, - E5FFDAAF26DC2A5EE78AB195E68D7A6C /* FirebaseCore.h in Headers */, - F7C3B037B97B6C77B9C02AA6E6A366CE /* FIRErrorCode.h in Headers */, - 7264B177FBB9E819FEE3AD4C00E0E102 /* FIRErrors.h in Headers */, - A899878ECEAE82DA6084010973FF7F21 /* FIRLibrary.h in Headers */, - 4E502DC6E1495B0AE526594133F643B6 /* FIRLogger.h in Headers */, - FC3D97DAF0161899EA3D1DAD4BC63767 /* FIRLoggerLevel.h in Headers */, - 1F8BD67D3120D5BB19A1CB41C1B94BB1 /* FIROptions.h in Headers */, - CAF7B83A9944FC42D125FD8531A69A20 /* FIROptionsInternal.h in Headers */, - B9C1E38AD3D1F98B5403FB50A6003E43 /* FIRVersion.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 2BE960CA53FC0DD56DDA0E6D833BF298 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -12811,6 +13224,45 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 3050A17B887B11E8E378C04CCD56FEB3 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + CADE8DAB6C036105B2CDB8BB6E0718F6 /* FirebaseInstanceID.h in Headers */, + 7A19A0BB7B9140448F7E0498A1C64011 /* FIRIMessageCode.h in Headers */, + 3656E1A7C7F5703F0068F479C0F68F58 /* FIRInstanceID+Private.h in Headers */, + 7000B0B67786D5E2CF438B2C6A3E06F0 /* FIRInstanceID.h in Headers */, + 240F76F7437478A24B599EF0EB8A0881 /* FIRInstanceID_Private.h in Headers */, + F2E8A9FD857BB35C68640079AC2A68AB /* FIRInstanceIDAPNSInfo.h in Headers */, + 1BDF6BD96EE33DE39DB37AB25232CA12 /* FIRInstanceIDAuthKeyChain.h in Headers */, + 049781277A4DF708130AF68AA1C925EC /* FIRInstanceIDAuthService.h in Headers */, + D37BA13E56AB4047C4D544DC931A7111 /* FIRInstanceIDBackupExcludedPlist.h in Headers */, + 738FD16D3B15E94374A9151BA1B17663 /* FIRInstanceIDCheckinPreferences+Internal.h in Headers */, + CC22415C6197490967F46F17797B9AF2 /* FIRInstanceIDCheckinPreferences.h in Headers */, + 4511E4C8DFD1706C322BEFECAB639B93 /* FIRInstanceIDCheckinPreferences_Private.h in Headers */, + F8F23B650278EC92BD4E1D20F5F3084F /* FIRInstanceIDCheckinService.h in Headers */, + 9919A951AA1C3643BC9A0FB4E7B89D34 /* FIRInstanceIDCheckinStore.h in Headers */, + 991970762AB939C8EF22E39E60BA98A9 /* FIRInstanceIDCombinedHandler.h in Headers */, + 8691A04446317D7D3C7D3DC58CFEDF5D /* FIRInstanceIDConstants.h in Headers */, + FC8EB7790089B59A9534F58C07FCF438 /* FIRInstanceIDDefines.h in Headers */, + FB622B6F25A8FB70B8156427BB2963BB /* FIRInstanceIDKeychain.h in Headers */, + 110663446F2A96F5275705CA7143F736 /* FIRInstanceIDLogger.h in Headers */, + CCC12688626556FC8D8945D5A6922E8C /* FIRInstanceIDStore.h in Headers */, + 44C3BFF27B3A00065E0694106B6BBC65 /* FIRInstanceIDStringEncoding.h in Headers */, + C271EC3CEE125456B9023EF221D3BDF2 /* FIRInstanceIDTokenDeleteOperation.h in Headers */, + 308EE9EA4C9727C5413B848F42523151 /* FIRInstanceIDTokenFetchOperation.h in Headers */, + DAC13692DC590E6044ED75FE6C7A2D99 /* FIRInstanceIDTokenInfo.h in Headers */, + 6221A04C1F48445D01F695BD730A01CC /* FIRInstanceIDTokenManager.h in Headers */, + 043F132113151E6ADEDCE2882496167D /* FIRInstanceIDTokenOperation+Private.h in Headers */, + AC7FAE73363B58CEA4FEC4E8471E4C9C /* FIRInstanceIDTokenOperation.h in Headers */, + 5A01CF4A9C711B4E767058AC022D8DE5 /* FIRInstanceIDTokenStore.h in Headers */, + 9723ED2F504638D6345AE9D73E21F620 /* FIRInstanceIDURLQueryItem.h in Headers */, + CDD692D5774C8B76FF85B8E5A7750AFE /* FIRInstanceIDUtilities.h in Headers */, + 04F32CC017A5B4680D550DF38F6F630D /* FIRInstanceIDVersionUtilities.h in Headers */, + 2B59524284711BD287A3812E9E981486 /* NSError+FIRInstanceID.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 3087236F00B49F5087EEB22A05BBD1A8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -12839,6 +13291,34 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 3BEDF5DAC76F061A75464E15C8ABEB6B /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 4FF27C416A5E6CF6705EE1732D392D1B /* FBLPromise+All.h in Headers */, + 3DB6D861B1BED3FE02246D09E892A49B /* FBLPromise+Always.h in Headers */, + 92761B113C01A55F1CEBA2DDD2495446 /* FBLPromise+Any.h in Headers */, + 842E582DBF635E475E114381AD4F9C93 /* FBLPromise+Async.h in Headers */, + BB02801B51A949379B60DD90295B9ECE /* FBLPromise+Await.h in Headers */, + 4456E28CE66464D55C0363C9BE7A328D /* FBLPromise+Catch.h in Headers */, + 38E6BCA7EF6AEE0500A1E457935A37AD /* FBLPromise+Delay.h in Headers */, + CA19A520589C9D812CE9D3F6369629FF /* FBLPromise+Do.h in Headers */, + A42EF8F9C3AFFECF5B7DFEADA68539A4 /* FBLPromise+Race.h in Headers */, + B20F5C555A167E5A8977D22CD4C73279 /* FBLPromise+Recover.h in Headers */, + 8C1FF88440B33D9481A72C8EB18AFCA5 /* FBLPromise+Reduce.h in Headers */, + 9E69C58844ADDABB79A1AF60899FB6AB /* FBLPromise+Retry.h in Headers */, + 127076FAD518DE8F520B404457D45FF5 /* FBLPromise+Testing.h in Headers */, + DC96C9309C507BC3469D0CF4CC8D702E /* FBLPromise+Then.h in Headers */, + EEEE2F8856949DC3AD8768907BC1155B /* FBLPromise+Timeout.h in Headers */, + 8C0961F4BF06E2D6050B14C3292638B6 /* FBLPromise+Validate.h in Headers */, + 5005D6761137D55A31755FA8762CCF7B /* FBLPromise+Wrap.h in Headers */, + F34C639FB1271BA9041CE7D33BBB6859 /* FBLPromise.h in Headers */, + 3A2AB10764D649D2C494B8ACE9F93C74 /* FBLPromiseError.h in Headers */, + B857674D187E7ABB87D048F32DE47BC6 /* FBLPromisePrivate.h in Headers */, + 8709E4EE5B3FD0A526072D5F1C141722 /* FBLPromises.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 3D01AA5B5DCA423B2A037F78F1988264 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -12966,42 +13446,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 61ABBC3AEC8BB36AE1F8B7F1CA2A5479 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E8ADD9FF1D22894886D0DBD93EAB58F6 /* FIRCoreDiagnosticsDateFileStorage.h in Headers */, - 57C8A26C5E905E0B125AC142E720F5DB /* firebasecore.nanopb.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 668F199ECEB924B69D2C423CDB53960B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 7636AEE9E430997447356606B9B1CD06 /* GULAppDelegateSwizzler.h in Headers */, - A57DB7FFC1AA6AFF3337FCE567C2DFFC /* GULAppDelegateSwizzler_Private.h in Headers */, - 874A19430FD98697B7C5E8E8AB50513A /* GULAppEnvironmentUtil.h in Headers */, - 078E653C3724A2179DCB9018B3F7CCFC /* GULApplication.h in Headers */, - 7088EB44CAC740223920BA8B46908860 /* GULLogger.h in Headers */, - EE4BDF8FB4021FDA1409408B21AFABCE /* GULLoggerCodes.h in Headers */, - 2C447F128915ABFDC8E0CE94BEC794B8 /* GULLoggerLevel.h in Headers */, - 3E4147890AAABB96969C70E0D7986318 /* GULMutableDictionary.h in Headers */, - C5B18DC66089E744774E2B7348260CAD /* GULNetwork.h in Headers */, - 0D225414A45DFDEDBA19BEB5F0A30704 /* GULNetworkConstants.h in Headers */, - AF077EFEC522E29FF8D788B663D300D7 /* GULNetworkLoggerProtocol.h in Headers */, - 5DBC3155185D22F3124C211FB656A452 /* GULNetworkMessageCode.h in Headers */, - 2672B79116AA34F158A2BF9BCF83F014 /* GULNetworkURLSession.h in Headers */, - B890C8FA91883956E89ADE3B6B17679E /* GULNSData+zlib.h in Headers */, - BD65B77B25285655EFA60B4C9F3F23F9 /* GULOriginalIMPConvenienceMacros.h in Headers */, - E4BBDC1C561DC471AB6A780C063BBCC1 /* GULReachabilityChecker+Internal.h in Headers */, - 4CEBD6ED3BFF38C9053CDFC2E5FFE8C2 /* GULReachabilityChecker.h in Headers */, - 30C27B25CE11FBFEC253B678435C2261 /* GULReachabilityMessageCode.h in Headers */, - 5FA6DDEAD9030CB81E2D371A17F7C4BF /* GULSwizzler.h in Headers */, - AC1391E438DA90477947F994A68517C5 /* GULUserDefaults.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 6A5A6BE9ED862C61CF4BE031C5747B4C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13009,6 +13453,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7118FD45F5AD94B08A3FA91377500789 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + F6835F579A7F608E9D9DF7936BD0B6E5 /* cct.nanopb.h in Headers */, + 3ABBA80F6C061E7A70AF047FF9B2595C /* GDTCCTCompressionHelper.h in Headers */, + ECB28850CF749899A41813E488AE29E7 /* GDTCCTNanopbHelpers.h in Headers */, + 22136FA91117A1F7ED3FF91BBC609979 /* GDTCCTPrioritizer.h in Headers */, + 0343D94D2D5E8E2E318BA28B81964C30 /* GDTCCTUploader.h in Headers */, + 857CFD7317D23D33D462842423F50303 /* GDTFLLPrioritizer.h in Headers */, + 153C36E5468C038F1974115A982058E8 /* GDTFLLUploader.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 714E9DD83D58AA0686630C40411CD91A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13338,6 +13796,37 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 8B27489DDB7964E88E85C184A95FBB42 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 27905779CF00AA72248BCE35B952D351 /* GULAppDelegateSwizzler.h in Headers */, + AD7C3D9EC21B3A100F2D50A4D7158DAF /* GULAppDelegateSwizzler_Private.h in Headers */, + 2AD4C462CA3933A8FE83A9AE6C424AC8 /* GULAppEnvironmentUtil.h in Headers */, + DE4FD7EF6E7A5FDEC42D181E800ADA04 /* GULApplication.h in Headers */, + E85404923CD3A01CF558D3850CFE3679 /* GULHeartbeatDateStorage.h in Headers */, + 5F48078C953774E5876EA42742BA186F /* GULLogger.h in Headers */, + 4CCBFEADC3A7B8A5E9B92C290981C41B /* GULLoggerCodes.h in Headers */, + EEBF8313CA8F65F42F85E698A4170BB3 /* GULLoggerLevel.h in Headers */, + 2FA53DFC789880672A8C658D69915008 /* GULMutableDictionary.h in Headers */, + D8923CC2D680348D04C0B5B01CF695A7 /* GULNetwork.h in Headers */, + DB7DE91DCA6700F151D98F200ED5D276 /* GULNetworkConstants.h in Headers */, + 61076FBB82FF6974FED4A86160D17E5E /* GULNetworkLoggerProtocol.h in Headers */, + A1FA306C12F8FDC6C3E22551518871CC /* GULNetworkMessageCode.h in Headers */, + CF76AB411D4BD02C37E3BC20848E9E28 /* GULNetworkURLSession.h in Headers */, + 13908C215FAF98E1987E6DD3F7A6C858 /* GULNSData+zlib.h in Headers */, + 431786DF93882E8D7B28D5DAD61598CB /* GULOriginalIMPConvenienceMacros.h in Headers */, + 87CF39BC0CCA51CAB58590CF9A9B8FA4 /* GULReachabilityChecker+Internal.h in Headers */, + A1A8801E913E5175E5ECF693F318AA79 /* GULReachabilityChecker.h in Headers */, + E19F094AEE34A8B92913D6BDD5E9A718 /* GULReachabilityMessageCode.h in Headers */, + D7C9818EF31B52BF15F5A3DAD128D970 /* GULSceneDelegateSwizzler.h in Headers */, + B35D3DBB0E94D8ACB23B7012751A55A6 /* GULSceneDelegateSwizzler_Private.h in Headers */, + 6F2DC21E261B5DEF25DADB0E1FE0129F /* GULSecureCoding.h in Headers */, + 09C185F1C7A5642A99FC851468FCD3E0 /* GULSwizzler.h in Headers */, + 1DC8D5909F0CC6F24EF0084ECF759D64 /* GULUserDefaults.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8B2AD61CE63EE076B1FDD616E66343A6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13348,6 +13837,85 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 8D3BF187A73A80A7321413B200F8CD58 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 89ECCD7C01DDA71BC7FB896BB010E7C7 /* NSBezierPath+RoundedCorners.h in Headers */, + B36EBDF74E3D52A6C4D123C1561A79A8 /* NSButton+WebCache.h in Headers */, + A25FFD696888820B56D9C79F5B2EAEC3 /* NSData+ImageContentType.h in Headers */, + 3ECD97BBD34E2AEF1DB283897AEBB626 /* NSImage+Compatibility.h in Headers */, + 8A9D84B786AB2897A000D05D3AACB59D /* SDAnimatedImage.h in Headers */, + 4B46CA419944F2581E787DEC9E26DF27 /* SDAnimatedImagePlayer.h in Headers */, + CCDD9B74F7A6299EF3EE5DFB9338D5D9 /* SDAnimatedImageRep.h in Headers */, + BF23FDD138C85BBD370A5B2154CEA590 /* SDAnimatedImageView+WebCache.h in Headers */, + 06FBD958C231090762361344B123CACD /* SDAnimatedImageView.h in Headers */, + 0F0C237F0948F4A86466E10DEA439B7D /* SDAssociatedObject.h in Headers */, + FEACA20561A5919D3F143BC299FE7D8D /* SDAsyncBlockOperation.h in Headers */, + 698E16574F8BB6B1A4C2B0E81CDBDD30 /* SDDeviceHelper.h in Headers */, + 5605F99EFA7EB1FC1B0AD035A25608E8 /* SDDiskCache.h in Headers */, + 2C8B9B59A5D2050A4FC678FA0A65D5D5 /* SDDisplayLink.h in Headers */, + 9E74CD4E4333A1722FF7057A7D841D78 /* SDFileAttributeHelper.h in Headers */, + 1229180557BB3A7AD13E3DC16B283B14 /* SDGraphicsImageRenderer.h in Headers */, + 5651B7D25B0D4053B7DCBE24594AE5A2 /* SDImageAPNGCoder.h in Headers */, + CEDDF9FB89DDC0ED7701D06BB578CAEC /* SDImageAssetManager.h in Headers */, + A11DF1263B7EBD23B3D95FF9A3F68E8E /* SDImageCache.h in Headers */, + ECF5EE9A8CBB6789B7B126A9A26A5F1F /* SDImageCacheConfig.h in Headers */, + C376B5C079A3D667D292AFCE36995859 /* SDImageCacheDefine.h in Headers */, + 97B4C27248C45EFA7B1613C6F8F83C79 /* SDImageCachesManager.h in Headers */, + A361C7D8C652CE224BA016F8E6DD7432 /* SDImageCachesManagerOperation.h in Headers */, + 8FE0997788C0371B00C8923C3D935168 /* SDImageCoder.h in Headers */, + EA92BC0787BF825827888594F2AEBA4E /* SDImageCoderHelper.h in Headers */, + D5F006702C228499C976E45954BA7142 /* SDImageCodersManager.h in Headers */, + 5F591A05DC74FE96D26FCFCE23162A75 /* SDImageFrame.h in Headers */, + CF36B5C643DE055F1F75230AC8915277 /* SDImageGIFCoder.h in Headers */, + 8234B7822CF1CA1C3DF395FCE35C9178 /* SDImageGraphics.h in Headers */, + 5B4A397DF3BDA66041BD6CEF2B3EB09C /* SDImageHEICCoder.h in Headers */, + BAEEE054038206EBD438E6D6B42BF6A9 /* SDImageHEICCoderInternal.h in Headers */, + 18CE7AC942DCECCDCE8C8153D7CA9E2C /* SDImageIOAnimatedCoder.h in Headers */, + 37C0A3BF90F97D08F52212FF1DBF170A /* SDImageIOAnimatedCoderInternal.h in Headers */, + 2C2703DF3EEE37D3A30ECEB1DCD36D94 /* SDImageIOCoder.h in Headers */, + 1F2F9B4108921F0391A9CC05C304D013 /* SDImageLoader.h in Headers */, + 58D7052A7CCD26DD25B38FAAD2E996F2 /* SDImageLoadersManager.h in Headers */, + 34B59CB8CE7F33E4AEFA4F8D21FAF94C /* SDImageTransformer.h in Headers */, + 18A68BC1A619AFFD7CCB45B0AEB98715 /* SDInternalMacros.h in Headers */, + D35CFE42161E05CBCCA4AA4C32CF3661 /* SDMemoryCache.h in Headers */, + 5F09157C1DF89E099F5994063D10410B /* SDmetamacros.h in Headers */, + 20A5F474212746352B444046C98E45C2 /* SDWeakProxy.h in Headers */, + E092937984315305C4F482FDC1AB25EE /* SDWebImage.h in Headers */, + BB0C45D3B6615D75A9A0E3E3B31D5F63 /* SDWebImageCacheKeyFilter.h in Headers */, + BE904FB7BF17A7C1AED62EE3079A1950 /* SDWebImageCacheSerializer.h in Headers */, + 45B509EAE6F30C8FD22CB2AF7B72D785 /* SDWebImageCompat.h in Headers */, + D8518E5BF3021B461942AA4A1DF9896C /* SDWebImageDefine.h in Headers */, + 589F5BDC2B57CBEAEC6B457450AB3F6B /* SDWebImageDownloader.h in Headers */, + 680FF7736E95C4F0598D00BE3087C83E /* SDWebImageDownloaderConfig.h in Headers */, + 8B461725557EA6544B7B191BFDE8C1D4 /* SDWebImageDownloaderDecryptor.h in Headers */, + 9AD7C3DFE9A609436008F7DB4E0F1C59 /* SDWebImageDownloaderOperation.h in Headers */, + 3785F7EB165DAE2A7047D3376A8A5DB2 /* SDWebImageDownloaderRequestModifier.h in Headers */, + D79CB08B6BF6AE52B703A14D2E5EC289 /* SDWebImageDownloaderResponseModifier.h in Headers */, + 1478C97F0EFA9E58B5A017551A091B98 /* SDWebImageError.h in Headers */, + ED6F8B6CE9CEFC1D4CD6E21DF8103BCD /* SDWebImageIndicator.h in Headers */, + BF3A2F2133AD7A3B2ACE6D1E132BAEDE /* SDWebImageManager.h in Headers */, + 88E2D72A67C9FE9C1F481C71F68EEEF8 /* SDWebImageOperation.h in Headers */, + CB600AAB35D900E3F6F6E38BD6D90D47 /* SDWebImageOptionsProcessor.h in Headers */, + 9576BC2AA57D548A446DF12601AC0D7D /* SDWebImagePrefetcher.h in Headers */, + 92D334C2D97FB3BF1C809606141C8024 /* SDWebImageTransition.h in Headers */, + 6C8D94790F619755B402629EC3F394BE /* UIButton+WebCache.h in Headers */, + 0B7207001D16534DDF0C56E7C6F71B7B /* UIColor+HexString.h in Headers */, + F678D6DF5474A127E8A5C548654BDE5C /* UIImage+ExtendedCacheData.h in Headers */, + E4F2A48E51116B466E81C84FFB3C33B5 /* UIImage+ForceDecode.h in Headers */, + 809388545866799ABD28AA5A1D27F9E5 /* UIImage+GIF.h in Headers */, + 9F56E740FDB8B87EE194B5FC6DF23786 /* UIImage+MemoryCacheCost.h in Headers */, + 8C067D43FFE92BEE92DF729871CB6737 /* UIImage+Metadata.h in Headers */, + D86384B27334C1246523F688494DE7DD /* UIImage+MultiFormat.h in Headers */, + EE273A1922351D221CFDAFFC3FC1BEEE /* UIImage+Transform.h in Headers */, + 043F127F8BCEE1CF57B50F26BC40EEC6 /* UIImageView+HighlightedWebCache.h in Headers */, + CCAE7BA7471BB1DF772B3E823C61E0A4 /* UIImageView+WebCache.h in Headers */, + 81D4F16B20CB72219D872D8ABFB068F7 /* UIView+WebCache.h in Headers */, + 4E5A24B2AF227D372E222CC035C1DAA2 /* UIView+WebCacheOperation.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8E6C478DDAAD768E337D1B785E19C787 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13477,17 +14045,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9E3E1A6808B34C54057A80EFE20FA21A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 77AD7992233DBE12F405310EBFC991C5 /* cct.nanopb.h in Headers */, - A3CEEA552FEECF9935C60A49F2245451 /* GDTCCTNanopbHelpers.h in Headers */, - 65BC1D89895A4D5A4630CA5940E4A018 /* GDTCCTPrioritizer.h in Headers */, - 3CDB4A31E6703CFF32E72D3638BA11B4 /* GDTCCTUploader.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; A03D1D749E43C64F8B384021FB5B3F64 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13599,13 +14156,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B54B2EA07A950483567A4EE48C6A61CA /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; B867AC4A22E8F5A7A3D0582234514108 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13639,74 +14189,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - C00617F7394C0E4EE4A69081E2593889 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - F6BC3D6090988DED79B6F5CC48074FEF /* NSBezierPath+RoundedCorners.h in Headers */, - 54B6D082D028EEFE1E4A1987489EA682 /* NSButton+WebCache.h in Headers */, - B53803E0BA4AF13B0CAB686D6FE5D0FC /* NSData+ImageContentType.h in Headers */, - E1266E09810540E459FD7D39AEA1D7BA /* NSImage+Compatibility.h in Headers */, - 84A56F291D661D21781412F8874C80F5 /* SDAnimatedImage.h in Headers */, - 0CFB0957C67C24787E5C546936BE3550 /* SDAnimatedImageRep.h in Headers */, - EB9924D58B07EE3EB3287F501A3E8DDE /* SDAnimatedImageView+WebCache.h in Headers */, - A817D669CAD6CC063C6C508C72A5D55C /* SDAnimatedImageView.h in Headers */, - 15320769AD3A12888272E5E141BFCC9C /* SDAsyncBlockOperation.h in Headers */, - 4CC6BB01FCE680CDEDAC061A4E95DB8B /* SDDiskCache.h in Headers */, - 92855A1748072DD76EA73BD74B968795 /* SDImageAPNGCoder.h in Headers */, - 773B4DFAC559B7F58017017433245601 /* SDImageAPNGCoderInternal.h in Headers */, - FAF4E061760C22B95BE08E8A7CB52005 /* SDImageAssetManager.h in Headers */, - 2BCCAFD974059ACAFC22F751ECDD2AD7 /* SDImageCache.h in Headers */, - 45D3939CDA3B11BAB3744081B5730AC1 /* SDImageCacheConfig.h in Headers */, - 0E620510126D852FC371F7F9178AA6F0 /* SDImageCacheDefine.h in Headers */, - 7CC52F3DE61510F717E8B0BF7FBB3FC3 /* SDImageCachesManager.h in Headers */, - E32657D4D707837BE7FF65E4541C0078 /* SDImageCachesManagerOperation.h in Headers */, - DBB2215A03529D784DE3DE650A02FD45 /* SDImageCoder.h in Headers */, - EBD07BB27B77720C17D34C923052FCF8 /* SDImageCoderHelper.h in Headers */, - 5BD3E450B15ADCEE0FED33892A3EAB5D /* SDImageCodersManager.h in Headers */, - 018BC758F67618B02AE7AF70B2E5D29B /* SDImageFrame.h in Headers */, - 947E227575A4E6B2587914526363901B /* SDImageGIFCoder.h in Headers */, - 12B4CB2B1F8A425ECEA73AABB12E7A30 /* SDImageGIFCoderInternal.h in Headers */, - 2455449FDD13A5BD6B015D9B25207EB9 /* SDImageGraphics.h in Headers */, - 7213D525B6583565A1285BAD6519937A /* SDImageIOCoder.h in Headers */, - 942A1E450047CD3D7422D1A33226A320 /* SDImageLoader.h in Headers */, - D7ADEF068518F7CE4F646F7EBB7F384B /* SDImageLoadersManager.h in Headers */, - 36919C052E22A8130A9FCC27694A61DF /* SDImageTransformer.h in Headers */, - F42576E538BA4EAD61737ED1918F7E19 /* SDInternalMacros.h in Headers */, - B70FD1F085F4B1DAF7EA12B132D71569 /* SDMemoryCache.h in Headers */, - 836F27D41A90EDA63F478FC8EC9B6B2B /* SDmetamacros.h in Headers */, - 14E29E6C822F8A5CB16A6B5EE716D81C /* SDWeakProxy.h in Headers */, - 2F88FBA4BEA00215CDF33A4CB5C1AC70 /* SDWebImage.h in Headers */, - 3F9160E52A4D137A52DD2A7FE857193B /* SDWebImageCacheKeyFilter.h in Headers */, - 1D0E9D473AE2CA5B3C418987B185FD40 /* SDWebImageCacheSerializer.h in Headers */, - F60AFC502521A8956123317B2306FA2D /* SDWebImageCompat.h in Headers */, - 9B8FF798D120C0131DAFE922F8FA3326 /* SDWebImageDefine.h in Headers */, - 36BAEA5FD99090F9ACDB8246FAEF9A44 /* SDWebImageDownloader.h in Headers */, - 26CDA6E509270CC32B1FF34C4F7D0DA2 /* SDWebImageDownloaderConfig.h in Headers */, - 4F396B6DA5545C2B06340E9BA79EB498 /* SDWebImageDownloaderOperation.h in Headers */, - 11129F1CB005A708A117077C32350240 /* SDWebImageDownloaderRequestModifier.h in Headers */, - 0642877CFA3BABF6838B380EC90E850C /* SDWebImageError.h in Headers */, - EC948F82EF1983AA5BEB6AF4EA40501B /* SDWebImageIndicator.h in Headers */, - 817AD6EE8D4389A94BC361C34B67C504 /* SDWebImageManager.h in Headers */, - 5127828C12F9E9715810F9D02C1CE720 /* SDWebImageOperation.h in Headers */, - 168EBAAD25584C70CA9111D5CCB8180E /* SDWebImageOptionsProcessor.h in Headers */, - 41755CD0FA73E9E757BBF62F21F0FFF7 /* SDWebImagePrefetcher.h in Headers */, - 9EB60143301349BE59FEEFAB98C50415 /* SDWebImageTransition.h in Headers */, - FBA3AD3723EB355128F93C3892B5514C /* UIButton+WebCache.h in Headers */, - 3195DB0618B1CA79C84E8D42C590DF57 /* UIColor+HexString.h in Headers */, - D5D452E5668A65252CBD1865BF47312A /* UIImage+ForceDecode.h in Headers */, - C0EF38E2CC4F5D1AA2CE7684E58C542D /* UIImage+GIF.h in Headers */, - 90B80FD2A60F9E1D7768435E7B3FCEE4 /* UIImage+MemoryCacheCost.h in Headers */, - 01E9290B5AF4EF792AF0770821457C81 /* UIImage+Metadata.h in Headers */, - 50BFDEC0A6599CE33073B7F1245CBDEE /* UIImage+MultiFormat.h in Headers */, - 78B369DDCE73212FDEF4DFCF3C3E28CD /* UIImage+Transform.h in Headers */, - C679826BA06A7E8AC3F0C873125401AB /* UIImageView+HighlightedWebCache.h in Headers */, - DE2209CDBBB1FF739DD3AFE8D7EDA04F /* UIImageView+WebCache.h in Headers */, - EB3E24580BE08E5B95D8B26751FD5B75 /* UIView+WebCache.h in Headers */, - 0A6BA0F3B42A8F085AD76A71AD742B25 /* UIView+WebCacheOperation.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; C21F70E6BA51D689E2C52DB04E1E09E0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13714,41 +14196,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - C27E40F70D8660156BC5E78B2725C358 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - C00BC444C909EC94EB7A0B9972BE02DE /* GDTAssert.h in Headers */, - 8FE94733E89900C932AD73103E1ACFE1 /* GDTClock.h in Headers */, - BE5DE257A36811BEFB4F2626DFDBD03C /* GDTConsoleLogger.h in Headers */, - B4AAF4E42C54B9F9F4FC2D9F8A46B29F /* GDTDataFuture.h in Headers */, - 40D19B3596F2AAA91C871A4C0827D6E9 /* GDTEvent.h in Headers */, - C50BBFD660177E04410B43D6C45ABBE7 /* GDTEvent_Private.h in Headers */, - 2B18BA16E70FB8CE8D1CBA9F53F02241 /* GDTEventDataObject.h in Headers */, - 77EFFA9B1F1ED908799FD6F3C6DDEA77 /* GDTEventTransformer.h in Headers */, - 7EDB9BED917BCE27EE5CA97BE801B215 /* GDTLifecycle.h in Headers */, - A351627E81A36765AB4C00CFCECF3F17 /* GDTPlatform.h in Headers */, - C7D3C394C908F36CAD5033116E989AAD /* GDTPrioritizer.h in Headers */, - 726F398FE3050CFFAB6C42E76FF5B72F /* GDTReachability.h in Headers */, - AF79242E97FCF340E1D5266D69041821 /* GDTReachability_Private.h in Headers */, - D0D1E7C0D38F8F07555211A4AA20537B /* GDTRegistrar.h in Headers */, - AEFF8C6DA7000185BFAB86FDFB63E0F9 /* GDTRegistrar_Private.h in Headers */, - 5BC9846FCBC634C69EDB99A707469D35 /* GDTStorage.h in Headers */, - C003FCC72FC7B55D846E71062A6AF1CB /* GDTStorage_Private.h in Headers */, - 13CC63F0A5CAA2C7909B84D3C6D4620B /* GDTStoredEvent.h in Headers */, - 7CAFE1BF52F8DE2D0BEF15A33CC19C7A /* GDTTargets.h in Headers */, - 094A110F9B7125E1ACA5C55D97CE3305 /* GDTTransformer.h in Headers */, - 02D340EA0E9D8C59CB3B6584EA53BCAD /* GDTTransformer_Private.h in Headers */, - A141899125367EFBDFABC1D40258574C /* GDTTransport.h in Headers */, - 98A2DBABC7465D5F548708424FEC0D92 /* GDTTransport_Private.h in Headers */, - BE37FB1F5349BFBD966F5B1CBB9B24B0 /* GDTUploadCoordinator.h in Headers */, - 20B48F4438783B90D6ADAB673582DD9F /* GDTUploader.h in Headers */, - 462B7BAAAE0B254BE9E648E5CFA0C6A8 /* GDTUploadPackage.h in Headers */, - 7D068CD903B1F0FB3C9BEFCC029D9EC2 /* GDTUploadPackage_Private.h in Headers */, - 62266D8BCAC4E742B934F054A012CEDC /* GoogleDataTransport.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; C5AF7A23C7C83D5182F4B1BD11B0D548 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13790,6 +14237,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + CBF84CDE22A1ED74F4BF34E7F117CCDB /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; CD897D09918237F229C7C7101EA0EF0A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13818,6 +14272,41 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D46F099DB2A76127A7878B7098755169 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 744D36A39C5C7188078F180F8A379A4E /* GDTCORAssert.h in Headers */, + 9736BDADECA441A7D829AB881E1B8B15 /* GDTCORClock.h in Headers */, + BF91C4FB47A214A702EF83BCCEA1FCEA /* GDTCORConsoleLogger.h in Headers */, + 43179FC00D84AEC590B6246AB2749BAA /* GDTCORDataFuture.h in Headers */, + 2538800F60EA068402CA799DB74EC4BE /* GDTCOREvent.h in Headers */, + 49E32996D57F0BE4B4C214A788834B8A /* GDTCOREvent_Private.h in Headers */, + 38A8686E3AE8C9948AC8E16A0FF259FD /* GDTCOREventDataObject.h in Headers */, + C5114FB6C46BCF309214DF7E7D17C471 /* GDTCOREventTransformer.h in Headers */, + E32C9EE312F7082CA358C8DA02112A8E /* GDTCORLifecycle.h in Headers */, + F0DDCA31D954C30755FAAFC075C96D5C /* GDTCORPlatform.h in Headers */, + AFA5B2D16D48229861E4E5620792A094 /* GDTCORPrioritizer.h in Headers */, + BDCAFF93C7C58C8AD26A612B7F4D8512 /* GDTCORReachability.h in Headers */, + A5F411136D291A38CCB996E7E68DE213 /* GDTCORReachability_Private.h in Headers */, + E448F434853BB876889DEDECD8355860 /* GDTCORRegistrar.h in Headers */, + 2076F59F6E240771A5E9CFFD8205AAC3 /* GDTCORRegistrar_Private.h in Headers */, + 8793DB9D4BC902335BFA665F3784AD8D /* GDTCORStorage.h in Headers */, + 33FE4DEEBCA383ED7755A9CBC51B108D /* GDTCORStorage_Private.h in Headers */, + D917491E5DD9992DFF39CCF944C2D549 /* GDTCORStoredEvent.h in Headers */, + 23179720D87885A6C7BCFE8789B76AFF /* GDTCORTargets.h in Headers */, + 1A491A5EF79205088E6544696C92D02F /* GDTCORTransformer.h in Headers */, + 86F28EFD2EDCDEEA0133995833BC4BA4 /* GDTCORTransformer_Private.h in Headers */, + 0D9556D98C79F485EE8896FC3AC92523 /* GDTCORTransport.h in Headers */, + 61599CF45B061C7D8E678400226A7229 /* GDTCORTransport_Private.h in Headers */, + 58126EAA5B53B971BB4636C7A244A749 /* GDTCORUploadCoordinator.h in Headers */, + CA1E3C6D7EF76F233CB84BE0B847FE55 /* GDTCORUploader.h in Headers */, + 03FC1A870235ECB216F4737C694F3747 /* GDTCORUploadPackage.h in Headers */, + C5D9146DE660B22941C6086F34A47E37 /* GDTCORUploadPackage_Private.h in Headers */, + AC54FD31827C5BDB2AD22BD2F275CB07 /* GoogleDataTransport.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; D621BCE70E9558876AB21A00E85EE9D1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13850,6 +14339,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DA302908473CAC4FE4CEE81792EC77DE /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 29BC45BF5AE5015D46B969B85561BEA0 /* firebasecore.nanopb.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; DDC1EBE787A1929D6C21DCB1FCB6B18B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13866,13 +14363,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - DE461437D0A6DA3FFC7D0AD90EC0DA48 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; E0B483014E365A90533B81954BB9440E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13908,6 +14398,35 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F4EEB0E9AFA4A5C703019F5FB82503B6 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 287E7C771C9169D90BC1BFCA9CED0679 /* FirebaseInstallations.h in Headers */, + 565EF60B5D30D937C88DB733534A746E /* FIRInstallations.h in Headers */, + 88FAD4E57380E26AC7F03BEAD2EAEF88 /* FIRInstallationsAPIService.h in Headers */, + 3834792EC9BABDBC3BEC609A77EC0B45 /* FIRInstallationsAuthTokenResult.h in Headers */, + 5170CD2D819D39CE643B288F7DA6212A /* FIRInstallationsAuthTokenResultInternal.h in Headers */, + 76D25ED0F70513D59EB42DEDD4030C8C /* FIRInstallationsErrors.h in Headers */, + 5EB1A9BA116DDF6AA30A626D000FF5AF /* FIRInstallationsErrorUtil.h in Headers */, + E8E1EDE9F3E6489979B88DD4A1772C5A /* FIRInstallationsHTTPError.h in Headers */, + 6EC99E9A82F0476FB8A0B4E82330874B /* FIRInstallationsIDController.h in Headers */, + 072340F95F41D91DADDE392ACB4F7665 /* FIRInstallationsIIDStore.h in Headers */, + 13DB00DEA52829F591682707236F7779 /* FIRInstallationsIIDTokenStore.h in Headers */, + DE124FC4A0EC768A4686D70F6B4BFA58 /* FIRInstallationsItem+RegisterInstallationAPI.h in Headers */, + 1451A870A667B770CA7921A66DF1382B /* FIRInstallationsItem.h in Headers */, + 8950571C071AFC5410328C4CA3D19B5E /* FIRInstallationsKeychainUtils.h in Headers */, + 8ECC32BE1D834E064B790DAB6A677280 /* FIRInstallationsLogger.h in Headers */, + 890F9DF78C90743B0CE5E2CC7E7AC4E6 /* FIRInstallationsSingleOperationPromiseCache.h in Headers */, + 143514A20BA542FDEC6E1C150B00248B /* FIRInstallationsStatus.h in Headers */, + D6B1A1D99FDE6C30C456AA3E8AEB99CD /* FIRInstallationsStore.h in Headers */, + 7F9C8E377A693E9134461700B17A972C /* FIRInstallationsStoredAuthToken.h in Headers */, + 6C447F4317536C8BEDDCAE38158898E6 /* FIRInstallationsStoredItem.h in Headers */, + EDA6631D3EB50C35BD2E88DEAEECA297 /* FIRInstallationsVersion.h in Headers */, + 52ADAD247D836F3627A7E5CE7744A659 /* FIRSecureStorage.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; F8CCF5A3EDB5E671286C7967F5CE7E18 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -13922,6 +14441,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FE332ABD235C393C819033D584CB4DEB /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; FF03ED8CD43F9BD58ED397C0CAC7D251 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -14188,12 +14714,29 @@ productReference = A225ED83E33DC48D25B9FF35BA50CCD0 /* libEXAppLoaderProvider.a */; productType = "com.apple.product-type.library.static"; }; + 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0E4F7B1730B05D50B69FFBC85C4FB400 /* Build configuration list for PBXNativeTarget "PromisesObjC" */; + buildPhases = ( + 3BEDF5DAC76F061A75464E15C8ABEB6B /* Headers */, + F22AC212D74C0C613D916C0740667F56 /* Sources */, + F9F980DC834907E78328428C80BB719A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PromisesObjC; + productName = PromisesObjC; + productReference = 3347A1AB6546F0A3977529B8F199DC41 /* libPromisesObjC.a */; + productType = "com.apple.product-type.library.static"; + }; 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */ = { isa = PBXNativeTarget; buildConfigurationList = 1766630704755B3F6C8222993813BFF1 /* Build configuration list for PBXNativeTarget "SDWebImage" */; buildPhases = ( - C00617F7394C0E4EE4A69081E2593889 /* Headers */, - 294392F42D573EE92BE5DDE7A754CC42 /* Sources */, + 8D3BF187A73A80A7321413B200F8CD58 /* Headers */, + 56047C8CD377318495320E71CD5FC92D /* Sources */, D43449D69F2BB5ACD6EB1304EC371893 /* Frameworks */, ); buildRules = ( @@ -14263,8 +14806,8 @@ isa = PBXNativeTarget; buildConfigurationList = 272C318C3C138518DD0B0FB5BF575E70 /* Build configuration list for PBXNativeTarget "FirebaseCore" */; buildPhases = ( - 26ECF0A641AED3FB908106E975F2CA61 /* Headers */, - 817E6ACF393BF211B409A5432580AC49 /* Sources */, + 1885C5BF353A272A0826345099A7D423 /* Headers */, + 617ED745D7DD62A61416E7AA46D89C62 /* Sources */, D752D103DB89DC1C93E3166EA88C9AA5 /* Frameworks */, ); buildRules = ( @@ -14395,8 +14938,8 @@ isa = PBXNativeTarget; buildConfigurationList = 9F67C8A591648E9045E567B047A2D019 /* Build configuration list for PBXNativeTarget "GoogleDataTransport" */; buildPhases = ( - C27E40F70D8660156BC5E78B2725C358 /* Headers */, - 6B3DAF79D55C0FAEADD580D09F775BDC /* Sources */, + D46F099DB2A76127A7878B7098755169 /* Headers */, + E9A276BADD2118C0B6380EC21E836C92 /* Sources */, CE89E15E4B943EE060FA7E75EC9E2FF2 /* Frameworks */, ); buildRules = ( @@ -14412,8 +14955,8 @@ isa = PBXNativeTarget; buildConfigurationList = 07E03FFE7B3B819865AF65F71F693B5E /* Build configuration list for PBXNativeTarget "FirebaseCoreDiagnostics" */; buildPhases = ( - 61ABBC3AEC8BB36AE1F8B7F1CA2A5479 /* Headers */, - 49A4AE781E724873DC0A94081E03AAB4 /* Sources */, + DA302908473CAC4FE4CEE81792EC77DE /* Headers */, + A710D8DD87257035884AE2D60E622379 /* Sources */, D3D18C5FE4AC8B8A2F86F2B75D610078 /* Frameworks */, ); buildRules = ( @@ -14422,6 +14965,7 @@ 82DE4A10C611155EAA73BA712DF1D258 /* PBXTargetDependency */, A5351590EF2D946171B0ECC1142DED94 /* PBXTargetDependency */, E3D1654B918455824279631C48CD8D36 /* PBXTargetDependency */, + FD7FFC18DDE8D049C817E5F819EF924E /* PBXTargetDependency */, ); name = FirebaseCoreDiagnostics; productName = FirebaseCoreDiagnostics; @@ -14669,6 +15213,26 @@ productReference = ED1E3FC0DC90F4A787472917BFB6B235 /* libEXFileSystem.a */; productType = "com.apple.product-type.library.static"; }; + 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2104416FC7DF9DFB898FFF821F2D5A30 /* Build configuration list for PBXNativeTarget "FirebaseInstallations" */; + buildPhases = ( + F4EEB0E9AFA4A5C703019F5FB82503B6 /* Headers */, + 77986988FD89C6EB78937224906AF7AF /* Sources */, + FC525E87A35EFFE777E6455E72FECB05 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 524F27D0B33EF1FDFD74DCB96846B7A9 /* PBXTargetDependency */, + D2E623008359A110154980E885DEA890 /* PBXTargetDependency */, + 6AC6BE62F45C5A349953D87D6DB3C545 /* PBXTargetDependency */, + ); + name = FirebaseInstallations; + productName = FirebaseInstallations; + productReference = 13C8C8B254851998F9289F71229B28A2 /* libFirebaseInstallations.a */; + productType = "com.apple.product-type.library.static"; + }; 897EF6A99176326E24F51E2F2103828C /* UMReactNativeAdapter */ = { isa = PBXNativeTarget; buildConfigurationList = D1F6C76ED5163E7759B6950D3E493582 /* Build configuration list for PBXNativeTarget "UMReactNativeAdapter" */; @@ -14711,8 +15275,8 @@ isa = PBXNativeTarget; buildConfigurationList = BC00811E082341577790995EE25EA091 /* Build configuration list for PBXNativeTarget "GoogleUtilities" */; buildPhases = ( - 668F199ECEB924B69D2C423CDB53960B /* Headers */, - E7459CBED27D20DF48778E4ABEA9FDF7 /* Sources */, + 8B27489DDB7964E88E85C184A95FBB42 /* Headers */, + 73BFC6DD15C05FDAE2D887C0A52C1E50 /* Sources */, C311AF1F2D1C91355EA404CA8B49D93F /* Frameworks */, ); buildRules = ( @@ -14800,90 +15364,92 @@ }; 9C801345ED2C78BD1674053E7BE5D6ED /* Pods-ShareRocketChatRN */ = { isa = PBXNativeTarget; - buildConfigurationList = 84D844B5B1A5A159FA1354847AF1C5F2 /* Build configuration list for PBXNativeTarget "Pods-ShareRocketChatRN" */; + buildConfigurationList = B12B60C654B48E714ED50F40AA8255AC /* Build configuration list for PBXNativeTarget "Pods-ShareRocketChatRN" */; buildPhases = ( - DE461437D0A6DA3FFC7D0AD90EC0DA48 /* Headers */, - 65A1B35CEAC137CBF0FCE206330606FB /* Sources */, - 4ED403BDD27312674468E8ADFA6651E3 /* Frameworks */, + CBF84CDE22A1ED74F4BF34E7F117CCDB /* Headers */, + 0F084BC786DC4E32129F3DC780CE55E9 /* Sources */, + 0D62B59AA78AC18F1F6FA511C5D196A8 /* Frameworks */, ); buildRules = ( ); dependencies = ( - 8D897ADFD6021B4EA62E54C64B55BFEA /* PBXTargetDependency */, - 553925F91AEB7A8E2E61A76C5AF9D7CE /* PBXTargetDependency */, - C645BBB39D2B11D5DEFEB49848E58387 /* PBXTargetDependency */, - EACC3444C67E4E4BAE806BD1CA1FEA92 /* PBXTargetDependency */, - E2244065FA1223A7CF3E4ACB4204C8C7 /* PBXTargetDependency */, - EA1DF9AF1605D69A9E493475043FCE93 /* PBXTargetDependency */, - 011CE2450AE11B9FFFD84C8C280B809E /* PBXTargetDependency */, - 602A3B014BDD6E297A8B17F44B7DC030 /* PBXTargetDependency */, - 0692B9311498395175014308A4B17348 /* PBXTargetDependency */, - AC20D02C6F925EDC7FEBD903FF720C5F /* PBXTargetDependency */, - BE4FEED59E491904CE4BD004E767F806 /* PBXTargetDependency */, - 3C9ED716278DEDD9C23186BBFBD5EA8C /* PBXTargetDependency */, - 20703024E39087D7C031C804D6BCEFF8 /* PBXTargetDependency */, - CAE7C2C3BC7D4E545021A3F3C7C16973 /* PBXTargetDependency */, - 2D260EA03E351DC1F2717A13C55D8771 /* PBXTargetDependency */, - 8782AAA74C904CCE255C72ECF206E1C6 /* PBXTargetDependency */, - 9896A1AF3453162EB7EB29D194F06233 /* PBXTargetDependency */, - 83FA8E780BF466A0524C15E80F4CF6A0 /* PBXTargetDependency */, - 6416253C00B453FBF72529B4E21F1032 /* PBXTargetDependency */, - AA7AD60D5235888EC341334EDCCDAFB6 /* PBXTargetDependency */, - 8A443DC599AB6CFC8ABA5EE01E0B814B /* PBXTargetDependency */, - 4963BC6B413E9824F3A1069AFE2F132C /* PBXTargetDependency */, - 36085484496E1F1EA08F1E85B71F7C28 /* PBXTargetDependency */, - 17947E88C0E0CB0A18CCC8C3508896E7 /* PBXTargetDependency */, - 0BD13821A9C8FC60639800F9E042B301 /* PBXTargetDependency */, - 6F7CF6F5CED7CDF369F09FEF90C8DAEA /* PBXTargetDependency */, - 66FAA0B04C9E851DBA408F4A549DBCEF /* PBXTargetDependency */, - A51F65EAD36CCE675809E93B7786A519 /* PBXTargetDependency */, - 21F9E245DFAA830695ECA1BA3B2FB3C0 /* PBXTargetDependency */, - 150BB3ABB2223BE26DE7CCB3EA3D7C74 /* PBXTargetDependency */, - 79F60B75C63F6AC459C733796895B621 /* PBXTargetDependency */, - 1237AE89B63F015C7E26B2D86BFE5F9C /* PBXTargetDependency */, - BC10BCFBCDEFBE0E272B0E180A715023 /* PBXTargetDependency */, - 26EFF042DA0CD9D33047967AC564DEEC /* PBXTargetDependency */, - 9ACF6F7D4D3B013B7EA561F9B7155781 /* PBXTargetDependency */, - 0FCC59413B178473BC55420AF3C49A6F /* PBXTargetDependency */, - 804F52E3C5D01279D23793D6D35F33F2 /* PBXTargetDependency */, - 3BFB73B008A37B64330C3E1CA3BCAB50 /* PBXTargetDependency */, - 3855E27B68ED054E97CACD53FE5CC3B3 /* PBXTargetDependency */, - D5CE386CDF9F1F4220B5089B9420D09E /* PBXTargetDependency */, - 9C18702469077C8DACF8DACD32DDF840 /* PBXTargetDependency */, - 5EB6726044F264774D1E46B53F1A2794 /* PBXTargetDependency */, - 55722A81772D06EF32AFA39E8EB2954B /* PBXTargetDependency */, - 6CA9EA87831BC93427DE6C3AA76C0656 /* PBXTargetDependency */, - 935C417CF2404560123EBE35FA4351D3 /* PBXTargetDependency */, - 031BB745803DFB5F7C92D86B728AD847 /* PBXTargetDependency */, - 25862982C5B8C76A0F37C78A32BE8454 /* PBXTargetDependency */, - C73BD81AD5B197191C1F845DB073580D /* PBXTargetDependency */, - 2CA3FE825C7E41078DC517ACCFEEE07F /* PBXTargetDependency */, - 022CFBAE58924B459078A66C0369BECE /* PBXTargetDependency */, - D9B4CAB98F8EC12018F5950A6F20CEE0 /* PBXTargetDependency */, - 9D750ECD9911045D4B3D69AC27F10EFD /* PBXTargetDependency */, - C8C1050CAA3EA6EDCC1BA1D33EFE0B5B /* PBXTargetDependency */, - F86CF3781044024C68C1E550DB327E62 /* PBXTargetDependency */, - 7112A6A9028559EB53609FF2A2C18B7E /* PBXTargetDependency */, - A635399A6AC3E63872EB7A87250DA5D8 /* PBXTargetDependency */, - C29E526B96D9A7BD2F1CABC3556D50A2 /* PBXTargetDependency */, - AA515B3BAA960F561BDDA3E5ECD2862F /* PBXTargetDependency */, - 3BE413762EE83511BEA7FB6A3EBFB944 /* PBXTargetDependency */, - 5C8416A73FC4A6B9DABDA16AC7707F96 /* PBXTargetDependency */, - 17F926AC4EFFC702D9501F3B2F031264 /* PBXTargetDependency */, - 9FA0E718A1779574E41F3D1878FA1C27 /* PBXTargetDependency */, - B8C102D9B6AA6F75BCF2289632AC4389 /* PBXTargetDependency */, - DBAD676559C0DC50198628B865CC67EC /* PBXTargetDependency */, - BC06CFE8C40141A78385BC07EDFDD31D /* PBXTargetDependency */, - 4C94FE8C8754C0A24982810B09EA4912 /* PBXTargetDependency */, - 8F7B66F2FFA247D753A8C50116021AB0 /* PBXTargetDependency */, - 3437608C9291EB7895ADE0A3421D016C /* PBXTargetDependency */, - B620B167723C90B31E5D417C9626B33F /* PBXTargetDependency */, - 0C5012192C2A78D2E5C0343B586236A4 /* PBXTargetDependency */, - 5BD0CD31D415E100348CC082A961047D /* PBXTargetDependency */, - 193D36068CC93F653E48B08DB805299F /* PBXTargetDependency */, - FA90323DAAFA4AACED76974DE4121292 /* PBXTargetDependency */, - B7C8781DC81153F741B88DC751E33D70 /* PBXTargetDependency */, - 3B9BE266D61514BB37C80426B55B6B24 /* PBXTargetDependency */, + 9296ACB615A242C598BD5B8651C60E56 /* PBXTargetDependency */, + 5924D847641E3D79FD6103D481F9E03B /* PBXTargetDependency */, + A23070E2AC8D432C5107A1256E0275F4 /* PBXTargetDependency */, + EFD075E2561A9315EB30A1E324BFDC10 /* PBXTargetDependency */, + FBE7D09D723DD7D835AA6D7E9A2F11DA /* PBXTargetDependency */, + 6BFCF0F68DFACC9F38F562CBA1DE7F1B /* PBXTargetDependency */, + F5F021B3F52BBD277BD05ECE566E042C /* PBXTargetDependency */, + 8641D87D24B973C225A85E11DDB59FAB /* PBXTargetDependency */, + 1847296CDFA157445A7BFAD6A48346A0 /* PBXTargetDependency */, + 48837EC9D5F49AD53AA5143B4F3F02A3 /* PBXTargetDependency */, + 6E3094A3142A3C6F5498971075430716 /* PBXTargetDependency */, + EE5C681F19C2BD960C9FE0FB6B28DC90 /* PBXTargetDependency */, + 45DC7BE3A7DCBE4CCA2D7E955A28F755 /* PBXTargetDependency */, + DFE54EFB8E8ADDF029A3564B9073A3BC /* PBXTargetDependency */, + C8B5D585C828BE4AB1C1BFFB31AD7B21 /* PBXTargetDependency */, + BC14137DC7B24901959AF5A38B67F823 /* PBXTargetDependency */, + 365771C693DCBDCD5369BEC06B810DEF /* PBXTargetDependency */, + 5442F8F2BDBC8AC54D88CF67B0A6EF72 /* PBXTargetDependency */, + 09126DFF7FCFB86790EF6CE9945D5F26 /* PBXTargetDependency */, + 292B1B72A9EB54CF781D20ED86E1775D /* PBXTargetDependency */, + ABFEEAB51B34B9279043783E67531D27 /* PBXTargetDependency */, + 277155B2CEB0727BCE69659F0CBAA651 /* PBXTargetDependency */, + DA9F12C62FFA20659AFC6C54AF4E9F7D /* PBXTargetDependency */, + CD2914DB228D70418A1EC14EE9D193A8 /* PBXTargetDependency */, + 7B5B1CAA45FD7BF119DC4F3D415B654B /* PBXTargetDependency */, + A9ED98A5552DD136966D3057C908CB45 /* PBXTargetDependency */, + 41DEE25658C05A5628083882254FA586 /* PBXTargetDependency */, + 96223EBAFF1A97E77F70B672C1DD807F /* PBXTargetDependency */, + B95A7CF2597F141CCFEA682BB5379A65 /* PBXTargetDependency */, + 72A85A37787F6E23105BF02E813A4602 /* PBXTargetDependency */, + BC252F1BA48F3C06EEDA912ED47F7ABE /* PBXTargetDependency */, + 684D5D501940DC984F5CB0F6A8D9FE7F /* PBXTargetDependency */, + DA93591AA43259D16E6136A821EC1D26 /* PBXTargetDependency */, + C256CB6781A3CFDD1B57532D602B8E50 /* PBXTargetDependency */, + AA221BE904C0C01C40321032D459D905 /* PBXTargetDependency */, + 7B02650CB9C93F58B9C3465A2CD904E6 /* PBXTargetDependency */, + 4A2A06BAACA010C027AC499C459031AD /* PBXTargetDependency */, + D49D843655AD1EC0C07874F136577A0E /* PBXTargetDependency */, + 87CF0EBD1522704B60F2E5362406733B /* PBXTargetDependency */, + 028A2F4ABD87F1E04A574DD52A514166 /* PBXTargetDependency */, + C659FC088434EE64D230439BA13947C7 /* PBXTargetDependency */, + 16287F1A04D1FD826286E74E1DFCAA4F /* PBXTargetDependency */, + 8225282040A0A860898C20E90CF47878 /* PBXTargetDependency */, + 93758C4B0D549F9D1531B7A242E150A6 /* PBXTargetDependency */, + 9B848D16E111D4984B7C6DBC23CC1609 /* PBXTargetDependency */, + 777C61721A7AF46C5FA6FD015A73949C /* PBXTargetDependency */, + EBF53D7C37C35CC2489D0C6A47D3E9AA /* PBXTargetDependency */, + D9C70B462572E65C4929094AC7476233 /* PBXTargetDependency */, + BDE22947B2463B68D2CA8E87F08E1B8F /* PBXTargetDependency */, + 67A599BAE4124D75F84EDFB374C07387 /* PBXTargetDependency */, + A00A0F656DEE6460F7E22B50FBBB5ADE /* PBXTargetDependency */, + 97C3DCF6215BD4F79AD7B1DF3F1CA1F3 /* PBXTargetDependency */, + AD340DED1B8692F53508AB1F18B76C5E /* PBXTargetDependency */, + B761561CFFC648F4B058F9B496469FD7 /* PBXTargetDependency */, + 31D7553C59D34192E1999597259D474E /* PBXTargetDependency */, + D368BF377DB802C5F5B6F07958738103 /* PBXTargetDependency */, + BD8F590BE104F22AF290628E172A35C7 /* PBXTargetDependency */, + E528B28EAE6AC6A2D51788DB2F13BAE0 /* PBXTargetDependency */, + 87B668CA7AFE25BBDCD382B4B1747560 /* PBXTargetDependency */, + CC1E39817A216780CA9BEFAD07BD06A7 /* PBXTargetDependency */, + 941C1B18F4AAB8DF66B054A5E0B46C45 /* PBXTargetDependency */, + F8508129A7E0A701D29FCE7C600AF256 /* PBXTargetDependency */, + E2E64A87B139897B2E726C43839063B7 /* PBXTargetDependency */, + C673AB2CE2B75DC9E95EDA7E2ADDE62D /* PBXTargetDependency */, + 24490FC5D8FD6C825E67E30EBE7E91BD /* PBXTargetDependency */, + F1BA23F2FB7643FFBDD1DAD459ABB176 /* PBXTargetDependency */, + 95B3AC8755412D4F14AE552C0D021574 /* PBXTargetDependency */, + 3574436076660220B89F7A70BC6E18FE /* PBXTargetDependency */, + C8FE0EEE04628A4A12FD7557EC6E5E48 /* PBXTargetDependency */, + 46A0CF0B3EC9C0345F709D702C0D88C4 /* PBXTargetDependency */, + 405971DE6EC14F620353F9ED880AAC0B /* PBXTargetDependency */, + 63AAD1D3E0C939FC658C240C51CD89E9 /* PBXTargetDependency */, + 0195F5DEB7685B9F2265A12A925425D7 /* PBXTargetDependency */, + 80E39326DAF03630566E6F04B988F5C4 /* PBXTargetDependency */, + 78C3E049647A441330DCCD8089408D2B /* PBXTargetDependency */, + 326D5AF86E1BC28ED8B7F95FB174FBD3 /* PBXTargetDependency */, + 712C238E87A4A55B2C12C9C6B9788C48 /* PBXTargetDependency */, ); name = "Pods-ShareRocketChatRN"; productName = "Pods-ShareRocketChatRN"; @@ -14894,14 +15460,15 @@ isa = PBXNativeTarget; buildConfigurationList = 17528847ED7361712D5774B3F57F412E /* Build configuration list for PBXNativeTarget "FirebaseInstanceID" */; buildPhases = ( - 1C74D6215F0C3A85E599235A13CD942E /* Headers */, - 32E3C4BE240CEE50ECC6BC6C369F9277 /* Sources */, + 3050A17B887B11E8E378C04CCD56FEB3 /* Headers */, + 55C2456947D16EBC2D48E6E0563B5965 /* Sources */, 5AC84FEC285AA5EE698D679D4CEE733F /* Frameworks */, ); buildRules = ( ); dependencies = ( 11BB47F7EA1D94100004061A682344B8 /* PBXTargetDependency */, + 074095F4C94CFC39246BD8494260C574 /* PBXTargetDependency */, B89D2CB67178C93A2DFF80F628C7A710 /* PBXTargetDependency */, ); name = FirebaseInstanceID; @@ -15023,109 +15590,111 @@ }; B37ECF22F1589E28F59BC9990B4DC476 /* Pods-RocketChatRN */ = { isa = PBXNativeTarget; - buildConfigurationList = 1DB56DF9C9DCECB3F400803AE7F2B433 /* Build configuration list for PBXNativeTarget "Pods-RocketChatRN" */; + buildConfigurationList = 8E7B27DE6778F7A0D4BFD8350A08FF9A /* Build configuration list for PBXNativeTarget "Pods-RocketChatRN" */; buildPhases = ( - B54B2EA07A950483567A4EE48C6A61CA /* Headers */, - E355D16EE6D3419FAE0DCFC516787AE1 /* Sources */, - EE3FEEB374134A0B7F94417E8B62176D /* Frameworks */, + FE332ABD235C393C819033D584CB4DEB /* Headers */, + 6C0F2E09128DE314D5960E47AB9029C6 /* Sources */, + 9252EA6E5701E34F8A22D830F6A5FDD4 /* Frameworks */, ); buildRules = ( ); dependencies = ( - 6F3376FE38F78EF35862053882A41586 /* PBXTargetDependency */, - 769025D7B3F14F33EEE05E0A156A96F4 /* PBXTargetDependency */, - C48CABCA14D12DE4A49546003197DA32 /* PBXTargetDependency */, - D89FAEABE18B6ABE756BDDD1BD185B5F /* PBXTargetDependency */, - F1CA1792136DD775A53CEF6F23916B03 /* PBXTargetDependency */, - AEDCEBA0C5F2C140BA119D90CB606F90 /* PBXTargetDependency */, - D47114DA10295B597ED4E6738B4A0C20 /* PBXTargetDependency */, - F42665ED8C85B74A93D863E06C36BF6E /* PBXTargetDependency */, - 931244338C030B9998E9C1E705961787 /* PBXTargetDependency */, - BC7731ECD2164E4A12D67DF7DC7D4C1D /* PBXTargetDependency */, - 923E1C81DE5990D401E7CAE78D7742E0 /* PBXTargetDependency */, - 42B00CA477FD1334EA95BA7C155641BA /* PBXTargetDependency */, - C6DF705C8E98ACE10EA9AFBAF6FC756C /* PBXTargetDependency */, - 6859D3F255AD22269FFF0E22E9236BAC /* PBXTargetDependency */, - 57548C50D5585146B371B90476FBC33B /* PBXTargetDependency */, - 6CC2B6F28019D16BF0C4466A1B124A97 /* PBXTargetDependency */, - FBF0F88B7864CB2A75B21D13E7FC04D9 /* PBXTargetDependency */, - 0B7760A825C50E046F98BDF3E1B415A0 /* PBXTargetDependency */, - E8E63875698973CAEDECA472AF8745D4 /* PBXTargetDependency */, - 92204B75DCBDF5FDB01B418E6F754B05 /* PBXTargetDependency */, - 0B8F803EE4667004EA6E67A4F1AFEC8D /* PBXTargetDependency */, - A4336332A667BB26D3D9EB3361B99158 /* PBXTargetDependency */, - E4AF80A841E3E79AEBFE20DFA132C6DB /* PBXTargetDependency */, - 944F08C02FCB51881D75976127A7303E /* PBXTargetDependency */, - EF466E2FD91422D5A18060901D88CA1B /* PBXTargetDependency */, - 673BC7E7C3BF7B75DB54F25C5582DA88 /* PBXTargetDependency */, - 39AECA7D5FDDBCAFD8346DC3BE44EA8A /* PBXTargetDependency */, - 8200679C831FBE1892B07E11AE2EA39C /* PBXTargetDependency */, - 33474FF920FAD58FA7B408C423A44FF6 /* PBXTargetDependency */, - 4B414D99A77D84E4640E1F400E100000 /* PBXTargetDependency */, - 5C4A8EC38916A46D8BF78D6B92C27C21 /* PBXTargetDependency */, - 0D792B55CDAA4B9CA054A0E122E34020 /* PBXTargetDependency */, - 2D3137A8BE2479EEB2342FA59C29DBAC /* PBXTargetDependency */, - E4B2D5B663AD6ACF1AB4497218D26158 /* PBXTargetDependency */, - 1AA7ECBFA331151021ACBF0788B62F66 /* PBXTargetDependency */, - D40A6F6B7DF10D9B852BC4314BF5A472 /* PBXTargetDependency */, - E01C4B9CBE7943187583AB2333D00A63 /* PBXTargetDependency */, - F33E52A0DF2608BBA4A19CF78D334846 /* PBXTargetDependency */, - 1A18C555A4C0E90CFCE1862DC8F94408 /* PBXTargetDependency */, - C432B23C7DEA9B18962DF98F9774CF19 /* PBXTargetDependency */, - BBE49A21A3F20BAB40B4368933595AF5 /* PBXTargetDependency */, - B318C1E18E3B03D1F1DE223C7D8A08BC /* PBXTargetDependency */, - 0A449D0BE5B185FF11C96E9F5CC19486 /* PBXTargetDependency */, - 60B99BFA0813458750AA90079166DEB0 /* PBXTargetDependency */, - A462C292FF6609D1C058D452EAC07538 /* PBXTargetDependency */, - 9E65126D8DDFC0EB1D8D7109E2C0BDE3 /* PBXTargetDependency */, - 37FB5C7B72D045CAE22C5EAC7812BBD9 /* PBXTargetDependency */, - 27FACA0BAC43B2675E0267008E9E627F /* PBXTargetDependency */, - 2F0476764400AD4554B2872A5796AF38 /* PBXTargetDependency */, - 6B02748F14AD08615F8C678A24075364 /* PBXTargetDependency */, - E1B86AB0D1A83A47152A0CE26C8CE3FD /* PBXTargetDependency */, - BFC9B784B74D53143B92D969468BD747 /* PBXTargetDependency */, - A00F7D1F2E5FA8A71F5FF808042F370B /* PBXTargetDependency */, - DC9A85F49B82B7F22A7803CFA91C8E15 /* PBXTargetDependency */, - A6E3425CD84B74A59211BDFB9CBC0763 /* PBXTargetDependency */, - 2F2588736D321292D53D28A37C664F70 /* PBXTargetDependency */, - A65BC11EA787F00F5D5EB861E325B976 /* PBXTargetDependency */, - E589A3C702755C230943931EDF601D32 /* PBXTargetDependency */, - 9BB29AF7239D3234E787597D1587A787 /* PBXTargetDependency */, - 882AF2998070216BFFC6AC351A6D93BA /* PBXTargetDependency */, - 2F6D71221C37CE705E0303BBAF072877 /* PBXTargetDependency */, - 92A3267C8C229EC3A9ECA570B3E25722 /* PBXTargetDependency */, - 440373922DE3ED51391E86704C3A38E1 /* PBXTargetDependency */, - 3F4A120C4B846D8E042C2BB83D3FA6B9 /* PBXTargetDependency */, - CBFEB75D6A2D0EB64C17DFCC5F511A88 /* PBXTargetDependency */, - 8A0A19CCCF567EC157D575B96BB29900 /* PBXTargetDependency */, - B63E315162188D1ADCDB3B5EE5949ABF /* PBXTargetDependency */, - 54A402E9AF412294F66474616291D028 /* PBXTargetDependency */, - 32C240DD6E2BA6E488CEC058017753B2 /* PBXTargetDependency */, - 0E4F01207E4AFE2CDFA8DED86C4C16F8 /* PBXTargetDependency */, - 44B70418341831A412F740541F6A534E /* PBXTargetDependency */, - 602A410A05BA0E628C8FDF85179F4FDF /* PBXTargetDependency */, - 636D75672D7EDB2A118132A5A9EA1C7E /* PBXTargetDependency */, - 9318AE6F3320E09BDE3141091FFF5A8D /* PBXTargetDependency */, - 49292584FA4714589EB951DDC95D69C3 /* PBXTargetDependency */, - 56C0FD2808D49993FDE48614FB3978A7 /* PBXTargetDependency */, - 964109AE196A6851276DB5C43F1E3DA6 /* PBXTargetDependency */, - 600648DBE3C7E0BF44794CDED2F25C5C /* PBXTargetDependency */, - 706023807B9D8AFA9F701E3D9B4D1416 /* PBXTargetDependency */, - 5D5157C9A2C581A8AD4940BBC4511807 /* PBXTargetDependency */, - 3B7B8A6ADDE30A50B5EC9020B52473DC /* PBXTargetDependency */, - 8366E560B08CA4D7D3FA57FBDA61B9EF /* PBXTargetDependency */, - 5CD0970A463CFF7339CC303F6B7A9441 /* PBXTargetDependency */, - 4C1CAF066A1C63D9AE10FE61A12BDAD9 /* PBXTargetDependency */, - 8914A57E010383BA1DDE7FA5DED0BDF7 /* PBXTargetDependency */, - EF30B4A3FC48ED30F7586BD600A8A42D /* PBXTargetDependency */, - 9BC9B9CE44DC1F8E4EDBA17DF8DDF142 /* PBXTargetDependency */, - 1D863773EFC8144808B59D9033579431 /* PBXTargetDependency */, - E245BA5C1A61D8665824EF1453D40061 /* PBXTargetDependency */, - 46C96F842145BC8DF79599F0473BE104 /* PBXTargetDependency */, - 7EF584C5A0F119F8B6D1148BECD6B312 /* PBXTargetDependency */, - 8916AF5D9DC74DCC24D01E0AC9F6B9D3 /* PBXTargetDependency */, - 132FE8B8E63BD64C3D7B7562048122ED /* PBXTargetDependency */, - 86EABBDBC7F0FE84DFA9434BDA78DE40 /* PBXTargetDependency */, + 307A50075953D2F46151ACFA52523C57 /* PBXTargetDependency */, + 6E593646896C853FC8EDB587443144BF /* PBXTargetDependency */, + B7A43697AC7E53B057276A65141B2F9A /* PBXTargetDependency */, + A5561E542F912735ABD334AC8B7E6399 /* PBXTargetDependency */, + 0AB62B7D646C4B35A27F2D72CFD5936E /* PBXTargetDependency */, + 3B24FE5670637D59DA4BD48EE9C562F0 /* PBXTargetDependency */, + 9738C7788A6337F27A9081DB26F08390 /* PBXTargetDependency */, + BF249EC3D81B78CD0B26BC0672296344 /* PBXTargetDependency */, + 987F9E3629657C5F7468486377B8EDC1 /* PBXTargetDependency */, + 6A247D303543EB094BAC2F0869DED5FE /* PBXTargetDependency */, + 381962452DA9C9FA23263A6612D8DEEE /* PBXTargetDependency */, + 7069BD3E43906D78A2C2A41CADAB0974 /* PBXTargetDependency */, + 701A80055A55103E7EFEC4F83300EA06 /* PBXTargetDependency */, + 567ADEE3136A6367024C6D34AEBB40E1 /* PBXTargetDependency */, + 8FA1F0E6CD5F9864FED98F6984A2F998 /* PBXTargetDependency */, + BE6F85911D83FCD7C5FA4866737164EA /* PBXTargetDependency */, + 64FB953B554F718A1E33CAECEA0BFC30 /* PBXTargetDependency */, + 569350DB3DA3F24CA986142520132E4D /* PBXTargetDependency */, + 7F44AD9A201C847D3FE1080BA518D04A /* PBXTargetDependency */, + 7E2FAD63D2F1952CA735617580C72668 /* PBXTargetDependency */, + 4DE0706D1EBCABE711CD8DE5A63972A5 /* PBXTargetDependency */, + B89D4DAFD59BF06BA375E5F6FE567A24 /* PBXTargetDependency */, + 37DCC867E5A902CD65697945035E655D /* PBXTargetDependency */, + 8E28654EFB3A21C5BD2EB260AA4E37E1 /* PBXTargetDependency */, + 97C86E60424DAE6AAB23B32BB1B0DAB8 /* PBXTargetDependency */, + EC33172D0E7643D6B0B40291C2348028 /* PBXTargetDependency */, + 9F3DC5974EEDD082F1DB0F5C86480474 /* PBXTargetDependency */, + 8DF9368FA5258A12D212264468F877D4 /* PBXTargetDependency */, + 0281B478010660EB1238EA60387444B8 /* PBXTargetDependency */, + 64DA79C0FB317AFAA76377BD3C76FBC2 /* PBXTargetDependency */, + 8222B5B05CA21806207A408DB3B90E0E /* PBXTargetDependency */, + 1F47CFD4936A28D8A96F78C7C73A431C /* PBXTargetDependency */, + FA2D896CF1A12FD2D935A9384087F7C7 /* PBXTargetDependency */, + F793EFA765710397FBD50E3181087A1D /* PBXTargetDependency */, + ACB0A8E627ABEDBCFE9343DA37AC7EDE /* PBXTargetDependency */, + 9B24E66AB31CF0ECA23046DB437E84CF /* PBXTargetDependency */, + 2653E819256A088D3F86CFD73F82F8AE /* PBXTargetDependency */, + 1B6F8E0BEE9EEA2FF2A869FED4082CF1 /* PBXTargetDependency */, + EA7D3308E5F60A0E21E9C0026F22D59A /* PBXTargetDependency */, + 96D8CB2606D1A94329513147741A5F5C /* PBXTargetDependency */, + 6E32138F3CB5B8FEAE595EA4F7BF0157 /* PBXTargetDependency */, + B2F7B5CCD13BB1799BD1CC1865AD4C00 /* PBXTargetDependency */, + B22A5D6293013D0AA4DEBDD09114C43A /* PBXTargetDependency */, + F7254DE652DCB7A6D7DC7A465FFDB90F /* PBXTargetDependency */, + 6BB29B611B6F416DD736FBC7E2F47D8D /* PBXTargetDependency */, + 0FB2A44DDA73B3A89E67E44F95EB7357 /* PBXTargetDependency */, + FBCE73E2D485848AF80D260525152309 /* PBXTargetDependency */, + FE5D2230E315DD209B736747DEA0781A /* PBXTargetDependency */, + 38BC3019059805F862999E3558B4DDFE /* PBXTargetDependency */, + CFCFE51EAAF2A98BDF482A25F684F45A /* PBXTargetDependency */, + 5DF1983A7BE4A9D95DD88E3286F62503 /* PBXTargetDependency */, + BB162D26E686DBC02CEDFDDFB8F5792A /* PBXTargetDependency */, + 5669FFC77ABAAF0D35E37E3ADEEA8229 /* PBXTargetDependency */, + E11233F0824232FEF8A756BBEFB3D748 /* PBXTargetDependency */, + 0C75722A2583DC436714A8A9AF11DBE8 /* PBXTargetDependency */, + 4FB8CFF5E3C2CC6AA73D308797232A07 /* PBXTargetDependency */, + 2FA001B25090939C76E416AE3BCA3CBD /* PBXTargetDependency */, + 7F98DCB6662CAF61274744FB990B1EE0 /* PBXTargetDependency */, + 4E56341E28C82F15F0B1EC1D7355E1E5 /* PBXTargetDependency */, + 5C65F78E7A8780899CB2766715593159 /* PBXTargetDependency */, + A8E2DF82DA60524038504626ECC68FEB /* PBXTargetDependency */, + 6DE67BBCC2004F44063308C0ECC26D11 /* PBXTargetDependency */, + 6B2725F2B8B17E159ABD2335975869FA /* PBXTargetDependency */, + BD0F6B17B3F55C28B9A3EFAFBF527E96 /* PBXTargetDependency */, + 1F85E95EB5AA24111CDA796EAFE2878D /* PBXTargetDependency */, + 18A6ADD342315593BD09FB10956655E8 /* PBXTargetDependency */, + A077C6FADB6BC08EDEE56C06124B51E2 /* PBXTargetDependency */, + 1181066CF0A180936F2A68BD3DABEC0C /* PBXTargetDependency */, + 5419D32B223ADBF8400A62E9CD690E7D /* PBXTargetDependency */, + 1B9EA97198553DE418304A51DA647039 /* PBXTargetDependency */, + A702E3E5331CE57D26D47870748CA4E2 /* PBXTargetDependency */, + EBB0A712DD210BA9C35FA009E508D28C /* PBXTargetDependency */, + D5A9A561719B9316F72E1FC3D3D05058 /* PBXTargetDependency */, + 6B394379395FF8C1978CB850D952545A /* PBXTargetDependency */, + 04D9C42B89BD867FC5A29C2B79F15A97 /* PBXTargetDependency */, + BC051567AB6101BD07AE754A17D700CB /* PBXTargetDependency */, + 6D17125CA558076F3EB2730C92E8F849 /* PBXTargetDependency */, + 5084B0B3BE172437E7C9E15E3DFB30B8 /* PBXTargetDependency */, + E8DBAB5CFA57379E9EBF4A80ED68423E /* PBXTargetDependency */, + B4DD67B523E31A8CA6341D025852864A /* PBXTargetDependency */, + 14C392D94C7F9AC7AFA309412419190B /* PBXTargetDependency */, + 69FDA99B2C0F01023DB92BDB7AB2DB14 /* PBXTargetDependency */, + B49DA17150AB981E024F24CF7390ACF6 /* PBXTargetDependency */, + F4138CD7FAFDEFFFD515BD724DDC5D57 /* PBXTargetDependency */, + C4B3478A5D254B849DD5B7AA450A08C4 /* PBXTargetDependency */, + CB83889AB117CC3018E3F5A81202DBFF /* PBXTargetDependency */, + 98AFE7B07ED5851A8ED0BD7EF9B4C442 /* PBXTargetDependency */, + BEAE1AEA9E59D1C5B949E52D75B55B40 /* PBXTargetDependency */, + 690F2CF3E501110ADEA7F28179380845 /* PBXTargetDependency */, + 8D706717DE728815B0C9AC034B755724 /* PBXTargetDependency */, + BE142045203D42FB92F4371988275051 /* PBXTargetDependency */, + 24A9EDC6CE482D2EBD7D1955D0044F11 /* PBXTargetDependency */, + 3637B96E016E1D8C797D5900C95270DC /* PBXTargetDependency */, + 0EF59EA690B55FF7B6E91F30CE1AB234 /* PBXTargetDependency */, + 9A6F2476649D15842812C0BA4CE7F3B1 /* PBXTargetDependency */, + CA645BFA9D3A4B12C24D5D526B9BC485 /* PBXTargetDependency */, ); name = "Pods-RocketChatRN"; productName = "Pods-RocketChatRN"; @@ -15462,8 +16031,8 @@ isa = PBXNativeTarget; buildConfigurationList = A8782857F2D49A3C08A5D9C7603FBBCD /* Build configuration list for PBXNativeTarget "GoogleDataTransportCCTSupport" */; buildPhases = ( - 9E3E1A6808B34C54057A80EFE20FA21A /* Headers */, - 006AE34C95DFFBC9364CFE6F278BF4FB /* Sources */, + 7118FD45F5AD94B08A3FA91377500789 /* Headers */, + 15A1DBCF3D0668023D0B26767FB1BFB2 /* Sources */, A3044A76BB7DB25B126B27CEC50DC142 /* Frameworks */, ); buildRules = ( @@ -15551,7 +16120,7 @@ Base, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 2831255621399A1A95B6A58D28D3B520 /* Products */; + productRefGroup = A3766D147E465BA857B7CA0A26C0163D /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -15574,6 +16143,7 @@ 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */, 620E05868772C10B4920DC7E324F2C87 /* FirebaseCoreDiagnostics */, 5EB4B0B6DA6D5C0C3365733BEAA1C485 /* FirebaseCoreDiagnosticsInterop */, + 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */, 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */, A4F685BE3CAC127BDCE4E0DBBD88D191 /* Folly */, D0EFEFB685D97280256C559792236873 /* glog */, @@ -15587,6 +16157,7 @@ D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */, B37ECF22F1589E28F59BC9990B4DC476 /* Pods-RocketChatRN */, 9C801345ED2C78BD1674053E7BE5D6ED /* Pods-ShareRocketChatRN */, + 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */, E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */, D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */, 1BEE828C124E6416179B904A9F66D794 /* React */, @@ -15675,18 +16246,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 006AE34C95DFFBC9364CFE6F278BF4FB /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DAB5F47E749603B8C537105E02546533 /* cct.nanopb.c in Sources */, - D02279BA02BD4E067A2468A5B6213A6D /* GDTCCTNanopbHelpers.m in Sources */, - FEB08A0DFF9F7B151A3598DFABD3659A /* GDTCCTPrioritizer.m in Sources */, - 2E97E8985D7EEA0ACA621F03CBB618E0 /* GDTCCTUploader.m in Sources */, - 9096C4C0065EF00C6C31D3B59172092C /* GoogleDataTransportCCTSupport-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 05BA1DA2CCB88394C61A449450B4CA36 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -15711,6 +16270,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 0F084BC786DC4E32129F3DC780CE55E9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 82B3F4C318BA4FD63398DE44A20A7367 /* Pods-ShareRocketChatRN-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 0F4F8578468E69A8701D946920E5C85B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -15747,6 +16314,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 15A1DBCF3D0668023D0B26767FB1BFB2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 43A35C1D3B3938A25ADA1DAE6C41540A /* cct.nanopb.c in Sources */, + 83390A67A2F49D02357DF39160B3C87C /* GDTCCTCompressionHelper.m in Sources */, + 468D4662C2082CD37B39EE1999FC6DD1 /* GDTCCTNanopbHelpers.m in Sources */, + CDDC70305F86BE613774D29DC70EE791 /* GDTCCTPrioritizer.m in Sources */, + 3DA3978096D5C53CBFF6D5DCE1A25655 /* GDTCCTUploader.m in Sources */, + 1045178BFBC6E58CEDC65E19F91A7CB9 /* GDTFLLPrioritizer.m in Sources */, + E4DF0038F580620277B1D09CFAEA7194 /* GDTFLLUploader.m in Sources */, + CB97955D7E935F4B372A7198701979E0 /* GoogleDataTransportCCTSupport-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 15C48E34F30056EED5497381CE3B5289 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -15903,70 +16485,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 294392F42D573EE92BE5DDE7A754CC42 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 44964FA9DAF14AAE03807F2BC8800146 /* NSBezierPath+RoundedCorners.m in Sources */, - 1669AFC658678BE6CCD8B55B48F9C97E /* NSButton+WebCache.m in Sources */, - B719B6CE8FDBC80C42048ED1A4510024 /* NSData+ImageContentType.m in Sources */, - 6FAE08276981C05988B6748DB0CB8ED5 /* NSImage+Compatibility.m in Sources */, - 6A0AA1945B09A957D7980D6F9663E262 /* SDAnimatedImage.m in Sources */, - E18AF3DECBA29CA26E94E3AA78232910 /* SDAnimatedImageRep.m in Sources */, - CB58C69E5D7000D8AE64ECC794C216F2 /* SDAnimatedImageView+WebCache.m in Sources */, - 6580CADB1B58D051496B7FFEE2B1C22E /* SDAnimatedImageView.m in Sources */, - 98D876A1A244F466F67E906E6E55EF82 /* SDAsyncBlockOperation.m in Sources */, - A8D70235F433DF4ECC825AFE0E7D5DD7 /* SDDiskCache.m in Sources */, - E36F85C2049E33D0D5568D05E95D01C9 /* SDImageAPNGCoder.m in Sources */, - 06DB6A5EF09D9417BA180FC364973426 /* SDImageAssetManager.m in Sources */, - F7E5C972E05E7175549D6B5131A4AB11 /* SDImageCache.m in Sources */, - ADC8D3D65F0543D6DEB99FDE0CBAF90B /* SDImageCacheConfig.m in Sources */, - 261E1575F07D66992D6993C4AB9699F0 /* SDImageCacheDefine.m in Sources */, - EA04E96F998EF83B5CA813705CFFA952 /* SDImageCachesManager.m in Sources */, - 276EA1438A750B1EB0094AC03C85B9CA /* SDImageCachesManagerOperation.m in Sources */, - 370F54E7E5F99ECD931AF474471A530F /* SDImageCoder.m in Sources */, - 9178482012182F62E4C5BA3F50334C91 /* SDImageCoderHelper.m in Sources */, - 2AF1ED3F44A359AF4E731231E6CFAFE8 /* SDImageCodersManager.m in Sources */, - 1C5BDB058468D11E68A6B18163FAFD43 /* SDImageFrame.m in Sources */, - E23132F7114B73DAB797C1605129F8FE /* SDImageGIFCoder.m in Sources */, - E1C16957DAAF0BBC2BA568CBA21CB60D /* SDImageGraphics.m in Sources */, - 81B0ACA7DCE8C57A1D20F5F0671367A1 /* SDImageIOCoder.m in Sources */, - 73E18A09BABC8E09E5AD7EBEDE40D69A /* SDImageLoader.m in Sources */, - AEF4E05A1A05A4A91C9B5C88FF89DE11 /* SDImageLoadersManager.m in Sources */, - 496DEF54A340C16E4ED8ECCD3ECA0479 /* SDImageTransformer.m in Sources */, - 6B002A09EF5954BBC84674762FAA72AC /* SDInternalMacros.m in Sources */, - 5C10DFDA2ABBC6171DFA658A947A46EB /* SDMemoryCache.m in Sources */, - A820309FE601A2C8F95EEEAD890158B6 /* SDWeakProxy.m in Sources */, - F08217569EB41ACFAEBB6EA9A653124A /* SDWebImage-dummy.m in Sources */, - 6FAB807DF62D6E61E6FB5A290B898F22 /* SDWebImageCacheKeyFilter.m in Sources */, - 37BE852FE436F3F6397F550D19500530 /* SDWebImageCacheSerializer.m in Sources */, - 5A4575C76426903C742BF80B5DC5361E /* SDWebImageCompat.m in Sources */, - C22841039EF7FCB0A38C0A4BEF6E233A /* SDWebImageDefine.m in Sources */, - 081768B0FABD06884FD6F65643672F1A /* SDWebImageDownloader.m in Sources */, - 6BBA73E13C75ECE9DC1C78077C4C87FA /* SDWebImageDownloaderConfig.m in Sources */, - B72B9DBE5446E5510A628F76A191A0C7 /* SDWebImageDownloaderOperation.m in Sources */, - AAA2E740FAE2A61A309C985C858588D9 /* SDWebImageDownloaderRequestModifier.m in Sources */, - 4F823185A6F682685710B9574E32D3AA /* SDWebImageError.m in Sources */, - 27E5457CDA9A021B29AF532A8477DAB0 /* SDWebImageIndicator.m in Sources */, - 29B5E0AD4C8BD0DB9E1BF5D8AD913CED /* SDWebImageManager.m in Sources */, - 1E6C0F4ADDB7C8B2B268AB3794E30791 /* SDWebImageOptionsProcessor.m in Sources */, - 78C2DFE99D6F7A1A274E9D8EFD165643 /* SDWebImagePrefetcher.m in Sources */, - 776B301441712DAA37FBF6A7CEA93C7B /* SDWebImageTransition.m in Sources */, - E5B91C01861A4322F7F66723B878316E /* UIButton+WebCache.m in Sources */, - 987941CF7049804341214F98475B275B /* UIColor+HexString.m in Sources */, - 803FFADEF322BF208B7C37C7368C3A1B /* UIImage+ForceDecode.m in Sources */, - F72BF847412E0FAF84E1A7E16EA97A46 /* UIImage+GIF.m in Sources */, - F0CCBD5B1560D8D8B467FBFE07DF74A4 /* UIImage+MemoryCacheCost.m in Sources */, - A65AB6AE536FAB89F8BD54D22A3270B9 /* UIImage+Metadata.m in Sources */, - AFBB31CEBD7272995FBD79E1E4B97615 /* UIImage+MultiFormat.m in Sources */, - C94DC516C2F48A7868DF9193BAB277CA /* UIImage+Transform.m in Sources */, - 90F1C6C9EDDF2AE141098A4A5712A3C5 /* UIImageView+HighlightedWebCache.m in Sources */, - B4C3A72600CB8D619C537CCA7E59FFD7 /* UIImageView+WebCache.m in Sources */, - 962F246F4D86BCE82B9E3A33080D44F0 /* UIView+WebCache.m in Sources */, - AB6DA83EB836653E7E835FAE9744984A /* UIView+WebCacheOperation.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 29BD5CF3036C58A9C990AB04F58396BA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -16002,43 +16520,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 32E3C4BE240CEE50ECC6BC6C369F9277 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6DBB75EF7423F09AD44E2573CAF35AC4 /* FirebaseInstanceID-dummy.m in Sources */, - F903E89A908134BAC586C99F1EFB8F92 /* FIRInstanceID+Private.m in Sources */, - DF96AB8684D15E8B522B32E3C4C0040C /* FIRInstanceID.m in Sources */, - 4434D48196A179E01B13B1B9B532A0F4 /* FIRInstanceIDAPNSInfo.m in Sources */, - CE2605D3A74C9DCC6A5A1C6ABC04ED98 /* FIRInstanceIDAuthKeyChain.m in Sources */, - E3B7CADB949FD1E05DE1D804627D396F /* FIRInstanceIDAuthService.m in Sources */, - 54A9246371027B4CD3B43008884FA90F /* FIRInstanceIDBackupExcludedPlist.m in Sources */, - E136DCA9404C6709A708A1CDE213306C /* FIRInstanceIDCheckinPreferences+Internal.m in Sources */, - 81931D53BE00E8FC4B75DDBAC7C86185 /* FIRInstanceIDCheckinPreferences.m in Sources */, - AC7E6E3BD2A7CD3A72D5C70405E31DB7 /* FIRInstanceIDCheckinService.m in Sources */, - 9E66453D10A11F0164593AD596E0E8E0 /* FIRInstanceIDCheckinStore.m in Sources */, - BEE4B0E524B825FBF453B242122800F6 /* FIRInstanceIDCombinedHandler.m in Sources */, - B350DA3DF951BFDFC56331C90C01E200 /* FIRInstanceIDConstants.m in Sources */, - D5459FA80234303AA34ADFD42867D41A /* FIRInstanceIDKeychain.m in Sources */, - 2D5C8E1419E3DCF259A42E81A1EA56F1 /* FIRInstanceIDKeyPair.m in Sources */, - A1AF2DBE1AA6CF8976C7C0407363E187 /* FIRInstanceIDKeyPairStore.m in Sources */, - F3D627DC15CA09424071F3BC53A106D0 /* FIRInstanceIDKeyPairUtilities.m in Sources */, - 2EF1C5548F3F0E3DE7BEF6390805DEB1 /* FIRInstanceIDLogger.m in Sources */, - 502FAC1E08336ADB908FABCC6692BE90 /* FIRInstanceIDStore.m in Sources */, - 6AECBE5205C7FE40901C60D3BAC2D475 /* FIRInstanceIDStringEncoding.m in Sources */, - 425F4D00564CD45E8BAED4DB2AA48455 /* FIRInstanceIDTokenDeleteOperation.m in Sources */, - 2C301F59E16291961A53C6EFE487CBA9 /* FIRInstanceIDTokenFetchOperation.m in Sources */, - 81D1A8068B0BE495C688E5DF7DFA63BA /* FIRInstanceIDTokenInfo.m in Sources */, - 673EB44F71F2C6F4FBAD5C2C8E7CFEFF /* FIRInstanceIDTokenManager.m in Sources */, - 887878B7F152531BC505CBCDD925D20F /* FIRInstanceIDTokenOperation.m in Sources */, - 77A6EABFF15EEE860F7EC832E59EDD63 /* FIRInstanceIDTokenStore.m in Sources */, - 6ED99836BEA0FA40F40EB3E5E64786DB /* FIRInstanceIDURLQueryItem.m in Sources */, - BDAE1642C9CF0B63DF602E868A7970E1 /* FIRInstanceIDUtilities.m in Sources */, - 783E0F7BD819E79560DB35F639B8019D /* FIRInstanceIDVersionUtilities.m in Sources */, - 5D95EAD37D2BC74E84D6596CE99FEDEA /* NSError+FIRInstanceID.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 336DD63A991C2F740B88BEF51D47EBC8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -16379,17 +16860,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 49A4AE781E724873DC0A94081E03AAB4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2CFEE3C68DF30B10733EB873C39AD7CC /* FIRCoreDiagnostics.m in Sources */, - 1EE29AF938E8A2AA9DB15EC2CF341FA8 /* FIRCoreDiagnosticsDateFileStorage.m in Sources */, - 9A3099BF1A3303D97FF4B77EE8FA453A /* firebasecore.nanopb.c in Sources */, - 014A953E16242C5C2D97728BE5EB3FED /* FirebaseCoreDiagnostics-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 4FF0BAC6909F9AFB0D8963C31BDF3B53 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -16431,6 +16901,115 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 55C2456947D16EBC2D48E6E0563B5965 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4532353CD119D76BF82B67891C680DD6 /* FirebaseInstanceID-dummy.m in Sources */, + C4EBF0D56475CB1644E5164352A24BD5 /* FIRInstanceID+Private.m in Sources */, + 623E4C952DCADDD44F6943CEFDCC21DC /* FIRInstanceID.m in Sources */, + CE8852AFA15D70A5DE566026EFDFC2F3 /* FIRInstanceIDAPNSInfo.m in Sources */, + AAE02A17D7A26ACCDA5DBF6A441CFE98 /* FIRInstanceIDAuthKeyChain.m in Sources */, + 5DCA31ED0308779922E83F0F13640E3F /* FIRInstanceIDAuthService.m in Sources */, + 8383FA5D12B0C3167407B96F2013E9FE /* FIRInstanceIDBackupExcludedPlist.m in Sources */, + F59622D0F09DEF59155C8969D1B74946 /* FIRInstanceIDCheckinPreferences+Internal.m in Sources */, + E5CAC048154072FBC7D33C3C690D1666 /* FIRInstanceIDCheckinPreferences.m in Sources */, + B3B8A27F13994D822A962EAD1C8EA1F2 /* FIRInstanceIDCheckinService.m in Sources */, + AD2F0348979F6DEC73E66C0634B8D89F /* FIRInstanceIDCheckinStore.m in Sources */, + 90EEDAB80AD3D2F8B41E0C9F4C40CCF3 /* FIRInstanceIDCombinedHandler.m in Sources */, + 8D751CC4E9101960E0571131E2DEFFEF /* FIRInstanceIDConstants.m in Sources */, + CE31B8148A79CC3614A539EE1BD61A0F /* FIRInstanceIDKeychain.m in Sources */, + 611D02587581D20BABC1EC3962F6262C /* FIRInstanceIDLogger.m in Sources */, + 315F128047475CF8C8E82CB2C51AC69E /* FIRInstanceIDStore.m in Sources */, + 9F6B4F752D0316DC0CC2C2E58EC1A546 /* FIRInstanceIDStringEncoding.m in Sources */, + 5E0AD81439136001BCF345A7288B768F /* FIRInstanceIDTokenDeleteOperation.m in Sources */, + 53C338E1563591F463193CF3D2327216 /* FIRInstanceIDTokenFetchOperation.m in Sources */, + A21ED806195A73620CB21657E05C7188 /* FIRInstanceIDTokenInfo.m in Sources */, + B0A3C69022AD615CB02C44BEF92F0456 /* FIRInstanceIDTokenManager.m in Sources */, + 2EE1214FC3E8D03CDD99006494DDCA55 /* FIRInstanceIDTokenOperation.m in Sources */, + D6F319CF127DCB6034758EBB926BB032 /* FIRInstanceIDTokenStore.m in Sources */, + C6D0C80B1F5469299A9914D27C84BD2C /* FIRInstanceIDURLQueryItem.m in Sources */, + 8B43C248A2375B0F2B98B5157B1205DE /* FIRInstanceIDUtilities.m in Sources */, + 7A86CE51E137904ECFC87AD6329D753B /* FIRInstanceIDVersionUtilities.m in Sources */, + 552BF8053A03C10B0A849A781B5D40AB /* NSError+FIRInstanceID.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 56047C8CD377318495320E71CD5FC92D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7FDA653125CBE9C51664C67E7676A423 /* NSBezierPath+RoundedCorners.m in Sources */, + C8E92C9357E3EC80CA4AA1FE9C8A3E35 /* NSButton+WebCache.m in Sources */, + 67036BF15E333815981C92DEF30881A0 /* NSData+ImageContentType.m in Sources */, + 1E9BE88FA1550744658E5DF4C5E27E30 /* NSImage+Compatibility.m in Sources */, + 23314833370A97855835848E48AF9CB8 /* SDAnimatedImage.m in Sources */, + E77893AECA58C42BEFB11A9F3D0F0E89 /* SDAnimatedImagePlayer.m in Sources */, + 403E9D49D8232B1F6A6BACED3679104F /* SDAnimatedImageRep.m in Sources */, + D84EB10E3D309D71F1E4D8230535B1F4 /* SDAnimatedImageView+WebCache.m in Sources */, + 3E7CFC6BBA278D60B2DEF04E96E41275 /* SDAnimatedImageView.m in Sources */, + 67F58E27933AE0C15FDA31315B4F0861 /* SDAssociatedObject.m in Sources */, + 1536DE229D62C9EF155775D756DD3921 /* SDAsyncBlockOperation.m in Sources */, + F7B8AA8AD5C283D228877B2FC07E7E98 /* SDDeviceHelper.m in Sources */, + 6DBD30F941705CABAECEB99911829643 /* SDDiskCache.m in Sources */, + C286C22537607F78CDEA71274AFEA354 /* SDDisplayLink.m in Sources */, + E7A53AFEB6F93AA9F66679AFBF68CA43 /* SDFileAttributeHelper.m in Sources */, + 28DE633C2791D8880A18411419955E80 /* SDGraphicsImageRenderer.m in Sources */, + 1DC47F2B7B43257E19EC099965EC544C /* SDImageAPNGCoder.m in Sources */, + 782A7E895D3075095F9AACEBA47584EC /* SDImageAssetManager.m in Sources */, + D047DEFE3ACFD17E4D2C74AE4C477949 /* SDImageCache.m in Sources */, + 556BC4473335922D123C95D9C7A6307F /* SDImageCacheConfig.m in Sources */, + 48363CF916E87324E455BF39CE064DC1 /* SDImageCacheDefine.m in Sources */, + 2D20AB1269B163E91C616DA631432A23 /* SDImageCachesManager.m in Sources */, + 8A362B80D43E6603CF994D92EB2C52AD /* SDImageCachesManagerOperation.m in Sources */, + A4093BFD98499872C36D61188865A000 /* SDImageCoder.m in Sources */, + 477A39CF2D9AB86F3DEE6359B97FB9F5 /* SDImageCoderHelper.m in Sources */, + 8FFCB0876C97E6E6A9BD192A5514E737 /* SDImageCodersManager.m in Sources */, + CDBD7932A97BB1C7CC97098EBFE7355A /* SDImageFrame.m in Sources */, + 89CBF65D46171399F0EAF5C79B09E6E6 /* SDImageGIFCoder.m in Sources */, + 3A41B9C4BAA9C197A9D08F1ACC7C7CC8 /* SDImageGraphics.m in Sources */, + 06922EF69D044B6F0042385A661A6B60 /* SDImageHEICCoder.m in Sources */, + 261F32A1FA02D5BF8B24CB71FD71F10A /* SDImageIOAnimatedCoder.m in Sources */, + 05D69A135B67FBAE73D5F583B05D8AB5 /* SDImageIOCoder.m in Sources */, + 309E081F63A76DB6AB8C9F3CE25D9B9C /* SDImageLoader.m in Sources */, + E64DF891F62A7CC6064235FD1A9DCF5D /* SDImageLoadersManager.m in Sources */, + E0F9AB2F0F827441784FE65F9DEA24FC /* SDImageTransformer.m in Sources */, + B41645C71E5790030A867FFC4BC9BB6A /* SDInternalMacros.m in Sources */, + 5134C7B582F00BAB682F3A69DC3790AA /* SDMemoryCache.m in Sources */, + E366DD0852E04C44719F436504C65C5F /* SDWeakProxy.m in Sources */, + C3A358A8B68EB87FA331A54416E3E092 /* SDWebImage-dummy.m in Sources */, + 7858D06DC0B4D4114B09194D2473AF68 /* SDWebImageCacheKeyFilter.m in Sources */, + 111BF626ABBCE8E04BB4E1EEB8787C09 /* SDWebImageCacheSerializer.m in Sources */, + FDD1A736761E6777D1D9DD0B5685900A /* SDWebImageCompat.m in Sources */, + E98CCDCFD26438DD750B626B558080DB /* SDWebImageDefine.m in Sources */, + DDBB5BC0602A84CE59DC6778A632ED69 /* SDWebImageDownloader.m in Sources */, + 2060620FDFF5B1A5D8C07E8EF403882E /* SDWebImageDownloaderConfig.m in Sources */, + D60E40B4C45EE0ABDDDB310B1906F067 /* SDWebImageDownloaderDecryptor.m in Sources */, + FDC1636FB7D672F02CDD074DD9B040E9 /* SDWebImageDownloaderOperation.m in Sources */, + B5491FA6F24FB43A5BE1DADD8C492452 /* SDWebImageDownloaderRequestModifier.m in Sources */, + 641AB39A00602C3CE7FB1FCD93FCCFF7 /* SDWebImageDownloaderResponseModifier.m in Sources */, + 532684D939B80EF9527A71AC2082A6E5 /* SDWebImageError.m in Sources */, + B50CA038F8C99B2EBF848F62A29A94B3 /* SDWebImageIndicator.m in Sources */, + B4BCAA9AED1573D9C7E81E425A8973F9 /* SDWebImageManager.m in Sources */, + 9C616301E3564A11354F44BBC19779DD /* SDWebImageOptionsProcessor.m in Sources */, + 86C94F87667167DD05AB086C62038113 /* SDWebImagePrefetcher.m in Sources */, + 38CD1EEFACF1F4E85CAC904A501B0876 /* SDWebImageTransition.m in Sources */, + BCED26E631DA2A5593A277A7D1E02963 /* UIButton+WebCache.m in Sources */, + 2B8F067276102FA6915006D607D487FD /* UIColor+HexString.m in Sources */, + F0B46213F4296B9F86E89D13B3812DA4 /* UIImage+ExtendedCacheData.m in Sources */, + F526E360D7A60F00F7F67F7885804263 /* UIImage+ForceDecode.m in Sources */, + FCFBF36506CE48E9AD3D878FCD18ED4F /* UIImage+GIF.m in Sources */, + E27FEF47747D16413DA5F5E3DB760E17 /* UIImage+MemoryCacheCost.m in Sources */, + BE1ABF05189FFE8D346CC00A9F85EAEF /* UIImage+Metadata.m in Sources */, + 8C5D5340CC2350C17774207F4AFE339F /* UIImage+MultiFormat.m in Sources */, + 3C0FCF93B0ED1741AC247835CC335F80 /* UIImage+Transform.m in Sources */, + B54FD5F975C9E75EA67F9D0E1939C9B5 /* UIImageView+HighlightedWebCache.m in Sources */, + 11629DF38EC6C86FE4002B0EF764297B /* UIImageView+WebCache.m in Sources */, + 892CC8F163730004416A9E0EB66454A0 /* UIView+WebCache.m in Sources */, + 980D90F8772164DA4D739F9A2811B7A7 /* UIView+WebCacheOperation.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5A0315FE0271928CDEB11F2F9319E54A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -16460,6 +17039,30 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 617ED745D7DD62A61416E7AA46D89C62 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B5A6465606762C6EB7BF68923C55487 /* FIRAnalyticsConfiguration.m in Sources */, + 294DF61467891D4A15B8BE8DA7B249C8 /* FIRApp.m in Sources */, + 09F2344CDF2289F7B806ED72CB1E16C9 /* FIRAppAssociationRegistration.m in Sources */, + 1FF2393253B66E225DBF6E7B48F3860C /* FIRBundleUtil.m in Sources */, + A4DF3AB01471BD888F4FD4EC2E9A21BE /* FIRComponent.m in Sources */, + FC775095597914294ABF7C56BF70052A /* FIRComponentContainer.m in Sources */, + 07141BDF264104502C0D2041648F7880 /* FIRComponentType.m in Sources */, + B2ADBA919A83F3489D1643A24A241C8B /* FIRConfiguration.m in Sources */, + 98BC38F964FA856EBFF4A1910983AD93 /* FIRCoreDiagnosticsConnector.m in Sources */, + E6C3AC1533E09AB22822D392C9B9CFCC /* FIRDependency.m in Sources */, + 6A9BAB8845A46379E69D055193EC5871 /* FIRDiagnosticsData.m in Sources */, + 979243DB7BF5C1BFB5966534EA7F7651 /* FirebaseCore-dummy.m in Sources */, + 1ABA2B507962FB92E51A2CA70A819741 /* FIRErrors.m in Sources */, + F15DE35EBA4CB4B476438C0692A0950A /* FIRHeartbeatInfo.m in Sources */, + B3DA463FE22DD22C783EA37F931CEFC9 /* FIRLogger.m in Sources */, + B79E683059398347D30F641EB0D6D947 /* FIROptions.m in Sources */, + FBED05764440E7FEF17C007B2437FB0D /* FIRVersion.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 63A042511A99756B7B1D7743C7899522 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -16472,14 +17075,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 65A1B35CEAC137CBF0FCE206330606FB /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6A85D1B26E9CDC97E15DE8C824A82736 /* Pods-ShareRocketChatRN-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 67E9F6969AB2358E8DE16FEA91209509 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -16544,29 +17139,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 6B3DAF79D55C0FAEADD580D09F775BDC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B19F2B637F6B23E5352C351E7F9D5AEC /* GDTAssert.m in Sources */, - E56A382EFCB1212FE0C79493D0A3A9E2 /* GDTClock.m in Sources */, - 50F65A7405BEE517EC658FE55ED70018 /* GDTConsoleLogger.m in Sources */, - 12FA7519507285624A8F734D8A3939CB /* GDTDataFuture.m in Sources */, - D7182C0FDCAE8B97CE1BCDC7866C69FE /* GDTEvent.m in Sources */, - 0F199BC919DA606852559D57EF858777 /* GDTLifecycle.m in Sources */, - B64FA42E184A0EE28D65B959449C49FA /* GDTPlatform.m in Sources */, - B263A4FE744BB18A7C7B543C66725FA1 /* GDTReachability.m in Sources */, - 7C87A0BA4406932C036C25C471937D6D /* GDTRegistrar.m in Sources */, - CB451FBD339977E44FF2FC313068B5EC /* GDTStorage.m in Sources */, - DC68D05D6350E5C93111DED36C4508F9 /* GDTStoredEvent.m in Sources */, - 3CE0729079D17BAE2A3F5C0904B3FEC8 /* GDTTransformer.m in Sources */, - 960BB6A747C122E41D0F93EEA6E0624C /* GDTTransport.m in Sources */, - 9CC8AF94995AE4B94A792BD1BEA1358D /* GDTUploadCoordinator.m in Sources */, - 83408F01EBA71440E6C97BDAC6DFD142 /* GDTUploadPackage.m in Sources */, - 73BC222F96DC7059E988EC0D2EB7779C /* GoogleDataTransport-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 6B6A5C0051FCF56ECA57EFB5F50F6E61 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -16577,6 +17149,36 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 6C0F2E09128DE314D5960E47AB9029C6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5DB8EEF2D2A248784F2A801E1E0CA1A0 /* Pods-RocketChatRN-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 73BFC6DD15C05FDAE2D887C0A52C1E50 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5B3E2563BD4AC3D5DCEC78F631AC9B40 /* GoogleUtilities-dummy.m in Sources */, + 41C778DE498447ED87070B6D37C30A85 /* GULAppDelegateSwizzler.m in Sources */, + 3B19116ABDED6431782A3A8BB569F8C6 /* GULAppEnvironmentUtil.m in Sources */, + 6BEE9EB48AF833CA1A6C58022E2C851E /* GULHeartbeatDateStorage.m in Sources */, + 4200E4BFCB23A3C2905D0525513F68CA /* GULLogger.m in Sources */, + CE287884CA61A8B9A4C533CB271E2A24 /* GULMutableDictionary.m in Sources */, + 64554430F1D85E4FC49F1062A6B85E22 /* GULNetwork.m in Sources */, + D763A2B754500831DDFCD0B3155211C3 /* GULNetworkConstants.m in Sources */, + E3DA0536FD69192110548E00EF3BE7FC /* GULNetworkURLSession.m in Sources */, + 14FBD8CB3447A6D5C521A0193AF4C43E /* GULNSData+zlib.m in Sources */, + BD5367AA54AEAA782DE3C4CA57CFECD7 /* GULReachabilityChecker.m in Sources */, + 33988475BC9754D18D14BF27766A2C0D /* GULSceneDelegateSwizzler.m in Sources */, + 20F03A0EE0116A9EDABC5AB21DC39778 /* GULSecureCoding.m in Sources */, + 10B88123E4B69BD0762CDB5A90CF066A /* GULSwizzler.m in Sources */, + 5F5378B828C8964BCBDD35727B30E2F2 /* GULUserDefaults.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7711033FC404B3CB08B74E3280EC10F4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -16586,6 +17188,32 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 77986988FD89C6EB78937224906AF7AF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9C8A0D00A5379B1414E3ECFAB83E213E /* FirebaseInstallations-dummy.m in Sources */, + 2A0CFDAFE1D323DD59F8CC55D2BF21A2 /* FIRInstallations.m in Sources */, + FBBA7842602DADBDAE57A0FC05A97B85 /* FIRInstallationsAPIService.m in Sources */, + 499A78064AD0B576066DF5C4AE420F4B /* FIRInstallationsAuthTokenResult.m in Sources */, + FF825C5AA742FABD882CD741329E55CF /* FIRInstallationsErrorUtil.m in Sources */, + 6F9A19A47EEE733740327FF7A92428BC /* FIRInstallationsHTTPError.m in Sources */, + 38D058F638351726858D7A563A8982A7 /* FIRInstallationsIDController.m in Sources */, + 31008478AA016544A263E99504DE8C56 /* FIRInstallationsIIDStore.m in Sources */, + 477E9F458C626A14EA29CADDE3BE895A /* FIRInstallationsIIDTokenStore.m in Sources */, + 685876391AD8815F91ADD8BF5CD5AD96 /* FIRInstallationsItem+RegisterInstallationAPI.m in Sources */, + 6FCEE2424CB121B6DB9D8E376CF795C1 /* FIRInstallationsItem.m in Sources */, + 0168747D9FDB61A33B92889060F5D4B8 /* FIRInstallationsKeychainUtils.m in Sources */, + F4604D394027188B0F18448BA46914DF /* FIRInstallationsLogger.m in Sources */, + 6B78D71DC954AB01DB63AFEE42B06E7B /* FIRInstallationsSingleOperationPromiseCache.m in Sources */, + 858DF05CB9907C3E2A68BB29C4D60873 /* FIRInstallationsStore.m in Sources */, + 80F8AC2C5A3783FCA7E33066B501CDB4 /* FIRInstallationsStoredAuthToken.m in Sources */, + 1A8C26E48B802ECAF127BAB17E884ABA /* FIRInstallationsStoredItem.m in Sources */, + C26A8A38E4FCFA0A1C3BE2AFC067F378 /* FIRInstallationsVersion.m in Sources */, + 2F5AE014543358BAEE4B4D6CD5A371E3 /* FIRSecureStorage.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7B35C4554B5CD27161A55CD983693900 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -16596,29 +17224,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 817E6ACF393BF211B409A5432580AC49 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8C947E3F75C661809C8E3BDBBDAB7593 /* FIRAnalyticsConfiguration.m in Sources */, - 7BBEF92E70F2EC74F3D43B7D1E1E3B5B /* FIRApp.m in Sources */, - 97C623DF2BD61587360EC3B26A8F5CE8 /* FIRAppAssociationRegistration.m in Sources */, - FDE0CFBD5BC520CB3EA47DAA8C5FAE48 /* FIRBundleUtil.m in Sources */, - 0F7CB1F6725B33F8063BD453A4435278 /* FIRComponent.m in Sources */, - 3C9923B6B84D38A40767A6E529CABE0F /* FIRComponentContainer.m in Sources */, - 92FD213052E29CA5F30B41AAB84AB5E9 /* FIRComponentType.m in Sources */, - B2FA0A7642EEA39E75D3D03EF2E15B4C /* FIRConfiguration.m in Sources */, - 02995B31B424D53935F8576996C9F306 /* FIRCoreDiagnosticsConnector.m in Sources */, - 48589406024717DC104D8F0B2585FCC4 /* FIRDependency.m in Sources */, - 5A81696564F736AF85CA0CF8BA37458F /* FIRDiagnosticsData.m in Sources */, - C463903550363F2EC8E73556C301C2CE /* FirebaseCore-dummy.m in Sources */, - 3E6E2A5941481ECA8D947D329A8D5E4D /* FIRErrors.m in Sources */, - 3585CBDCF731A7F68C48BB6AD9A70AFB /* FIRLogger.m in Sources */, - 8164D2DE9EA9493CD176F2BEF6966635 /* FIROptions.m in Sources */, - DF9AF82CFD185E9405454B58BFB1F031 /* FIRVersion.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 8554764A2D1C1901709057D3B8ABEBB9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -16711,6 +17316,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + A710D8DD87257035884AE2D60E622379 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EF627458DF9DF92352237F2364F8D8B7 /* FIRCoreDiagnostics.m in Sources */, + 6B6CD41EA0E92DE12D6390B15A0C6D74 /* firebasecore.nanopb.c in Sources */, + 757C477AF763DFCA1BE5A5D78341AFE8 /* FirebaseCoreDiagnostics-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; A8F1E0053C3DB8D9E21EF5B8F0A95CE6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -16927,14 +17542,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E355D16EE6D3419FAE0DCFC516787AE1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D72C629D929E02F506B34837A3FEFF23 /* Pods-RocketChatRN-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; E52752F659F5427D67E7BC18DCD04B86 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -16967,25 +17574,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E7459CBED27D20DF48778E4ABEA9FDF7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 17D2A3D9D174A9BE8815BCA3EC73B4CA /* GoogleUtilities-dummy.m in Sources */, - 4F1F6CFF3B9C457F73F5B8AF1AF79893 /* GULAppDelegateSwizzler.m in Sources */, - A99D016A3588F636AF86A6D2FB1EC3CD /* GULAppEnvironmentUtil.m in Sources */, - BC39A14139D09DA09D179898A87CF021 /* GULLogger.m in Sources */, - 91C83C1367409A169B8F743002D07A4F /* GULMutableDictionary.m in Sources */, - 7F653669B6A69DE9841ED9138F3355A7 /* GULNetwork.m in Sources */, - 6BF455BEAC6B3B63B7043B2A42FFB241 /* GULNetworkConstants.m in Sources */, - 3BEF5F842EA4316476D9252C81E7D100 /* GULNetworkURLSession.m in Sources */, - C3D1000FE91F1ED6637A85A0B3393FAE /* GULNSData+zlib.m in Sources */, - 178E75DE2938CCFCEE8DE1C3A13FB126 /* GULReachabilityChecker.m in Sources */, - 3A38B322CEF5C4F1F5C90CDC284CC7AA /* GULSwizzler.m in Sources */, - 94C13AEE39D1D80619F968CCE5C35616 /* GULUserDefaults.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; E95C04D3C7C39E1BFD3F518FD2E4FF15 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -17022,6 +17610,29 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E9A276BADD2118C0B6380EC21E836C92 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2521216CE078E953104465D53D96B1AC /* GDTCORAssert.m in Sources */, + 7DAFB46E119763177277EC28363FF378 /* GDTCORClock.m in Sources */, + E9BEC3539C84BEBAE9C56DD82FE4AE08 /* GDTCORConsoleLogger.m in Sources */, + 2E0BEB13B0C41568EC020EFDECAACFD9 /* GDTCORDataFuture.m in Sources */, + A702694C291529C5D08B2DCFB39628F3 /* GDTCOREvent.m in Sources */, + 319B2207EC617BEAACE39E7183364D0F /* GDTCORLifecycle.m in Sources */, + CFFF4D24501DD722D267B98FC18CC4FD /* GDTCORPlatform.m in Sources */, + 8DEFCD08EC9448EA4F746B9134AF4D65 /* GDTCORReachability.m in Sources */, + 555AE9BB3A4B4A37116D009489131F89 /* GDTCORRegistrar.m in Sources */, + 67FB60A3B7937AFDCE4D41A927B10F4D /* GDTCORStorage.m in Sources */, + E03B2983E6A3780B1E33F86C0B6727E8 /* GDTCORStoredEvent.m in Sources */, + 6CF9B64389DCBE99ED877DA30E3BE3A2 /* GDTCORTransformer.m in Sources */, + 1DE2ED65A6C32CF6CC486B9DD6BEE45D /* GDTCORTransport.m in Sources */, + 362992C88541C7E04A9D3CC4D08CB8F9 /* GDTCORUploadCoordinator.m in Sources */, + 75AF4BFBC99BEFE0356973D015D8F83B /* GDTCORUploadPackage.m in Sources */, + 21DCB3C8CBBB0BDCA5B2F4F7D875A352 /* GoogleDataTransport-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; EC2F803034C82734E1C7B0418C5C60CF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -17066,6 +17677,33 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F22AC212D74C0C613D916C0740667F56 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0D43A09965B7EEC94C970B16EE208B7 /* FBLPromise+All.m in Sources */, + C5A7EA3714C687D6888782149F9AD31F /* FBLPromise+Always.m in Sources */, + BEEB788D1743D4D1D9AA52C31C528B19 /* FBLPromise+Any.m in Sources */, + DDC299E5753D48F2A7081D27F73ACFAF /* FBLPromise+Async.m in Sources */, + C742507D7BE5A255918244DACF09664B /* FBLPromise+Await.m in Sources */, + 1340A92BC48BF0D0E320FFD57737B166 /* FBLPromise+Catch.m in Sources */, + 79B0374BFE07F9D6A24D3310F5DB476E /* FBLPromise+Delay.m in Sources */, + 8990839281ACA886749C54D8CA07FA88 /* FBLPromise+Do.m in Sources */, + 8264F64F4D30DEAEA786C1196C93A765 /* FBLPromise+Race.m in Sources */, + 6CBFAABEB470033B6CD1B49891885208 /* FBLPromise+Recover.m in Sources */, + 736C1E17BD05A7026591A32A7F626B7A /* FBLPromise+Reduce.m in Sources */, + FEEE952E4702DBF6900E7A327CF08AE9 /* FBLPromise+Retry.m in Sources */, + 71337D195C7203C40B62109A887445E2 /* FBLPromise+Testing.m in Sources */, + 480C753D7FA4D8422864286E1DAE61D5 /* FBLPromise+Then.m in Sources */, + 803DEFC2CCE0AB3F23FEB7BE2E87EBE2 /* FBLPromise+Timeout.m in Sources */, + A1A7D185D68859C10D0EE1DE4E8063B2 /* FBLPromise+Validate.m in Sources */, + 9410A9F0FCED080442B9A14D7811805C /* FBLPromise+Wrap.m in Sources */, + 341859F7AE772790EC9DE0E1AB2AB792 /* FBLPromise.m in Sources */, + C856EFB68D99D6BCB7520D35888D15A3 /* FBLPromiseError.m in Sources */, + D9FBFE38219EEA722C7D011D1F510DCD /* PromisesObjC-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; F77AE66808C29A6B0F912AD7F9BCFFBF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -17095,11 +17733,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 011CE2450AE11B9FFFD84C8C280B809E /* PBXTargetDependency */ = { + 0195F5DEB7685B9F2265A12A925425D7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Firebase; - target = 072CEA044D2EF26F03496D5996BBF59F /* Firebase */; - targetProxy = BC8C24324CBCCA7C9FD4E3E8423E923F /* PBXContainerItemProxy */; + name = "react-native-slider"; + target = A4EF87F5681665EAE943D9B06BBB17DF /* react-native-slider */; + targetProxy = 311444313BA6A2014AF61E6FFCF67BB4 /* PBXContainerItemProxy */; }; 01C4775EBB1ADD0B79CC48B319789E79 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17107,17 +17745,17 @@ target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = 97B757EDAC3A7488ACC8A43E74C8388E /* PBXContainerItemProxy */; }; - 022CFBAE58924B459078A66C0369BECE /* PBXTargetDependency */ = { + 0281B478010660EB1238EA60387444B8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-jsi"; - target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; - targetProxy = 9221682DEFC433F52DC9D6667B00E8E1 /* PBXContainerItemProxy */; + name = RCTRequired; + target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; + targetProxy = 64B88427BBB54EB31630CBC9F9F45734 /* PBXContainerItemProxy */; }; - 031BB745803DFB5F7C92D86B728AD847 /* PBXTargetDependency */ = { + 028A2F4ABD87F1E04A574DD52A514166 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-RCTSettings"; - target = 680299219D3A48D42A648AF6706275A9 /* React-RCTSettings */; - targetProxy = 3C43C5DEE85968F10ED7D2A1163F91DA /* PBXContainerItemProxy */; + name = "React-Core"; + target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; + targetProxy = C978E2B36D38968087242ADBB0DE8929 /* PBXContainerItemProxy */; }; 03C5D1361123B1B19A913F4F89661FDB /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17125,24 +17763,30 @@ target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; targetProxy = 46123FA0B5C451A00D38BB12B40AD23A /* PBXContainerItemProxy */; }; + 04D9C42B89BD867FC5A29C2B79F15A97 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = UMReactNativeAdapter; + target = 897EF6A99176326E24F51E2F2103828C /* UMReactNativeAdapter */; + targetProxy = CD64A7BBD2979E9D167F4B5C1631566F /* PBXContainerItemProxy */; + }; 0601407CEF1C58A062803387CCDB2AF4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Folly; target = A4F685BE3CAC127BDCE4E0DBBD88D191 /* Folly */; targetProxy = D1DD6F0528614F3F6A959C01AB7F7DCB /* PBXContainerItemProxy */; }; - 0692B9311498395175014308A4B17348 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseCore; - target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = 96666480DE980C58BDF3B02926F87595 /* PBXContainerItemProxy */; - }; 073CD2E5F0971C9A28E591F6289C48BA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Crashlytics; target = C0E41540D6862472ED7F2FA11669BE1F /* Crashlytics */; targetProxy = 70056FCB7FB870FB7D91F161A3B6F84F /* PBXContainerItemProxy */; }; + 074095F4C94CFC39246BD8494260C574 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseInstallations; + target = 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */; + targetProxy = B7EE9B1370B572054C651D54BC4B9907 /* PBXContainerItemProxy */; + }; 0819D4E8DCB748F652F6C3216F88A453 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; @@ -17155,29 +17799,17 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = A9D92F68FAFAEBBE26C78B0172ED347C /* PBXContainerItemProxy */; }; - 0A449D0BE5B185FF11C96E9F5CC19486 /* PBXTargetDependency */ = { + 09126DFF7FCFB86790EF6CE9945D5F26 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RSKImageCropper; - target = A30157FD17984D82FB7B26EE61267BE2 /* RSKImageCropper */; - targetProxy = 4D75BDE4708454F4909FB10307068841 /* PBXContainerItemProxy */; + name = JitsiMeetSDK; + target = 5B40FBDAD0AB75D17C4760F4054BFF71 /* JitsiMeetSDK */; + targetProxy = 2AF3E62F6A3C8DFFC033624C8B125A17 /* PBXContainerItemProxy */; }; - 0B7760A825C50E046F98BDF3E1B415A0 /* PBXTargetDependency */ = { + 0AB62B7D646C4B35A27F2D72CFD5936E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCoreDiagnosticsInterop; - target = 5EB4B0B6DA6D5C0C3365733BEAA1C485 /* FirebaseCoreDiagnosticsInterop */; - targetProxy = 328188725A5709DCD846ABC6008CA4A4 /* PBXContainerItemProxy */; - }; - 0B8F803EE4667004EA6E67A4F1AFEC8D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleAppMeasurement; - target = B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */; - targetProxy = 2AA6341385C9D7D36A09008D60E9A168 /* PBXContainerItemProxy */; - }; - 0BD13821A9C8FC60639800F9E042B301 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RNDeviceInfo; - target = 807428FE76D80865C9F59F3502600E89 /* RNDeviceInfo */; - targetProxy = B1D869B08EF0EFE10993521A96F7D391 /* PBXContainerItemProxy */; + name = EXAppLoaderProvider; + target = 2B8C13513C1F6D610976B0C8F4402EC1 /* EXAppLoaderProvider */; + targetProxy = 71EAF1F82ABDB2312E75886AC46D971D /* PBXContainerItemProxy */; }; 0BDC71A280A13EDA3BACEEA9FFA4057C /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17185,11 +17817,11 @@ target = 6D979AB5FDA2E858850D9903776A30B3 /* RNImageCropPicker-QBImagePicker */; targetProxy = CF87F655D13B486B7A39F4A5166807A5 /* PBXContainerItemProxy */; }; - 0C5012192C2A78D2E5C0343B586236A4 /* PBXTargetDependency */ = { + 0C75722A2583DC436714A8A9AF11DBE8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-orientation-locker"; - target = 1092C13E1E1172209537C28D0C8D4D3C /* react-native-orientation-locker */; - targetProxy = A294E7323DF03350958C1AC67D2A1C0A /* PBXContainerItemProxy */; + name = "React-RCTSettings"; + target = 680299219D3A48D42A648AF6706275A9 /* React-RCTSettings */; + targetProxy = DE9A87C942081FFD593AE353910B26CB /* PBXContainerItemProxy */; }; 0D751055C363323C78854582E5CE9EEB /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17197,29 +17829,23 @@ target = 8CC4EAA817AA86310D1900F1DAB3580F /* FBLazyVector */; targetProxy = EE98A4C80DE900CD0C9ED8195B4EF52D /* PBXContainerItemProxy */; }; - 0D792B55CDAA4B9CA054A0E122E34020 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RNDeviceInfo; - target = 807428FE76D80865C9F59F3502600E89 /* RNDeviceInfo */; - targetProxy = 76CE472186ECE30C9667447E3C9E2A37 /* PBXContainerItemProxy */; - }; - 0E4F01207E4AFE2CDFA8DED86C4C16F8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = UMFontInterface; - target = 014495932E402CA67C37681988047CA2 /* UMFontInterface */; - targetProxy = 7D27ED6567EFD4F81531C72772720B9C /* PBXContainerItemProxy */; - }; 0EA175BD24BB28A0E0412FF094DE386B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = B7CA8E5E6048734280447632DB142C89 /* PBXContainerItemProxy */; }; - 0FCC59413B178473BC55420AF3C49A6F /* PBXTargetDependency */ = { + 0EF59EA690B55FF7B6E91F30CE1AB234 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RSKImageCropper; - target = A30157FD17984D82FB7B26EE61267BE2 /* RSKImageCropper */; - targetProxy = B144A4DEF75CE655FEEF5DEDC873FA72 /* PBXContainerItemProxy */; + name = "react-native-webview"; + target = 8D18C49071FC5370C25F5758A85BA5F6 /* react-native-webview */; + targetProxy = 983769B972D449DD11ECFD3E4D1FC206 /* PBXContainerItemProxy */; + }; + 0FB2A44DDA73B3A89E67E44F95EB7357 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = React; + target = 1BEE828C124E6416179B904A9F66D794 /* React */; + targetProxy = 0E2DD4CED0991DBD1F9E72A5944238AA /* PBXContainerItemProxy */; }; 111B42C5DC57FD6481F10A216C2A2A54 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17227,29 +17853,29 @@ target = 53D121F9F9BB0F8AC1C94A12C5A8572F /* React-RCTVibration */; targetProxy = 05C70C130BBF2D57D3A41CA7A93B606B /* PBXContainerItemProxy */; }; + 1181066CF0A180936F2A68BD3DABEC0C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = UMConstantsInterface; + target = 9668C19AA6D8EA320F83875FA286855A /* UMConstantsInterface */; + targetProxy = 5608A6BF20D6576488E0EDF4CEFB7DD0 /* PBXContainerItemProxy */; + }; 11BB47F7EA1D94100004061A682344B8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseCore; target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; targetProxy = 0ECB4C54EED84F5258E41AFD4657F11F /* PBXContainerItemProxy */; }; - 1237AE89B63F015C7E26B2D86BFE5F9C /* PBXTargetDependency */ = { + 14C392D94C7F9AC7AFA309412419190B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNRootView; - target = 18B56DB36E1F066C927E49DBAE590128 /* RNRootView */; - targetProxy = F6E7B967BAB0CFDAF1E4584ABE5385FC /* PBXContainerItemProxy */; + name = libwebp; + target = 47D2E85A78C25869BB13521D8561A638 /* libwebp */; + targetProxy = D17C3C9CD181E3FFEFDCFE3EC5341488 /* PBXContainerItemProxy */; }; - 132FE8B8E63BD64C3D7B7562048122ED /* PBXTargetDependency */ = { + 16287F1A04D1FD826286E74E1DFCAA4F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "rn-extensions-share"; - target = A238B7CE3865946D1F214E1FE0023AAE /* rn-extensions-share */; - targetProxy = 7B199FB4BE2CA58EA743C45D6609AC0F /* PBXContainerItemProxy */; - }; - 150BB3ABB2223BE26DE7CCB3EA3D7C74 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RNLocalize; - target = B51433D546A38C51AA781F192E8836F8 /* RNLocalize */; - targetProxy = FED0787EF1320E02CB9E59A7A9F4D067 /* PBXContainerItemProxy */; + name = "React-RCTActionSheet"; + target = 11989A5E568B3B69655EE0C13DCDA3F9 /* React-RCTActionSheet */; + targetProxy = 1AEF2AE5DA4BA57F6D0DD29D48C9BBB4 /* PBXContainerItemProxy */; }; 16D9EDA83A5EAC350AAADE42DC833185 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17257,23 +17883,23 @@ target = ED2506AE7DE35D654F61254441EA7155 /* boost-for-react-native */; targetProxy = E7713748923D5218C5086559D4632CF6 /* PBXContainerItemProxy */; }; - 17947E88C0E0CB0A18CCC8C3508896E7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RNDateTimePicker; - target = D760AF58E12ABBB51F84160FB02B5F39 /* RNDateTimePicker */; - targetProxy = 920BBBF84113CAE19E321EAAFE6546B4 /* PBXContainerItemProxy */; - }; 17B0305E08C7EF9ED292AA9014450AF0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = UMCore; target = DBCB1B4965863DDD3B9DED9A0918A526 /* UMCore */; targetProxy = 9A2D94180C1D8549B209C4F116F4FC88 /* PBXContainerItemProxy */; }; - 17F926AC4EFFC702D9501F3B2F031264 /* PBXTargetDependency */ = { + 1847296CDFA157445A7BFAD6A48346A0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = nanopb; - target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; - targetProxy = 9BF5924BA9D17A4904D3454D2A86CF70 /* PBXContainerItemProxy */; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = D4CAA9CA7C8E69C0DC481167E31BE48B /* PBXContainerItemProxy */; + }; + 18A6ADD342315593BD09FB10956655E8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = UMBarCodeScannerInterface; + target = 49821C2B9E764AEDF2B35DFE9AA7022F /* UMBarCodeScannerInterface */; + targetProxy = A9C1143D0CBD44FA82684EEB8996FC35 /* PBXContainerItemProxy */; }; 18FD1501C797648CCBBE6F5A312BFE05 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17281,29 +17907,23 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = A2714C3F770F38D4074DD0F61DA9CF45 /* PBXContainerItemProxy */; }; - 193D36068CC93F653E48B08DB805299F /* PBXTargetDependency */ = { + 1B6F8E0BEE9EEA2FF2A869FED4082CF1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-video"; - target = 3E5D106F8D3D591BD871408EEE0CC9FD /* react-native-video */; - targetProxy = 49F05BDCFA402317EFCE4D988B52E30F /* PBXContainerItemProxy */; + name = RNImageCropPicker; + target = 0D82774D2A533D3FFAE27CAB4A6E9CB2 /* RNImageCropPicker */; + targetProxy = DCDC18F1309C6C1A44652D0323DA7D96 /* PBXContainerItemProxy */; }; - 1A18C555A4C0E90CFCE1862DC8F94408 /* PBXTargetDependency */ = { + 1B9EA97198553DE418304A51DA647039 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNRootView; - target = 18B56DB36E1F066C927E49DBAE590128 /* RNRootView */; - targetProxy = 91E7BE7B7B4A92B30DDEEDB1C61491FF /* PBXContainerItemProxy */; + name = UMFaceDetectorInterface; + target = 2AD4F40E67E1874A0816F6B34289EB41 /* UMFaceDetectorInterface */; + targetProxy = 258A8397F14A28249384A9BF4FC04D81 /* PBXContainerItemProxy */; }; - 1AA7ECBFA331151021ACBF0788B62F66 /* PBXTargetDependency */ = { + 1F47CFD4936A28D8A96F78C7C73A431C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNGestureHandler; - target = B9E8F4CA2A4A8599389FEB665A9B96FF /* RNGestureHandler */; - targetProxy = 6EC5D99CB7C92E00E2D0CACD98349692 /* PBXContainerItemProxy */; - }; - 1D863773EFC8144808B59D9033579431 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "react-native-notifications"; - target = CA400829100F0628EC209FBB08347D42 /* react-native-notifications */; - targetProxy = FB8962C393814D899BA352B00394587C /* PBXContainerItemProxy */; + name = RNBootSplash; + target = 6677891AC2F7AB93E04BFF30B293A46B /* RNBootSplash */; + targetProxy = D38618B35E740B52628FD9CADB6B3068 /* PBXContainerItemProxy */; }; 1F7F74A9D27293B2CD3A13D6A29E8DCF /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17311,17 +17931,17 @@ target = A4F685BE3CAC127BDCE4E0DBBD88D191 /* Folly */; targetProxy = 65685AEAE3C8051C0DE124A6E5ACB197 /* PBXContainerItemProxy */; }; - 20703024E39087D7C031C804D6BCEFF8 /* PBXTargetDependency */ = { + 1F85E95EB5AA24111CDA796EAFE2878D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Folly; - target = A4F685BE3CAC127BDCE4E0DBBD88D191 /* Folly */; - targetProxy = 57F3D7487917ADFE4B6C3F7DBECD5F8F /* PBXContainerItemProxy */; + name = SDWebImageWebPCoder; + target = 1953860EA9853AA2BC8022B242F08512 /* SDWebImageWebPCoder */; + targetProxy = 9A0CEFC37F7290AD4EF3227A3F94498C /* PBXContainerItemProxy */; }; - 21F9E245DFAA830695ECA1BA3B2FB3C0 /* PBXTargetDependency */ = { + 24490FC5D8FD6C825E67E30EBE7E91BD /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNImageCropPicker; - target = 0D82774D2A533D3FFAE27CAB4A6E9CB2 /* RNImageCropPicker */; - targetProxy = 49CBCEEC7CD88EA79F05EF04B91304B4 /* PBXContainerItemProxy */; + name = "react-native-background-timer"; + target = 6514D69CB93B41626AE1A05581F97B07 /* react-native-background-timer */; + targetProxy = 260FF0C211C41ACD759800FFA5607DA5 /* PBXContainerItemProxy */; }; 247FEEC1E501C4839C5EE406D74A3A13 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17329,6 +17949,12 @@ target = DBCB1B4965863DDD3B9DED9A0918A526 /* UMCore */; targetProxy = 7F0C8BA205CDCCA50C905295C45878EC /* PBXContainerItemProxy */; }; + 24A9EDC6CE482D2EBD7D1955D0044F11 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "react-native-slider"; + target = A4EF87F5681665EAE943D9B06BBB17DF /* react-native-slider */; + targetProxy = 5B02AC67DF7749672C3EC5E587C212E1 /* PBXContainerItemProxy */; + }; 24B55147C941BE9797F6BC794F57308C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseCoreDiagnostics; @@ -17341,12 +17967,6 @@ target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = E3DCB3D8F0A533B7BB46EB61E99CA3EE /* PBXContainerItemProxy */; }; - 25862982C5B8C76A0F37C78A32BE8454 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-RCTText"; - target = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6 /* React-RCTText */; - targetProxy = 3944CB563B3BC5309021CA988FB39A42 /* PBXContainerItemProxy */; - }; 25FF94CB1F0E40824E1E6AF9F1F0421A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = UMCore; @@ -17359,11 +17979,11 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = 32EDED458FEDBDD31B9D588BD688E1DA /* PBXContainerItemProxy */; }; - 26EFF042DA0CD9D33047967AC564DEEC /* PBXTargetDependency */ = { + 2653E819256A088D3F86CFD73F82F8AE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNUserDefaults; - target = 4D67CFB913D9C3BE37252D50364CD990 /* RNUserDefaults */; - targetProxy = C8E7636CCA91128D75FBB3064C303CF5 /* PBXContainerItemProxy */; + name = RNGestureHandler; + target = B9E8F4CA2A4A8599389FEB665A9B96FF /* RNGestureHandler */; + targetProxy = 4EAA4F1B761AA4477A3B6D54C852EFD2 /* PBXContainerItemProxy */; }; 271F0600BAF57AF6817D4EBF63BF104D /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17371,17 +17991,23 @@ target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = 9AC1F06D86A0940CBEDC84127390E31D /* PBXContainerItemProxy */; }; + 277155B2CEB0727BCE69659F0CBAA651 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RCTRequired; + target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; + targetProxy = 089558083C37398D29C4A58DC2A7459D /* PBXContainerItemProxy */; + }; 27C702A0CD5B9CAB6ADF12761D4592D2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = UMPermissionsInterface; target = F7845084F0CF03F54107EEF7411760AD /* UMPermissionsInterface */; targetProxy = F84AAAA2C19F25EDD3EC2AACB0E9E389 /* PBXContainerItemProxy */; }; - 27FACA0BAC43B2675E0267008E9E627F /* PBXTargetDependency */ = { + 292B1B72A9EB54CF781D20ED86E1775D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-RCTAnimation"; - target = 938CCE22F6C4094B3FB6CF1478579E4B /* React-RCTAnimation */; - targetProxy = 6B353BDDA4C3E6B73BAC65854BC4EE5A /* PBXContainerItemProxy */; + name = KeyCommands; + target = 7F591BD8674041AAAA4F37DC699B5518 /* KeyCommands */; + targetProxy = C920F0CCDE6B125D03C36F35E1B070B0 /* PBXContainerItemProxy */; }; 2AA010E3221FCB666E0D6123C66594C6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17401,30 +18027,12 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = 553C9E2156C22165A3D5F8E54F781E1E /* PBXContainerItemProxy */; }; - 2CA3FE825C7E41078DC517ACCFEEE07F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-cxxreact"; - target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; - targetProxy = 72FFCE6D24CC5C292B2C863ED19A3550 /* PBXContainerItemProxy */; - }; 2D12D63E9EFDBBACEC8A2C6384D85FD7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTImage"; target = 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */; targetProxy = A6D3FBE192729DD81F271A1FC6DA3AC7 /* PBXContainerItemProxy */; }; - 2D260EA03E351DC1F2717A13C55D8771 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleDataTransport; - target = 5C0371EE948D0357B8EE0E34ABB44BF0 /* GoogleDataTransport */; - targetProxy = 35E83C6752758A15697A5C0764818779 /* PBXContainerItemProxy */; - }; - 2D3137A8BE2479EEB2342FA59C29DBAC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RNFastImage; - target = 0BB7745637E0758DEA373456197090C6 /* RNFastImage */; - targetProxy = 307ABBF2B56D8DE9A4765909763281AA /* PBXContainerItemProxy */; - }; 2D400D296D174E898B4E20125D436B48 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-Core"; @@ -17437,23 +18045,11 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = CAAEE7A21CB80F6BF942643AE53B944E /* PBXContainerItemProxy */; }; - 2F0476764400AD4554B2872A5796AF38 /* PBXTargetDependency */ = { + 2FA001B25090939C76E416AE3BCA3CBD /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-RCTBlob"; - target = 95D98F901D07557EF7CA38D3F03832C5 /* React-RCTBlob */; - targetProxy = B5F1124F98DDA693985714257034E729 /* PBXContainerItemProxy */; - }; - 2F2588736D321292D53D28A37C664F70 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-cxxreact"; - target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; - targetProxy = AA3D617BC33D3300EA85143BA7607626 /* PBXContainerItemProxy */; - }; - 2F6D71221C37CE705E0303BBAF072877 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ReactNativeART; - target = 90148E8FD1C445D7A019D504FA8CBC53 /* ReactNativeART */; - targetProxy = D2EEA6CAF0D8F9AE42037AE2CD98F08C /* PBXContainerItemProxy */; + name = "React-RCTVibration"; + target = 53D121F9F9BB0F8AC1C94A12C5A8572F /* React-RCTVibration */; + targetProxy = DC99F3101657A8431455634311377599 /* PBXContainerItemProxy */; }; 303A329EFE63F98C76E1F88C1909DC69 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17461,11 +18057,23 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = F56EBC18CB64EE0482444624DFEC06A2 /* PBXContainerItemProxy */; }; - 32C240DD6E2BA6E488CEC058017753B2 /* PBXTargetDependency */ = { + 307A50075953D2F46151ACFA52523C57 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = UMFileSystemInterface; - target = 2644525CCE081E967809A8163D893A93 /* UMFileSystemInterface */; - targetProxy = F7197E8A78D91E6D03D445D2B44173AA /* PBXContainerItemProxy */; + name = BugsnagReactNative; + target = 0745200E60DC80C9A0A48B7E6C1518D7 /* BugsnagReactNative */; + targetProxy = BE2090E36386437C614DB6B386D6206A /* PBXContainerItemProxy */; + }; + 31D7553C59D34192E1999597259D474E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ReactCommon; + target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; + targetProxy = B7282A609EFDBCCF6DFE5923B1E9396A /* PBXContainerItemProxy */; + }; + 326D5AF86E1BC28ED8B7F95FB174FBD3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "rn-extensions-share"; + target = A238B7CE3865946D1F214E1FE0023AAE /* rn-extensions-share */; + targetProxy = 53FC24855C50722674F55D40910C81FF /* PBXContainerItemProxy */; }; 330F77DFE2073004CAEAE6D131E54D67 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17473,23 +18081,17 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 1C84D35F43BF9C71C2EEE3812CDC5C8D /* PBXContainerItemProxy */; }; - 33474FF920FAD58FA7B408C423A44FF6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RNAudio; - target = 449C1066B8C16DEDB966DCB632828E44 /* RNAudio */; - targetProxy = E1C421EE796DDA0903F9CAF48DB34D00 /* PBXContainerItemProxy */; - }; 33F5B6A58855F2016450517E03B74C4E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SDWebImageWebPCoder; target = 1953860EA9853AA2BC8022B242F08512 /* SDWebImageWebPCoder */; targetProxy = D466E30F6A7C6BA97286EAE8358F3B63 /* PBXContainerItemProxy */; }; - 3437608C9291EB7895ADE0A3421D016C /* PBXTargetDependency */ = { + 3574436076660220B89F7A70BC6E18FE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-keyboard-tracking-view"; - target = EAB05A8BED2CAC923712E1C584AEB299 /* react-native-keyboard-tracking-view */; - targetProxy = EEEC9DA5A1F7E3749DE71EB47566F9D4 /* PBXContainerItemProxy */; + name = "react-native-jitsi-meet"; + target = D39AB631E8050865DE01F6D5678797D2 /* react-native-jitsi-meet */; + targetProxy = E8E93431DE5B9EDBC4D3B99AA008285F /* PBXContainerItemProxy */; }; 35D5269AD31979BA1B767BBD3ED53885 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17497,11 +18099,17 @@ target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = BF3AAFF64628FD7E9E7A7DD743002FFF /* PBXContainerItemProxy */; }; - 36085484496E1F1EA08F1E85B71F7C28 /* PBXTargetDependency */ = { + 3637B96E016E1D8C797D5900C95270DC /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNBootSplash; - target = 6677891AC2F7AB93E04BFF30B293A46B /* RNBootSplash */; - targetProxy = 8A1B4551FBF8F550985B968E5FB22C8C /* PBXContainerItemProxy */; + name = "react-native-video"; + target = 3E5D106F8D3D591BD871408EEE0CC9FD /* react-native-video */; + targetProxy = 3F4F12258A82B74ED2F57C69A1682A4F /* PBXContainerItemProxy */; + }; + 365771C693DCBDCD5369BEC06B810DEF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleDataTransportCCTSupport; + target = F4F25FCAC51B51FD5F986EB939BF1F87 /* GoogleDataTransportCCTSupport */; + targetProxy = 66CA566BF093B4FA85B1B5D4D953BBDA /* PBXContainerItemProxy */; }; 3739916787D47022FEBE0DBE7FDAC532 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17509,35 +18117,29 @@ target = A30157FD17984D82FB7B26EE61267BE2 /* RSKImageCropper */; targetProxy = AEC8DF6D4B91F6B6CAA5DFE9C52B76F8 /* PBXContainerItemProxy */; }; - 37FB5C7B72D045CAE22C5EAC7812BBD9 /* PBXTargetDependency */ = { + 37DCC867E5A902CD65697945035E655D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleDataTransport; + target = 5C0371EE948D0357B8EE0E34ABB44BF0 /* GoogleDataTransport */; + targetProxy = 4052CAB14C9BD969914BCFD1C7AF2E4E /* PBXContainerItemProxy */; + }; + 381962452DA9C9FA23263A6612D8DEEE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBLazyVector; + target = 8CC4EAA817AA86310D1900F1DAB3580F /* FBLazyVector */; + targetProxy = FFFFC7F87DE0F0FB611CDA28B99CDA78 /* PBXContainerItemProxy */; + }; + 38BC3019059805F862999E3558B4DDFE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTActionSheet"; target = 11989A5E568B3B69655EE0C13DCDA3F9 /* React-RCTActionSheet */; - targetProxy = 519F2E56F6C82B6DBBE5AC50E62CD74B /* PBXContainerItemProxy */; + targetProxy = E41E1BDB69EFAE2ECB46755C2226C822 /* PBXContainerItemProxy */; }; - 3855E27B68ED054E97CACD53FE5CC3B3 /* PBXTargetDependency */ = { + 3B24FE5670637D59DA4BD48EE9C562F0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-CoreModules"; - target = E16E206437995280D349D4B67695C894 /* React-CoreModules */; - targetProxy = 5027C7B0A8DA8D038D576E67EEF5780B /* PBXContainerItemProxy */; - }; - 39AECA7D5FDDBCAFD8346DC3BE44EA8A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RCTRequired; - target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; - targetProxy = 425A35FF1C349923FBC60860170E6F98 /* PBXContainerItemProxy */; - }; - 3B7B8A6ADDE30A50B5EC9020B52473DC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "react-native-appearance"; - target = 3FF2E78BB54ED67CA7FAD8DA2590DBEE /* react-native-appearance */; - targetProxy = 87197B34A43BDFD610E82071C7C49838 /* PBXContainerItemProxy */; - }; - 3B9BE266D61514BB37C80426B55B6B24 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "rn-fetch-blob"; - target = 64F427905796B33B78A704063422979D /* rn-fetch-blob */; - targetProxy = 47450B6D8E3C6D80282F4B95884C03AE /* PBXContainerItemProxy */; + name = EXConstants; + target = 6C1893932A69822CBE3502F2E0BCFB6D /* EXConstants */; + targetProxy = C5E22C1DC17FB96D8D8446E1E3E2CBB0 /* PBXContainerItemProxy */; }; 3BDD26DF1C76A2717767412BFEFD633E /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17545,24 +18147,6 @@ target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; targetProxy = C6318E60C9E68C5F678F7ADDF357AED8 /* PBXContainerItemProxy */; }; - 3BE413762EE83511BEA7FB6A3EBFB944 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = glog; - target = D0EFEFB685D97280256C559792236873 /* glog */; - targetProxy = 18C0E297199B88DF61080C55F0ED5D91 /* PBXContainerItemProxy */; - }; - 3BFB73B008A37B64330C3E1CA3BCAB50 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-Core"; - target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; - targetProxy = 742668A6152D4A35E1CF8DA490FF864D /* PBXContainerItemProxy */; - }; - 3C9ED716278DEDD9C23186BBFBD5EA8C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseInstanceID; - target = 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */; - targetProxy = 3BCA64347C6160D30C274D72A09D9586 /* PBXContainerItemProxy */; - }; 3EC9C41467F00AB41E8790F4AABEC57D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTActionSheet"; @@ -17575,11 +18159,11 @@ target = 014495932E402CA67C37681988047CA2 /* UMFontInterface */; targetProxy = 86FBD5BA95718ED6238A8919F42616C5 /* PBXContainerItemProxy */; }; - 3F4A120C4B846D8E042C2BB83D3FA6B9 /* PBXTargetDependency */ = { + 405971DE6EC14F620353F9ED880AAC0B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = UMBarCodeScannerInterface; - target = 49821C2B9E764AEDF2B35DFE9AA7022F /* UMBarCodeScannerInterface */; - targetProxy = 4E8A822A3AC1F62151AB71510CEE0B28 /* PBXContainerItemProxy */; + name = "react-native-notifications"; + target = CA400829100F0628EC209FBB08347D42 /* react-native-notifications */; + targetProxy = 70C8D8D121922CA292DF26257F5999A6 /* PBXContainerItemProxy */; }; 41013E96A559735139B429989B2F3644 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17587,41 +18171,35 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 3567AD7E2B44760020C17476D70D0A0F /* PBXContainerItemProxy */; }; + 41DEE25658C05A5628083882254FA586 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNDeviceInfo; + target = 807428FE76D80865C9F59F3502600E89 /* RNDeviceInfo */; + targetProxy = EA7D3C9BF70768251AC619FFF3DC5BAD /* PBXContainerItemProxy */; + }; 41FF68034D509FCE39317463A46EE39D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = B40AA08577F30A00FD2A25A08341964A /* PBXContainerItemProxy */; }; - 42B00CA477FD1334EA95BA7C155641BA /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBReactNativeSpec; - target = C3496D0495E700CF08A90C41EA8FA4BB /* FBReactNativeSpec */; - targetProxy = 118016450313151D29E6B9F4BBED8396 /* PBXContainerItemProxy */; - }; - 440373922DE3ED51391E86704C3A38E1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SDWebImageWebPCoder; - target = 1953860EA9853AA2BC8022B242F08512 /* SDWebImageWebPCoder */; - targetProxy = 181FB338D96357AC053FCCF2E154D0BE /* PBXContainerItemProxy */; - }; - 44B70418341831A412F740541F6A534E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = UMImageLoaderInterface; - target = 97C4DE84FA3CC4EC06AA6D8C249949B7 /* UMImageLoaderInterface */; - targetProxy = E349A2357A5D191D2BE6E5DBB91CC053 /* PBXContainerItemProxy */; - }; 4525B78AB9B05D2433479A9579FE333F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; targetProxy = 557407361285FA301951204E241F9CDB /* PBXContainerItemProxy */; }; - 46C96F842145BC8DF79599F0473BE104 /* PBXTargetDependency */ = { + 45DC7BE3A7DCBE4CCA2D7E955A28F755 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-slider"; - target = A4EF87F5681665EAE943D9B06BBB17DF /* react-native-slider */; - targetProxy = 6BE17AD7C555AE1C5F07FCC65FFEEBC3 /* PBXContainerItemProxy */; + name = FirebaseInstanceID; + target = 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */; + targetProxy = 37562607B50897FB3AAA234B8CC037CC /* PBXContainerItemProxy */; + }; + 46A0CF0B3EC9C0345F709D702C0D88C4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "react-native-keyboard-tracking-view"; + target = EAB05A8BED2CAC923712E1C584AEB299 /* react-native-keyboard-tracking-view */; + targetProxy = CE4ABC821438FE01620EA075157CDAD2 /* PBXContainerItemProxy */; }; 48076A1E02117E39C56513D1F085E022 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17629,17 +18207,11 @@ target = 5EB4B0B6DA6D5C0C3365733BEAA1C485 /* FirebaseCoreDiagnosticsInterop */; targetProxy = BFD1349A73D002FF8BADA635DB23EA34 /* PBXContainerItemProxy */; }; - 49292584FA4714589EB951DDC95D69C3 /* PBXTargetDependency */ = { + 48837EC9D5F49AD53AA5143B4F3F02A3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = UMTaskManagerInterface; - target = 50188AAB5FAECCA9583327DBA2B0AF2B /* UMTaskManagerInterface */; - targetProxy = 003661AEAD4E66005C2C91B02B9B709D /* PBXContainerItemProxy */; - }; - 4963BC6B413E9824F3A1069AFE2F132C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RNAudio; - target = 449C1066B8C16DEDB966DCB632828E44 /* RNAudio */; - targetProxy = 63D13802311B32160BD8F47452967D30 /* PBXContainerItemProxy */; + name = FirebaseCoreDiagnostics; + target = 620E05868772C10B4920DC7E324F2C87 /* FirebaseCoreDiagnostics */; + targetProxy = 67DBA14725D781CE21CD917340667E43 /* PBXContainerItemProxy */; }; 49B84289A3B9871A10A133360307483A /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17659,11 +18231,11 @@ target = A4F685BE3CAC127BDCE4E0DBBD88D191 /* Folly */; targetProxy = BB43E3440C83F8BC24E141BE6C01D507 /* PBXContainerItemProxy */; }; - 4B414D99A77D84E4640E1F400E100000 /* PBXTargetDependency */ = { + 4A2A06BAACA010C027AC499C459031AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNBootSplash; - target = 6677891AC2F7AB93E04BFF30B293A46B /* RNBootSplash */; - targetProxy = 87802E74B4233E83A705E90C847E767D /* PBXContainerItemProxy */; + name = RNVectorIcons; + target = 96150F524B245896B800F84F369A9A5A /* RNVectorIcons */; + targetProxy = 33023E1C4E6C76195C27F42572686F64 /* PBXContainerItemProxy */; }; 4B7CF4BCE880915A07A1011FB01F4A55 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17671,17 +18243,17 @@ target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; targetProxy = D59A73644A58ECC04E1987DB3C8A1BC6 /* PBXContainerItemProxy */; }; - 4C1CAF066A1C63D9AE10FE61A12BDAD9 /* PBXTargetDependency */ = { + 4DE0706D1EBCABE711CD8DE5A63972A5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-document-picker"; - target = D11E74324175FE5B0E78DB046527F233 /* react-native-document-picker */; - targetProxy = 73CE57915F8A37491D19934C8E3E3376 /* PBXContainerItemProxy */; + name = Folly; + target = A4F685BE3CAC127BDCE4E0DBBD88D191 /* Folly */; + targetProxy = 62A3D4CB40B5239F302231D9BBD6A514 /* PBXContainerItemProxy */; }; - 4C94FE8C8754C0A24982810B09EA4912 /* PBXTargetDependency */ = { + 4E56341E28C82F15F0B1EC1D7355E1E5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-jitsi-meet"; - target = D39AB631E8050865DE01F6D5678797D2 /* react-native-jitsi-meet */; - targetProxy = 269E3E717CF09543FA138376C554E3F1 /* PBXContainerItemProxy */; + name = "React-jsi"; + target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; + targetProxy = 72BA40B770DA5833CCF0311FC19A9669 /* PBXContainerItemProxy */; }; 4E7A54EBDEED5E1498EB0028BFC71740 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17701,12 +18273,30 @@ target = 2644525CCE081E967809A8163D893A93 /* UMFileSystemInterface */; targetProxy = 013C8C712E31279FB89EBADB1C1A4BC4 /* PBXContainerItemProxy */; }; + 4FB8CFF5E3C2CC6AA73D308797232A07 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "React-RCTText"; + target = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6 /* React-RCTText */; + targetProxy = D2643CB9524A1210AE8EEF1CC7906CEF /* PBXContainerItemProxy */; + }; + 5084B0B3BE172437E7C9E15E3DFB30B8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Yoga; + target = 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */; + targetProxy = FEDE355BE55AE0B28F9D8D78AB28012E /* PBXContainerItemProxy */; + }; 5195D675E015DEB9B99885FE0B15AAFF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = A33043B018A8D3B28DA9124A1579E13A /* PBXContainerItemProxy */; }; + 524F27D0B33EF1FDFD74DCB96846B7A9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = D88726238C500FF73BA8C26C24D566C2 /* PBXContainerItemProxy */; + }; 52ED0D1D4CE538BBA93169D2D44FFFF0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTImage"; @@ -17719,35 +18309,41 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 8F8D97FDA93DF806279F1C90D2E34F62 /* PBXContainerItemProxy */; }; - 54A402E9AF412294F66474616291D028 /* PBXTargetDependency */ = { + 5419D32B223ADBF8400A62E9CD690E7D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = UMFaceDetectorInterface; - target = 2AD4F40E67E1874A0816F6B34289EB41 /* UMFaceDetectorInterface */; - targetProxy = ECA29CD1CAAD5B626BAA69A224B592F3 /* PBXContainerItemProxy */; + name = UMCore; + target = DBCB1B4965863DDD3B9DED9A0918A526 /* UMCore */; + targetProxy = B8CF4EBFD4A2B827944CCD5956A3D815 /* PBXContainerItemProxy */; }; - 553925F91AEB7A8E2E61A76C5AF9D7CE /* PBXTargetDependency */ = { + 5442F8F2BDBC8AC54D88CF67B0A6EF72 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleUtilities; + target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; + targetProxy = 878C9C18439BE6DA5F4652C3D8CC13AA /* PBXContainerItemProxy */; + }; + 5669FFC77ABAAF0D35E37E3ADEEA8229 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "React-RCTLinking"; + target = 6FE9147F8AAA4DE676C190F680F47AE2 /* React-RCTLinking */; + targetProxy = 7F6BCE1FCB2DA325D8B2F8D14FD0C377 /* PBXContainerItemProxy */; + }; + 567ADEE3136A6367024C6D34AEBB40E1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Firebase; + target = 072CEA044D2EF26F03496D5996BBF59F /* Firebase */; + targetProxy = 58360103A4685F1FC533E6975ECE3A1A /* PBXContainerItemProxy */; + }; + 569350DB3DA3F24CA986142520132E4D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseCoreDiagnosticsInterop; + target = 5EB4B0B6DA6D5C0C3365733BEAA1C485 /* FirebaseCoreDiagnosticsInterop */; + targetProxy = 624D5463A171605B3F0B27633E665AEE /* PBXContainerItemProxy */; + }; + 5924D847641E3D79FD6103D481F9E03B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Crashlytics; target = C0E41540D6862472ED7F2FA11669BE1F /* Crashlytics */; - targetProxy = F43325096A500828490E85360829798B /* PBXContainerItemProxy */; - }; - 55722A81772D06EF32AFA39E8EB2954B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-RCTImage"; - target = 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */; - targetProxy = 3C16780A980340108ED15E3B431DF62B /* PBXContainerItemProxy */; - }; - 56C0FD2808D49993FDE48614FB3978A7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Yoga; - target = 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */; - targetProxy = AE0E1CA44BD2181F02740B57829BAD7B /* PBXContainerItemProxy */; - }; - 57548C50D5585146B371B90476FBC33B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseAnalytics; - target = C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */; - targetProxy = 4936892D09C4323AC6969A3CBC57E9AC /* PBXContainerItemProxy */; + targetProxy = EEF09367EDBBB6D281BF444445784F90 /* PBXContainerItemProxy */; }; 593EED89BEA0A6FAB5FB78DAF42A92C3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17755,65 +18351,17 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = 592671C6C3F74111AF89BE688E45B730 /* PBXContainerItemProxy */; }; - 5BD0CD31D415E100348CC082A961047D /* PBXTargetDependency */ = { + 5C65F78E7A8780899CB2766715593159 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-slider"; - target = A4EF87F5681665EAE943D9B06BBB17DF /* react-native-slider */; - targetProxy = 8D166E6DC97E66ECE4E146F8606FDF64 /* PBXContainerItemProxy */; + name = "React-jsiexecutor"; + target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; + targetProxy = 64B59A3FC9646E9AB5AAA4526335D35A /* PBXContainerItemProxy */; }; - 5C4A8EC38916A46D8BF78D6B92C27C21 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RNDateTimePicker; - target = D760AF58E12ABBB51F84160FB02B5F39 /* RNDateTimePicker */; - targetProxy = FD6ECC61BA8F1EE2ED5B3BBDD73C7E70 /* PBXContainerItemProxy */; - }; - 5C8416A73FC4A6B9DABDA16AC7707F96 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = libwebp; - target = 47D2E85A78C25869BB13521D8561A638 /* libwebp */; - targetProxy = 7BCA53A464C3341E7A7D4AE499BBCE86 /* PBXContainerItemProxy */; - }; - 5CD0970A463CFF7339CC303F6B7A9441 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "react-native-cameraroll"; - target = BA3F5E5AA483B263B69601DE2FA269CB /* react-native-cameraroll */; - targetProxy = 4B1239845E12FE3A6B2DCCA12A519B10 /* PBXContainerItemProxy */; - }; - 5D5157C9A2C581A8AD4940BBC4511807 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = nanopb; - target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; - targetProxy = AA683DBA0B2F417BE4B830F44E78DAE9 /* PBXContainerItemProxy */; - }; - 5EB6726044F264774D1E46B53F1A2794 /* PBXTargetDependency */ = { + 5DF1983A7BE4A9D95DD88E3286F62503 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTBlob"; target = 95D98F901D07557EF7CA38D3F03832C5 /* React-RCTBlob */; - targetProxy = 59C6F419D816DC8DE859BF6E48A82937 /* PBXContainerItemProxy */; - }; - 600648DBE3C7E0BF44794CDED2F25C5C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = glog; - target = D0EFEFB685D97280256C559792236873 /* glog */; - targetProxy = C345B49DF1FD64A2511E8ADFB302CDD9 /* PBXContainerItemProxy */; - }; - 602A3B014BDD6E297A8B17F44B7DC030 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseAnalytics; - target = C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */; - targetProxy = 2DFAC70FFB58083A50BFD74B8CBF7CB0 /* PBXContainerItemProxy */; - }; - 602A410A05BA0E628C8FDF85179F4FDF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = UMPermissionsInterface; - target = F7845084F0CF03F54107EEF7411760AD /* UMPermissionsInterface */; - targetProxy = 83885E57E5842582AE0EBE125C789C86 /* PBXContainerItemProxy */; - }; - 60B99BFA0813458750AA90079166DEB0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = React; - target = 1BEE828C124E6416179B904A9F66D794 /* React */; - targetProxy = 8D5515BBE0F7514C77BE5CBE42628BE0 /* PBXContainerItemProxy */; + targetProxy = 2780BD4584CC03A2C6BCC1EAC4906996 /* PBXContainerItemProxy */; }; 6142C90C7067738802070DBD12BAA802 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17821,23 +18369,17 @@ target = A4F685BE3CAC127BDCE4E0DBBD88D191 /* Folly */; targetProxy = 34B556DF76EB14506DA19B1213547A54 /* PBXContainerItemProxy */; }; - 636D75672D7EDB2A118132A5A9EA1C7E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = UMReactNativeAdapter; - target = 897EF6A99176326E24F51E2F2103828C /* UMReactNativeAdapter */; - targetProxy = B5F526CAA3A7B86FC6219266D5CDBAA8 /* PBXContainerItemProxy */; - }; 6395E3254FF15C5334B441B2D03EFBCE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTNetwork"; target = 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */; targetProxy = 9999A457A3E364808C9E122EC64D955D /* PBXContainerItemProxy */; }; - 6416253C00B453FBF72529B4E21F1032 /* PBXTargetDependency */ = { + 63AAD1D3E0C939FC658C240C51CD89E9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = KeyCommands; - target = 7F591BD8674041AAAA4F37DC699B5518 /* KeyCommands */; - targetProxy = 40722E20ED16E33A140CF7C78FC8B72A /* PBXContainerItemProxy */; + name = "react-native-orientation-locker"; + target = 1092C13E1E1172209537C28D0C8D4D3C /* react-native-orientation-locker */; + targetProxy = EEE33F6558983BA2DF282DB4EE7B037C /* PBXContainerItemProxy */; }; 648641E197156F9497402698E7616999 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17845,6 +18387,18 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = EF797B6066E1025B5FD8590A476CD8DC /* PBXContainerItemProxy */; }; + 64DA79C0FB317AFAA76377BD3C76FBC2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RCTTypeSafety; + target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; + targetProxy = A147073881083F49FD1D27AB0EF1D20A /* PBXContainerItemProxy */; + }; + 64FB953B554F718A1E33CAECEA0BFC30 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseCoreDiagnostics; + target = 620E05868772C10B4920DC7E324F2C87 /* FirebaseCoreDiagnostics */; + targetProxy = AFC01BDE55EA519A6DEABC2001C4CFBC /* PBXContainerItemProxy */; + }; 659CE20F5F8A4FDAFAC33456B26AD2CC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SDWebImage; @@ -17857,23 +18411,17 @@ target = A4F685BE3CAC127BDCE4E0DBBD88D191 /* Folly */; targetProxy = E8FD7532463B0528F9CE61138294EC2E /* PBXContainerItemProxy */; }; - 66FAA0B04C9E851DBA408F4A549DBCEF /* PBXTargetDependency */ = { + 67A599BAE4124D75F84EDFB374C07387 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNFirebase; - target = A83ECDA5673771FA0BA282EBF729692B /* RNFirebase */; - targetProxy = E6AA76FB869511C87C0F59AB5D2E0711 /* PBXContainerItemProxy */; + name = "React-RCTVibration"; + target = 53D121F9F9BB0F8AC1C94A12C5A8572F /* React-RCTVibration */; + targetProxy = 0D54CC8FA15B8E03ED01ED73B9D48C5F /* PBXContainerItemProxy */; }; - 673BC7E7C3BF7B75DB54F25C5582DA88 /* PBXTargetDependency */ = { + 684D5D501940DC984F5CB0F6A8D9FE7F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = KeyCommands; - target = 7F591BD8674041AAAA4F37DC699B5518 /* KeyCommands */; - targetProxy = 78168902AF542C6B44CAADD59C45B2B9 /* PBXContainerItemProxy */; - }; - 6859D3F255AD22269FFF0E22E9236BAC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Firebase; - target = 072CEA044D2EF26F03496D5996BBF59F /* Firebase */; - targetProxy = 9340DA83B0AFC57D4B646B1D26FA2D4E /* PBXContainerItemProxy */; + name = RNLocalize; + target = B51433D546A38C51AA781F192E8836F8 /* RNLocalize */; + targetProxy = 1FE0D22DE8F2CC26E4B8CDC4387197BD /* PBXContainerItemProxy */; }; 687C7745B0C9D33906DF6031B3231B04 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17887,23 +18435,59 @@ target = 47D2E85A78C25869BB13521D8561A638 /* libwebp */; targetProxy = A7E5D397C11338DEED5E896EF959836C /* PBXContainerItemProxy */; }; - 6B02748F14AD08615F8C678A24075364 /* PBXTargetDependency */ = { + 690F2CF3E501110ADEA7F28179380845 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-RCTImage"; - target = 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */; - targetProxy = 3DB931A9B45692A33690F47416BD6AB8 /* PBXContainerItemProxy */; + name = "react-native-keyboard-tracking-view"; + target = EAB05A8BED2CAC923712E1C584AEB299 /* react-native-keyboard-tracking-view */; + targetProxy = 664305143120C85CB1EC5CBECA113FCE /* PBXContainerItemProxy */; }; - 6CA9EA87831BC93427DE6C3AA76C0656 /* PBXTargetDependency */ = { + 69FDA99B2C0F01023DB92BDB7AB2DB14 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-RCTLinking"; - target = 6FE9147F8AAA4DE676C190F680F47AE2 /* React-RCTLinking */; - targetProxy = CD7D7CE64221D2F810D53644B5CD9D72 /* PBXContainerItemProxy */; + name = nanopb; + target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; + targetProxy = E30B30DBDE7D0505AEE79AB60046A622 /* PBXContainerItemProxy */; }; - 6CC2B6F28019D16BF0C4466A1B124A97 /* PBXTargetDependency */ = { + 6A247D303543EB094BAC2F0869DED5FE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCore; - target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; - targetProxy = 70506A22AE25BDD58151B717B0F4C22F /* PBXContainerItemProxy */; + name = EXWebBrowser; + target = 9EB556EE511D43F3D5D7AAF51D8D0397 /* EXWebBrowser */; + targetProxy = 0C90C8D0F39ECF21895651A8C5C85335 /* PBXContainerItemProxy */; + }; + 6AC6BE62F45C5A349953D87D6DB3C545 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = PromisesObjC; + target = 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */; + targetProxy = DA72BD0D2ED3CB12079CDD61E7D8396D /* PBXContainerItemProxy */; + }; + 6B2725F2B8B17E159ABD2335975869FA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ReactNativeART; + target = 90148E8FD1C445D7A019D504FA8CBC53 /* ReactNativeART */; + targetProxy = 85155193C1E80D9813179026CB73182C /* PBXContainerItemProxy */; + }; + 6B394379395FF8C1978CB850D952545A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = UMPermissionsInterface; + target = F7845084F0CF03F54107EEF7411760AD /* UMPermissionsInterface */; + targetProxy = 84CC847608D716DF5F58801CA1B69006 /* PBXContainerItemProxy */; + }; + 6BB29B611B6F416DD736FBC7E2F47D8D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RSKImageCropper; + target = A30157FD17984D82FB7B26EE61267BE2 /* RSKImageCropper */; + targetProxy = 34B899E191E550D8A27D0EAFE85C00A6 /* PBXContainerItemProxy */; + }; + 6BFCF0F68DFACC9F38F562CBA1DE7F1B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Fabric; + target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; + targetProxy = C505646291F935A38C2D95467150C6BF /* PBXContainerItemProxy */; + }; + 6D17125CA558076F3EB2730C92E8F849 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = UMTaskManagerInterface; + target = 50188AAB5FAECCA9583327DBA2B0AF2B /* UMTaskManagerInterface */; + targetProxy = C41DCD630A1F9D1CED739BD7F7413D5D /* PBXContainerItemProxy */; }; 6D8C00952B65F5BD4F322D959F307D80 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17911,29 +18495,47 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = D9E3EDC835FCF7086651DEA02BD80CC6 /* PBXContainerItemProxy */; }; - 6F3376FE38F78EF35862053882A41586 /* PBXTargetDependency */ = { + 6DE67BBCC2004F44063308C0ECC26D11 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = BugsnagReactNative; - target = 0745200E60DC80C9A0A48B7E6C1518D7 /* BugsnagReactNative */; - targetProxy = AC9BCF22ABC537CD2D90BD3E179BFC83 /* PBXContainerItemProxy */; + name = ReactCommon; + target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; + targetProxy = 4A09F92DF3D7CFFABAD97A7AC61BF36F /* PBXContainerItemProxy */; }; - 6F7CF6F5CED7CDF369F09FEF90C8DAEA /* PBXTargetDependency */ = { + 6E3094A3142A3C6F5498971075430716 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNFastImage; - target = 0BB7745637E0758DEA373456197090C6 /* RNFastImage */; - targetProxy = 1C0D4EDE54700E03EE76BD4564618F44 /* PBXContainerItemProxy */; + name = FirebaseCoreDiagnosticsInterop; + target = 5EB4B0B6DA6D5C0C3365733BEAA1C485 /* FirebaseCoreDiagnosticsInterop */; + targetProxy = 832315DA7CF7E5E93C27A1A2AC92539D /* PBXContainerItemProxy */; }; - 706023807B9D8AFA9F701E3D9B4D1416 /* PBXTargetDependency */ = { + 6E32138F3CB5B8FEAE595EA4F7BF0157 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = libwebp; - target = 47D2E85A78C25869BB13521D8561A638 /* libwebp */; - targetProxy = B3BD5672FE1CCAABCE599CB125843D13 /* PBXContainerItemProxy */; + name = RNRootView; + target = 18B56DB36E1F066C927E49DBAE590128 /* RNRootView */; + targetProxy = 34945DBE51A7FFBE83F1A909BA9BBCD4 /* PBXContainerItemProxy */; }; - 7112A6A9028559EB53609FF2A2C18B7E /* PBXTargetDependency */ = { + 6E593646896C853FC8EDB587443144BF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SDWebImage; - target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; - targetProxy = 6A594DC7B924CE27B59981A75BF166DB /* PBXContainerItemProxy */; + name = Crashlytics; + target = C0E41540D6862472ED7F2FA11669BE1F /* Crashlytics */; + targetProxy = 8682ED8EA82D197A9F6CB758340ABF9E /* PBXContainerItemProxy */; + }; + 701A80055A55103E7EFEC4F83300EA06 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Fabric; + target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; + targetProxy = 289A08A83D21C8D9229C70B1C32B13AC /* PBXContainerItemProxy */; + }; + 7069BD3E43906D78A2C2A41CADAB0974 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBReactNativeSpec; + target = C3496D0495E700CF08A90C41EA8FA4BB /* FBReactNativeSpec */; + targetProxy = C87BDB856B76B718B524ACCDA9889FED /* PBXContainerItemProxy */; + }; + 712C238E87A4A55B2C12C9C6B9788C48 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "rn-fetch-blob"; + target = 64F427905796B33B78A704063422979D /* rn-fetch-blob */; + targetProxy = 013EDC54FCA487BBAA6C48CDC97113A2 /* PBXContainerItemProxy */; }; 7256F46E80FAF060C9B45570D9CDD063 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17941,6 +18543,12 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 9EEE23D6519FCEE6884F6DF117317D7A /* PBXContainerItemProxy */; }; + 72A85A37787F6E23105BF02E813A4602 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNGestureHandler; + target = B9E8F4CA2A4A8599389FEB665A9B96FF /* RNGestureHandler */; + targetProxy = F5F7CB4B73527CAE5938631602CC182F /* PBXContainerItemProxy */; + }; 72B059030824F625CF2C5364414F81B4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; @@ -17953,11 +18561,11 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = FC21EA40C24BBDB20C2BE4568BC0017C /* PBXContainerItemProxy */; }; - 769025D7B3F14F33EEE05E0A156A96F4 /* PBXTargetDependency */ = { + 777C61721A7AF46C5FA6FD015A73949C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Crashlytics; - target = C0E41540D6862472ED7F2FA11669BE1F /* Crashlytics */; - targetProxy = B31A35FC99432556A392CA1D2ED5C27A /* PBXContainerItemProxy */; + name = "React-RCTLinking"; + target = 6FE9147F8AAA4DE676C190F680F47AE2 /* React-RCTLinking */; + targetProxy = 2CD0E8A1AA347D1C3EDBCE86CCD40E82 /* PBXContainerItemProxy */; }; 7818A97BE9882F05F0EE52CA3FB7ABEA /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17971,11 +18579,11 @@ target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; targetProxy = 386C0EB352726BA92F7F015C2FB264EF /* PBXContainerItemProxy */; }; - 79F60B75C63F6AC459C733796895B621 /* PBXTargetDependency */ = { + 78C3E049647A441330DCCD8089408D2B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNReanimated; - target = FF879E718031128A75E7DE54046E6219 /* RNReanimated */; - targetProxy = C7DE1803713B58CB919CE3EB04543743 /* PBXContainerItemProxy */; + name = "react-native-webview"; + target = 8D18C49071FC5370C25F5758A85BA5F6 /* react-native-webview */; + targetProxy = 8B7A5156DF566192088634AF35396110 /* PBXContainerItemProxy */; }; 7AEC0D15EF11C1415A94D769184AD812 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -17989,29 +18597,59 @@ target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; targetProxy = 53E2A1BD19729C2293AB46582C686251 /* PBXContainerItemProxy */; }; + 7B02650CB9C93F58B9C3465A2CD904E6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNUserDefaults; + target = 4D67CFB913D9C3BE37252D50364CD990 /* RNUserDefaults */; + targetProxy = 01FFD3CB91B418CC5113D5E39E3FF816 /* PBXContainerItemProxy */; + }; + 7B5B1CAA45FD7BF119DC4F3D415B654B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNBootSplash; + target = 6677891AC2F7AB93E04BFF30B293A46B /* RNBootSplash */; + targetProxy = 3003CE0CFABA4E201818060DE26E35D6 /* PBXContainerItemProxy */; + }; 7DCE32D473F4F7CC77F17725D7C937C1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = 882BEE9E8FCF0A6BD665F01DFBEF822B /* PBXContainerItemProxy */; }; - 7EF584C5A0F119F8B6D1148BECD6B312 /* PBXTargetDependency */ = { + 7E2FAD63D2F1952CA735617580C72668 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseInstanceID; + target = 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */; + targetProxy = 6873AED1169D89D27AA52E2D17A63F02 /* PBXContainerItemProxy */; + }; + 7F44AD9A201C847D3FE1080BA518D04A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseInstallations; + target = 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */; + targetProxy = EF787EA911D9CC51792C94E6D8217C84 /* PBXContainerItemProxy */; + }; + 7F98DCB6662CAF61274744FB990B1EE0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "React-cxxreact"; + target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; + targetProxy = F774E1A51F551C12EEFE2335EE12B43C /* PBXContainerItemProxy */; + }; + 80E39326DAF03630566E6F04B988F5C4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "react-native-video"; target = 3E5D106F8D3D591BD871408EEE0CC9FD /* react-native-video */; - targetProxy = C8F31F27E885C7BF0CB0536D87A79750 /* PBXContainerItemProxy */; + targetProxy = 66882DD906C9CBF33A822B0F489B5493 /* PBXContainerItemProxy */; }; - 804F52E3C5D01279D23793D6D35F33F2 /* PBXTargetDependency */ = { + 8222B5B05CA21806207A408DB3B90E0E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = React; - target = 1BEE828C124E6416179B904A9F66D794 /* React */; - targetProxy = 0C15209CA320BC1EEA1AFD2ECE80B1E7 /* PBXContainerItemProxy */; + name = RNAudio; + target = 449C1066B8C16DEDB966DCB632828E44 /* RNAudio */; + targetProxy = 44753E3EBCF35182E49DBD8BB2D0B7F4 /* PBXContainerItemProxy */; }; - 8200679C831FBE1892B07E11AE2EA39C /* PBXTargetDependency */ = { + 8225282040A0A860898C20E90CF47878 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RCTTypeSafety; - target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; - targetProxy = 952D8D95F99846648150A4D15014D3F0 /* PBXContainerItemProxy */; + name = "React-RCTAnimation"; + target = 938CCE22F6C4094B3FB6CF1478579E4B /* React-RCTAnimation */; + targetProxy = 2AF0B10DBE76D0FEE52E5C20C9D9D14E /* PBXContainerItemProxy */; }; 82DE4A10C611155EAA73BA712DF1D258 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18019,18 +18657,6 @@ target = 5EB4B0B6DA6D5C0C3365733BEAA1C485 /* FirebaseCoreDiagnosticsInterop */; targetProxy = 729C920815C311E1D586861019E10612 /* PBXContainerItemProxy */; }; - 8366E560B08CA4D7D3FA57FBDA61B9EF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "react-native-background-timer"; - target = 6514D69CB93B41626AE1A05581F97B07 /* react-native-background-timer */; - targetProxy = 29C8498BA9401C29DCEB36F24BA3D821 /* PBXContainerItemProxy */; - }; - 83FA8E780BF466A0524C15E80F4CF6A0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = JitsiMeetSDK; - target = 5B40FBDAD0AB75D17C4760F4054BFF71 /* JitsiMeetSDK */; - targetProxy = 4470DF690078CCCFC5A0E26F8E95B5C8 /* PBXContainerItemProxy */; - }; 8428EE18A7782DDB4023470F96AFF628 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; @@ -18049,17 +18675,11 @@ target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; targetProxy = F11BC96676F5675A20A8EEF5971E90CC /* PBXContainerItemProxy */; }; - 86EABBDBC7F0FE84DFA9434BDA78DE40 /* PBXTargetDependency */ = { + 8641D87D24B973C225A85E11DDB59FAB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "rn-fetch-blob"; - target = 64F427905796B33B78A704063422979D /* rn-fetch-blob */; - targetProxy = 444BCD6C8D99EC76E2B7CA594F0CDDEE /* PBXContainerItemProxy */; - }; - 8782AAA74C904CCE255C72ECF206E1C6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleDataTransportCCTSupport; - target = F4F25FCAC51B51FD5F986EB939BF1F87 /* GoogleDataTransportCCTSupport */; - targetProxy = 71E5C85C32D32F1F04C800D5A703C49A /* PBXContainerItemProxy */; + name = FirebaseAnalytics; + target = C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */; + targetProxy = B23F32F8A9D5B42A97CA1716E450157C /* PBXContainerItemProxy */; }; 87AEF2C8DFA51306ED9C9AB1DE0F546C /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18067,48 +18687,30 @@ target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; targetProxy = 74C2CAAD882619C327EBDCCC07631937 /* PBXContainerItemProxy */; }; + 87B668CA7AFE25BBDCD382B4B1747560 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Yoga; + target = 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */; + targetProxy = 702C6F3D5E323B675431CD28EE281130 /* PBXContainerItemProxy */; + }; + 87CF0EBD1522704B60F2E5362406733B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = React; + target = 1BEE828C124E6416179B904A9F66D794 /* React */; + targetProxy = 3B1E2FFD930C86F3A634F797B87CDDE6 /* PBXContainerItemProxy */; + }; 87F4EB768B2F51A0598DEB9AE9C17D34 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-cxxreact"; target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = 0A0B4D127A91E77DB469579CC4FF0F57 /* PBXContainerItemProxy */; }; - 882AF2998070216BFFC6AC351A6D93BA /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ReactCommon; - target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; - targetProxy = 4615FE0733428BB0AA78E2EFE9089DE0 /* PBXContainerItemProxy */; - }; 8836577855B2A402BB8083E2178254B8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Yoga; target = 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */; targetProxy = A3B47DA7FB5AF667B2756DAC549D2642 /* PBXContainerItemProxy */; }; - 8914A57E010383BA1DDE7FA5DED0BDF7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "react-native-jitsi-meet"; - target = D39AB631E8050865DE01F6D5678797D2 /* react-native-jitsi-meet */; - targetProxy = 52C37EC013797E043C65843C8114B04B /* PBXContainerItemProxy */; - }; - 8916AF5D9DC74DCC24D01E0AC9F6B9D3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "react-native-webview"; - target = 8D18C49071FC5370C25F5758A85BA5F6 /* react-native-webview */; - targetProxy = 5B62530741BD5714CD56AF19839463F3 /* PBXContainerItemProxy */; - }; - 8A0A19CCCF567EC157D575B96BB29900 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = UMConstantsInterface; - target = 9668C19AA6D8EA320F83875FA286855A /* UMConstantsInterface */; - targetProxy = A354CF663E4D8E78CD93FD1AD483AC9D /* PBXContainerItemProxy */; - }; - 8A443DC599AB6CFC8ABA5EE01E0B814B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RCTTypeSafety; - target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; - targetProxy = 1D8EDBE4862F1172B067616AE92BC536 /* PBXContainerItemProxy */; - }; 8B45BA9683C0AE1D7149D313D4FDC461 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; @@ -18121,53 +18723,47 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = DE8F7B6EA7B1B017A43DEDEAA9020A16 /* PBXContainerItemProxy */; }; - 8D897ADFD6021B4EA62E54C64B55BFEA /* PBXTargetDependency */ = { + 8D706717DE728815B0C9AC034B755724 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "react-native-notifications"; + target = CA400829100F0628EC209FBB08347D42 /* react-native-notifications */; + targetProxy = DC97CA5A0D849C16C17794940DD654A9 /* PBXContainerItemProxy */; + }; + 8DF9368FA5258A12D212264468F877D4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = PromisesObjC; + target = 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */; + targetProxy = E774AD6370868E7B014EC5EB08A69899 /* PBXContainerItemProxy */; + }; + 8E28654EFB3A21C5BD2EB260AA4E37E1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleDataTransportCCTSupport; + target = F4F25FCAC51B51FD5F986EB939BF1F87 /* GoogleDataTransportCCTSupport */; + targetProxy = FE5765B5CF3FE2FE6F0DBAF05B9565AE /* PBXContainerItemProxy */; + }; + 8FA1F0E6CD5F9864FED98F6984A2F998 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseAnalytics; + target = C49E7A4D59E5C8BE8DE9FB1EFB150185 /* FirebaseAnalytics */; + targetProxy = 6780FCC3E3B1FB8609F422FACA1C15D8 /* PBXContainerItemProxy */; + }; + 9296ACB615A242C598BD5B8651C60E56 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = BugsnagReactNative; target = 0745200E60DC80C9A0A48B7E6C1518D7 /* BugsnagReactNative */; - targetProxy = E9B7DE6782CB1AFA824686CE3F5E6244 /* PBXContainerItemProxy */; + targetProxy = D224D3EBA87061A216C2971F45AA7EBD /* PBXContainerItemProxy */; }; - 8F7B66F2FFA247D753A8C50116021AB0 /* PBXTargetDependency */ = { + 93758C4B0D549F9D1531B7A242E150A6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-keyboard-input"; - target = 7573B71C21FB5F78D28A1F4A184A6057 /* react-native-keyboard-input */; - targetProxy = 8CD02B7BC7B52B650E994D6784D8F231 /* PBXContainerItemProxy */; + name = "React-RCTBlob"; + target = 95D98F901D07557EF7CA38D3F03832C5 /* React-RCTBlob */; + targetProxy = B18F531D8621BA8DA9400B26175750BE /* PBXContainerItemProxy */; }; - 92204B75DCBDF5FDB01B418E6F754B05 /* PBXTargetDependency */ = { + 941C1B18F4AAB8DF66B054A5E0B46C45 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Folly; - target = A4F685BE3CAC127BDCE4E0DBBD88D191 /* Folly */; - targetProxy = 8BF89A917095D5157744CA3A3DDF0694 /* PBXContainerItemProxy */; - }; - 923E1C81DE5990D401E7CAE78D7742E0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FBLazyVector; - target = 8CC4EAA817AA86310D1900F1DAB3580F /* FBLazyVector */; - targetProxy = 07CB207984DC219C24E538EC07BECE67 /* PBXContainerItemProxy */; - }; - 92A3267C8C229EC3A9ECA570B3E25722 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SDWebImage; - target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; - targetProxy = 3AB947A007E4632E142CA898AB5D7D56 /* PBXContainerItemProxy */; - }; - 931244338C030B9998E9C1E705961787 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = EXPermissions; - target = 0A72FB88825FDC7D301C9DD1F8F96824 /* EXPermissions */; - targetProxy = F50AB6D44713FB32A3096F258E5D75F7 /* PBXContainerItemProxy */; - }; - 9318AE6F3320E09BDE3141091FFF5A8D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = UMSensorsInterface; - target = 2038C6F97563AAD6162C284B3EDD5B3B /* UMSensorsInterface */; - targetProxy = E7F8B63B1F9D0C488BDB4D00E7E4849C /* PBXContainerItemProxy */; - }; - 935C417CF2404560123EBE35FA4351D3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-RCTNetwork"; - target = 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */; - targetProxy = 09D593C9AC48DFD729A196FCE6B75766 /* PBXContainerItemProxy */; + name = glog; + target = D0EFEFB685D97280256C559792236873 /* glog */; + targetProxy = ECB0846A8D8B0BEE23EE31A925213C3A /* PBXContainerItemProxy */; }; 943D3BD4A6984BC783E7677F30722A02 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18175,23 +18771,23 @@ target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = 46C8DE13FECE137E1DF29D2657A15C93 /* PBXContainerItemProxy */; }; - 944F08C02FCB51881D75976127A7303E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleUtilities; - target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = C9C871423DD699DA51012B83751B6E82 /* PBXContainerItemProxy */; - }; 945F4CADF65ED07B6D298CB9886846F3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTAnimation"; target = 938CCE22F6C4094B3FB6CF1478579E4B /* React-RCTAnimation */; targetProxy = 4081F7E82AA90518127218043568BD4D /* PBXContainerItemProxy */; }; - 964109AE196A6851276DB5C43F1E3DA6 /* PBXTargetDependency */ = { + 95B3AC8755412D4F14AE552C0D021574 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "boost-for-react-native"; - target = ED2506AE7DE35D654F61254441EA7155 /* boost-for-react-native */; - targetProxy = F17B4995C520DE461541A03295BDE1EB /* PBXContainerItemProxy */; + name = "react-native-document-picker"; + target = D11E74324175FE5B0E78DB046527F233 /* react-native-document-picker */; + targetProxy = 3A87B12C316BC1DE6A35D15571BD605F /* PBXContainerItemProxy */; + }; + 96223EBAFF1A97E77F70B672C1DD807F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNFastImage; + target = 0BB7745637E0758DEA373456197090C6 /* RNFastImage */; + targetProxy = F9D5F40BCFDFFDC398817338196D7F89 /* PBXContainerItemProxy */; }; 966429256B271DD0F30E2FA25D97B79D /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18199,17 +18795,47 @@ target = 680299219D3A48D42A648AF6706275A9 /* React-RCTSettings */; targetProxy = 7C309567C8843AC36F40EF4B09960A84 /* PBXContainerItemProxy */; }; + 96D8CB2606D1A94329513147741A5F5C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNReanimated; + target = FF879E718031128A75E7DE54046E6219 /* RNReanimated */; + targetProxy = DC69EFAC97D08F5155E0388E1B3F93A0 /* PBXContainerItemProxy */; + }; 96DA387B98978C2974700F14ACFDEBCE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = UMCore; target = DBCB1B4965863DDD3B9DED9A0918A526 /* UMCore */; targetProxy = 8075D3C81C368FF63B92A7E7DC84BF6B /* PBXContainerItemProxy */; }; - 9896A1AF3453162EB7EB29D194F06233 /* PBXTargetDependency */ = { + 9738C7788A6337F27A9081DB26F08390 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = EXFileSystem; + target = 868B90C74770285449C60DBA82181479 /* EXFileSystem */; + targetProxy = B100F3AFC9E26915D8609B061037AA9B /* PBXContainerItemProxy */; + }; + 97C3DCF6215BD4F79AD7B1DF3F1CA1F3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "React-jsi"; + target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; + targetProxy = CB8A7E990CD7E856B8CADD28DC191F90 /* PBXContainerItemProxy */; + }; + 97C86E60424DAE6AAB23B32BB1B0DAB8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleUtilities; target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; - targetProxy = 671DF5E465C47266E89D2307072898C5 /* PBXContainerItemProxy */; + targetProxy = 651F05EC0CBAA42D2F76B418000D2F50 /* PBXContainerItemProxy */; + }; + 987F9E3629657C5F7468486377B8EDC1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = EXPermissions; + target = 0A72FB88825FDC7D301C9DD1F8F96824 /* EXPermissions */; + targetProxy = 4743F5C525F4A9B01FCE9ACA806C49D7 /* PBXContainerItemProxy */; + }; + 98AFE7B07ED5851A8ED0BD7EF9B4C442 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "react-native-jitsi-meet"; + target = D39AB631E8050865DE01F6D5678797D2 /* react-native-jitsi-meet */; + targetProxy = 6404AE86A87872E52988F326C02191A7 /* PBXContainerItemProxy */; }; 994ADAEEEA94855F19638FBB96D0D629 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18217,11 +18843,11 @@ target = A4F685BE3CAC127BDCE4E0DBBD88D191 /* Folly */; targetProxy = 201C6A1323C6921817533893269BBE9D /* PBXContainerItemProxy */; }; - 9ACF6F7D4D3B013B7EA561F9B7155781 /* PBXTargetDependency */ = { + 9A6F2476649D15842812C0BA4CE7F3B1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNVectorIcons; - target = 96150F524B245896B800F84F369A9A5A /* RNVectorIcons */; - targetProxy = 1B41BA61DB20B05AE8C29E182A53214E /* PBXContainerItemProxy */; + name = "rn-extensions-share"; + target = A238B7CE3865946D1F214E1FE0023AAE /* rn-extensions-share */; + targetProxy = DCBE20B54432736947EC4EE48344FB96 /* PBXContainerItemProxy */; }; 9AE14FA1F306013F286ABA20DD87B69C /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18229,23 +18855,17 @@ target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 69B6897572B545367799A5E51AFE075D /* PBXContainerItemProxy */; }; - 9BB29AF7239D3234E787597D1587A787 /* PBXTargetDependency */ = { + 9B24E66AB31CF0ECA23046DB437E84CF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-jsinspector"; - target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; - targetProxy = 4847E3B18791FE6E3E94AA5781F3C219 /* PBXContainerItemProxy */; + name = RNFirebase; + target = A83ECDA5673771FA0BA282EBF729692B /* RNFirebase */; + targetProxy = F9ADEC352F5632AE9A9C3CEAE0D942CF /* PBXContainerItemProxy */; }; - 9BC9B9CE44DC1F8E4EDBA17DF8DDF142 /* PBXTargetDependency */ = { + 9B848D16E111D4984B7C6DBC23CC1609 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-keyboard-tracking-view"; - target = EAB05A8BED2CAC923712E1C584AEB299 /* react-native-keyboard-tracking-view */; - targetProxy = 1DF35873D24AE2A4B161722573B5E51D /* PBXContainerItemProxy */; - }; - 9C18702469077C8DACF8DACD32DDF840 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-RCTAnimation"; - target = 938CCE22F6C4094B3FB6CF1478579E4B /* React-RCTAnimation */; - targetProxy = 1FD068163D38F2DB2240805C8E64EBE1 /* PBXContainerItemProxy */; + name = "React-RCTImage"; + target = 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */; + targetProxy = 60630CC2B00EAB9D8A1BC762FFB41D39 /* PBXContainerItemProxy */; }; 9C390500C3C568F59A8589C455BFF4D5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18253,17 +18873,11 @@ target = 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */; targetProxy = C6C35C61164D4136265E61ECEB28D38A /* PBXContainerItemProxy */; }; - 9D750ECD9911045D4B3D69AC27F10EFD /* PBXTargetDependency */ = { + 9F3DC5974EEDD082F1DB0F5C86480474 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-jsinspector"; - target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; - targetProxy = 6DBAA7D492F6913D24F58658F0948574 /* PBXContainerItemProxy */; - }; - 9E65126D8DDFC0EB1D8D7109E2C0BDE3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-CoreModules"; - target = E16E206437995280D349D4B67695C894 /* React-CoreModules */; - targetProxy = 1B8D1B0DAC080E3B195827A9996B9FCC /* PBXContainerItemProxy */; + name = KeyCommands; + target = 7F591BD8674041AAAA4F37DC699B5518 /* KeyCommands */; + targetProxy = B6E5D715784860428E433EF2C59064AA /* PBXContainerItemProxy */; }; 9F4B49F01A597EA4F18DDCEBB1AF2B2E /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18277,17 +18891,23 @@ target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; targetProxy = A93E606DCB9E6493FE4333269FB7DB4D /* PBXContainerItemProxy */; }; - 9FA0E718A1779574E41F3D1878FA1C27 /* PBXTargetDependency */ = { + A00A0F656DEE6460F7E22B50FBBB5ADE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-appearance"; - target = 3FF2E78BB54ED67CA7FAD8DA2590DBEE /* react-native-appearance */; - targetProxy = 1044FDC2303CAF1C91892A68F2A8E4AE /* PBXContainerItemProxy */; + name = "React-cxxreact"; + target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; + targetProxy = 861146BBBDF6493BE7981140D74FCF30 /* PBXContainerItemProxy */; }; - A00F7D1F2E5FA8A71F5FF808042F370B /* PBXTargetDependency */ = { + A077C6FADB6BC08EDEE56C06124B51E2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-RCTSettings"; - target = 680299219D3A48D42A648AF6706275A9 /* React-RCTSettings */; - targetProxy = 0BD696FBF6A39FE97C13A5A1ABF55C11 /* PBXContainerItemProxy */; + name = UMCameraInterface; + target = 0A915EE9D35CA5636731F8763E774951 /* UMCameraInterface */; + targetProxy = CCB55177B1A05503602B15B304232ACA /* PBXContainerItemProxy */; + }; + A23070E2AC8D432C5107A1256E0275F4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DoubleConversion; + target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; + targetProxy = 7A9D426F64FA97581C779ECB7FA9F4E1 /* PBXContainerItemProxy */; }; A3F4258D4EA27D6C88C15BCDA4CDEDA4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18295,24 +18915,6 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = DDFCA674E1FE8DC1DB86D5A0C0A1FB6A /* PBXContainerItemProxy */; }; - A4336332A667BB26D3D9EB3361B99158 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleDataTransport; - target = 5C0371EE948D0357B8EE0E34ABB44BF0 /* GoogleDataTransport */; - targetProxy = F34982CECD4A0E7E5C361467B942AFD5 /* PBXContainerItemProxy */; - }; - A462C292FF6609D1C058D452EAC07538 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-Core"; - target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; - targetProxy = F5C9C8DA4EF06D90E55CBF7F674BDEF1 /* PBXContainerItemProxy */; - }; - A51F65EAD36CCE675809E93B7786A519 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RNGestureHandler; - target = B9E8F4CA2A4A8599389FEB665A9B96FF /* RNGestureHandler */; - targetProxy = A51B4E84523EE9025F2923E0EF9C8DF6 /* PBXContainerItemProxy */; - }; A5351590EF2D946171B0ECC1142DED94 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleDataTransportCCTSupport; @@ -18325,29 +18927,35 @@ target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; targetProxy = DF12C5D7BB68C2724D2F39A531F2A52A /* PBXContainerItemProxy */; }; - A635399A6AC3E63872EB7A87250DA5D8 /* PBXTargetDependency */ = { + A5561E542F912735ABD334AC8B7E6399 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SDWebImageWebPCoder; - target = 1953860EA9853AA2BC8022B242F08512 /* SDWebImageWebPCoder */; - targetProxy = 5DC25A1D4E918E1675990CA1D8A67BC5 /* PBXContainerItemProxy */; + name = EXAV; + target = 13D7009C3736FB694854D88BAD4742B6 /* EXAV */; + targetProxy = B21B886924B45A63EB4036945A4B076B /* PBXContainerItemProxy */; }; - A65BC11EA787F00F5D5EB861E325B976 /* PBXTargetDependency */ = { + A702E3E5331CE57D26D47870748CA4E2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-jsi"; - target = FA877ADC442CB19CF61793D234C8B131 /* React-jsi */; - targetProxy = 9DA910A181B4EDFFC52A91B769656CDF /* PBXContainerItemProxy */; + name = UMFileSystemInterface; + target = 2644525CCE081E967809A8163D893A93 /* UMFileSystemInterface */; + targetProxy = 9A311C098C9D56A95F8DAF2BC014857C /* PBXContainerItemProxy */; }; - A6E3425CD84B74A59211BDFB9CBC0763 /* PBXTargetDependency */ = { + A8E2DF82DA60524038504626ECC68FEB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-RCTVibration"; - target = 53D121F9F9BB0F8AC1C94A12C5A8572F /* React-RCTVibration */; - targetProxy = 592693EA8C81FF03676E6A02CFA16F14 /* PBXContainerItemProxy */; + name = "React-jsinspector"; + target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; + targetProxy = 08A42600A49AE912BC4C1DE377EA6E50 /* PBXContainerItemProxy */; }; - AA515B3BAA960F561BDDA3E5ECD2862F /* PBXTargetDependency */ = { + A9ED98A5552DD136966D3057C908CB45 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "boost-for-react-native"; - target = ED2506AE7DE35D654F61254441EA7155 /* boost-for-react-native */; - targetProxy = FE897A3B09C0C877C1425D2D0F0AE06C /* PBXContainerItemProxy */; + name = RNDateTimePicker; + target = D760AF58E12ABBB51F84160FB02B5F39 /* RNDateTimePicker */; + targetProxy = F41400F9BEE622517440881C0BD1FD56 /* PBXContainerItemProxy */; + }; + AA221BE904C0C01C40321032D459D905 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNScreens; + target = 214E42634D1E187D876346D36184B655 /* RNScreens */; + targetProxy = BD32043515F4B199AB0E22406C68A35D /* PBXContainerItemProxy */; }; AA55BD4562CF0DDCA3C38F5ABA08AF89 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18355,23 +18963,23 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 185B11EB8A27612A9B75BAA1ACDFBF0A /* PBXContainerItemProxy */; }; - AA7AD60D5235888EC341334EDCCDAFB6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RCTRequired; - target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; - targetProxy = 75A19794D437B8D5F82DF2363871A104 /* PBXContainerItemProxy */; - }; AA9052A974DA4ECF27CC38A7633849E0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleAppMeasurement; target = B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */; targetProxy = BBDC7C661CA5567D3925BC0747CAAEC5 /* PBXContainerItemProxy */; }; - AC20D02C6F925EDC7FEBD903FF720C5F /* PBXTargetDependency */ = { + ABFEEAB51B34B9279043783E67531D27 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCoreDiagnostics; - target = 620E05868772C10B4920DC7E324F2C87 /* FirebaseCoreDiagnostics */; - targetProxy = 2EA7DE3C4E6319549E4C6A2EDEB40C37 /* PBXContainerItemProxy */; + name = PromisesObjC; + target = 2BBF7206D7FAC92C82A042A99C4A98F8 /* PromisesObjC */; + targetProxy = CCFD53E94AFA8D4B32BA9AA6DA6A23FB /* PBXContainerItemProxy */; + }; + ACB0A8E627ABEDBCFE9343DA37AC7EDE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNFastImage; + target = 0BB7745637E0758DEA373456197090C6 /* RNFastImage */; + targetProxy = FAA396DBDC307599055B19CD6A87D4B2 /* PBXContainerItemProxy */; }; ACDFD30135AB57A1F062637C78FB2E81 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18379,6 +18987,12 @@ target = 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */; targetProxy = D30AD787E43DE3AC8E24B315F185B31F /* PBXContainerItemProxy */; }; + AD340DED1B8692F53508AB1F18B76C5E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "React-jsiexecutor"; + target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; + targetProxy = 8F2CFEAA002887A4B7BB9024FB93494D /* PBXContainerItemProxy */; + }; AD8CC2C3AD641422282F5A8CD85BA0A7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ReactCommon; @@ -18391,23 +19005,35 @@ target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; targetProxy = 5BE488B88EB1D7B8BFE4A63D278D4B18 /* PBXContainerItemProxy */; }; - AEDCEBA0C5F2C140BA119D90CB606F90 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = EXConstants; - target = 6C1893932A69822CBE3502F2E0BCFB6D /* EXConstants */; - targetProxy = 53B0D573801F04727A5968A24DCEDB3A /* PBXContainerItemProxy */; - }; B12997E3D5BE4F39EC03469A5CD99829 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = UMPermissionsInterface; target = F7845084F0CF03F54107EEF7411760AD /* UMPermissionsInterface */; targetProxy = 17299B3B10FACA862736181ECC44D9A8 /* PBXContainerItemProxy */; }; - B318C1E18E3B03D1F1DE223C7D8A08BC /* PBXTargetDependency */ = { + B22A5D6293013D0AA4DEBDD09114C43A /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNVectorIcons; - target = 96150F524B245896B800F84F369A9A5A /* RNVectorIcons */; - targetProxy = 226291D00695774450BE39CA7E709FE2 /* PBXContainerItemProxy */; + name = RNUserDefaults; + target = 4D67CFB913D9C3BE37252D50364CD990 /* RNUserDefaults */; + targetProxy = DA6A3E8A138E68102F2BF46B82DE340D /* PBXContainerItemProxy */; + }; + B2F7B5CCD13BB1799BD1CC1865AD4C00 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNScreens; + target = 214E42634D1E187D876346D36184B655 /* RNScreens */; + targetProxy = 6E35ABFC7C526875A427967F1D14FA79 /* PBXContainerItemProxy */; + }; + B49DA17150AB981E024F24CF7390ACF6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "react-native-appearance"; + target = 3FF2E78BB54ED67CA7FAD8DA2590DBEE /* react-native-appearance */; + targetProxy = CB4A33C1063C79A2060BB0FBB95DC0E8 /* PBXContainerItemProxy */; + }; + B4DD67B523E31A8CA6341D025852864A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = glog; + target = D0EFEFB685D97280256C559792236873 /* glog */; + targetProxy = 359EA94CC30F8F650A8B75B2C0AC731C /* PBXContainerItemProxy */; }; B522C45997E90058E7BACAB65C97DDE3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18421,23 +19047,17 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 81C7B5355049BCCDEE79296B202D9398 /* PBXContainerItemProxy */; }; - B620B167723C90B31E5D417C9626B33F /* PBXTargetDependency */ = { + B761561CFFC648F4B058F9B496469FD7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-notifications"; - target = CA400829100F0628EC209FBB08347D42 /* react-native-notifications */; - targetProxy = 9FBE29897B10BA3238B4E77375E53B48 /* PBXContainerItemProxy */; + name = "React-jsinspector"; + target = F7D033C4C128EECAA020990641FA985F /* React-jsinspector */; + targetProxy = 509A25B05A998CAB3B86A6C80C7B78C7 /* PBXContainerItemProxy */; }; - B63E315162188D1ADCDB3B5EE5949ABF /* PBXTargetDependency */ = { + B7A43697AC7E53B057276A65141B2F9A /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = UMCore; - target = DBCB1B4965863DDD3B9DED9A0918A526 /* UMCore */; - targetProxy = B6188822A8A78712424CA19B932100E8 /* PBXContainerItemProxy */; - }; - B7C8781DC81153F741B88DC751E33D70 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "rn-extensions-share"; - target = A238B7CE3865946D1F214E1FE0023AAE /* rn-extensions-share */; - targetProxy = 7545D1E8732C8A669C329263632A2F9C /* PBXContainerItemProxy */; + name = DoubleConversion; + target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; + targetProxy = F9D879083A729E6F2026684F655E293D /* PBXContainerItemProxy */; }; B7CA987A1545E9E4D990C621C4B0D48F /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18451,24 +19071,30 @@ target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; targetProxy = 54A7BA384E80D5DB0269C827877FE175 /* PBXContainerItemProxy */; }; + B89D4DAFD59BF06BA375E5F6FE567A24 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleAppMeasurement; + target = B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */; + targetProxy = DED1980E0B396BB1ED5777C2883AE836 /* PBXContainerItemProxy */; + }; B8B73617617104E7103760F1AB0FDDAD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = JitsiMeetSDK; target = 5B40FBDAD0AB75D17C4760F4054BFF71 /* JitsiMeetSDK */; targetProxy = 52D75569EE8B532085465A5470C6C390 /* PBXContainerItemProxy */; }; - B8C102D9B6AA6F75BCF2289632AC4389 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "react-native-background-timer"; - target = 6514D69CB93B41626AE1A05581F97B07 /* react-native-background-timer */; - targetProxy = 6F4298251BA281F74B8663156C4EA0E1 /* PBXContainerItemProxy */; - }; B92630B331C84A01EBE7ECA0D823D9FC /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = AA5B8F43EAD114EE3717346D55C72BE5 /* PBXContainerItemProxy */; }; + B95A7CF2597F141CCFEA682BB5379A65 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNFirebase; + target = A83ECDA5673771FA0BA282EBF729692B /* RNFirebase */; + targetProxy = 11D6BA14BE41FE745D7D6A4967351B99 /* PBXContainerItemProxy */; + }; BA241D5679EFEE167EE2F6CED9B54AF4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; @@ -18481,29 +19107,35 @@ target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; targetProxy = 95BD7607104E910918F88DD81F19B1C1 /* PBXContainerItemProxy */; }; - BBE49A21A3F20BAB40B4368933595AF5 /* PBXTargetDependency */ = { + BB162D26E686DBC02CEDFDDFB8F5792A /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNUserDefaults; - target = 4D67CFB913D9C3BE37252D50364CD990 /* RNUserDefaults */; - targetProxy = C2F3CB80CD4B5FF1CC89D31492675B2E /* PBXContainerItemProxy */; + name = "React-RCTImage"; + target = 4F265533AAB7C8985856EC78A33164BB /* React-RCTImage */; + targetProxy = 9E0918D934503C7C632F36B2407BE0F4 /* PBXContainerItemProxy */; }; - BC06CFE8C40141A78385BC07EDFDD31D /* PBXTargetDependency */ = { + BC051567AB6101BD07AE754A17D700CB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-document-picker"; - target = D11E74324175FE5B0E78DB046527F233 /* react-native-document-picker */; - targetProxy = F961935CF80EBDB232EE3BBE07180D40 /* PBXContainerItemProxy */; + name = UMSensorsInterface; + target = 2038C6F97563AAD6162C284B3EDD5B3B /* UMSensorsInterface */; + targetProxy = DCF7E3D15D3A8FDF8CE53CBB7968E1F9 /* PBXContainerItemProxy */; }; - BC10BCFBCDEFBE0E272B0E180A715023 /* PBXTargetDependency */ = { + BC14137DC7B24901959AF5A38B67F823 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNScreens; - target = 214E42634D1E187D876346D36184B655 /* RNScreens */; - targetProxy = 8C00AF0CF0FFBD1F03F368E59C0C6E49 /* PBXContainerItemProxy */; + name = GoogleDataTransport; + target = 5C0371EE948D0357B8EE0E34ABB44BF0 /* GoogleDataTransport */; + targetProxy = C8C199D46FD3DD67148F0D47BF9A2023 /* PBXContainerItemProxy */; }; - BC7731ECD2164E4A12D67DF7DC7D4C1D /* PBXTargetDependency */ = { + BC252F1BA48F3C06EEDA912ED47F7ABE /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = EXWebBrowser; - target = 9EB556EE511D43F3D5D7AAF51D8D0397 /* EXWebBrowser */; - targetProxy = 0A8EB351142067C2AFA6EFE6C8D65E73 /* PBXContainerItemProxy */; + name = RNImageCropPicker; + target = 0D82774D2A533D3FFAE27CAB4A6E9CB2 /* RNImageCropPicker */; + targetProxy = 6DBD6F286817EB85A8F0BB2E8D08F4D9 /* PBXContainerItemProxy */; + }; + BD0F6B17B3F55C28B9A3EFAFBF527E96 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SDWebImage; + target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; + targetProxy = 02C2B84DB6FEA8DE473E70DC78A43ADB /* PBXContainerItemProxy */; }; BD1C2D29B9FAFAFEC379903BBA7FB010 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18511,17 +19143,41 @@ target = ED2506AE7DE35D654F61254441EA7155 /* boost-for-react-native */; targetProxy = CEEAB0ABDC6919813DC4584C776CA72F /* PBXContainerItemProxy */; }; + BD8F590BE104F22AF290628E172A35C7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SDWebImage; + target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; + targetProxy = C9C235729131851E3935743551F6290B /* PBXContainerItemProxy */; + }; BD9A27944522233DC0927B646379AEDA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Folly; target = A4F685BE3CAC127BDCE4E0DBBD88D191 /* Folly */; targetProxy = EF35D916FEB5C7D4563D576974DC8374 /* PBXContainerItemProxy */; }; - BE4FEED59E491904CE4BD004E767F806 /* PBXTargetDependency */ = { + BDE22947B2463B68D2CA8E87F08E1B8F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCoreDiagnosticsInterop; - target = 5EB4B0B6DA6D5C0C3365733BEAA1C485 /* FirebaseCoreDiagnosticsInterop */; - targetProxy = 709C87ADB203D2D492FF3D76F91A489C /* PBXContainerItemProxy */; + name = "React-RCTText"; + target = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6 /* React-RCTText */; + targetProxy = F7418F0EFC7ADFE136104192A9809D6A /* PBXContainerItemProxy */; + }; + BE142045203D42FB92F4371988275051 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "react-native-orientation-locker"; + target = 1092C13E1E1172209537C28D0C8D4D3C /* react-native-orientation-locker */; + targetProxy = 20E42A4C64C9DEE2C403CFD800A4D82C /* PBXContainerItemProxy */; + }; + BE6F85911D83FCD7C5FA4866737164EA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseCore; + target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; + targetProxy = CC54232EF31B940D2DDBEAC6F07DADD3 /* PBXContainerItemProxy */; + }; + BEAE1AEA9E59D1C5B949E52D75B55B40 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "react-native-keyboard-input"; + target = 7573B71C21FB5F78D28A1F4A184A6057 /* react-native-keyboard-input */; + targetProxy = 1FE04A47AEB6F607229B2DC802EFC625 /* PBXContainerItemProxy */; }; BF23376B1A7E5DFDD5B71433E58CDDA1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18529,18 +19185,18 @@ target = DBCB1B4965863DDD3B9DED9A0918A526 /* UMCore */; targetProxy = 2284921B4FC397971FFFACC555D01A18 /* PBXContainerItemProxy */; }; + BF249EC3D81B78CD0B26BC0672296344 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = EXHaptics; + target = 409F3A0DB395F53FFB6AB30E5CD8ACD1 /* EXHaptics */; + targetProxy = 9ACA162B718D14B964339F384832032A /* PBXContainerItemProxy */; + }; BF9BF0CDEA697B8AF2D71C6FF954AC77 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RCTRequired; target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; targetProxy = 2C95DFFCB2EC326C56D43774DED19805 /* PBXContainerItemProxy */; }; - BFC9B784B74D53143B92D969468BD747 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-RCTNetwork"; - target = 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */; - targetProxy = 30F5CE6A0AA7FCC1E9DA1213EF8E04CE /* PBXContainerItemProxy */; - }; C0B06A5C5229F7876D8CF13D76EADE7F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "React-RCTLinking"; @@ -18553,23 +19209,17 @@ target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; targetProxy = F2E57867E76DED400D1A4035EF3D8735 /* PBXContainerItemProxy */; }; - C29E526B96D9A7BD2F1CABC3556D50A2 /* PBXTargetDependency */ = { + C256CB6781A3CFDD1B57532D602B8E50 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Yoga; - target = 2B25F90D819B9ADF2AF2D8733A890333 /* Yoga */; - targetProxy = 790A470EFDD88EEDCB39C9CD7DC4A0AE /* PBXContainerItemProxy */; + name = RNRootView; + target = 18B56DB36E1F066C927E49DBAE590128 /* RNRootView */; + targetProxy = 026F5244571FA414E08736B1E2149CA1 /* PBXContainerItemProxy */; }; - C432B23C7DEA9B18962DF98F9774CF19 /* PBXTargetDependency */ = { + C4B3478A5D254B849DD5B7AA450A08C4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNScreens; - target = 214E42634D1E187D876346D36184B655 /* RNScreens */; - targetProxy = 1E7A4AD5FBA09FE19600612F7B68B50F /* PBXContainerItemProxy */; - }; - C48CABCA14D12DE4A49546003197DA32 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DoubleConversion; - target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; - targetProxy = C9AB9E31511613E7773ECD99B5BB4A25 /* PBXContainerItemProxy */; + name = "react-native-cameraroll"; + target = BA3F5E5AA483B263B69601DE2FA269CB /* react-native-cameraroll */; + targetProxy = 8FFD687A453F165F91B1F31CE9DFE81D /* PBXContainerItemProxy */; }; C5AE41D857959DAFF5E75B0995A21A95 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18577,23 +19227,17 @@ target = D0EFEFB685D97280256C559792236873 /* glog */; targetProxy = 983AD1895C24585DEA95A1E14A0A74C6 /* PBXContainerItemProxy */; }; - C645BBB39D2B11D5DEFEB49848E58387 /* PBXTargetDependency */ = { + C659FC088434EE64D230439BA13947C7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DoubleConversion; - target = 2AB2EF542954AB1C999E03BFEF8DE806 /* DoubleConversion */; - targetProxy = 864D1D6DAA9D95E786FD868C53C055B9 /* PBXContainerItemProxy */; + name = "React-CoreModules"; + target = E16E206437995280D349D4B67695C894 /* React-CoreModules */; + targetProxy = 10EEA2C29319093946EC6A3B886E46CC /* PBXContainerItemProxy */; }; - C6DF705C8E98ACE10EA9AFBAF6FC756C /* PBXTargetDependency */ = { + C673AB2CE2B75DC9E95EDA7E2ADDE62D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Fabric; - target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; - targetProxy = 2FE2C35337A08515922901E0BF777825 /* PBXContainerItemProxy */; - }; - C73BD81AD5B197191C1F845DB073580D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-RCTVibration"; - target = 53D121F9F9BB0F8AC1C94A12C5A8572F /* React-RCTVibration */; - targetProxy = 6CFB67BBFCAC8C342352DF567A778A75 /* PBXContainerItemProxy */; + name = "react-native-appearance"; + target = 3FF2E78BB54ED67CA7FAD8DA2590DBEE /* react-native-appearance */; + targetProxy = 25911D74E71C182E5A343DC800E7A898 /* PBXContainerItemProxy */; }; C76A0EE6871933CE34033765BE030A22 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18613,11 +19257,17 @@ target = DBCB1B4965863DDD3B9DED9A0918A526 /* UMCore */; targetProxy = 3DA6710AAE682E070695F228266936B7 /* PBXContainerItemProxy */; }; - C8C1050CAA3EA6EDCC1BA1D33EFE0B5B /* PBXTargetDependency */ = { + C8B5D585C828BE4AB1C1BFFB31AD7B21 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = ReactCommon; - target = B6D5DD49633DFF0657B8C3F08EB3ABA9 /* ReactCommon */; - targetProxy = 03F2CA0672D70BC7FC09B4800D77E422 /* PBXContainerItemProxy */; + name = GoogleAppMeasurement; + target = B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */; + targetProxy = 5062F87E3425DACD2975174B3E87F828 /* PBXContainerItemProxy */; + }; + C8FE0EEE04628A4A12FD7557EC6E5E48 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "react-native-keyboard-input"; + target = 7573B71C21FB5F78D28A1F4A184A6057 /* react-native-keyboard-input */; + targetProxy = D9200E48A5A008F3A8BDECD7D97CD249 /* PBXContainerItemProxy */; }; C9CEFEFAAAEDB8CD947737FA56C849D4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18631,11 +19281,11 @@ target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; targetProxy = 455009ED9ED8F59E3D7880EA52A66B11 /* PBXContainerItemProxy */; }; - CAE7C2C3BC7D4E545021A3F3C7C16973 /* PBXTargetDependency */ = { + CA645BFA9D3A4B12C24D5D526B9BC485 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleAppMeasurement; - target = B53D977A951AFC38B21751B706C1DF83 /* GoogleAppMeasurement */; - targetProxy = 1B24397AAA61D5997ED3C946B22A9C7C /* PBXContainerItemProxy */; + name = "rn-fetch-blob"; + target = 64F427905796B33B78A704063422979D /* rn-fetch-blob */; + targetProxy = 710F83D4741765BB006C7714AF8916F4 /* PBXContainerItemProxy */; }; CB1231450678EB40FF6D52E17793B56F /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18649,11 +19299,29 @@ target = 4402AFF83DBDC4DD07E198685FDC2DF2 /* FirebaseCore */; targetProxy = F6A14184DE3C02C257A7298719E4FD9B /* PBXContainerItemProxy */; }; - CBFEB75D6A2D0EB64C17DFCC5F511A88 /* PBXTargetDependency */ = { + CB83889AB117CC3018E3F5A81202DBFF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = UMCameraInterface; - target = 0A915EE9D35CA5636731F8763E774951 /* UMCameraInterface */; - targetProxy = 7CF567BF0FF9A2CA68F9268723F55DD6 /* PBXContainerItemProxy */; + name = "react-native-document-picker"; + target = D11E74324175FE5B0E78DB046527F233 /* react-native-document-picker */; + targetProxy = 5A0F6C220AC62BB06E8E539C2964827A /* PBXContainerItemProxy */; + }; + CC1E39817A216780CA9BEFAD07BD06A7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "boost-for-react-native"; + target = ED2506AE7DE35D654F61254441EA7155 /* boost-for-react-native */; + targetProxy = AEC90D7C236E9F9A844FCDAEAFFB250F /* PBXContainerItemProxy */; + }; + CD2914DB228D70418A1EC14EE9D193A8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNAudio; + target = 449C1066B8C16DEDB966DCB632828E44 /* RNAudio */; + targetProxy = C10C10F78B02C8C76D9682A59B3593F3 /* PBXContainerItemProxy */; + }; + CFCFE51EAAF2A98BDF482A25F684F45A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "React-RCTAnimation"; + target = 938CCE22F6C4094B3FB6CF1478579E4B /* React-RCTAnimation */; + targetProxy = EC12631F07CCE49186779E1C34E44AC1 /* PBXContainerItemProxy */; }; D0E424AA51C6766027686207E235EA45 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18667,11 +19335,17 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = A6C96CD915FAFFA438FE9774216C27FC /* PBXContainerItemProxy */; }; - D40A6F6B7DF10D9B852BC4314BF5A472 /* PBXTargetDependency */ = { + D2E623008359A110154980E885DEA890 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNImageCropPicker; - target = 0D82774D2A533D3FFAE27CAB4A6E9CB2 /* RNImageCropPicker */; - targetProxy = E0D98A8909B36864FA2933AEDDD2CF59 /* PBXContainerItemProxy */; + name = GoogleUtilities; + target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; + targetProxy = 876F633EF64F3B86DDACB4D9765F88C3 /* PBXContainerItemProxy */; + }; + D368BF377DB802C5F5B6F07958738103 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ReactNativeART; + target = 90148E8FD1C445D7A019D504FA8CBC53 /* ReactNativeART */; + targetProxy = 76EEA5F62CC441995D555175CAB0A477 /* PBXContainerItemProxy */; }; D4675DE12C9CE28E7BE2DF3CB5F65EE1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18679,17 +19353,17 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 0FBA34E2E29F880F6473E91F3C51B883 /* PBXContainerItemProxy */; }; - D47114DA10295B597ED4E6738B4A0C20 /* PBXTargetDependency */ = { + D49D843655AD1EC0C07874F136577A0E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = EXFileSystem; - target = 868B90C74770285449C60DBA82181479 /* EXFileSystem */; - targetProxy = 3B1392E067C3E6A9242A6A3D71BAA7CF /* PBXContainerItemProxy */; + name = RSKImageCropper; + target = A30157FD17984D82FB7B26EE61267BE2 /* RSKImageCropper */; + targetProxy = C17763A82AC031E86E43BE4FA0F3FC4F /* PBXContainerItemProxy */; }; - D5CE386CDF9F1F4220B5089B9420D09E /* PBXTargetDependency */ = { + D5A9A561719B9316F72E1FC3D3D05058 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-RCTActionSheet"; - target = 11989A5E568B3B69655EE0C13DCDA3F9 /* React-RCTActionSheet */; - targetProxy = 1B79B5551993EED6A2BF0FFD795171BD /* PBXContainerItemProxy */; + name = UMImageLoaderInterface; + target = 97C4DE84FA3CC4EC06AA6D8C249949B7 /* UMImageLoaderInterface */; + targetProxy = 4C78244180223E12D59ED12231A1567B /* PBXContainerItemProxy */; }; D5F43FE63F1F6C96E0D9F953258FAE9D /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18697,17 +19371,11 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = E79050B7B79BB88D74178F90A19D9ECF /* PBXContainerItemProxy */; }; - D89FAEABE18B6ABE756BDDD1BD185B5F /* PBXTargetDependency */ = { + D9C70B462572E65C4929094AC7476233 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = EXAV; - target = 13D7009C3736FB694854D88BAD4742B6 /* EXAV */; - targetProxy = BC0A650988C15F16ACA71087737CD3F4 /* PBXContainerItemProxy */; - }; - D9B4CAB98F8EC12018F5950A6F20CEE0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-jsiexecutor"; - target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; - targetProxy = 36FF4ADDD6EB9814501A10DE7E7E4C4F /* PBXContainerItemProxy */; + name = "React-RCTSettings"; + target = 680299219D3A48D42A648AF6706275A9 /* React-RCTSettings */; + targetProxy = A1CACC0574AB439458D00BDADA747D2B /* PBXContainerItemProxy */; }; DA7A7B33C9919FB0F7AAF95AD29445CB /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18715,11 +19383,17 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = B45BFCA094BB2306A256FB04420598F1 /* PBXContainerItemProxy */; }; - DBAD676559C0DC50198628B865CC67EC /* PBXTargetDependency */ = { + DA93591AA43259D16E6136A821EC1D26 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-cameraroll"; - target = BA3F5E5AA483B263B69601DE2FA269CB /* react-native-cameraroll */; - targetProxy = 0A6779856EFD086B16649D182E9E5718 /* PBXContainerItemProxy */; + name = RNReanimated; + target = FF879E718031128A75E7DE54046E6219 /* RNReanimated */; + targetProxy = 067E5D93DB083FB51E091E438339E7F1 /* PBXContainerItemProxy */; + }; + DA9F12C62FFA20659AFC6C54AF4E9F7D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RCTTypeSafety; + target = D20469A9A1E5CFB26045EAEBE3F88E5E /* RCTTypeSafety */; + targetProxy = ACE9683B43AB87C56DB560A905FE8BA5 /* PBXContainerItemProxy */; }; DC365AF9AFF0EED32BE0CC92E8B78C42 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18733,12 +19407,6 @@ target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; targetProxy = 59A6F7E541C545C99CA82678B8F26212 /* PBXContainerItemProxy */; }; - DC9A85F49B82B7F22A7803CFA91C8E15 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-RCTText"; - target = DBD2D83E10F8B7D3F4E0E34E6A9FCFA6 /* React-RCTText */; - targetProxy = ED8DF4AF781F646E01339F2EF18E2202 /* PBXContainerItemProxy */; - }; DD42749A0327BDFDE691A4721767F0F3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; @@ -18757,29 +19425,23 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = 21B7FFD1A14C9DCA797642821E09A7B1 /* PBXContainerItemProxy */; }; - E01C4B9CBE7943187583AB2333D00A63 /* PBXTargetDependency */ = { + DFE54EFB8E8ADDF029A3564B9073A3BC /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = RNLocalize; - target = B51433D546A38C51AA781F192E8836F8 /* RNLocalize */; - targetProxy = AC929F6DB753F7A5A23136DC8A5AF1F4 /* PBXContainerItemProxy */; + name = Folly; + target = A4F685BE3CAC127BDCE4E0DBBD88D191 /* Folly */; + targetProxy = 4E10E94546B9897329BB7132343AC50E /* PBXContainerItemProxy */; }; - E1B86AB0D1A83A47152A0CE26C8CE3FD /* PBXTargetDependency */ = { + E11233F0824232FEF8A756BBEFB3D748 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "React-RCTLinking"; - target = 6FE9147F8AAA4DE676C190F680F47AE2 /* React-RCTLinking */; - targetProxy = 2B097729BC2B2F4114F1A5FAE154F4C0 /* PBXContainerItemProxy */; + name = "React-RCTNetwork"; + target = 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */; + targetProxy = 2DBAEF48EE5A15463102EC32C77A0EA5 /* PBXContainerItemProxy */; }; - E2244065FA1223A7CF3E4ACB4204C8C7 /* PBXTargetDependency */ = { + E2E64A87B139897B2E726C43839063B7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBReactNativeSpec; - target = C3496D0495E700CF08A90C41EA8FA4BB /* FBReactNativeSpec */; - targetProxy = 777A11160F4CB70685296C76EFEE6F3E /* PBXContainerItemProxy */; - }; - E245BA5C1A61D8665824EF1453D40061 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "react-native-orientation-locker"; - target = 1092C13E1E1172209537C28D0C8D4D3C /* react-native-orientation-locker */; - targetProxy = 851BFC34B414575929C9D05C084A883F /* PBXContainerItemProxy */; + name = nanopb; + target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; + targetProxy = DFEA33431E17294C1ED8951538F844D0 /* PBXContainerItemProxy */; }; E33A6948181332F36C1B948AB5E3D4F1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18799,23 +19461,11 @@ target = 8D7F5D5DD528D21A72DC87ADA5B12E2D /* GoogleUtilities */; targetProxy = F142B4DF83D0AEA677D3ABE7D7E5BA0C /* PBXContainerItemProxy */; }; - E4AF80A841E3E79AEBFE20DFA132C6DB /* PBXTargetDependency */ = { + E528B28EAE6AC6A2D51788DB2F13BAE0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GoogleDataTransportCCTSupport; - target = F4F25FCAC51B51FD5F986EB939BF1F87 /* GoogleDataTransportCCTSupport */; - targetProxy = 3E7EB2B3FB38137993A296AF74F3CA0B /* PBXContainerItemProxy */; - }; - E4B2D5B663AD6ACF1AB4497218D26158 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RNFirebase; - target = A83ECDA5673771FA0BA282EBF729692B /* RNFirebase */; - targetProxy = 31CE8D75B1A3392204FC1D0E200F8389 /* PBXContainerItemProxy */; - }; - E589A3C702755C230943931EDF601D32 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "React-jsiexecutor"; - target = DA0709CAAD589C6E7963495210438021 /* React-jsiexecutor */; - targetProxy = C6A40FD5CA2BAE47C05F541530D2D070 /* PBXContainerItemProxy */; + name = SDWebImageWebPCoder; + target = 1953860EA9853AA2BC8022B242F08512 /* SDWebImageWebPCoder */; + targetProxy = 5395F90884A47A1667129CA57D99C81B /* PBXContainerItemProxy */; }; E6C446C9931D7EE8FED9B58FE9C9ADB3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18829,23 +19479,35 @@ target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; targetProxy = 4FF10556B9B41D07EFAC6AA420559421 /* PBXContainerItemProxy */; }; - E8E63875698973CAEDECA472AF8745D4 /* PBXTargetDependency */ = { + E8DBAB5CFA57379E9EBF4A80ED68423E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseInstanceID; - target = 9E25537BF40D1A3B30CF43FD3E6ACD94 /* FirebaseInstanceID */; - targetProxy = 9A0FD7307742DE0CDECD4DBA15DA10B5 /* PBXContainerItemProxy */; + name = "boost-for-react-native"; + target = ED2506AE7DE35D654F61254441EA7155 /* boost-for-react-native */; + targetProxy = D0909B88ACBADCD7176A2B5725379CD3 /* PBXContainerItemProxy */; }; - EA1DF9AF1605D69A9E493475043FCE93 /* PBXTargetDependency */ = { + EA7D3308E5F60A0E21E9C0026F22D59A /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Fabric; - target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; - targetProxy = 50D43378AB82F90A88B706CDDC8BB391 /* PBXContainerItemProxy */; + name = RNLocalize; + target = B51433D546A38C51AA781F192E8836F8 /* RNLocalize */; + targetProxy = 5D1C4C458C07B47F9BC6C0A5DFDBE063 /* PBXContainerItemProxy */; }; - EACC3444C67E4E4BAE806BD1CA1FEA92 /* PBXTargetDependency */ = { + EBB0A712DD210BA9C35FA009E508D28C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FBLazyVector; - target = 8CC4EAA817AA86310D1900F1DAB3580F /* FBLazyVector */; - targetProxy = E60B916218717C921E5F11253059C7AD /* PBXContainerItemProxy */; + name = UMFontInterface; + target = 014495932E402CA67C37681988047CA2 /* UMFontInterface */; + targetProxy = 05D0FFD116C750DA50BDA3E50B048E43 /* PBXContainerItemProxy */; + }; + EBF53D7C37C35CC2489D0C6A47D3E9AA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "React-RCTNetwork"; + target = 651511D7DA7F07F9FC9AA40A2E86270D /* React-RCTNetwork */; + targetProxy = 4E1A7F06A2ADFDF1CD0745680382112F /* PBXContainerItemProxy */; + }; + EC33172D0E7643D6B0B40291C2348028 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = JitsiMeetSDK; + target = 5B40FBDAD0AB75D17C4760F4054BFF71 /* JitsiMeetSDK */; + targetProxy = B9D74239BAD99D142DD588C2DB1FBDED /* PBXContainerItemProxy */; }; EC566DF9BFE7FD959CB2819808630F73 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18859,23 +19521,23 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = F1D31400DE78E76FE461920F078645F1 /* PBXContainerItemProxy */; }; + EE5C681F19C2BD960C9FE0FB6B28DC90 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseInstallations; + target = 87803597EB3F20FC46472B85392EC4FD /* FirebaseInstallations */; + targetProxy = 6BA468018F66C1D47DAEA3ECC88158D1 /* PBXContainerItemProxy */; + }; EECEC39CD1A9AF30CCFCB71B11A14B7D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = UMCore; target = DBCB1B4965863DDD3B9DED9A0918A526 /* UMCore */; targetProxy = 5FDD7E408B08AF566972547CAF4A8B67 /* PBXContainerItemProxy */; }; - EF30B4A3FC48ED30F7586BD600A8A42D /* PBXTargetDependency */ = { + EFD075E2561A9315EB30A1E324BFDC10 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-keyboard-input"; - target = 7573B71C21FB5F78D28A1F4A184A6057 /* react-native-keyboard-input */; - targetProxy = 909FB4CB16E83CBC6C773C2E99E03EBD /* PBXContainerItemProxy */; - }; - EF466E2FD91422D5A18060901D88CA1B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = JitsiMeetSDK; - target = 5B40FBDAD0AB75D17C4760F4054BFF71 /* JitsiMeetSDK */; - targetProxy = EBC7518B544F41E7D3EC6B04FD721254 /* PBXContainerItemProxy */; + name = FBLazyVector; + target = 8CC4EAA817AA86310D1900F1DAB3580F /* FBLazyVector */; + targetProxy = C1BB201CBC816A7930A924C64808A024 /* PBXContainerItemProxy */; }; F13EA7DAE7A846C572332EFD93580166 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18889,11 +19551,11 @@ target = 463F41A7E8B252F8AC5024DA1F4AF6DA /* React-cxxreact */; targetProxy = 3E2073FF56543FDA76EFCC77A1820700 /* PBXContainerItemProxy */; }; - F1CA1792136DD775A53CEF6F23916B03 /* PBXTargetDependency */ = { + F1BA23F2FB7643FFBDD1DAD459ABB176 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = EXAppLoaderProvider; - target = 2B8C13513C1F6D610976B0C8F4402EC1 /* EXAppLoaderProvider */; - targetProxy = 7946027880C17CF9583C761D484F3230 /* PBXContainerItemProxy */; + name = "react-native-cameraroll"; + target = BA3F5E5AA483B263B69601DE2FA269CB /* react-native-cameraroll */; + targetProxy = F2DC85F54A13CF837109A697617C4E93 /* PBXContainerItemProxy */; }; F25EE5C729FC3245E37C095E9683A3AD /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18901,23 +19563,23 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = C737ED823B86A2EB5AE9F688BEE3FDCE /* PBXContainerItemProxy */; }; - F33E52A0DF2608BBA4A19CF78D334846 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = RNReanimated; - target = FF879E718031128A75E7DE54046E6219 /* RNReanimated */; - targetProxy = 1E6145CFB733B7389B3BA81B9496EE61 /* PBXContainerItemProxy */; - }; F40AEEAA637FAD62AA68E398038D3782 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleDataTransport; target = 5C0371EE948D0357B8EE0E34ABB44BF0 /* GoogleDataTransport */; targetProxy = 8CD598B3122E1B5D5E0411E9F8DFF385 /* PBXContainerItemProxy */; }; - F42665ED8C85B74A93D863E06C36BF6E /* PBXTargetDependency */ = { + F4138CD7FAFDEFFFD515BD724DDC5D57 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = EXHaptics; - target = 409F3A0DB395F53FFB6AB30E5CD8ACD1 /* EXHaptics */; - targetProxy = FAA688893F6F7C79DA3E8120E591ED84 /* PBXContainerItemProxy */; + name = "react-native-background-timer"; + target = 6514D69CB93B41626AE1A05581F97B07 /* react-native-background-timer */; + targetProxy = A8758646FA7E8C65D9AAADB4BAEFFBC9 /* PBXContainerItemProxy */; + }; + F5F021B3F52BBD277BD05ECE566E042C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Firebase; + target = 072CEA044D2EF26F03496D5996BBF59F /* Firebase */; + targetProxy = 3D45E3DCD38109B38F5BA73AFDB65794 /* PBXContainerItemProxy */; }; F6258EC7EA780DA17A9BB7DEC0186247 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18931,23 +19593,35 @@ target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = 69C4D7766C312F032D5267A5354EEDFE /* PBXContainerItemProxy */; }; + F7254DE652DCB7A6D7DC7A465FFDB90F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNVectorIcons; + target = 96150F524B245896B800F84F369A9A5A /* RNVectorIcons */; + targetProxy = F3A5BBF7636364713DAD1380A3F7E825 /* PBXContainerItemProxy */; + }; F77917FB7C27A937C4A222233103AEBF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; target = 1BEE828C124E6416179B904A9F66D794 /* React */; targetProxy = 5EED9A44D7E37951C7239080722062AE /* PBXContainerItemProxy */; }; - F86CF3781044024C68C1E550DB327E62 /* PBXTargetDependency */ = { + F793EFA765710397FBD50E3181087A1D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = ReactNativeART; - target = 90148E8FD1C445D7A019D504FA8CBC53 /* ReactNativeART */; - targetProxy = 43D3ABCC883084F535FB4C94AE270B17 /* PBXContainerItemProxy */; + name = RNDeviceInfo; + target = 807428FE76D80865C9F59F3502600E89 /* RNDeviceInfo */; + targetProxy = 2A128C5EADDBD55C6224A11EB064A4EB /* PBXContainerItemProxy */; }; - FA90323DAAFA4AACED76974DE4121292 /* PBXTargetDependency */ = { + F8508129A7E0A701D29FCE7C600AF256 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "react-native-webview"; - target = 8D18C49071FC5370C25F5758A85BA5F6 /* react-native-webview */; - targetProxy = 0D42E46EADA1B8AF308F3DA9477ECF42 /* PBXContainerItemProxy */; + name = libwebp; + target = 47D2E85A78C25869BB13521D8561A638 /* libwebp */; + targetProxy = DFCEEA3FA40436CB4AA040326D6F8E6D /* PBXContainerItemProxy */; + }; + FA2D896CF1A12FD2D935A9384087F7C7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNDateTimePicker; + target = D760AF58E12ABBB51F84160FB02B5F39 /* RNDateTimePicker */; + targetProxy = EEF750E4E172E0309FD8CCC8712079DE /* PBXContainerItemProxy */; }; FAC411C23D2CEEC99A061A1A4B22D07D /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18955,11 +19629,29 @@ target = E7E7CE52C8C68B17224FF8C262D80ABF /* RCTRequired */; targetProxy = 6A307E7AA187B3493D468319584B81F0 /* PBXContainerItemProxy */; }; - FBF0F88B7864CB2A75B21D13E7FC04D9 /* PBXTargetDependency */ = { + FBCE73E2D485848AF80D260525152309 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseCoreDiagnostics; - target = 620E05868772C10B4920DC7E324F2C87 /* FirebaseCoreDiagnostics */; - targetProxy = 5133F757B57EAC5EB436A3997C0C2D4E /* PBXContainerItemProxy */; + name = "React-Core"; + target = 7ACAA9BE580DD31A5CB9D97C45D9492D /* React-Core */; + targetProxy = 30E96D162736BFA144F7B293FB7C9DBF /* PBXContainerItemProxy */; + }; + FBE7D09D723DD7D835AA6D7E9A2F11DA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FBReactNativeSpec; + target = C3496D0495E700CF08A90C41EA8FA4BB /* FBReactNativeSpec */; + targetProxy = 6D3BF89DF4987F4669AD095F4AB5877B /* PBXContainerItemProxy */; + }; + FD7FFC18DDE8D049C817E5F819EF924E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = nanopb; + target = D2B5E7DCCBBFB32341D857D01211A1A3 /* nanopb */; + targetProxy = C6B6F02506FCA9766276DEF5FAE04229 /* PBXContainerItemProxy */; + }; + FE5D2230E315DD209B736747DEA0781A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "React-CoreModules"; + target = E16E206437995280D349D4B67695C894 /* React-CoreModules */; + targetProxy = D1ED1A63A2E1B5D62CF66F0FA99F5D47 /* PBXContainerItemProxy */; }; FEE4267D512CD5EAA1C9FF46F88ED492 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -18998,7 +19690,7 @@ }; 008DFCF03E41143CCD55C289368FC72C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8B43F094AB5E433A936FF4B4F031A70D /* FirebaseCoreDiagnostics.xcconfig */; + baseConfigurationReference = 746D3D964458B43BFFB90666578396AE /* FirebaseCoreDiagnostics.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -19049,7 +19741,7 @@ }; 00F580C30F1C55CE9B377CFE4A94A31C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9BF61CFC891BBB889FA4A1BD2CA3E955 /* SDWebImage.xcconfig */; + baseConfigurationReference = A4CCD66701BA3DC52D7F6038E6A0FE21 /* SDWebImage.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -19126,7 +19818,7 @@ }; 02F841E7484D9961BCBC6E3DDD1A7697 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D21357691A211111FCF423A64E04CAD4 /* boost-for-react-native.xcconfig */; + baseConfigurationReference = D0FE094866BD845597950E5E71ABA095 /* boost-for-react-native.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -19156,7 +19848,7 @@ }; 056C009C442A698606C063320C8BF25A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C1485CBAB7240610926802178F495435 /* Fabric.xcconfig */; + baseConfigurationReference = 3185ACD9193E4C2844B2A264ECC81F13 /* Fabric.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -19209,29 +19901,6 @@ }; name = Release; }; - 082314B40061447902402103BE02D36E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B5D32CE02F68EE345F9101FFAF7E3476 /* Pods-RocketChatRN.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - APPLICATION_EXTENSION_API_ONLY = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MACH_O_TYPE = staticlib; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 0A5C3272020B713D7C5769D443274095 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = FEE17FF191607545AB35410F4FC71A32 /* React-RCTNetwork.xcconfig */; @@ -19285,7 +19954,7 @@ }; 0CBD8F695D218045A6F1C3FE7162F639 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 03B728F92DB283E8246EA83B5CEFAEAA /* glog.xcconfig */; + baseConfigurationReference = B8B19D7098E1C36EB82CCA7E162D0984 /* glog.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -19335,6 +20004,31 @@ }; name = Debug; }; + 0E751DAAAA22C73785478BB2FAAC5826 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3F3CB5FABF8ADED7650DF34AE8C9567D /* FirebaseInstallations.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FirebaseInstallations; + PRODUCT_NAME = FirebaseInstallations; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; 0EC3A23A31F25E370EFBA1F1586B2011 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 441A7D7E0BA21052E87E4AE003FC4562 /* FBLazyVector.xcconfig */; @@ -19351,7 +20045,7 @@ }; 0FD039A5EB2378EA2D82F53561CF5BE2 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8B43F094AB5E433A936FF4B4F031A70D /* FirebaseCoreDiagnostics.xcconfig */; + baseConfigurationReference = 746D3D964458B43BFFB90666578396AE /* FirebaseCoreDiagnostics.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -19426,6 +20120,30 @@ }; name = Debug; }; + 10882D5FDD0B30BF842C6B41DDE481FB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3F3CB5FABF8ADED7650DF34AE8C9567D /* FirebaseInstallations.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FirebaseInstallations; + PRODUCT_NAME = FirebaseInstallations; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 12FAC84E34D27F50918DC68E37434C4A /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = D051CE3F548B77940F8E4B0E54D0A708 /* EXWebBrowser.xcconfig */; @@ -19482,7 +20200,7 @@ }; 16393E98E7D33B078F35DAD0BF562519 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DCF4CED8CD3D2B43426543E727D6D881 /* FirebaseAnalytics.xcconfig */; + baseConfigurationReference = 1488EEFA6E3BB4A30E0FA6D3CAB794CC /* FirebaseAnalytics.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -19496,7 +20214,7 @@ }; 165DAF0F882A8245111ED3F97000FA93 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8C563801A978525A6184D0F9DD82905D /* GoogleDataTransportCCTSupport.xcconfig */; + baseConfigurationReference = FA26B5A8A32F2F522F09863C5C0477C0 /* GoogleDataTransportCCTSupport.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -19521,7 +20239,7 @@ }; 177BF32163A7C54C460B4CD5BD7E7168 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DD6D91740B8B962C4CE62F898542B1A6 /* GoogleDataTransport.xcconfig */; + baseConfigurationReference = B43DE523DEC5C5015D53A04238FFF28A /* GoogleDataTransport.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -19661,7 +20379,7 @@ }; 1B74DF374CD1AFC41B2A27BF8AF209F9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 03B728F92DB283E8246EA83B5CEFAEAA /* glog.xcconfig */; + baseConfigurationReference = B8B19D7098E1C36EB82CCA7E162D0984 /* glog.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -19711,7 +20429,7 @@ }; 200CD2396E713A87F09DF2D0477FFC0C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0807A09287F78F29B2AC03E88390E82E /* Crashlytics.xcconfig */; + baseConfigurationReference = 75E84073A3FF1C0075C2A143F4BBA591 /* Crashlytics.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -19777,7 +20495,7 @@ }; 23D5BEBA41EB0C45D1EE5EB2F36ECBE2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0807A09287F78F29B2AC03E88390E82E /* Crashlytics.xcconfig */; + baseConfigurationReference = 75E84073A3FF1C0075C2A143F4BBA591 /* Crashlytics.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -20037,7 +20755,7 @@ }; 2E48545300EB3BBDC7C7176DFA40D5ED /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 452318FDD594B5923B177B4FD6115A90 /* FirebaseCore.xcconfig */; + baseConfigurationReference = AC94EA86B185F27AFFDD010481B75ED0 /* FirebaseCore.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -20060,9 +20778,33 @@ }; name = Release; }; + 30DC973DC2A1238813CF3DB26D5EAD44 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A9916A69A97251C8AA9535F6F70AE9DB /* Pods-RocketChatRN.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + APPLICATION_EXTENSION_API_ONLY = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; 31667BB5CFC7B8D4C8E24E1A05DE6F20 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DCF4CED8CD3D2B43426543E727D6D881 /* FirebaseAnalytics.xcconfig */; + baseConfigurationReference = 1488EEFA6E3BB4A30E0FA6D3CAB794CC /* FirebaseAnalytics.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -20077,7 +20819,7 @@ }; 329F6210D2FB7F15DD932D2C4B6689F2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D21357691A211111FCF423A64E04CAD4 /* boost-for-react-native.xcconfig */; + baseConfigurationReference = D0FE094866BD845597950E5E71ABA095 /* boost-for-react-native.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -20091,7 +20833,7 @@ }; 33C61ECA707D40A9FC02D9793376D463 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F305EC9958D746DA8AAEA33A39DC6A65 /* FirebaseCoreDiagnosticsInterop.xcconfig */; + baseConfigurationReference = 979A76AD19363B9D26207764CC5EE2C2 /* FirebaseCoreDiagnosticsInterop.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -20207,7 +20949,7 @@ }; 3B81065B4F174DAEC663FE2711808B54 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C8ADDD3DE5B9D58ABDF6D510A502F85F /* libwebp.xcconfig */; + baseConfigurationReference = 56E78EE0CF3ED46276B3F9962DBC7817 /* libwebp.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -20328,7 +21070,7 @@ }; 476795CA781EBD6B4AC8D2146AB49434 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9C0AE2466BA4C974BC84C214B080C357 /* GoogleUtilities.xcconfig */; + baseConfigurationReference = A2F98D797C5A100E3115EA3505C1DA82 /* GoogleUtilities.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -20444,6 +21186,29 @@ }; name = Debug; }; + 50F939AB9E92DE79127D2B609B52C82D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 49A51F5FBBCFD3F02638D5838DF22338 /* Pods-ShareRocketChatRN.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + APPLICATION_EXTENSION_API_ONLY = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 521E903B734D3E2B9720D043ACC4F421 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 5A748EE26C98D9E0EFD4F248FC2C8D02 /* RNAudio.xcconfig */; @@ -20487,33 +21252,9 @@ }; name = Release; }; - 56F0F2ACAD6FD2F934097C2504AAFD4E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A9916A69A97251C8AA9535F6F70AE9DB /* Pods-RocketChatRN.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - APPLICATION_EXTENSION_API_ONLY = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MACH_O_TYPE = staticlib; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; 573066A03184765DFD3708A843AF9A7F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A126C06795FE746C9901F5ED989C79D /* FirebaseInstanceID.xcconfig */; + baseConfigurationReference = 2F9FF75DBA3C633DA045206F6C039C91 /* FirebaseInstanceID.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -20563,7 +21304,7 @@ }; 58C4DFAAABA5B1ADD585B075C392989E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 95D858BFDF2F99A6F3D810DEAD6A9300 /* Firebase.xcconfig */; + baseConfigurationReference = 8A4DD3054BCAAC1DD111B122592F96DD /* Firebase.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -20696,7 +21437,7 @@ }; 5E0C0558843DE82EBBC42EE24BEA165D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AEAFF03F736A590CC3D80A40C1C64FCF /* JitsiMeetSDK.xcconfig */; + baseConfigurationReference = 3E41B296571AC95DE177C8BDD92082EE /* JitsiMeetSDK.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -20712,7 +21453,7 @@ }; 5E3383358D994B87401F964D52392038 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2EE491B9F0B95B8A20B38302F6434248 /* DoubleConversion.xcconfig */; + baseConfigurationReference = BB473672F668467D6664FFB5D1B0E078 /* DoubleConversion.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -20958,7 +21699,7 @@ }; 6983102E768D8F6AAFAC3C07D2FD59C5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 865A76C3046C18A7DA36E67E3DE72F88 /* Folly.xcconfig */; + baseConfigurationReference = ACAF6F97C93480DEF850BDAA7DE9577A /* Folly.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -21101,7 +21842,7 @@ }; 71633DFB8C995054BED7FB1F22EBD760 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FB64DAEF321D4A129D5F296408A320DC /* SDWebImageWebPCoder.xcconfig */; + baseConfigurationReference = B05C43896E9F95B6A4756C24B12C8DBB /* SDWebImageWebPCoder.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -21178,7 +21919,7 @@ }; 731A84E8BE2267BC21CBD0337B22D2E9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8C563801A978525A6184D0F9DD82905D /* GoogleDataTransportCCTSupport.xcconfig */; + baseConfigurationReference = FA26B5A8A32F2F522F09863C5C0477C0 /* GoogleDataTransportCCTSupport.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -21228,7 +21969,7 @@ }; 73A76EF3E50F14A831494F2CE9D463C3 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 452318FDD594B5923B177B4FD6115A90 /* FirebaseCore.xcconfig */; + baseConfigurationReference = AC94EA86B185F27AFFDD010481B75ED0 /* FirebaseCore.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -21409,7 +22150,7 @@ }; 7B7E9D7FAB7E45B9F4ADF8DC4822703B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C1485CBAB7240610926802178F495435 /* Fabric.xcconfig */; + baseConfigurationReference = 3185ACD9193E4C2844B2A264ECC81F13 /* Fabric.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -21463,30 +22204,6 @@ }; name = Release; }; - 80DF7974715E39BCD1E5F75815B96F76 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 527CD81DF520880893DE8021CD41E619 /* Pods-ShareRocketChatRN.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - APPLICATION_EXTENSION_API_ONLY = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MACH_O_TYPE = staticlib; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; 82E853AAD06F4C932AAEAEA9A8AE1EB4 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1EAC930ED045E8B5E77D1C890D820095 /* RCTTypeSafety.xcconfig */; @@ -21608,7 +22325,7 @@ }; 8835E5BCB8E540E65288BFBA50EE7279 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FB64DAEF321D4A129D5F296408A320DC /* SDWebImageWebPCoder.xcconfig */; + baseConfigurationReference = B05C43896E9F95B6A4756C24B12C8DBB /* SDWebImageWebPCoder.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -21659,7 +22376,7 @@ }; 8C3EBE69110BAB9C59DDF0112E7677AC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9C0AE2466BA4C974BC84C214B080C357 /* GoogleUtilities.xcconfig */; + baseConfigurationReference = A2F98D797C5A100E3115EA3505C1DA82 /* GoogleUtilities.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -21969,7 +22686,7 @@ }; 9D31AF365B999422C95ED9755B2E8F0F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 95D858BFDF2F99A6F3D810DEAD6A9300 /* Firebase.xcconfig */; + baseConfigurationReference = 8A4DD3054BCAAC1DD111B122592F96DD /* Firebase.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -22318,7 +23035,7 @@ }; B0C53F67BEF5274F1C717CB34C9F7D23 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F305EC9958D746DA8AAEA33A39DC6A65 /* FirebaseCoreDiagnosticsInterop.xcconfig */; + baseConfigurationReference = 979A76AD19363B9D26207764CC5EE2C2 /* FirebaseCoreDiagnosticsInterop.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -22382,6 +23099,31 @@ }; name = Release; }; + B715731FF4181713F7FF641E3C112F40 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4C94E6DDA61D0E2F0939457B8941960B /* PromisesObjC.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FBLPromises; + PRODUCT_NAME = PromisesObjC; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; B74A66D1B4DB325F337289BC6923B612 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = CD3B18274C7390B7F392369B851990AD /* RCTRequired.xcconfig */; @@ -22398,7 +23140,7 @@ }; B772F607B346FAD86BF28292DA0D193C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E36BC1838BBE0A3C1226042850FB19C3 /* nanopb.xcconfig */; + baseConfigurationReference = A504DDAED24ACC8CF4D4D4E69E078BAA /* nanopb.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -22422,9 +23164,33 @@ }; name = Debug; }; + B81BD62A85F65E019D170A16D45AD2A3 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4C94E6DDA61D0E2F0939457B8941960B /* PromisesObjC.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FBLPromises; + PRODUCT_NAME = PromisesObjC; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; B85B0EB20406B9007DE9EE60A643323F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 79915C4E2EB6C0B1E346BE2B093CC0C9 /* RSKImageCropper.xcconfig */; + baseConfigurationReference = DED9FC57D70D86176F806A8A2529655A /* RSKImageCropper.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -22447,29 +23213,6 @@ }; name = Debug; }; - B8D056209867B8F1F809A098C1072662 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 49A51F5FBBCFD3F02638D5838DF22338 /* Pods-ShareRocketChatRN.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - APPLICATION_EXTENSION_API_ONLY = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MACH_O_TYPE = staticlib; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; B93AD636A7701AACBF5C0DEB8249D15D /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1079B8B6C30DFB82CE00FBEE2735966C /* React-RCTLinking.xcconfig */; @@ -22869,7 +23612,7 @@ }; D39AE346BB890EE92D52B4365CF97C8E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DEC91BA0271EDD25AC990885269AAA63 /* GoogleAppMeasurement.xcconfig */; + baseConfigurationReference = 3705D82A3DC4CA7F5EDBE3BE24EB6EE3 /* GoogleAppMeasurement.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -22884,7 +23627,7 @@ }; D3F2ACF718CAA31E46B371EF0787810F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 865A76C3046C18A7DA36E67E3DE72F88 /* Folly.xcconfig */; + baseConfigurationReference = ACAF6F97C93480DEF850BDAA7DE9577A /* Folly.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -22909,7 +23652,7 @@ }; D3FA7F3570E2CF3159A5CBBF6D6D03EB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DEC91BA0271EDD25AC990885269AAA63 /* GoogleAppMeasurement.xcconfig */; + baseConfigurationReference = 3705D82A3DC4CA7F5EDBE3BE24EB6EE3 /* GoogleAppMeasurement.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -22921,6 +23664,30 @@ }; name = Debug; }; + D51837F5FE5634298F3FC6024F99F546 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 527CD81DF520880893DE8021CD41E619 /* Pods-ShareRocketChatRN.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + APPLICATION_EXTENSION_API_ONLY = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; D59C3B7BE5D98BD3A70A5E5B073C631B /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 2CB8BA9740E480CD8BFB467DB0901F58 /* UMTaskManagerInterface.xcconfig */; @@ -22939,7 +23706,7 @@ }; D75A3C5908EA01CFD3D0AAA404DE8952 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E36BC1838BBE0A3C1226042850FB19C3 /* nanopb.xcconfig */; + baseConfigurationReference = A504DDAED24ACC8CF4D4D4E69E078BAA /* nanopb.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -22966,7 +23733,7 @@ }; D97606507408BFF4EFA441B298592BE7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DD6D91740B8B962C4CE62F898542B1A6 /* GoogleDataTransport.xcconfig */; + baseConfigurationReference = B43DE523DEC5C5015D53A04238FFF28A /* GoogleDataTransport.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -23018,7 +23785,7 @@ }; DB6F1742737B7627268395BE2CEA617A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 79915C4E2EB6C0B1E346BE2B093CC0C9 /* RSKImageCropper.xcconfig */; + baseConfigurationReference = DED9FC57D70D86176F806A8A2529655A /* RSKImageCropper.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -23042,6 +23809,29 @@ }; name = Release; }; + DB7BB8E8DCFABAB3BDBD19705D57D05F /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B5D32CE02F68EE345F9101FFAF7E3476 /* Pods-RocketChatRN.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + APPLICATION_EXTENSION_API_ONLY = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; DB9E714E74F88B6DD317822487883DBA /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = CE4F6A837ACAFDF071968B59BBF37B73 /* RNDeviceInfo.xcconfig */; @@ -23152,7 +23942,7 @@ }; E60A7C9144803B83FAED11B6E87A3C51 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C8ADDD3DE5B9D58ABDF6D510A502F85F /* libwebp.xcconfig */; + baseConfigurationReference = 56E78EE0CF3ED46276B3F9962DBC7817 /* libwebp.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -23329,7 +24119,7 @@ }; F2A8031420095C1651D74005E0E31E8B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A126C06795FE746C9901F5ED989C79D /* FirebaseInstanceID.xcconfig */; + baseConfigurationReference = 2F9FF75DBA3C633DA045206F6C039C91 /* FirebaseInstanceID.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -23405,7 +24195,7 @@ }; F6D8E7D8D935E6D61FF958B855AF2138 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9BF61CFC891BBB889FA4A1BD2CA3E955 /* SDWebImage.xcconfig */; + baseConfigurationReference = A4CCD66701BA3DC52D7F6038E6A0FE21 /* SDWebImage.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -23472,7 +24262,7 @@ }; FB63A50BDB667116707A2CD5239D279A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AEAFF03F736A590CC3D80A40C1C64FCF /* JitsiMeetSDK.xcconfig */; + baseConfigurationReference = 3E41B296571AC95DE177C8BDD92082EE /* JitsiMeetSDK.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -23539,7 +24329,7 @@ }; FCF8204F0ABD6F9D5A0441CD42F5042F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2EE491B9F0B95B8A20B38302F6434248 /* DoubleConversion.xcconfig */; + baseConfigurationReference = BB473672F668467D6664FFB5D1B0E078 /* DoubleConversion.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -23645,6 +24435,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 0E4F7B1730B05D50B69FFBC85C4FB400 /* Build configuration list for PBXNativeTarget "PromisesObjC" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B81BD62A85F65E019D170A16D45AD2A3 /* Debug */, + B715731FF4181713F7FF641E3C112F40 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 0F542F5ECC0C5E8741F7D8A1EB5D08C0 /* Build configuration list for PBXAggregateTarget "UMFaceDetectorInterface" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -23699,15 +24498,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 1DB56DF9C9DCECB3F400803AE7F2B433 /* Build configuration list for PBXNativeTarget "Pods-RocketChatRN" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 082314B40061447902402103BE02D36E /* Debug */, - 56F0F2ACAD6FD2F934097C2504AAFD4E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 1F2488A72962984097B2355E4C8F153C /* Build configuration list for PBXNativeTarget "React-RCTText" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -23726,6 +24516,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 2104416FC7DF9DFB898FFF821F2D5A30 /* Build configuration list for PBXNativeTarget "FirebaseInstallations" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 10882D5FDD0B30BF842C6B41DDE481FB /* Debug */, + 0E751DAAAA22C73785478BB2FAAC5826 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 22051F6710614105BA04E0EF4915F952 /* Build configuration list for PBXNativeTarget "EXHaptics" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -24059,11 +24858,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 84D844B5B1A5A159FA1354847AF1C5F2 /* Build configuration list for PBXNativeTarget "Pods-ShareRocketChatRN" */ = { + 8E7B27DE6778F7A0D4BFD8350A08FF9A /* Build configuration list for PBXNativeTarget "Pods-RocketChatRN" */ = { isa = XCConfigurationList; buildConfigurations = ( - B8D056209867B8F1F809A098C1072662 /* Debug */, - 80DF7974715E39BCD1E5F75815B96F76 /* Release */, + DB7BB8E8DCFABAB3BDBD19705D57D05F /* Debug */, + 30DC973DC2A1238813CF3DB26D5EAD44 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -24194,6 +24993,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + B12B60C654B48E714ED50F40AA8255AC /* Build configuration list for PBXNativeTarget "Pods-ShareRocketChatRN" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 50F939AB9E92DE79127D2B609B52C82D /* Debug */, + D51837F5FE5634298F3FC6024F99F546 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; B16590D3A26F524C4A34D5B9050B819E /* Build configuration list for PBXNativeTarget "react-native-keyboard-input" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/ios/Pods/PromisesObjC/LICENSE b/ios/Pods/PromisesObjC/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/ios/Pods/PromisesObjC/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/ios/Pods/PromisesObjC/README.md b/ios/Pods/PromisesObjC/README.md new file mode 100644 index 000000000..0eecbb12f --- /dev/null +++ b/ios/Pods/PromisesObjC/README.md @@ -0,0 +1,60 @@ +[![Apache +License](https://img.shields.io/github/license/google/promises.svg)](LICENSE) +[![Travis](https://api.travis-ci.org/google/promises.svg?branch=master)](https://travis-ci.org/google/promises) +[![Gitter Chat](https://badges.gitter.im/google/promises.svg)](https://gitter.im/google/promises) + +![Platforms](https://img.shields.io/badge/platforms-macOS%20%7C%20iOS%20%7C%20tvOS%20%7C%20watchOS-blue.svg?longCache=true&style=flat) +![Languages](https://img.shields.io/badge/languages-Swift%20%7C%20ObjC-orange.svg?longCache=true&style=flat) +![Package Managers](https://img.shields.io/badge/supports-Bazel%20%7C%20SwiftPM%20%7C%20CocoaPods%20%7C%20Carthage-yellow.svg?longCache=true&style=flat) + +# Promises + +Promises is a modern framework that provides a synchronization construct for +Objective-C and Swift to facilitate writing asynchronous code. + +* [Introduction](g3doc/index.md) + * [The problem with async + code](g3doc/index.md#the-problem-with-async-code) + * [Promises to the rescue](g3doc/index.md#promises-to-the-rescue) + * [What is a promise?](g3doc/index.md#what-is-a-promise) +* [Framework](g3doc/index.md#framework) + * [Features](g3doc/index.md#features) + * [Benchmark](g3doc/index.md#benchmark) +* [Getting started](g3doc/index.md#getting-started) + * [Add dependency](g3doc/index.md#add-dependency) + * [Import](g3doc/index.md#import) + * [Adopt](g3doc/index.md#adopt) +* [Basics](g3doc/index.md#basics) + * [Creating promises](g3doc/index.md#creating-promises) + * [Async](g3doc/index.md#async) + * [Do](g3doc/index.md#do) + * [Pending](g3doc/index.md#pending) + * [Resolved](g3doc/index.md#create-a-resolved-promise) + * [Observing fulfillment](g3doc/index.md#observing-fulfillment) + * [Then](g3doc/index.md#then) + * [Observing rejection](g3doc/index.md#observing-rejection) + * [Catch](g3doc/index.md#catch) +* [Extensions](g3doc/index.md#extensions) + * [All](g3doc/index.md#all) + * [Always](g3doc/index.md#always) + * [Any](g3doc/index.md#any) + * [Await](g3doc/index.md#await) + * [Delay](g3doc/index.md#delay) + * [Race](g3doc/index.md#race) + * [Recover](g3doc/index.md#recover) + * [Reduce](g3doc/index.md#reduce) + * [Retry](g3doc/index.md#retry) + * [Timeout](g3doc/index.md#timeout) + * [Validate](g3doc/index.md#validate) + * [Wrap](g3doc/index.md#wrap) +* [Advanced topics](g3doc/index.md#advanced-topics) + * [Default dispatch queue](g3doc/index.md#default-dispatch-queue) + * [Ownership and retain + cycles](g3doc/index.md#ownership-and-retain-cycles) + * [Testing](g3doc/index.md#testing) + * [Objective-C <-> Swift + interoperability](g3doc/index.md#objective-c---swift-interoperability) + * [Dot-syntax in Objective-C](g3doc/index.md#dot-syntax-in-objective-c) +* [Anti-patterns](g3doc/index.md#anti-patterns) + * [Broken chain](g3doc/index.md#broken-chain) + * [Nested promises](g3doc/index.md#nested-promises) diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+All.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+All.m new file mode 100644 index 000000000..c21f30efc --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+All.m @@ -0,0 +1,86 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+All.h" + +#import "FBLPromise+Async.h" +#import "FBLPromisePrivate.h" + +@implementation FBLPromise (AllAdditions) + ++ (FBLPromise *)all:(NSArray *)promises { + return [self onQueue:self.defaultDispatchQueue all:promises]; +} + ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue all:(NSArray *)allPromises { + NSParameterAssert(queue); + NSParameterAssert(allPromises); + + if (allPromises.count == 0) { + return [[FBLPromise alloc] initWithResolution:@[]]; + } + NSMutableArray *promises = [allPromises mutableCopy]; + return [FBLPromise + onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { + for (NSUInteger i = 0; i < promises.count; ++i) { + id promise = promises[i]; + if ([promise isKindOfClass:self]) { + continue; + } else if ([promise isKindOfClass:[NSError class]]) { + reject(promise); + return; + } else { + [promises replaceObjectAtIndex:i + withObject:[[FBLPromise alloc] initWithResolution:promise]]; + } + } + for (FBLPromise *promise in promises) { + [promise observeOnQueue:queue + fulfill:^(id __unused _) { + // Wait until all are fulfilled. + for (FBLPromise *promise in promises) { + if (!promise.isFulfilled) { + return; + } + } + // If called multiple times, only the first one affects the result. + fulfill([promises valueForKey:NSStringFromSelector(@selector(value))]); + } + reject:^(NSError *error) { + reject(error); + }]; + } + }]; +} + +@end + +@implementation FBLPromise (DotSyntax_AllAdditions) + ++ (FBLPromise * (^)(NSArray *))all { + return ^(NSArray *promises) { + return [self all:promises]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))allOn { + return ^(dispatch_queue_t queue, NSArray *promises) { + return [self onQueue:queue all:promises]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Always.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Always.m new file mode 100644 index 000000000..692744287 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Always.m @@ -0,0 +1,58 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Always.h" + +#import "FBLPromisePrivate.h" + +@implementation FBLPromise (AlwaysAdditions) + +- (FBLPromise *)always:(FBLPromiseAlwaysWorkBlock)work { + return [self onQueue:FBLPromise.defaultDispatchQueue always:work]; +} + +- (FBLPromise *)onQueue:(dispatch_queue_t)queue always:(FBLPromiseAlwaysWorkBlock)work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self chainOnQueue:queue + chainedFulfill:^id(id value) { + work(); + return value; + } + chainedReject:^id(NSError *error) { + work(); + return error; + }]; +} + +@end + +@implementation FBLPromise (DotSyntax_AlwaysAdditions) + +- (FBLPromise * (^)(FBLPromiseAlwaysWorkBlock))always { + return ^(FBLPromiseAlwaysWorkBlock work) { + return [self always:work]; + }; +} + +- (FBLPromise * (^)(dispatch_queue_t, FBLPromiseAlwaysWorkBlock))alwaysOn { + return ^(dispatch_queue_t queue, FBLPromiseAlwaysWorkBlock work) { + return [self onQueue:queue always:work]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Any.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Any.m new file mode 100644 index 000000000..e101c98dd --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Any.m @@ -0,0 +1,112 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Any.h" + +#import "FBLPromise+Async.h" +#import "FBLPromisePrivate.h" + +static NSArray *FBLPromiseCombineValuesAndErrors(NSArray *promises) { + NSMutableArray *combinedValuesAndErrors = [[NSMutableArray alloc] init]; + for (FBLPromise *promise in promises) { + if (promise.isFulfilled) { + [combinedValuesAndErrors addObject:promise.value ?: [NSNull null]]; + continue; + } + if (promise.isRejected) { + [combinedValuesAndErrors addObject:promise.error]; + continue; + } + assert(!promise.isPending); + }; + return combinedValuesAndErrors; +} + +@implementation FBLPromise (AnyAdditions) + ++ (FBLPromise *)any:(NSArray *)promises { + return [self onQueue:FBLPromise.defaultDispatchQueue any:promises]; +} + ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue any:(NSArray *)anyPromises { + NSParameterAssert(queue); + NSParameterAssert(anyPromises); + + if (anyPromises.count == 0) { + return [[FBLPromise alloc] initWithResolution:@[]]; + } + NSMutableArray *promises = [anyPromises mutableCopy]; + return [FBLPromise + onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { + for (NSUInteger i = 0; i < promises.count; ++i) { + id promise = promises[i]; + if ([promise isKindOfClass:self]) { + continue; + } else { + [promises replaceObjectAtIndex:i + withObject:[[FBLPromise alloc] initWithResolution:promise]]; + } + } + for (FBLPromise *promise in promises) { + [promise observeOnQueue:queue + fulfill:^(id __unused _) { + // Wait until all are resolved. + for (FBLPromise *promise in promises) { + if (promise.isPending) { + return; + } + } + // If called multiple times, only the first one affects the result. + fulfill(FBLPromiseCombineValuesAndErrors(promises)); + } + reject:^(NSError *error) { + BOOL atLeastOneIsFulfilled = NO; + for (FBLPromise *promise in promises) { + if (promise.isPending) { + return; + } + if (promise.isFulfilled) { + atLeastOneIsFulfilled = YES; + } + } + if (atLeastOneIsFulfilled) { + fulfill(FBLPromiseCombineValuesAndErrors(promises)); + } else { + reject(error); + } + }]; + } + }]; +} + +@end + +@implementation FBLPromise (DotSyntax_AnyAdditions) + ++ (FBLPromise * (^)(NSArray *))any { + return ^(NSArray *promises) { + return [self any:promises]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))anyOn { + return ^(dispatch_queue_t queue, NSArray *promises) { + return [self onQueue:queue any:promises]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Async.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Async.m new file mode 100644 index 000000000..249158ce3 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Async.m @@ -0,0 +1,70 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Async.h" + +#import "FBLPromisePrivate.h" + +@implementation FBLPromise (AsyncAdditions) + ++ (instancetype)async:(FBLPromiseAsyncWorkBlock)work { + return [self onQueue:self.defaultDispatchQueue async:work]; +} + ++ (instancetype)onQueue:(dispatch_queue_t)queue async:(FBLPromiseAsyncWorkBlock)work { + NSParameterAssert(queue); + NSParameterAssert(work); + + FBLPromise *promise = [[FBLPromise alloc] initPending]; + dispatch_group_async(FBLPromise.dispatchGroup, queue, ^{ + work( + ^(id __nullable value) { + if ([value isKindOfClass:[FBLPromise class]]) { + [(FBLPromise *)value observeOnQueue:queue + fulfill:^(id __nullable value) { + [promise fulfill:value]; + } + reject:^(NSError *error) { + [promise reject:error]; + }]; + } else { + [promise fulfill:value]; + } + }, + ^(NSError *error) { + [promise reject:error]; + }); + }); + return promise; +} + +@end + +@implementation FBLPromise (DotSyntax_AsyncAdditions) + ++ (FBLPromise* (^)(FBLPromiseAsyncWorkBlock))async { + return ^(FBLPromiseAsyncWorkBlock work) { + return [self async:work]; + }; +} + ++ (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAsyncWorkBlock))asyncOn { + return ^(dispatch_queue_t queue, FBLPromiseAsyncWorkBlock work) { + return [self onQueue:queue async:work]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Await.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Await.m new file mode 100644 index 000000000..ea3b87a3d --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Await.m @@ -0,0 +1,48 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Await.h" + +#import "FBLPromisePrivate.h" + +id __nullable FBLPromiseAwait(FBLPromise *promise, NSError **outError) { + assert(promise); + + static dispatch_once_t onceToken; + static dispatch_queue_t queue; + dispatch_once(&onceToken, ^{ + queue = dispatch_queue_create("com.google.FBLPromises.Await", DISPATCH_QUEUE_CONCURRENT); + }); + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + id __block resolution; + NSError __block *blockError; + [promise chainOnQueue:queue + chainedFulfill:^id(id value) { + resolution = value; + dispatch_semaphore_signal(semaphore); + return value; + } + chainedReject:^id(NSError *error) { + blockError = error; + dispatch_semaphore_signal(semaphore); + return error; + }]; + dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); + if (outError) { + *outError = blockError; + } + return resolution; +} diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Catch.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Catch.m new file mode 100644 index 000000000..25e8ce63e --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Catch.m @@ -0,0 +1,55 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Catch.h" + +#import "FBLPromisePrivate.h" + +@implementation FBLPromise (CatchAdditions) + +- (FBLPromise *)catch:(FBLPromiseCatchWorkBlock)reject { + return [self onQueue:FBLPromise.defaultDispatchQueue catch:reject]; +} + +- (FBLPromise *)onQueue:(dispatch_queue_t)queue catch:(FBLPromiseCatchWorkBlock)reject { + NSParameterAssert(queue); + NSParameterAssert(reject); + + return [self chainOnQueue:queue + chainedFulfill:nil + chainedReject:^id(NSError *error) { + reject(error); + return error; + }]; +} + +@end + +@implementation FBLPromise (DotSyntax_CatchAdditions) + +- (FBLPromise* (^)(FBLPromiseCatchWorkBlock))catch { + return ^(FBLPromiseCatchWorkBlock catch) { + return [self catch:catch]; + }; +} + +- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseCatchWorkBlock))catchOn { + return ^(dispatch_queue_t queue, FBLPromiseCatchWorkBlock catch) { + return [self onQueue:queue catch:catch]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Delay.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Delay.m new file mode 100644 index 000000000..ce94c3368 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Delay.m @@ -0,0 +1,59 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Delay.h" + +#import "FBLPromisePrivate.h" + +@implementation FBLPromise (DelayAdditions) + +- (FBLPromise *)delay:(NSTimeInterval)interval { + return [self onQueue:FBLPromise.defaultDispatchQueue delay:interval]; +} + +- (FBLPromise *)onQueue:(dispatch_queue_t)queue delay:(NSTimeInterval)interval { + NSParameterAssert(queue); + + FBLPromise *promise = [[FBLPromise alloc] initPending]; + [self observeOnQueue:queue + fulfill:^(id __nullable value) { + dispatch_after(dispatch_time(0, (int64_t)(interval * NSEC_PER_SEC)), queue, ^{ + [promise fulfill:value]; + }); + } + reject:^(NSError *error) { + [promise reject:error]; + }]; + return promise; +} + +@end + +@implementation FBLPromise (DotSyntax_DelayAdditions) + +- (FBLPromise * (^)(NSTimeInterval))delay { + return ^(NSTimeInterval interval) { + return [self delay:interval]; + }; +} + +- (FBLPromise * (^)(dispatch_queue_t, NSTimeInterval))delayOn { + return ^(dispatch_queue_t queue, NSTimeInterval interval) { + return [self onQueue:queue delay:interval]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Do.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Do.m new file mode 100644 index 000000000..eb7e10dc0 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Do.m @@ -0,0 +1,59 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Do.h" + +#import "FBLPromisePrivate.h" + +@implementation FBLPromise (DoAdditions) + ++ (instancetype)do:(FBLPromiseDoWorkBlock)work { + return [self onQueue:self.defaultDispatchQueue do:work]; +} + ++ (instancetype)onQueue:(dispatch_queue_t)queue do:(FBLPromiseDoWorkBlock)work { + NSParameterAssert(queue); + NSParameterAssert(work); + + FBLPromise *promise = [[FBLPromise alloc] initPending]; + dispatch_group_async(FBLPromise.dispatchGroup, queue, ^{ + id value = work(); + if ([value isKindOfClass:[FBLPromise class]]) { + [(FBLPromise *)value observeOnQueue:queue + fulfill:^(id __nullable value) { + [promise fulfill:value]; + } + reject:^(NSError *error) { + [promise reject:error]; + }]; + } else { + [promise fulfill:value]; + } + }); + return promise; +} + +@end + +@implementation FBLPromise (DotSyntax_DoAdditions) + ++ (FBLPromise* (^)(dispatch_queue_t, FBLPromiseDoWorkBlock))doOn { + return ^(dispatch_queue_t queue, FBLPromiseDoWorkBlock work) { + return [self onQueue:queue do:work]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Race.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Race.m new file mode 100644 index 000000000..b5bd9f140 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Race.m @@ -0,0 +1,65 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Race.h" + +#import "FBLPromise+Async.h" +#import "FBLPromisePrivate.h" + +@implementation FBLPromise (RaceAdditions) + ++ (instancetype)race:(NSArray *)promises { + return [self onQueue:self.defaultDispatchQueue race:promises]; +} + ++ (instancetype)onQueue:(dispatch_queue_t)queue race:(NSArray *)racePromises { + NSParameterAssert(queue); + NSAssert(racePromises.count > 0, @"No promises to observe"); + + NSArray *promises = [racePromises copy]; + return [FBLPromise onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { + for (id promise in promises) { + if (![promise isKindOfClass:self]) { + fulfill(promise); + return; + } + } + // Subscribe all, but only the first one to resolve will change + // the resulting promise's state. + for (FBLPromise *promise in promises) { + [promise observeOnQueue:queue fulfill:fulfill reject:reject]; + } + }]; +} + +@end + +@implementation FBLPromise (DotSyntax_RaceAdditions) + ++ (FBLPromise * (^)(NSArray *))race { + return ^(NSArray *promises) { + return [self race:promises]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))raceOn { + return ^(dispatch_queue_t queue, NSArray *promises) { + return [self onQueue:queue race:promises]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Recover.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Recover.m new file mode 100644 index 000000000..0c9326afc --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Recover.m @@ -0,0 +1,54 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Recover.h" + +#import "FBLPromisePrivate.h" + +@implementation FBLPromise (RecoverAdditions) + +- (FBLPromise *)recover:(FBLPromiseRecoverWorkBlock)recovery { + return [self onQueue:FBLPromise.defaultDispatchQueue recover:recovery]; +} + +- (FBLPromise *)onQueue:(dispatch_queue_t)queue recover:(FBLPromiseRecoverWorkBlock)recovery { + NSParameterAssert(queue); + NSParameterAssert(recovery); + + return [self chainOnQueue:queue + chainedFulfill:nil + chainedReject:^id(NSError *error) { + return recovery(error); + }]; +} + +@end + +@implementation FBLPromise (DotSyntax_RecoverAdditions) + +- (FBLPromise * (^)(FBLPromiseRecoverWorkBlock))recover { + return ^(FBLPromiseRecoverWorkBlock recovery) { + return [self recover:recovery]; + }; +} + +- (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRecoverWorkBlock))recoverOn { + return ^(dispatch_queue_t queue, FBLPromiseRecoverWorkBlock recovery) { + return [self onQueue:queue recover:recovery]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Reduce.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Reduce.m new file mode 100644 index 000000000..1f3fc50dc --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Reduce.m @@ -0,0 +1,61 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Reduce.h" + +#import "FBLPromisePrivate.h" + +@implementation FBLPromise (ReduceAdditions) + +- (FBLPromise *)reduce:(NSArray *)items combine:(FBLPromiseReducerBlock)reducer { + return [self onQueue:FBLPromise.defaultDispatchQueue reduce:items combine:reducer]; +} + +- (FBLPromise *)onQueue:(dispatch_queue_t)queue + reduce:(NSArray *)items + combine:(FBLPromiseReducerBlock)reducer { + NSParameterAssert(queue); + NSParameterAssert(items); + NSParameterAssert(reducer); + + FBLPromise *promise = self; + for (id item in items) { + promise = [promise chainOnQueue:queue + chainedFulfill:^id(id value) { + return reducer(value, item); + } + chainedReject:nil]; + } + return promise; +} + +@end + +@implementation FBLPromise (DotSyntax_ReduceAdditions) + +- (FBLPromise * (^)(NSArray *, FBLPromiseReducerBlock))reduce { + return ^(NSArray *items, FBLPromiseReducerBlock reducer) { + return [self reduce:items combine:reducer]; + }; +} + +- (FBLPromise * (^)(dispatch_queue_t, NSArray *, FBLPromiseReducerBlock))reduceOn { + return ^(dispatch_queue_t queue, NSArray *items, FBLPromiseReducerBlock reducer) { + return [self onQueue:queue reduce:items combine:reducer]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Retry.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Retry.m new file mode 100644 index 000000000..37c557624 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Retry.m @@ -0,0 +1,128 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Retry.h" + +#import "FBLPromisePrivate.h" + +NSInteger const FBLPromiseRetryDefaultAttemptsCount = 1; +NSTimeInterval const FBLPromiseRetryDefaultDelayInterval = 1.0; + +static void FBLPromiseRetryAttempt(FBLPromise *promise, dispatch_queue_t queue, NSInteger count, + NSTimeInterval interval, FBLPromiseRetryPredicateBlock predicate, + FBLPromiseRetryWorkBlock work) { + __auto_type retrier = ^(id __nullable value) { + if ([value isKindOfClass:[NSError class]]) { + if (count <= 0 || (predicate && !predicate(count, value))) { + [promise reject:value]; + } else { + dispatch_after(dispatch_time(0, (int64_t)(interval * NSEC_PER_SEC)), queue, ^{ + FBLPromiseRetryAttempt(promise, queue, count - 1, interval, predicate, work); + }); + } + } else { + [promise fulfill:value]; + } + }; + id value = work(); + if ([value isKindOfClass:[FBLPromise class]]) { + [(FBLPromise *)value observeOnQueue:queue fulfill:retrier reject:retrier]; + } else { + retrier(value); + } +} + +@implementation FBLPromise (RetryAdditions) + ++ (FBLPromise *)retry:(FBLPromiseRetryWorkBlock)work { + return [self onQueue:FBLPromise.defaultDispatchQueue retry:work]; +} + ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue retry:(FBLPromiseRetryWorkBlock)work { + return [self onQueue:queue attempts:FBLPromiseRetryDefaultAttemptsCount retry:work]; +} + ++ (FBLPromise *)attempts:(NSInteger)count retry:(FBLPromiseRetryWorkBlock)work { + return [self onQueue:FBLPromise.defaultDispatchQueue attempts:count retry:work]; +} + ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + attempts:(NSInteger)count + retry:(FBLPromiseRetryWorkBlock)work { + return [self onQueue:queue + attempts:count + delay:FBLPromiseRetryDefaultDelayInterval + condition:nil + retry:work]; +} + ++ (FBLPromise *)attempts:(NSInteger)count + delay:(NSTimeInterval)interval + condition:(nullable FBLPromiseRetryPredicateBlock)predicate + retry:(FBLPromiseRetryWorkBlock)work { + return [self onQueue:FBLPromise.defaultDispatchQueue + attempts:count + delay:interval + condition:predicate + retry:work]; +} + ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + attempts:(NSInteger)count + delay:(NSTimeInterval)interval + condition:(nullable FBLPromiseRetryPredicateBlock)predicate + retry:(FBLPromiseRetryWorkBlock)work { + NSParameterAssert(queue); + NSParameterAssert(work); + + FBLPromise *promise = [[FBLPromise alloc] initPending]; + FBLPromiseRetryAttempt(promise, queue, count, interval, predicate, work); + return promise; +} + +@end + +@implementation FBLPromise (DotSyntax_RetryAdditions) + ++ (FBLPromise * (^)(FBLPromiseRetryWorkBlock))retry { + return ^id(FBLPromiseRetryWorkBlock work) { + return [self retry:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRetryWorkBlock))retryOn { + return ^id(dispatch_queue_t queue, FBLPromiseRetryWorkBlock work) { + return [self onQueue:queue retry:work]; + }; +} + ++ (FBLPromise * (^)(NSInteger, NSTimeInterval, FBLPromiseRetryPredicateBlock, + FBLPromiseRetryWorkBlock))retryAgain { + return ^id(NSInteger count, NSTimeInterval interval, FBLPromiseRetryPredicateBlock predicate, + FBLPromiseRetryWorkBlock work) { + return [self attempts:count delay:interval condition:predicate retry:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, NSInteger, NSTimeInterval, FBLPromiseRetryPredicateBlock, + FBLPromiseRetryWorkBlock))retryAgainOn { + return ^id(dispatch_queue_t queue, NSInteger count, NSTimeInterval interval, + FBLPromiseRetryPredicateBlock predicate, FBLPromiseRetryWorkBlock work) { + return [self onQueue:queue attempts:count delay:interval condition:predicate retry:work]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Testing.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Testing.m new file mode 100644 index 000000000..27e8e6c65 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Testing.m @@ -0,0 +1,56 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Testing.h" + +BOOL FBLWaitForPromisesWithTimeout(NSTimeInterval timeout) { + BOOL isTimedOut = NO; + NSDate *timeoutDate = [NSDate dateWithTimeIntervalSinceNow:timeout]; + static NSTimeInterval const minimalTimeout = 0.01; + static int64_t const minimalTimeToWait = (int64_t)(minimalTimeout * NSEC_PER_SEC); + dispatch_time_t waitTime = dispatch_time(DISPATCH_TIME_NOW, minimalTimeToWait); + dispatch_group_t dispatchGroup = FBLPromise.dispatchGroup; + NSRunLoop *runLoop = NSRunLoop.currentRunLoop; + while (dispatch_group_wait(dispatchGroup, waitTime)) { + isTimedOut = timeoutDate.timeIntervalSinceNow < 0.0; + if (isTimedOut) { + break; + } + [runLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:minimalTimeout]]; + } + return !isTimedOut; +} + +@implementation FBLPromise (TestingAdditions) + +// These properties are implemented in the FBLPromise class itself. +@dynamic isPending; +@dynamic isFulfilled; +@dynamic isRejected; +@dynamic pendingObjects; +@dynamic value; +@dynamic error; + ++ (dispatch_group_t)dispatchGroup { + static dispatch_group_t gDispatchGroup; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + gDispatchGroup = dispatch_group_create(); + }); + return gDispatchGroup; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Then.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Then.m new file mode 100644 index 000000000..ab03bd126 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Then.m @@ -0,0 +1,50 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Then.h" + +#import "FBLPromisePrivate.h" + +@implementation FBLPromise (ThenAdditions) + +- (FBLPromise *)then:(FBLPromiseThenWorkBlock)work { + return [self onQueue:FBLPromise.defaultDispatchQueue then:work]; +} + +- (FBLPromise *)onQueue:(dispatch_queue_t)queue then:(FBLPromiseThenWorkBlock)work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self chainOnQueue:queue chainedFulfill:work chainedReject:nil]; +} + +@end + +@implementation FBLPromise (DotSyntax_ThenAdditions) + +- (FBLPromise* (^)(FBLPromiseThenWorkBlock))then { + return ^(FBLPromiseThenWorkBlock work) { + return [self then:work]; + }; +} + +- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseThenWorkBlock))thenOn { + return ^(dispatch_queue_t queue, FBLPromiseThenWorkBlock work) { + return [self onQueue:queue then:work]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Timeout.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Timeout.m new file mode 100644 index 000000000..a2252e65b --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Timeout.m @@ -0,0 +1,64 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Timeout.h" + +#import "FBLPromisePrivate.h" + +@implementation FBLPromise (TimeoutAdditions) + +- (FBLPromise *)timeout:(NSTimeInterval)interval { + return [self onQueue:FBLPromise.defaultDispatchQueue timeout:interval]; +} + +- (FBLPromise *)onQueue:(dispatch_queue_t)queue timeout:(NSTimeInterval)interval { + NSParameterAssert(queue); + + FBLPromise *promise = [[FBLPromise alloc] initPending]; + [self observeOnQueue:queue + fulfill:^(id __nullable value) { + [promise fulfill:value]; + } + reject:^(NSError *error) { + [promise reject:error]; + }]; + typeof(self) __weak weakPromise = promise; + dispatch_after(dispatch_time(0, (int64_t)(interval * NSEC_PER_SEC)), queue, ^{ + NSError *timedOutError = [[NSError alloc] initWithDomain:FBLPromiseErrorDomain + code:FBLPromiseErrorCodeTimedOut + userInfo:nil]; + [weakPromise reject:timedOutError]; + }); + return promise; +} + +@end + +@implementation FBLPromise (DotSyntax_TimeoutAdditions) + +- (FBLPromise* (^)(NSTimeInterval))timeout { + return ^(NSTimeInterval interval) { + return [self timeout:interval]; + }; +} + +- (FBLPromise* (^)(dispatch_queue_t, NSTimeInterval))timeoutOn { + return ^(dispatch_queue_t queue, NSTimeInterval interval) { + return [self onQueue:queue timeout:interval]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Validate.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Validate.m new file mode 100644 index 000000000..1e21e81b3 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Validate.m @@ -0,0 +1,56 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Validate.h" + +#import "FBLPromisePrivate.h" + +@implementation FBLPromise (ValidateAdditions) + +- (FBLPromise*)validate:(FBLPromiseValidateWorkBlock)predicate { + return [self onQueue:FBLPromise.defaultDispatchQueue validate:predicate]; +} + +- (FBLPromise*)onQueue:(dispatch_queue_t)queue validate:(FBLPromiseValidateWorkBlock)predicate { + NSParameterAssert(queue); + NSParameterAssert(predicate); + + FBLPromiseChainedFulfillBlock chainedFulfill = ^id(id value) { + return predicate(value) ? value : + [[NSError alloc] initWithDomain:FBLPromiseErrorDomain + code:FBLPromiseErrorCodeValidationFailure + userInfo:nil]; + }; + return [self chainOnQueue:queue chainedFulfill:chainedFulfill chainedReject:nil]; +} + +@end + +@implementation FBLPromise (DotSyntax_ValidateAdditions) + +- (FBLPromise* (^)(FBLPromiseValidateWorkBlock))validate { + return ^(FBLPromiseValidateWorkBlock predicate) { + return [self validate:predicate]; + }; +} + +- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseValidateWorkBlock))validateOn { + return ^(dispatch_queue_t queue, FBLPromiseValidateWorkBlock predicate) { + return [self onQueue:queue validate:predicate]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Wrap.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Wrap.m new file mode 100644 index 000000000..3d3341eb5 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise+Wrap.m @@ -0,0 +1,420 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Wrap.h" + +#import "FBLPromise+Async.h" + +@implementation FBLPromise (WrapAdditions) + ++ (instancetype)wrapCompletion:(void (^)(FBLPromiseCompletion))work { + return [self onQueue:self.defaultDispatchQueue wrapCompletion:work]; +} + ++ (instancetype)onQueue:(dispatch_queue_t)queue + wrapCompletion:(void (^)(FBLPromiseCompletion))work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock __unused _) { + work(^{ + fulfill(nil); + }); + }]; +} + ++ (instancetype)wrapObjectCompletion:(void (^)(FBLPromiseObjectCompletion))work { + return [self onQueue:self.defaultDispatchQueue wrapObjectCompletion:work]; +} + ++ (instancetype)onQueue:(dispatch_queue_t)queue + wrapObjectCompletion:(void (^)(FBLPromiseObjectCompletion))work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock __unused _) { + work(^(id __nullable value) { + fulfill(value); + }); + }]; +} + ++ (instancetype)wrapErrorCompletion:(void (^)(FBLPromiseErrorCompletion))work { + return [self onQueue:self.defaultDispatchQueue wrapErrorCompletion:work]; +} + ++ (instancetype)onQueue:(dispatch_queue_t)queue + wrapErrorCompletion:(void (^)(FBLPromiseErrorCompletion))work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { + work(^(NSError *__nullable error) { + if (error) { + reject(error); + } else { + fulfill(nil); + } + }); + }]; +} + ++ (instancetype)wrapObjectOrErrorCompletion:(void (^)(FBLPromiseObjectOrErrorCompletion))work { + return [self onQueue:self.defaultDispatchQueue wrapObjectOrErrorCompletion:work]; +} + ++ (instancetype)onQueue:(dispatch_queue_t)queue + wrapObjectOrErrorCompletion:(void (^)(FBLPromiseObjectOrErrorCompletion))work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { + work(^(id __nullable value, NSError *__nullable error) { + if (error) { + reject(error); + } else { + fulfill(value); + } + }); + }]; +} + ++ (instancetype)wrapErrorOrObjectCompletion:(void (^)(FBLPromiseErrorOrObjectCompletion))work { + return [self onQueue:self.defaultDispatchQueue wrapErrorOrObjectCompletion:work]; +} + ++ (instancetype)onQueue:(dispatch_queue_t)queue + wrapErrorOrObjectCompletion:(void (^)(FBLPromiseErrorOrObjectCompletion))work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { + work(^(NSError *__nullable error, id __nullable value) { + if (error) { + reject(error); + } else { + fulfill(value); + } + }); + }]; +} + ++ (FBLPromise *)wrap2ObjectsOrErrorCompletion: + (void (^)(FBLPromise2ObjectsOrErrorCompletion))work { + return [self onQueue:self.defaultDispatchQueue wrap2ObjectsOrErrorCompletion:work]; +} + ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + wrap2ObjectsOrErrorCompletion:(void (^)(FBLPromise2ObjectsOrErrorCompletion))work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { + work(^(id __nullable value1, id __nullable value2, NSError *__nullable error) { + if (error) { + reject(error); + } else { + fulfill(@[ value1, value2 ]); + } + }); + }]; +} + ++ (FBLPromise *)wrapBoolCompletion:(void (^)(FBLPromiseBoolCompletion))work { + return [self onQueue:self.defaultDispatchQueue wrapBoolCompletion:work]; +} + ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + wrapBoolCompletion:(void (^)(FBLPromiseBoolCompletion))work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock __unused _) { + work(^(BOOL value) { + fulfill(@(value)); + }); + }]; +} + ++ (FBLPromise *)wrapBoolOrErrorCompletion: + (void (^)(FBLPromiseBoolOrErrorCompletion))work { + return [self onQueue:self.defaultDispatchQueue wrapBoolOrErrorCompletion:work]; +} + ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + wrapBoolOrErrorCompletion:(void (^)(FBLPromiseBoolOrErrorCompletion))work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { + work(^(BOOL value, NSError *__nullable error) { + if (error) { + reject(error); + } else { + fulfill(@(value)); + } + }); + }]; +} + ++ (FBLPromise *)wrapIntegerCompletion:(void (^)(FBLPromiseIntegerCompletion))work { + return [self onQueue:self.defaultDispatchQueue wrapIntegerCompletion:work]; +} + ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + wrapIntegerCompletion:(void (^)(FBLPromiseIntegerCompletion))work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock __unused _) { + work(^(NSInteger value) { + fulfill(@(value)); + }); + }]; +} + ++ (FBLPromise *)wrapIntegerOrErrorCompletion: + (void (^)(FBLPromiseIntegerOrErrorCompletion))work { + return [self onQueue:self.defaultDispatchQueue wrapIntegerOrErrorCompletion:work]; +} + ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + wrapIntegerOrErrorCompletion:(void (^)(FBLPromiseIntegerOrErrorCompletion))work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { + work(^(NSInteger value, NSError *__nullable error) { + if (error) { + reject(error); + } else { + fulfill(@(value)); + } + }); + }]; +} + ++ (FBLPromise *)wrapDoubleCompletion:(void (^)(FBLPromiseDoubleCompletion))work { + return [self onQueue:self.defaultDispatchQueue wrapDoubleCompletion:work]; +} + ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + wrapDoubleCompletion:(void (^)(FBLPromiseDoubleCompletion))work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self onQueue:(dispatch_queue_t)queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock __unused _) { + work(^(double value) { + fulfill(@(value)); + }); + }]; +} + ++ (FBLPromise *)wrapDoubleOrErrorCompletion: + (void (^)(FBLPromiseDoubleOrErrorCompletion))work { + return [self onQueue:self.defaultDispatchQueue wrapDoubleOrErrorCompletion:work]; +} + ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + wrapDoubleOrErrorCompletion:(void (^)(FBLPromiseDoubleOrErrorCompletion))work { + NSParameterAssert(queue); + NSParameterAssert(work); + + return [self onQueue:queue + async:^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { + work(^(double value, NSError *__nullable error) { + if (error) { + reject(error); + } else { + fulfill(@(value)); + } + }); + }]; +} + +@end + +@implementation FBLPromise (DotSyntax_WrapAdditions) + ++ (FBLPromise * (^)(void (^)(FBLPromiseCompletion)))wrapCompletion { + return ^(void (^work)(FBLPromiseCompletion)) { + return [self wrapCompletion:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, void (^)(FBLPromiseCompletion)))wrapCompletionOn { + return ^(dispatch_queue_t queue, void (^work)(FBLPromiseCompletion)) { + return [self onQueue:queue wrapCompletion:work]; + }; +} + ++ (FBLPromise * (^)(void (^)(FBLPromiseObjectCompletion)))wrapObjectCompletion { + return ^(void (^work)(FBLPromiseObjectCompletion)) { + return [self wrapObjectCompletion:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, void (^)(FBLPromiseObjectCompletion)))wrapObjectCompletionOn { + return ^(dispatch_queue_t queue, void (^work)(FBLPromiseObjectCompletion)) { + return [self onQueue:queue wrapObjectCompletion:work]; + }; +} + ++ (FBLPromise * (^)(void (^)(FBLPromiseErrorCompletion)))wrapErrorCompletion { + return ^(void (^work)(FBLPromiseErrorCompletion)) { + return [self wrapErrorCompletion:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, void (^)(FBLPromiseErrorCompletion)))wrapErrorCompletionOn { + return ^(dispatch_queue_t queue, void (^work)(FBLPromiseErrorCompletion)) { + return [self onQueue:queue wrapErrorCompletion:work]; + }; +} + ++ (FBLPromise * (^)(void (^)(FBLPromiseObjectOrErrorCompletion)))wrapObjectOrErrorCompletion { + return ^(void (^work)(FBLPromiseObjectOrErrorCompletion)) { + return [self wrapObjectOrErrorCompletion:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, + void (^)(FBLPromiseObjectOrErrorCompletion)))wrapObjectOrErrorCompletionOn { + return ^(dispatch_queue_t queue, void (^work)(FBLPromiseObjectOrErrorCompletion)) { + return [self onQueue:queue wrapObjectOrErrorCompletion:work]; + }; +} + ++ (FBLPromise * (^)(void (^)(FBLPromiseErrorOrObjectCompletion)))wrapErrorOrObjectCompletion { + return ^(void (^work)(FBLPromiseErrorOrObjectCompletion)) { + return [self wrapErrorOrObjectCompletion:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, + void (^)(FBLPromiseErrorOrObjectCompletion)))wrapErrorOrObjectCompletionOn { + return ^(dispatch_queue_t queue, void (^work)(FBLPromiseErrorOrObjectCompletion)) { + return [self onQueue:queue wrapErrorOrObjectCompletion:work]; + }; +} + ++ (FBLPromise * (^)(void (^)(FBLPromise2ObjectsOrErrorCompletion))) + wrap2ObjectsOrErrorCompletion { + return ^(void (^work)(FBLPromise2ObjectsOrErrorCompletion)) { + return [self wrap2ObjectsOrErrorCompletion:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, void (^)(FBLPromise2ObjectsOrErrorCompletion))) + wrap2ObjectsOrErrorCompletionOn { + return ^(dispatch_queue_t queue, void (^work)(FBLPromise2ObjectsOrErrorCompletion)) { + return [self onQueue:queue wrap2ObjectsOrErrorCompletion:work]; + }; +} + ++ (FBLPromise * (^)(void (^)(FBLPromiseBoolCompletion)))wrapBoolCompletion { + return ^(void (^work)(FBLPromiseBoolCompletion)) { + return [self wrapBoolCompletion:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, + void (^)(FBLPromiseBoolCompletion)))wrapBoolCompletionOn { + return ^(dispatch_queue_t queue, void (^work)(FBLPromiseBoolCompletion)) { + return [self onQueue:queue wrapBoolCompletion:work]; + }; +} + ++ (FBLPromise * (^)(void (^)(FBLPromiseBoolOrErrorCompletion))) + wrapBoolOrErrorCompletion { + return ^(void (^work)(FBLPromiseBoolOrErrorCompletion)) { + return [self wrapBoolOrErrorCompletion:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, void (^)(FBLPromiseBoolOrErrorCompletion))) + wrapBoolOrErrorCompletionOn { + return ^(dispatch_queue_t queue, void (^work)(FBLPromiseBoolOrErrorCompletion)) { + return [self onQueue:queue wrapBoolOrErrorCompletion:work]; + }; +} + ++ (FBLPromise * (^)(void (^)(FBLPromiseIntegerCompletion)))wrapIntegerCompletion { + return ^(void (^work)(FBLPromiseIntegerCompletion)) { + return [self wrapIntegerCompletion:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, + void (^)(FBLPromiseIntegerCompletion)))wrapIntegerCompletionOn { + return ^(dispatch_queue_t queue, void (^work)(FBLPromiseIntegerCompletion)) { + return [self onQueue:queue wrapIntegerCompletion:work]; + }; +} + ++ (FBLPromise * (^)(void (^)(FBLPromiseIntegerOrErrorCompletion))) + wrapIntegerOrErrorCompletion { + return ^(void (^work)(FBLPromiseIntegerOrErrorCompletion)) { + return [self wrapIntegerOrErrorCompletion:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, void (^)(FBLPromiseIntegerOrErrorCompletion))) + wrapIntegerOrErrorCompletionOn { + return ^(dispatch_queue_t queue, void (^work)(FBLPromiseIntegerOrErrorCompletion)) { + return [self onQueue:queue wrapIntegerOrErrorCompletion:work]; + }; +} + ++ (FBLPromise * (^)(void (^)(FBLPromiseDoubleCompletion)))wrapDoubleCompletion { + return ^(void (^work)(FBLPromiseDoubleCompletion)) { + return [self wrapDoubleCompletion:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, + void (^)(FBLPromiseDoubleCompletion)))wrapDoubleCompletionOn { + return ^(dispatch_queue_t queue, void (^work)(FBLPromiseDoubleCompletion)) { + return [self onQueue:queue wrapDoubleCompletion:work]; + }; +} + ++ (FBLPromise * (^)(void (^)(FBLPromiseDoubleOrErrorCompletion))) + wrapDoubleOrErrorCompletion { + return ^(void (^work)(FBLPromiseDoubleOrErrorCompletion)) { + return [self wrapDoubleOrErrorCompletion:work]; + }; +} + ++ (FBLPromise * (^)(dispatch_queue_t, void (^)(FBLPromiseDoubleOrErrorCompletion))) + wrapDoubleOrErrorCompletionOn { + return ^(dispatch_queue_t queue, void (^work)(FBLPromiseDoubleOrErrorCompletion)) { + return [self onQueue:queue wrapDoubleOrErrorCompletion:work]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise.m new file mode 100644 index 000000000..0837b04c5 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromise.m @@ -0,0 +1,297 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromisePrivate.h" + +/** All states a promise can be in. */ +typedef NS_ENUM(NSInteger, FBLPromiseState) { + FBLPromiseStatePending = 0, + FBLPromiseStateFulfilled, + FBLPromiseStateRejected, +}; + +typedef void (^FBLPromiseObserver)(FBLPromiseState state, id __nullable resolution); + +static dispatch_queue_t gFBLPromiseDefaultDispatchQueue; + +@implementation FBLPromise { + /** Current state of the promise. */ + FBLPromiseState _state; + /** + Set of arbitrary objects to keep strongly while the promise is pending. + Becomes nil after the promise has been resolved. + */ + NSMutableSet *__nullable _pendingObjects; + /** + Value to fulfill the promise with. + Can be nil if the promise is still pending, was resolved with nil or after it has been rejected. + */ + id __nullable _value; + /** + Error to reject the promise with. + Can be nil if the promise is still pending or after it has been fulfilled. + */ + NSError *__nullable _error; + /** List of observers to notify when the promise gets resolved. */ + NSMutableArray *_observers; +} + ++ (void)initialize { + if (self == [FBLPromise class]) { + gFBLPromiseDefaultDispatchQueue = dispatch_get_main_queue(); + } +} + ++ (dispatch_queue_t)defaultDispatchQueue { + @synchronized(self) { + return gFBLPromiseDefaultDispatchQueue; + } +} + ++ (void)setDefaultDispatchQueue:(dispatch_queue_t)queue { + NSParameterAssert(queue); + + @synchronized(self) { + gFBLPromiseDefaultDispatchQueue = queue; + } +} + ++ (instancetype)pendingPromise { + return [[self alloc] initPending]; +} + ++ (instancetype)resolvedWith:(nullable id)resolution { + return [[self alloc] initWithResolution:resolution]; +} + +- (void)fulfill:(nullable id)value { + if ([value isKindOfClass:[NSError class]]) { + [self reject:(NSError *)value]; + } else { + @synchronized(self) { + if (_state == FBLPromiseStatePending) { + _state = FBLPromiseStateFulfilled; + _value = value; + _pendingObjects = nil; + for (FBLPromiseObserver observer in _observers) { + observer(_state, _value); + } + _observers = nil; + dispatch_group_leave(FBLPromise.dispatchGroup); + } + } + } +} + +- (void)reject:(NSError *)error { + NSAssert([error isKindOfClass:[NSError class]], @"Invalid error type."); + + if (![error isKindOfClass:[NSError class]]) { + // Give up on invalid error type in Release mode. + @throw error; // NOLINT + } + @synchronized(self) { + if (_state == FBLPromiseStatePending) { + _state = FBLPromiseStateRejected; + _error = error; + _pendingObjects = nil; + for (FBLPromiseObserver observer in _observers) { + observer(_state, _error); + } + _observers = nil; + dispatch_group_leave(FBLPromise.dispatchGroup); + } + } +} + +#pragma mark - NSObject + +- (NSString *)description { + if (self.isFulfilled) { + return [NSString stringWithFormat:@"<%@ %p> Fulfilled: %@", NSStringFromClass([self class]), + self, self.value]; + } + if (self.isRejected) { + return [NSString stringWithFormat:@"<%@ %p> Rejected: %@", NSStringFromClass([self class]), + self, self.error]; + } + return [NSString stringWithFormat:@"<%@ %p> Pending", NSStringFromClass([self class]), self]; +} + +#pragma mark - Private + +- (instancetype)initPending { + self = [super init]; + if (self) { + dispatch_group_enter(FBLPromise.dispatchGroup); + } + return self; +} + +- (instancetype)initWithResolution:(nullable id)resolution { + self = [super init]; + if (self) { + if ([resolution isKindOfClass:[NSError class]]) { + _state = FBLPromiseStateRejected; + _error = (NSError *)resolution; + } else { + _state = FBLPromiseStateFulfilled; + _value = resolution; + } + } + return self; +} + +- (void)dealloc { + if (_state == FBLPromiseStatePending) { + dispatch_group_leave(FBLPromise.dispatchGroup); + } +} + +- (BOOL)isPending { + @synchronized(self) { + return _state == FBLPromiseStatePending; + } +} + +- (BOOL)isFulfilled { + @synchronized(self) { + return _state == FBLPromiseStateFulfilled; + } +} + +- (BOOL)isRejected { + @synchronized(self) { + return _state == FBLPromiseStateRejected; + } +} + +- (nullable id)value { + @synchronized(self) { + return _value; + } +} + +- (NSError *__nullable)error { + @synchronized(self) { + return _error; + } +} + +- (NSMutableSet *__nullable)pendingObjects { + @synchronized(self) { + if (_state == FBLPromiseStatePending) { + if (!_pendingObjects) { + _pendingObjects = [[NSMutableSet alloc] init]; + } + } + return _pendingObjects; + } +} + +- (void)observeOnQueue:(dispatch_queue_t)queue + fulfill:(FBLPromiseOnFulfillBlock)onFulfill + reject:(FBLPromiseOnRejectBlock)onReject { + NSParameterAssert(queue); + NSParameterAssert(onFulfill); + NSParameterAssert(onReject); + + @synchronized(self) { + switch (_state) { + case FBLPromiseStatePending: { + if (!_observers) { + _observers = [[NSMutableArray alloc] init]; + } + [_observers addObject:^(FBLPromiseState state, id __nullable resolution) { + dispatch_group_async(FBLPromise.dispatchGroup, queue, ^{ + switch (state) { + case FBLPromiseStatePending: + break; + case FBLPromiseStateFulfilled: + onFulfill(resolution); + break; + case FBLPromiseStateRejected: + onReject(resolution); + break; + } + }); + }]; + break; + } + case FBLPromiseStateFulfilled: { + dispatch_group_async(FBLPromise.dispatchGroup, queue, ^{ + onFulfill(self->_value); + }); + break; + } + case FBLPromiseStateRejected: { + dispatch_group_async(FBLPromise.dispatchGroup, queue, ^{ + onReject(self->_error); + }); + break; + } + } + } +} + +- (FBLPromise *)chainOnQueue:(dispatch_queue_t)queue + chainedFulfill:(FBLPromiseChainedFulfillBlock)chainedFulfill + chainedReject:(FBLPromiseChainedRejectBlock)chainedReject { + NSParameterAssert(queue); + + FBLPromise *promise = [[FBLPromise alloc] initPending]; + __auto_type resolver = ^(id __nullable value) { + if ([value isKindOfClass:[FBLPromise class]]) { + [(FBLPromise *)value observeOnQueue:queue + fulfill:^(id __nullable value) { + [promise fulfill:value]; + } + reject:^(NSError *error) { + [promise reject:error]; + }]; + } else { + [promise fulfill:value]; + } + }; + [self observeOnQueue:queue + fulfill:^(id __nullable value) { + value = chainedFulfill ? chainedFulfill(value) : value; + resolver(value); + } + reject:^(NSError *error) { + id value = chainedReject ? chainedReject(error) : error; + resolver(value); + }]; + return promise; +} + +@end + +@implementation FBLPromise (DotSyntaxAdditions) + ++ (instancetype (^)(void))pending { + return ^(void) { + return [self pendingPromise]; + }; +} + ++ (instancetype (^)(id __nullable))resolved { + return ^(id resolution) { + return [self resolvedWith:resolution]; + }; +} + +@end diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromiseError.m b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromiseError.m new file mode 100644 index 000000000..1cc181ade --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/FBLPromiseError.m @@ -0,0 +1,19 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromiseError.h" + +NSErrorDomain const FBLPromiseErrorDomain = @"com.google.FBLPromises.Error"; diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+All.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+All.h new file mode 100644 index 000000000..9c0090e24 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+All.h @@ -0,0 +1,63 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(AllAdditions) + +/** + Wait until all of the given promises are fulfilled. + If one of the given promises is rejected, then the returned promise is rejected with same error. + If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`, + it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly. + Promises resolved with `nil` become `NSNull` instances in the resulting array. + + @param promises Promises to wait for. + @return Promise of an array containing the values of input promises in the same order. + */ ++ (FBLPromise *)all:(NSArray *)promises NS_SWIFT_UNAVAILABLE(""); + +/** + Wait until all of the given promises are fulfilled. + If one of the given promises is rejected, then the returned promise is rejected with same error. + If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`, + it's implicitly considered a pre-fulfilled or pre-rejected FBLPromise correspondingly. + Promises resolved with `nil` become `NSNull` instances in the resulting array. + + @param queue A queue to dispatch on. + @param promises Promises to wait for. + @return Promise of an array containing the values of input promises in the same order. + */ ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + all:(NSArray *)promises NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `all` operators. + Usage: FBLPromise.all(@[ ... ]) + */ +@interface FBLPromise(DotSyntax_AllAdditions) + ++ (FBLPromise * (^)(NSArray *))all FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))allOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Always.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Always.h new file mode 100644 index 000000000..13000f5b4 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Always.h @@ -0,0 +1,54 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(AlwaysAdditions) + +typedef void (^FBLPromiseAlwaysWorkBlock)(void) NS_SWIFT_UNAVAILABLE(""); + +/** + @param work A block that always executes, no matter if the receiver is rejected or fulfilled. + @return A new pending promise to be resolved with same resolution as the receiver. + */ +- (FBLPromise *)always:(FBLPromiseAlwaysWorkBlock)work NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to dispatch on. + @param work A block that always executes, no matter if the receiver is rejected or fulfilled. + @return A new pending promise to be resolved with same resolution as the receiver. + */ +- (FBLPromise *)onQueue:(dispatch_queue_t)queue + always:(FBLPromiseAlwaysWorkBlock)work NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `always` operators. + Usage: promise.always(^{...}) + */ +@interface FBLPromise(DotSyntax_AlwaysAdditions) + +- (FBLPromise* (^)(FBLPromiseAlwaysWorkBlock))always FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); +- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAlwaysWorkBlock))alwaysOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Any.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Any.h new file mode 100644 index 000000000..82875bf77 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Any.h @@ -0,0 +1,69 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(AnyAdditions) + +/** + Waits until all of the given promises are either fulfilled or rejected. + If all promises are rejected, then the returned promise is rejected with same error + as the last one rejected. + If at least one of the promises is fulfilled, the resulting promise is fulfilled with an array of + values or `NSErrors`, matching the original order of fulfilled or rejected promises respectively. + If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`, + it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly. + Promises resolved with `nil` become `NSNull` instances in the resulting array. + + @param promises Promises to wait for. + @return Promise of array containing the values or `NSError`s of input promises in the same order. + */ ++ (FBLPromise *)any:(NSArray *)promises NS_SWIFT_UNAVAILABLE(""); + +/** + Waits until all of the given promises are either fulfilled or rejected. + If all promises are rejected, then the returned promise is rejected with same error + as the last one rejected. + If at least one of the promises is fulfilled, the resulting promise is fulfilled with an array of + values or `NSError`s, matching the original order of fulfilled or rejected promises respectively. + If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`, + it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly. + Promises resolved with `nil` become `NSNull` instances in the resulting array. + + @param queue A queue to dispatch on. + @param promises Promises to wait for. + @return Promise of array containing the values or `NSError`s of input promises in the same order. + */ ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + any:(NSArray *)promises NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `any` operators. + Usage: FBLPromise.any(@[ ... ]) + */ +@interface FBLPromise(DotSyntax_AnyAdditions) + ++ (FBLPromise * (^)(NSArray *))any FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))anyOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Async.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Async.h new file mode 100644 index 000000000..0588a9eaf --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Async.h @@ -0,0 +1,60 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(AsyncAdditions) + +typedef void (^FBLPromiseFulfillBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseRejectBlock)(NSError *error) NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseAsyncWorkBlock)(FBLPromiseFulfillBlock fulfill, + FBLPromiseRejectBlock reject) NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise and executes `work` block asynchronously. + + @param work A block to perform any operations needed to resolve the promise. + @return A new pending promise. + */ ++ (instancetype)async:(FBLPromiseAsyncWorkBlock)work NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise and executes `work` block asynchronously on the given queue. + + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @return A new pending promise. + */ ++ (instancetype)onQueue:(dispatch_queue_t)queue + async:(FBLPromiseAsyncWorkBlock)work NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `async` operators. + Usage: FBLPromise.async(^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { ... }) + */ +@interface FBLPromise(DotSyntax_AsyncAdditions) + ++ (FBLPromise* (^)(FBLPromiseAsyncWorkBlock))async FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAsyncWorkBlock))asyncOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Await.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Await.h new file mode 100644 index 000000000..c97a1baf4 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Await.h @@ -0,0 +1,32 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + Waits for promise resolution. The current thread blocks until the promise is resolved. + + @param promise Promise to wait for. + @param error Error the promise was rejected with, or `nil` if the promise was fulfilled. + @return Value the promise was fulfilled with. If the promise was rejected, the return value + is always `nil`, but the error out arg is not. + */ +FOUNDATION_EXTERN id __nullable FBLPromiseAwait(FBLPromise *promise, + NSError **error) NS_REFINED_FOR_SWIFT; + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Catch.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Catch.h new file mode 100644 index 000000000..a9ff170fc --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Catch.h @@ -0,0 +1,59 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(CatchAdditions) + +typedef void (^FBLPromiseCatchWorkBlock)(NSError *error) NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise which eventually gets resolved with same resolution as the receiver. + If receiver is rejected, then `reject` block is executed asynchronously. + + @param reject A block to handle the error that receiver was rejected with. + @return A new pending promise. + */ +- (FBLPromise *)catch:(FBLPromiseCatchWorkBlock)reject NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise which eventually gets resolved with same resolution as the receiver. + If receiver is rejected, then `reject` block is executed asynchronously on the given queue. + + @param queue A queue to invoke the `reject` block on. + @param reject A block to handle the error that receiver was rejected with. + @return A new pending promise. + */ +- (FBLPromise *)onQueue:(dispatch_queue_t)queue + catch:(FBLPromiseCatchWorkBlock)reject NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `catch` operators. + Usage: promise.catch(^(NSError *error) { ... }) + */ +@interface FBLPromise(DotSyntax_CatchAdditions) + +- (FBLPromise* (^)(FBLPromiseCatchWorkBlock))catch FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); +- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseCatchWorkBlock))catchOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Delay.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Delay.h new file mode 100644 index 000000000..557df4850 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Delay.h @@ -0,0 +1,59 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(DelayAdditions) + +/** + Creates a new pending promise that fulfills with the same value as `self` after the `delay`, or + rejects with the same error immediately. + + @param interval Time to wait in seconds. + @return A new pending promise that fulfills at least `delay` seconds later than `self`, or rejects + with the same error immediately. + */ +- (FBLPromise *)delay:(NSTimeInterval)interval NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a new pending promise that fulfills with the same value as `self` after the `delay`, or + rejects with the same error immediately. + + @param queue A queue to dispatch on. + @param interval Time to wait in seconds. + @return A new pending promise that fulfills at least `delay` seconds later than `self`, or rejects + with the same error immediately. + */ +- (FBLPromise *)onQueue:(dispatch_queue_t)queue + delay:(NSTimeInterval)interval NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `delay` operators. + Usage: promise.delay(...) + */ +@interface FBLPromise(DotSyntax_DelayAdditions) + +- (FBLPromise * (^)(NSTimeInterval))delay FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); +- (FBLPromise * (^)(dispatch_queue_t, NSTimeInterval))delayOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Do.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Do.h new file mode 100644 index 000000000..6838e0adf --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Do.h @@ -0,0 +1,55 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(DoAdditions) + +typedef id __nullable (^FBLPromiseDoWorkBlock)(void) NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise and executes `work` block asynchronously. + + @param work A block that returns a value or an error used to resolve the promise. + @return A new pending promise. + */ ++ (instancetype)do:(FBLPromiseDoWorkBlock)work NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise and executes `work` block asynchronously on the given queue. + + @param queue A queue to invoke the `work` block on. + @param work A block that returns a value or an error used to resolve the promise. + @return A new pending promise. + */ ++ (instancetype)onQueue:(dispatch_queue_t)queue do:(FBLPromiseDoWorkBlock)work NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `do` operators. + Usage: FBLPromise.doOn(queue, ^(NSError *error) { ... }) + */ +@interface FBLPromise(DotSyntax_DoAdditions) + ++ (FBLPromise * (^)(dispatch_queue_t, FBLPromiseDoWorkBlock))doOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Race.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Race.h new file mode 100644 index 000000000..2f67258de --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Race.h @@ -0,0 +1,62 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(RaceAdditions) + +/** + Wait until any of the given promises are fulfilled. + If one of the promises is rejected, then the returned promise is rejected with same error. + If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`, + it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly. + + @param promises Promises to wait for. + @return A new pending promise to be resolved with the same resolution as the first promise, among + the given ones, which was resolved. + */ ++ (instancetype)race:(NSArray *)promises NS_SWIFT_UNAVAILABLE(""); + +/** + Wait until any of the given promises are fulfilled. + If one of the promises is rejected, then the returned promise is rejected with same error. + If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`, + it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly. + + @param queue A queue to dispatch on. + @param promises Promises to wait for. + @return A new pending promise to be resolved with the same resolution as the first promise, among + the given ones, which was resolved. + */ ++ (instancetype)onQueue:(dispatch_queue_t)queue race:(NSArray *)promises NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `race` operators. + Usage: FBLPromise.race(@[ ... ]) + */ +@interface FBLPromise(DotSyntax_RaceAdditions) + ++ (FBLPromise * (^)(NSArray *))race FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))raceOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Recover.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Recover.h new file mode 100644 index 000000000..bb7df7ecf --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Recover.h @@ -0,0 +1,60 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(RecoverAdditions) + +typedef id __nullable (^FBLPromiseRecoverWorkBlock)(NSError *error) NS_SWIFT_UNAVAILABLE(""); + +/** + Provides a new promise to recover in case the receiver gets rejected. + + @param recovery A block to handle the error that the receiver was rejected with. + @return A new pending promise to use instead of the rejected one that gets resolved with resolution + returned from `recovery` block. + */ +- (FBLPromise *)recover:(FBLPromiseRecoverWorkBlock)recovery NS_SWIFT_UNAVAILABLE(""); + +/** + Provides a new promise to recover in case the receiver gets rejected. + + @param queue A queue to dispatch on. + @param recovery A block to handle the error that the receiver was rejected with. + @return A new pending promise to use instead of the rejected one that gets resolved with resolution + returned from `recovery` block. + */ +- (FBLPromise *)onQueue:(dispatch_queue_t)queue + recover:(FBLPromiseRecoverWorkBlock)recovery NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `recover` operators. + Usage: promise.recover(^id(NSError *error) {...}) + */ +@interface FBLPromise(DotSyntax_RecoverAdditions) + +- (FBLPromise * (^)(FBLPromiseRecoverWorkBlock))recover FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); +- (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRecoverWorkBlock))recoverOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Reduce.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Reduce.h new file mode 100644 index 000000000..5bb1eeee4 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Reduce.h @@ -0,0 +1,71 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(ReduceAdditions) + +typedef id __nullable (^FBLPromiseReducerBlock)(Value __nullable partial, id next) + NS_SWIFT_UNAVAILABLE(""); + +/** + Sequentially reduces a collection of values to a single promise using a given combining block + and the value `self` resolves with as initial value. + + @param items An array of values to process in order. + @param reducer A block to combine an accumulating value and an element of the sequence into + the new accumulating value or a promise resolved with it, to be used in the next + call of the `reducer` or returned to the caller. + @return A new pending promise returned from the last `reducer` invocation. + Or `self` if `items` is empty. + */ +- (FBLPromise *)reduce:(NSArray *)items + combine:(FBLPromiseReducerBlock)reducer NS_SWIFT_UNAVAILABLE(""); + +/** + Sequentially reduces a collection of values to a single promise using a given combining block + and the value `self` resolves with as initial value. + + @param queue A queue to dispatch on. + @param items An array of values to process in order. + @param reducer A block to combine an accumulating value and an element of the sequence into + the new accumulating value or a promise resolved with it, to be used in the next + call of the `reducer` or returned to the caller. + @return A new pending promise returned from the last `reducer` invocation. + Or `self` if `items` is empty. + */ +- (FBLPromise *)onQueue:(dispatch_queue_t)queue + reduce:(NSArray *)items + combine:(FBLPromiseReducerBlock)reducer NS_SWIFT_UNAVAILABLE(""); + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `reduce` operators. + Usage: promise.reduce(values, ^id(id partial, id next) { ... }) + */ +@interface FBLPromise(DotSyntax_ReduceAdditions) + +- (FBLPromise * (^)(NSArray *, FBLPromiseReducerBlock))reduce FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); +- (FBLPromise * (^)(dispatch_queue_t, NSArray *, FBLPromiseReducerBlock))reduceOn + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Retry.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Retry.h new file mode 100644 index 000000000..98ef558c0 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Retry.h @@ -0,0 +1,165 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +/** The default number of retry attempts is 1. */ +FOUNDATION_EXTERN NSInteger const FBLPromiseRetryDefaultAttemptsCount NS_REFINED_FOR_SWIFT; + +/** The default delay interval before making a retry attempt is 1.0 second. */ +FOUNDATION_EXTERN NSTimeInterval const FBLPromiseRetryDefaultDelayInterval NS_REFINED_FOR_SWIFT; + +@interface FBLPromise(RetryAdditions) + +typedef id __nullable (^FBLPromiseRetryWorkBlock)(void) NS_SWIFT_UNAVAILABLE(""); +typedef BOOL (^FBLPromiseRetryPredicateBlock)(NSInteger, NSError *) NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise that fulfills with the same value as the promise returned from `work` + block, which executes asynchronously, or rejects with the same error after all retry attempts have + been exhausted. Defaults to `FBLPromiseRetryDefaultAttemptsCount` attempt(s) on rejection where the + `work` block is retried after a delay of `FBLPromiseRetryDefaultDelayInterval` second(s). + + @param work A block that executes asynchronously on the default queue and returns a value or an + error used to resolve the promise. + @return A new pending promise that fulfills with the same value as the promise returned from `work` + block, or rejects with the same error after all retry attempts have been exhausted. + */ ++ (FBLPromise *)retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise that fulfills with the same value as the promise returned from `work` + block, which executes asynchronously on the given `queue`, or rejects with the same error after all + retry attempts have been exhausted. Defaults to `FBLPromiseRetryDefaultAttemptsCount` attempt(s) on + rejection where the `work` block is retried on the given `queue` after a delay of + `FBLPromiseRetryDefaultDelayInterval` second(s). + + @param queue A queue to invoke the `work` block on. + @param work A block that executes asynchronously on the given `queue` and returns a value or an + error used to resolve the promise. + @return A new pending promise that fulfills with the same value as the promise returned from `work` + block, or rejects with the same error after all retry attempts have been exhausted. + */ ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise that fulfills with the same value as the promise returned from `work` + block, which executes asynchronously, or rejects with the same error after all retry attempts have + been exhausted. + + @param count Max number of retry attempts. The `work` block will be executed once if the specified + count is less than or equal to zero. + @param work A block that executes asynchronously on the default queue and returns a value or an + error used to resolve the promise. + @return A new pending promise that fulfills with the same value as the promise returned from `work` + block, or rejects with the same error after all retry attempts have been exhausted. + */ ++ (FBLPromise *)attempts:(NSInteger)count + retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise that fulfills with the same value as the promise returned from `work` + block, which executes asynchronously on the given `queue`, or rejects with the same error after all + retry attempts have been exhausted. + + @param queue A queue to invoke the `work` block on. + @param count Max number of retry attempts. The `work` block will be executed once if the specified + count is less than or equal to zero. + @param work A block that executes asynchronously on the given `queue` and returns a value or an + error used to resolve the promise. + @return A new pending promise that fulfills with the same value as the promise returned from `work` + block, or rejects with the same error after all retry attempts have been exhausted. + */ ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + attempts:(NSInteger)count + retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise that fulfills with the same value as the promise returned from `work` + block, which executes asynchronously, or rejects with the same error after all retry attempts have + been exhausted. On rejection, the `work` block is retried after the given delay `interval` and will + continue to retry until the number of specified attempts have been exhausted or will bail early if + the given condition is not met. + + @param count Max number of retry attempts. The `work` block will be executed once if the specified + count is less than or equal to zero. + @param interval Time to wait before the next retry attempt. + @param predicate Condition to check before the next retry attempt. The predicate block provides the + the number of remaining retry attempts and the error that the promise was rejected + with. + @param work A block that executes asynchronously on the default queue and returns a value or an + error used to resolve the promise. + @return A new pending promise that fulfills with the same value as the promise returned from `work` + block, or rejects with the same error after all retry attempts have been exhausted or if + the given condition is not met. + */ ++ (FBLPromise *)attempts:(NSInteger)count + delay:(NSTimeInterval)interval + condition:(nullable FBLPromiseRetryPredicateBlock)predicate + retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise that fulfills with the same value as the promise returned from `work` + block, which executes asynchronously on the given `queue`, or rejects with the same error after all + retry attempts have been exhausted. On rejection, the `work` block is retried after the given + delay `interval` and will continue to retry until the number of specified attempts have been + exhausted or will bail early if the given condition is not met. + + @param queue A queue to invoke the `work` block on. + @param count Max number of retry attempts. The `work` block will be executed once if the specified + count is less than or equal to zero. + @param interval Time to wait before the next retry attempt. + @param predicate Condition to check before the next retry attempt. The predicate block provides the + the number of remaining retry attempts and the error that the promise was rejected + with. + @param work A block that executes asynchronously on the given `queue` and returns a value or an + error used to resolve the promise. + @return A new pending promise that fulfills with the same value as the promise returned from `work` + block, or rejects with the same error after all retry attempts have been exhausted or if + the given condition is not met. + */ ++ (FBLPromise *)onQueue:(dispatch_queue_t)queue + attempts:(NSInteger)count + delay:(NSTimeInterval)interval + condition:(nullable FBLPromiseRetryPredicateBlock)predicate + retry:(FBLPromiseRetryWorkBlock)work NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise+Retry` operators. + Usage: FBLPromise.retry(^id { ... }) + */ +@interface FBLPromise(DotSyntax_RetryAdditions) + ++ (FBLPromise * (^)(FBLPromiseRetryWorkBlock))retry FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRetryWorkBlock))retryOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise * (^)(NSInteger, NSTimeInterval, FBLPromiseRetryPredicateBlock __nullable, + FBLPromiseRetryWorkBlock))retryAgain FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise * (^)(dispatch_queue_t, NSInteger, NSTimeInterval, + FBLPromiseRetryPredicateBlock __nullable, + FBLPromiseRetryWorkBlock))retryAgainOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h new file mode 100644 index 000000000..07a65ec4a --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Testing.h @@ -0,0 +1,63 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + Waits for all scheduled promises blocks. + + @param timeout Maximum time to wait. + @return YES if all promises blocks have completed before the timeout and NO otherwise. + */ +FOUNDATION_EXTERN BOOL FBLWaitForPromisesWithTimeout(NSTimeInterval timeout) NS_REFINED_FOR_SWIFT; + +@interface FBLPromise(TestingAdditions) + +/** + Dispatch group for promises that is typically used to wait for all scheduled blocks. + */ +@property(class, nonatomic, readonly) dispatch_group_t dispatchGroup NS_REFINED_FOR_SWIFT; + +/** + Properties to get the current state of the promise. + */ +@property(nonatomic, readonly) BOOL isPending NS_REFINED_FOR_SWIFT; +@property(nonatomic, readonly) BOOL isFulfilled NS_REFINED_FOR_SWIFT; +@property(nonatomic, readonly) BOOL isRejected NS_REFINED_FOR_SWIFT; + +/** + Set of arbitrary objects to keep strongly while the promise is pending. + Becomes nil after the promise has been resolved. + */ +@property(nonatomic, readonly, nullable) NSMutableSet *pendingObjects NS_REFINED_FOR_SWIFT; + +/** + Value the promise was fulfilled with. + Can be nil if the promise is still pending, was resolved with nil or after it has been rejected. + */ +@property(nonatomic, readonly, nullable) Value value NS_REFINED_FOR_SWIFT; + +/** + Error the promise was rejected with. + Can be nil if the promise is still pending or after it has been fulfilled. + */ +@property(nonatomic, readonly, nullable) NSError *error NS_REFINED_FOR_SWIFT; + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Then.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Then.h new file mode 100644 index 000000000..32027e697 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Then.h @@ -0,0 +1,63 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(ThenAdditions) + +typedef id __nullable (^FBLPromiseThenWorkBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise which eventually gets resolved with resolution returned from `work` + block: either value, error or another promise. The `work` block is executed asynchronously only + when the receiver is fulfilled. If receiver is rejected, the returned promise is also rejected with + the same error. + + @param work A block to handle the value that receiver was fulfilled with. + @return A new pending promise to be resolved with resolution returned from the `work` block. + */ +- (FBLPromise *)then:(FBLPromiseThenWorkBlock)work NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise which eventually gets resolved with resolution returned from `work` + block: either value, error or another promise. The `work` block is executed asynchronously when the + receiver is fulfilled. If receiver is rejected, the returned promise is also rejected with the same + error. + + @param queue A queue to invoke the `work` block on. + @param work A block to handle the value that receiver was fulfilled with. + @return A new pending promise to be resolved with resolution returned from the `work` block. + */ +- (FBLPromise *)onQueue:(dispatch_queue_t)queue + then:(FBLPromiseThenWorkBlock)work NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `then` operators. + Usage: promise.then(^id(id value) { ... }) + */ +@interface FBLPromise(DotSyntax_ThenAdditions) + +- (FBLPromise* (^)(FBLPromiseThenWorkBlock))then FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); +- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseThenWorkBlock))thenOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Timeout.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Timeout.h new file mode 100644 index 000000000..184ba166f --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Timeout.h @@ -0,0 +1,57 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(TimeoutAdditions) + +/** + Waits for a promise with the specified `timeout`. + + @param interval Time to wait in seconds. + @return A new pending promise that gets either resolved with same resolution as the receiver or + rejected with `FBLPromiseErrorCodeTimedOut` error code in `FBLPromiseErrorDomain`. + */ +- (FBLPromise *)timeout:(NSTimeInterval)interval NS_SWIFT_UNAVAILABLE(""); + +/** + Waits for a promise with the specified `timeout`. + + @param queue A queue to dispatch on. + @param interval Time to wait in seconds. + @return A new pending promise that gets either resolved with same resolution as the receiver or + rejected with `FBLPromiseErrorCodeTimedOut` error code in `FBLPromiseErrorDomain`. + */ +- (FBLPromise *)onQueue:(dispatch_queue_t)queue + timeout:(NSTimeInterval)interval NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `timeout` operators. + Usage: promise.timeout(...) + */ +@interface FBLPromise(DotSyntax_TimeoutAdditions) + +- (FBLPromise* (^)(NSTimeInterval))timeout FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); +- (FBLPromise* (^)(dispatch_queue_t, NSTimeInterval))timeoutOn FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Validate.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Validate.h new file mode 100644 index 000000000..9dfa2f16a --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Validate.h @@ -0,0 +1,60 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface FBLPromise(ValidateAdditions) + +typedef BOOL (^FBLPromiseValidateWorkBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE(""); + +/** + Validates a fulfilled value or rejects the value if it can not be validated. + + @param predicate An expression to validate. + @return A new pending promise that gets either resolved with same resolution as the receiver or + rejected with `FBLPromiseErrorCodeValidationFailure` error code in `FBLPromiseErrorDomain`. + */ +- (FBLPromise *)validate:(FBLPromiseValidateWorkBlock)predicate NS_SWIFT_UNAVAILABLE(""); + +/** + Validates a fulfilled value or rejects the value if it can not be validated. + + @param queue A queue to dispatch on. + @param predicate An expression to validate. + @return A new pending promise that gets either resolved with same resolution as the receiver or + rejected with `FBLPromiseErrorCodeValidationFailure` error code in `FBLPromiseErrorDomain`. + */ +- (FBLPromise *)onQueue:(dispatch_queue_t)queue + validate:(FBLPromiseValidateWorkBlock)predicate NS_REFINED_FOR_SWIFT; + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `validate` operators. + Usage: promise.validate(^BOOL(id value) { ... }) + */ +@interface FBLPromise(DotSyntax_ValidateAdditions) + +- (FBLPromise * (^)(FBLPromiseValidateWorkBlock))validate FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); +- (FBLPromise * (^)(dispatch_queue_t, FBLPromiseValidateWorkBlock))validateOn + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Wrap.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Wrap.h new file mode 100644 index 000000000..664e1bbff --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise+Wrap.h @@ -0,0 +1,316 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + Different types of completion handlers available to be wrapped with promise. + */ +typedef void (^FBLPromiseCompletion)(void) NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseObjectCompletion)(id __nullable) NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseErrorCompletion)(NSError* __nullable) NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseObjectOrErrorCompletion)(id __nullable, NSError* __nullable) + NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseErrorOrObjectCompletion)(NSError* __nullable, id __nullable) + NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromise2ObjectsOrErrorCompletion)(id __nullable, id __nullable, + NSError* __nullable) NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseBoolCompletion)(BOOL) NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseBoolOrErrorCompletion)(BOOL, NSError* __nullable) NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseIntegerCompletion)(NSInteger) NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseIntegerOrErrorCompletion)(NSInteger, NSError* __nullable) + NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseDoubleCompletion)(double) NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseDoubleOrErrorCompletion)(double, NSError* __nullable) + NS_SWIFT_UNAVAILABLE(""); + +/** + Provides an easy way to convert methods that use common callback patterns into promises. + */ +@interface FBLPromise(WrapAdditions) + +/** + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with `nil` when completion handler is invoked. + */ ++ (instancetype)wrapCompletion:(void (^)(FBLPromiseCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with `nil` when completion handler is invoked. + */ ++ (instancetype)onQueue:(dispatch_queue_t)queue + wrapCompletion:(void (^)(FBLPromiseCompletion handler))work NS_SWIFT_UNAVAILABLE(""); + +/** + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an object provided by completion handler. + */ ++ (instancetype)wrapObjectCompletion:(void (^)(FBLPromiseObjectCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an object provided by completion handler. + */ ++ (instancetype)onQueue:(dispatch_queue_t)queue + wrapObjectCompletion:(void (^)(FBLPromiseObjectCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an error provided by completion handler. + If error is `nil`, fulfills with `nil`, otherwise rejects with the error. + */ ++ (instancetype)wrapErrorCompletion:(void (^)(FBLPromiseErrorCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an error provided by completion handler. + If error is `nil`, fulfills with `nil`, otherwise rejects with the error. + */ ++ (instancetype)onQueue:(dispatch_queue_t)queue + wrapErrorCompletion:(void (^)(FBLPromiseErrorCompletion handler))work NS_SWIFT_UNAVAILABLE(""); + +/** + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an object provided by completion handler if error is `nil`. + Otherwise, rejects with the error. + */ ++ (instancetype)wrapObjectOrErrorCompletion: + (void (^)(FBLPromiseObjectOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an object provided by completion handler if error is `nil`. + Otherwise, rejects with the error. + */ ++ (instancetype)onQueue:(dispatch_queue_t)queue + wrapObjectOrErrorCompletion:(void (^)(FBLPromiseObjectOrErrorCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an error or object provided by completion handler. If error + is not `nil`, rejects with the error. + */ ++ (instancetype)wrapErrorOrObjectCompletion: + (void (^)(FBLPromiseErrorOrObjectCompletion handler))work NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an error or object provided by completion handler. If error + is not `nil`, rejects with the error. + */ ++ (instancetype)onQueue:(dispatch_queue_t)queue + wrapErrorOrObjectCompletion:(void (^)(FBLPromiseErrorOrObjectCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an array of objects provided by completion handler in order + if error is `nil`. Otherwise, rejects with the error. + */ ++ (FBLPromise*)wrap2ObjectsOrErrorCompletion: + (void (^)(FBLPromise2ObjectsOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an array of objects provided by completion handler in order + if error is `nil`. Otherwise, rejects with the error. + */ ++ (FBLPromise*)onQueue:(dispatch_queue_t)queue + wrap2ObjectsOrErrorCompletion:(void (^)(FBLPromise2ObjectsOrErrorCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an `NSNumber` wrapping YES/NO. + */ ++ (FBLPromise*)wrapBoolCompletion:(void (^)(FBLPromiseBoolCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an `NSNumber` wrapping YES/NO. + */ ++ (FBLPromise*)onQueue:(dispatch_queue_t)queue + wrapBoolCompletion:(void (^)(FBLPromiseBoolCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an `NSNumber` wrapping YES/NO when error is `nil`. + Otherwise rejects with the error. + */ ++ (FBLPromise*)wrapBoolOrErrorCompletion: + (void (^)(FBLPromiseBoolOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an `NSNumber` wrapping YES/NO when error is `nil`. + Otherwise rejects with the error. + */ ++ (FBLPromise*)onQueue:(dispatch_queue_t)queue + wrapBoolOrErrorCompletion:(void (^)(FBLPromiseBoolOrErrorCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an `NSNumber` wrapping an integer. + */ ++ (FBLPromise*)wrapIntegerCompletion:(void (^)(FBLPromiseIntegerCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an `NSNumber` wrapping an integer. + */ ++ (FBLPromise*)onQueue:(dispatch_queue_t)queue + wrapIntegerCompletion:(void (^)(FBLPromiseIntegerCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an `NSNumber` wrapping an integer when error is `nil`. + Otherwise rejects with the error. + */ ++ (FBLPromise*)wrapIntegerOrErrorCompletion: + (void (^)(FBLPromiseIntegerOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an `NSNumber` wrapping an integer when error is `nil`. + Otherwise rejects with the error. + */ ++ (FBLPromise*)onQueue:(dispatch_queue_t)queue + wrapIntegerOrErrorCompletion:(void (^)(FBLPromiseIntegerOrErrorCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an `NSNumber` wrapping a double. + */ ++ (FBLPromise*)wrapDoubleCompletion:(void (^)(FBLPromiseDoubleCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an `NSNumber` wrapping a double. + */ ++ (FBLPromise*)onQueue:(dispatch_queue_t)queue + wrapDoubleCompletion:(void (^)(FBLPromiseDoubleCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +/** + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an `NSNumber` wrapping a double when error is `nil`. + Otherwise rejects with the error. + */ ++ (FBLPromise*)wrapDoubleOrErrorCompletion: + (void (^)(FBLPromiseDoubleOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE(""); + +/** + @param queue A queue to invoke the `work` block on. + @param work A block to perform any operations needed to resolve the promise. + @returns A promise that resolves with an `NSNumber` wrapping a double when error is `nil`. + Otherwise rejects with the error. + */ ++ (FBLPromise*)onQueue:(dispatch_queue_t)queue + wrapDoubleOrErrorCompletion:(void (^)(FBLPromiseDoubleOrErrorCompletion handler))work + NS_SWIFT_UNAVAILABLE(""); + +@end + +/** + Convenience dot-syntax wrappers for `FBLPromise` `wrap` operators. + Usage: FBLPromise.wrapCompletion(^(FBLPromiseCompletion handler) {...}) + */ +@interface FBLPromise(DotSyntax_WrapAdditions) + ++ (FBLPromise* (^)(void (^)(FBLPromiseCompletion)))wrapCompletion FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseCompletion)))wrapCompletionOn + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(void (^)(FBLPromiseObjectCompletion)))wrapObjectCompletion + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseObjectCompletion)))wrapObjectCompletionOn + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(void (^)(FBLPromiseErrorCompletion)))wrapErrorCompletion FBL_PROMISES_DOT_SYNTAX + NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseErrorCompletion)))wrapErrorCompletionOn + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(void (^)(FBLPromiseObjectOrErrorCompletion)))wrapObjectOrErrorCompletion + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, + void (^)(FBLPromiseObjectOrErrorCompletion)))wrapObjectOrErrorCompletionOn + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(void (^)(FBLPromiseErrorOrObjectCompletion)))wrapErrorOrObjectCompletion + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, + void (^)(FBLPromiseErrorOrObjectCompletion)))wrapErrorOrObjectCompletionOn + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(void (^)(FBLPromise2ObjectsOrErrorCompletion))) + wrap2ObjectsOrErrorCompletion FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromise2ObjectsOrErrorCompletion))) + wrap2ObjectsOrErrorCompletionOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(void (^)(FBLPromiseBoolCompletion)))wrapBoolCompletion + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, + void (^)(FBLPromiseBoolCompletion)))wrapBoolCompletionOn + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(void (^)(FBLPromiseBoolOrErrorCompletion)))wrapBoolOrErrorCompletion + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, + void (^)(FBLPromiseBoolOrErrorCompletion)))wrapBoolOrErrorCompletionOn + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(void (^)(FBLPromiseIntegerCompletion)))wrapIntegerCompletion + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, + void (^)(FBLPromiseIntegerCompletion)))wrapIntegerCompletionOn + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(void (^)(FBLPromiseIntegerOrErrorCompletion))) + wrapIntegerOrErrorCompletion FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseIntegerOrErrorCompletion))) + wrapIntegerOrErrorCompletionOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(void (^)(FBLPromiseDoubleCompletion)))wrapDoubleCompletion + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, + void (^)(FBLPromiseDoubleCompletion)))wrapDoubleCompletionOn + FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(void (^)(FBLPromiseDoubleOrErrorCompletion))) + wrapDoubleOrErrorCompletion FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseDoubleOrErrorCompletion))) + wrapDoubleOrErrorCompletionOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise.h new file mode 100644 index 000000000..cec6336a3 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromise.h @@ -0,0 +1,82 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromiseError.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + Promises synchronization construct in Objective-C. + */ +@interface FBLPromise<__covariant Value> : NSObject + +/** + Default dispatch queue used for `FBLPromise`, which is `main` if a queue is not specified. + */ +@property(class) dispatch_queue_t defaultDispatchQueue NS_REFINED_FOR_SWIFT; + +/** + Creates a pending promise. + */ ++ (instancetype)pendingPromise NS_REFINED_FOR_SWIFT; + +/** + Creates a resolved promise. + + @param resolution An object to resolve the promise with: either a value or an error. + @return A new resolved promise. + */ ++ (instancetype)resolvedWith:(nullable id)resolution NS_REFINED_FOR_SWIFT; + +/** + Synchronously fulfills the promise with a value. + + @param value An arbitrary value to fulfill the promise with, including `nil`. + */ +- (void)fulfill:(nullable Value)value NS_REFINED_FOR_SWIFT; + +/** + Synchronously rejects the promise with an error. + + @param error An error to reject the promise with. + */ +- (void)reject:(NSError *)error NS_REFINED_FOR_SWIFT; + ++ (instancetype)new NS_UNAVAILABLE; +- (instancetype)init NS_UNAVAILABLE; + +@end + +#ifdef FBL_PROMISES_DOT_SYNTAX_IS_DEPRECATED +#define FBL_PROMISES_DOT_SYNTAX __attribute__((deprecated)) +#else +#define FBL_PROMISES_DOT_SYNTAX +#endif + +@interface FBLPromise(DotSyntaxAdditions) + +/** + Convenience dot-syntax wrappers for FBLPromise. + Usage: FBLPromise.pending() + FBLPromise.resolved(value) + + */ ++ (instancetype (^)(void))pending FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); ++ (instancetype (^)(id __nullable))resolved FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromiseError.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromiseError.h new file mode 100644 index 000000000..d37af536c --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromiseError.h @@ -0,0 +1,43 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 + +NS_ASSUME_NONNULL_BEGIN + +FOUNDATION_EXTERN NSErrorDomain const FBLPromiseErrorDomain NS_REFINED_FOR_SWIFT; + +/** + Possible error codes in `FBLPromiseErrorDomain`. + */ +typedef NS_ENUM(NSInteger, FBLPromiseErrorCode) { + /** Promise failed to resolve in time. */ + FBLPromiseErrorCodeTimedOut = 1, + /** Validation predicate returned false. */ + FBLPromiseErrorCodeValidationFailure = 2, +} NS_REFINED_FOR_SWIFT; + +NS_INLINE BOOL FBLPromiseErrorIsTimedOut(NSError *error) NS_SWIFT_UNAVAILABLE("") { + return error.domain == FBLPromiseErrorDomain && + error.code == FBLPromiseErrorCodeTimedOut; +} + +NS_INLINE BOOL FBLPromiseErrorIsValidationFailure(NSError *error) NS_SWIFT_UNAVAILABLE("") { + return error.domain == FBLPromiseErrorDomain && + error.code == FBLPromiseErrorCodeValidationFailure; +} + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromisePrivate.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromisePrivate.h new file mode 100644 index 000000000..7a132f203 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromisePrivate.h @@ -0,0 +1,66 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+Testing.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + Miscellaneous low-level private interfaces available to extend standard FBLPromise functionality. + */ +@interface FBLPromise() + +typedef void (^FBLPromiseOnFulfillBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE(""); +typedef void (^FBLPromiseOnRejectBlock)(NSError *error) NS_SWIFT_UNAVAILABLE(""); +typedef id __nullable (^__nullable FBLPromiseChainedFulfillBlock)(Value __nullable value) + NS_SWIFT_UNAVAILABLE(""); +typedef id __nullable (^__nullable FBLPromiseChainedRejectBlock)(NSError *error) + NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a pending promise. + */ +- (instancetype)initPending NS_SWIFT_UNAVAILABLE(""); + +/** + Creates a resolved promise. + + @param resolution An object to resolve the promise with: either a value or an error. + @return A new resolved promise. + */ +- (instancetype)initWithResolution:(nullable id)resolution NS_SWIFT_UNAVAILABLE(""); + +/** + Invokes `fulfill` and `reject` blocks on `queue` when the receiver gets either fulfilled or + rejected respectively. + */ +- (void)observeOnQueue:(dispatch_queue_t)queue + fulfill:(FBLPromiseOnFulfillBlock)onFulfill + reject:(FBLPromiseOnRejectBlock)onReject NS_SWIFT_UNAVAILABLE(""); + +/** + Returns a new promise which gets resolved with the return value of `chainedFulfill` or + `chainedReject` blocks respectively. The blocks are invoked when the receiver gets either + fulfilled or rejected. If `nil` is passed to either block arg, the returned promise is resolved + with the same resolution as the receiver. + */ +- (FBLPromise *)chainOnQueue:(dispatch_queue_t)queue + chainedFulfill:(FBLPromiseChainedFulfillBlock)chainedFulfill + chainedReject:(FBLPromiseChainedRejectBlock)chainedReject NS_SWIFT_UNAVAILABLE(""); + +@end + +NS_ASSUME_NONNULL_END diff --git a/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromises.h b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromises.h new file mode 100644 index 000000000..2d90badb1 --- /dev/null +++ b/ios/Pods/PromisesObjC/Sources/FBLPromises/include/FBLPromises.h @@ -0,0 +1,32 @@ +/** + Copyright 2018 Google Inc. All rights reserved. + + 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 "FBLPromise+All.h" +#import "FBLPromise+Always.h" +#import "FBLPromise+Any.h" +#import "FBLPromise+Async.h" +#import "FBLPromise+Await.h" +#import "FBLPromise+Catch.h" +#import "FBLPromise+Delay.h" +#import "FBLPromise+Do.h" +#import "FBLPromise+Race.h" +#import "FBLPromise+Recover.h" +#import "FBLPromise+Reduce.h" +#import "FBLPromise+Retry.h" +#import "FBLPromise+Then.h" +#import "FBLPromise+Timeout.h" +#import "FBLPromise+Validate.h" +#import "FBLPromise+Wrap.h" diff --git a/ios/Pods/SDWebImage/README.md b/ios/Pods/SDWebImage/README.md index 9268e96c2..58c85e8b0 100644 --- a/ios/Pods/SDWebImage/README.md +++ b/ios/Pods/SDWebImage/README.md @@ -7,8 +7,9 @@ [![Pod Version](http://img.shields.io/cocoapods/v/SDWebImage.svg?style=flat)](http://cocoadocs.org/docsets/SDWebImage/) [![Pod Platform](http://img.shields.io/cocoapods/p/SDWebImage.svg?style=flat)](http://cocoadocs.org/docsets/SDWebImage/) [![Pod License](http://img.shields.io/cocoapods/l/SDWebImage.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0.html) -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/SDWebImage/SDWebImage) -[![SwiftPM compatible](https://img.shields.io/badge/SwiftPM-Compatible-brightgreen.svg)](https://swift.org/package-manager/) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-brightgreen.svg)](https://github.com/SDWebImage/SDWebImage) +[![SwiftPM compatible](https://img.shields.io/badge/SwiftPM-compatible-brightgreen.svg)](https://swift.org/package-manager/) +[![Mac Catalyst compatible](https://img.shields.io/badge/Catalyst-compatible-brightgreen.svg)](https://developer.apple.com/documentation/xcode/creating_a_mac_version_of_your_ipad_app/) [![codecov](https://codecov.io/gh/SDWebImage/SDWebImage/branch/master/graph/badge.svg)](https://codecov.io/gh/SDWebImage/SDWebImage) This library provides an async image downloader with cache support. For convenience, we added categories for UI elements like `UIImageView`, `UIButton`, `MKAnnotationView`. @@ -18,43 +19,55 @@ This library provides an async image downloader with cache support. For convenie - [x] Categories for `UIImageView`, `UIButton`, `MKAnnotationView` adding web image and cache management - [x] An asynchronous image downloader - [x] An asynchronous memory + disk image caching with automatic cache expiration handling -- [x] A background image decompression -- [x] Improved [support for animated images](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage#animated-image-50) +- [x] A background image decompression to avoid frame rate drop +- [x] [Progressive image loading](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage#progressive-animation) (including animated image, like GIF showing in Web browser) +- [x] [Thumbnail image decoding](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage#thumbnail-decoding-550) to save CPU && Memory for large images +- [x] [Extendable image coder](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage#custom-coder-420) to support massive image format, like WebP +- [x] [Full-stack solution for animated images](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage#animated-image-50) which keep a balance between CPU && Memory - [x] [Customizable and composable transformations](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage#transformer-50) can be applied to the images right after download -- [x] [Custom cache control](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage#custom-cache-50) -- [x] Expand the image loading capabilites by adding your [own custom loaders](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage#custom-loader-50) or using prebuilt loaders like [FLAnimatedImage plugin](https://github.com/SDWebImage/SDWebImageFLPlugin) or [Photos Library plugin](https://github.com/SDWebImage/SDWebImagePhotosPlugin) -- [x] [Loading indicators](https://github.com/SDWebImage/SDWebImage/wiki/How-to-use#use-view-indicator-50) +- [x] [Customizable and multiple caches system](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage#custom-cache-50) +- [x] [Customizable and multiple loaders system](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage#custom-loader-50) to expand the capabilities, like [Photos Library](https://github.com/SDWebImage/SDWebImagePhotosPlugin) +- [x] [Image loading indicators](https://github.com/SDWebImage/SDWebImage/wiki/How-to-use#use-view-indicator-50) +- [x] [Image loading transition animation](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage#image-transition-430) - [x] A guarantee that the same URL won't be downloaded several times - [x] A guarantee that bogus URLs won't be retried again and again - [x] A guarantee that main thread will never be blocked +- [x] Modern Objective-C and better Swift support - [x] Performances! -- [x] Use GCD and ARC ## Supported Image Formats -- Image formats supported by UIImage (JPEG, PNG, ...), including GIF +- Image formats supported by UIImage (JPEG, PNG, HEIC, ...), including GIF/APNG/HEIC animation - WebP format, including animated WebP (use the [SDWebImageWebPCoder](https://github.com/SDWebImage/SDWebImageWebPCoder) project) -- Support extendable coder plugins for new image formats. Like APNG, BPG, HFIF, SVG, etc. See all the list in [Image coder plugin List](https://github.com/SDWebImage/SDWebImage/wiki/Coder-Plugin-List) +- Support extendable coder plugins for new image formats like BPG, AVIF. And vector format like PDF, SVG. See all the list in [Image coder plugin List](https://github.com/SDWebImage/SDWebImage/wiki/Coder-Plugin-List) ## Additional modules In order to keep SDWebImage focused and limited to the core features, but also allow extensibility and custom behaviors, during the 5.0 refactoring we focused on modularizing the library. As such, we have moved/built new modules to [SDWebImage org](https://github.com/SDWebImage). +#### SwiftUI +[SwiftUI](https://developer.apple.com/xcode/swiftui/) is an innovative UI framework written in Swift to build user interfaces across all Apple platforms. + +We support SwiftUI by building with the functions (caching, loading and animation) powered by SDWebImage. You can have a try with [SDWebImageSwiftUI](https://github.com/SDWebImage/SDWebImageSwiftUI) + #### Coders for additional image formats - [SDWebImageWebPCoder](https://github.com/SDWebImage/SDWebImageWebPCoder) - coder for WebP image format. Based on [libwebp](https://chromium.googlesource.com/webm/libwebp) - [SDWebImageHEIFCoder](https://github.com/SDWebImage/SDWebImageHEIFCoder) - coder to support HEIF image without Apple's `Image/IO framework`, iOS 8+/macOS 10.10+ support. - [SDWebImageBPGCoder](https://github.com/SDWebImage/SDWebImageBPGCoder) - coder for BPG format - [SDWebImageFLIFCoder](https://github.com/SDWebImage/SDWebImageFLIFCoder) - coder for FLIF format +- [SDWebImageAVIFCoder](https://github.com/SDWebImage/SDWebImageAVIFCoder) - coder for AVIF (AV1-based) format +- [SDWebImagePDFCoder](https://github.com/SDWebImage/SDWebImagePDFCoder) - coder for PDF vector format image +- [SDWebImageSVGCoder](https://github.com/SDWebImage/SDWebImageSVGCoder) - coder for SVG vector format image - and more from community! #### Loaders - [SDWebImagePhotosPlugin](https://github.com/SDWebImage/SDWebImagePhotosPlugin) - plugin to support loading images from Photos (using `Photos.framework`) +- [SDWebImageLinkPlugin](https://github.com/SDWebImage/SDWebImageLinkPlugin) - plugin to support loading images from rich link url, as well as `LPLinkView` (using `LinkPresentation.framework`) #### Integration with 3rd party libraries - [SDWebImageFLPlugin](https://github.com/SDWebImage/SDWebImageFLPlugin) - plugin to support [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage) as the engine for animated GIFs - [SDWebImageYYPlugin](https://github.com/SDWebImage/SDWebImageYYPlugin) - plugin to integrate [YYImage](https://github.com/ibireme/YYImage) & [YYCache](https://github.com/ibireme/YYCache) for image rendering & caching -- [SDWebImageProgressiveJPEGDemo](https://github.com/SDWebImage/SDWebImageProgressiveJPEGDemo) - demo project for using `SDWebImage` + [Concorde library](https://github.com/contentful-labs/Concorde) for Progressive JPEG decoding #### Make our lives easier - [libwebp-Xcode](https://github.com/SDWebImage/libwebp-Xcode) - A wrapper for [libwebp](https://chromium.googlesource.com/webm/libwebp) + an Xcode project. @@ -68,7 +81,7 @@ You can use those directly, or create similar components of your own. - iOS 8.0 or later - tvOS 9.0 or later - watchOS 2.0 or later -- macOS 10.10 or later +- macOS 10.10 or later (10.15 for Catalyst) - Xcode 10.0 or later #### Backwards compatibility @@ -85,8 +98,8 @@ You can use those directly, or create similar components of your own. - Read the [Latest Documentation](https://sdwebimage.github.io/) and [CocoaDocs for old version](http://cocoadocs.org/docsets/SDWebImage/) - Try the example by downloading the project from Github or even easier using CocoaPods try `pod try SDWebImage` - Read the [Installation Guide](https://github.com/SDWebImage/SDWebImage/wiki/Installation-Guide) -- Read the [SDWebImage 5.0 Migration Guide](https://raw.githubusercontent.com/SDWebImage/SDWebImage/master/Docs/SDWebImage-5.0-Migration-guide.md) to get an idea of the changes from 4.x to 5.x -- Read the [SDWebImage 4.0 Migration Guide](https://raw.githubusercontent.com/SDWebImage/SDWebImage/master/Docs/SDWebImage-4.0-Migration-guide.md) to get an idea of the changes from 3.x to 4.x +- Read the [SDWebImage 5.0 Migration Guide](https://github.com/SDWebImage/SDWebImage/blob/master/Docs/SDWebImage-5.0-Migration-guide.md) to get an idea of the changes from 4.x to 5.x +- Read the [SDWebImage 4.0 Migration Guide](https://github.com/SDWebImage/SDWebImage/blob/master/Docs/SDWebImage-4.0-Migration-guide.md) to get an idea of the changes from 3.x to 4.x - Read the [Common Problems](https://github.com/SDWebImage/SDWebImage/wiki/Common-Problems) to find the solution for common problems - Go to the [Wiki Page](https://github.com/SDWebImage/SDWebImage/wiki) for more information such as [Advanced Usage](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage) @@ -99,7 +112,11 @@ You can use those directly, or create similar components of your own. - If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/sdwebimage). - If you **found a bug**, open an issue. - If you **have a feature request**, open an issue. -- If you **want to contribute**, read the [Contributing Guide](https://raw.githubusercontent.com/SDWebImage/SDWebImage/master/.github/CONTRIBUTING.md) + +## Contribution + +- If you **want to contribute**, read the [Contributing Guide](https://github.com/SDWebImage/SDWebImage/blob/master/.github/CONTRIBUTING.md) +- For **development contribution guide**, read the [How-To-Contribute](https://github.com/SDWebImage/SDWebImage/wiki/How-to-Contribute) ## How To Use @@ -120,7 +137,7 @@ import SDWebImage imageView.sd_setImage(with: URL(string: "http://www.domain.com/path/to/image.jpg"), placeholderImage: UIImage(named: "placeholder.png")) ``` -- For details about how to use the library and clear examples, see [The detailed How to use](https://raw.githubusercontent.com/SDWebImage/SDWebImage/master/Docs/HowToUse.md) +- For details about how to use the library and clear examples, see [The detailed How to use](https://github.com/SDWebImage/SDWebImage/blob/master/Docs/HowToUse.md) ## Animated Images (GIF) support @@ -242,9 +259,15 @@ community can help you solve it. - [DreamPiggy](https://github.com/dreampiggy) - [Wu Zhong](https://github.com/zhongwuzw) +## Credits + +Thank you to all the people who have already contributed to SDWebImage. + +[![Contributors](https://opencollective.com/SDWebImage/contributors.svg?width=890)](https://github.com/SDWebImage/SDWebImage/graphs/contributors) + ## Licenses -All source code is licensed under the [MIT License](https://raw.github.com/SDWebImage/SDWebImage/master/LICENSE). +All source code is licensed under the [MIT License](https://github.com/SDWebImage/SDWebImage/blob/master/LICENSE). ## Architecture @@ -273,3 +296,4 @@ All source code is licensed under the [MIT License](https://raw.github.com/SDWeb - [Coders API Diagram](https://raw.githubusercontent.com/SDWebImage/SDWebImage/master/Docs/Diagrams/SDWebImageCodersClassDiagram.png) - [Loader API Diagram](https://raw.githubusercontent.com/SDWebImage/SDWebImage/master/Docs/Diagrams/SDWebImageLoaderClassDiagram.png) - [Cache API Diagram](https://raw.githubusercontent.com/SDWebImage/SDWebImage/master/Docs/Diagrams/SDWebImageCacheClassDiagram.png) + diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m b/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m index 192b539ac..34dd4aa07 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/NSData+ImageContentType.m @@ -13,12 +13,10 @@ #else #import #endif +#import "SDImageHEICCoderInternal.h" // Currently Image/IO does not support WebP #define kSDUTTypeWebP ((__bridge CFStringRef)@"public.webp") -// AVFileTypeHEIC/AVFileTypeHEIF is defined in AVFoundation via iOS 11, we use this without import AVFoundation -#define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic") -#define kSDUTTypeHEIF ((__bridge CFStringRef)@"public.heif") @implementation NSData (ImageContentType) diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.h b/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.h index dccc1ffa1..0a562cc43 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.h @@ -19,6 +19,10 @@ The underlying Core Graphics image object. This will actually use `CGImageForProposedRect` with the image size. */ @property (nonatomic, readonly, nullable) CGImageRef CGImage; +/** + The underlying Core Image data. This will actually use `bestRepresentationForRect` with the image size to find the `NSCIImageRep`. + */ +@property (nonatomic, readonly, nullable) CIImage *CIImage; /** The scale factor of the image. This wil actually use `bestRepresentationForRect` with image size and pixel size to calculate the scale factor. If failed, use the default value 1.0. Should be greater than or equal to 1.0. */ @@ -38,6 +42,16 @@ The underlying Core Graphics image object. This will actually use `CGImageForPro */ - (nonnull instancetype)initWithCGImage:(nonnull CGImageRef)cgImage scale:(CGFloat)scale orientation:(CGImagePropertyOrientation)orientation; +/** + Initializes and returns an image object with the specified Core Image object. The representation is `NSCIImageRep`. + + @param ciImage A Core Image image object + @param scale The image scale factor + @param orientation The orientation of the image data + @return The image object + */ +- (nonnull instancetype)initWithCIImage:(nonnull CIImage *)ciImage scale:(CGFloat)scale orientation:(CGImagePropertyOrientation)orientation; + /** Returns an image object with the scale factor. The representation is created from the image data. @note The difference between these this and `initWithData:` is that `initWithData:` will always use `backingScaleFactor` as scale factor. diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m b/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m index 83b80bc66..7de0c7035 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/NSImage+Compatibility.m @@ -20,6 +20,15 @@ return cgImage; } +- (nullable CIImage *)CIImage { + NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); + NSImageRep *imageRep = [self bestRepresentationForRect:imageRect context:nil hints:nil]; + if (![imageRep isKindOfClass:NSCIImageRep.class]) { + return nil; + } + return ((NSCIImageRep *)imageRep).CIImage; +} + - (CGFloat)scale { CGFloat scale = 1; NSRect imageRect = NSMakeRect(0, 0, self.size.width, self.size.height); @@ -65,6 +74,28 @@ return self; } +- (instancetype)initWithCIImage:(nonnull CIImage *)ciImage scale:(CGFloat)scale orientation:(CGImagePropertyOrientation)orientation { + NSCIImageRep *imageRep; + if (orientation != kCGImagePropertyOrientationUp) { + CIImage *rotatedCIImage = [ciImage imageByApplyingOrientation:orientation]; + imageRep = [[NSCIImageRep alloc] initWithCIImage:rotatedCIImage]; + } else { + imageRep = [[NSCIImageRep alloc] initWithCIImage:ciImage]; + } + if (scale < 1) { + scale = 1; + } + CGFloat pixelWidth = imageRep.pixelsWide; + CGFloat pixelHeight = imageRep.pixelsHigh; + NSSize size = NSMakeSize(pixelWidth / scale, pixelHeight / scale); + self = [self initWithSize:size]; + if (self) { + imageRep.size = size; + [self addRepresentation:imageRep]; + } + return self; +} + - (instancetype)initWithData:(nonnull NSData *)data scale:(CGFloat)scale { NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithData:data]; if (!imageRep) { diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.h index 2683984f3..a1e2fb19d 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.h @@ -57,6 +57,12 @@ */ @property (nonatomic, assign, readonly, getter=isAllFramesLoaded) BOOL allFramesLoaded; +/** + Return the animated image coder if the image is created with `initWithAnimatedCoder:scale:` method. + @note We use this with animated coder which conforms to `SDProgressiveImageCoder` for progressive animation decoding. + */ +@property (nonatomic, strong, readonly, nullable) id animatedCoder; + @end /** @@ -66,6 +72,7 @@ // This class override these methods from UIImage(NSImage), and it supports NSSecureCoding. // You should use these methods to create a new animated image. Use other methods just call super instead. +// Pay attention, when the animated image frame count <= 1, all the `SDAnimatedImageProvider` protocol methods will return nil or 0 value, you'd better check the frame count before usage and keep fallback. + (nullable instancetype)imageNamed:(nonnull NSString *)name; // Cache in memory, no Asset Catalog support #if __has_include() + (nullable instancetype)imageNamed:(nonnull NSString *)name inBundle:(nullable NSBundle *)bundle compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection; // Cache in memory, no Asset Catalog support diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m index 7d9ed01a0..ce5d5d299 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImage.m @@ -32,7 +32,7 @@ static CGFloat SDImageScaleFromPath(NSString *string) { @interface SDAnimatedImage () -@property (nonatomic, strong) id coder; +@property (nonatomic, strong) id animatedCoder; @property (nonatomic, assign, readwrite) SDImageFormat animatedImageFormat; @property (atomic, copy) NSArray *loadedAnimatedImageFrames; // Mark as atomic to keep thread-safe @property (nonatomic, assign, getter=isAllFramesLoaded) BOOL allFramesLoaded; @@ -156,7 +156,10 @@ static CGFloat SDImageScaleFromPath(NSString *string) { self = [super initWithCGImage:image.CGImage scale:MAX(scale, 1) orientation:image.imageOrientation]; #endif if (self) { - _coder = animatedCoder; + // Only keep the animated coder if frame count > 1, save RAM usage for non-animated image format (APNG/WebP) + if (animatedCoder.animatedImageFrameCount > 1) { + _animatedCoder = animatedCoder; + } NSData *data = [animatedCoder animatedImageData]; SDImageFormat format = [NSData sd_imageFormatForImageData:data]; _animatedImageFormat = format; @@ -166,6 +169,9 @@ static CGFloat SDImageScaleFromPath(NSString *string) { #pragma mark - Preload - (void)preloadAllFrames { + if (!_animatedCoder) { + return; + } if (!self.isAllFramesLoaded) { NSMutableArray *frames = [NSMutableArray arrayWithCapacity:self.animatedImageFrameCount]; for (size_t i = 0; i < self.animatedImageFrameCount; i++) { @@ -180,6 +186,9 @@ static CGFloat SDImageScaleFromPath(NSString *string) { } - (void)unloadAllFrames { + if (!_animatedCoder) { + return; + } if (self.isAllFramesLoaded) { self.loadedAnimatedImageFrames = nil; self.allFramesLoaded = NO; @@ -190,11 +199,12 @@ static CGFloat SDImageScaleFromPath(NSString *string) { - (instancetype)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { + _animatedImageFormat = [aDecoder decodeIntegerForKey:NSStringFromSelector(@selector(animatedImageFormat))]; NSData *animatedImageData = [aDecoder decodeObjectOfClass:[NSData class] forKey:NSStringFromSelector(@selector(animatedImageData))]; - CGFloat scale = self.scale; if (!animatedImageData) { return self; } + CGFloat scale = self.scale; id animatedCoder = nil; for (idcoder in [SDImageCodersManager sharedManager].coders) { if ([coder conformsToProtocol:@protocol(SDAnimatedImageCoder)]) { @@ -207,15 +217,16 @@ static CGFloat SDImageScaleFromPath(NSString *string) { if (!animatedCoder) { return self; } - _coder = animatedCoder; - SDImageFormat format = [NSData sd_imageFormatForImageData:animatedImageData]; - _animatedImageFormat = format; + if (animatedCoder.animatedImageFrameCount > 1) { + _animatedCoder = animatedCoder; + } } return self; } - (void)encodeWithCoder:(NSCoder *)aCoder { [super encodeWithCoder:aCoder]; + [aCoder encodeInteger:self.animatedImageFormat forKey:NSStringFromSelector(@selector(animatedImageFormat))]; NSData *animatedImageData = self.animatedImageData; if (animatedImageData) { [aCoder encodeObject:animatedImageData forKey:NSStringFromSelector(@selector(animatedImageData))]; @@ -226,18 +237,18 @@ static CGFloat SDImageScaleFromPath(NSString *string) { return YES; } -#pragma mark - SDAnimatedImage +#pragma mark - SDAnimatedImageProvider - (NSData *)animatedImageData { - return [self.coder animatedImageData]; + return [self.animatedCoder animatedImageData]; } - (NSUInteger)animatedImageLoopCount { - return [self.coder animatedImageLoopCount]; + return [self.animatedCoder animatedImageLoopCount]; } - (NSUInteger)animatedImageFrameCount { - return [self.coder animatedImageFrameCount]; + return [self.animatedCoder animatedImageFrameCount]; } - (UIImage *)animatedImageFrameAtIndex:(NSUInteger)index { @@ -248,7 +259,7 @@ static CGFloat SDImageScaleFromPath(NSString *string) { SDImageFrame *frame = [self.loadedAnimatedImageFrames objectAtIndex:index]; return frame.image; } - return [self.coder animatedImageFrameAtIndex:index]; + return [self.animatedCoder animatedImageFrameAtIndex:index]; } - (NSTimeInterval)animatedImageDurationAtIndex:(NSUInteger)index { @@ -259,7 +270,7 @@ static CGFloat SDImageScaleFromPath(NSString *string) { SDImageFrame *frame = [self.loadedAnimatedImageFrames objectAtIndex:index]; return frame.duration; } - return [self.coder animatedImageDurationAtIndex:index]; + return [self.animatedCoder animatedImageDurationAtIndex:index]; } @end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.h new file mode 100644 index 000000000..b6fa88d01 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.h @@ -0,0 +1,90 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDWebImageCompat.h" +#import "SDImageCoder.h" + +/// A player to control the playback of animated image, which can be used to drive Animated ImageView or any rendering usage, like CALayer/WatchKit/SwiftUI rendering. +@interface SDAnimatedImagePlayer : NSObject + +/// Current playing frame image. This value is KVO Compliance. +@property (nonatomic, readonly, nullable) UIImage *currentFrame; + +/// Current frame index, zero based. This value is KVO Compliance. +@property (nonatomic, readonly) NSUInteger currentFrameIndex; + +/// Current loop count since its latest animating. This value is KVO Compliance. +@property (nonatomic, readonly) NSUInteger currentLoopCount; + +/// Total frame count for niamted image rendering. Defaults is animated image's frame count. +/// @note For progressive animation, you can update this value when your provider receive more frames. +@property (nonatomic, assign) NSUInteger totalFrameCount; + +/// Total loop count for animated image rendering. Default is animated image's loop count. +@property (nonatomic, assign) NSUInteger totalLoopCount; + +/// The animation playback rate. Default is 1.0 +/// `1.0` means the normal speed. +/// `0.0` means stopping the animation. +/// `0.0-1.0` means the slow speed. +/// `> 1.0` means the fast speed. +/// `< 0.0` is not supported currently and stop animation. (may support reverse playback in the future) +@property (nonatomic, assign) double playbackRate; + +/// Provide a max buffer size by bytes. This is used to adjust frame buffer count and can be useful when the decoding cost is expensive (such as Animated WebP software decoding). Default is 0. +/// `0` means automatically adjust by calculating current memory usage. +/// `1` means without any buffer cache, each of frames will be decoded and then be freed after rendering. (Lowest Memory and Highest CPU) +/// `NSUIntegerMax` means cache all the buffer. (Lowest CPU and Highest Memory) +@property (nonatomic, assign) NSUInteger maxBufferSize; + +/// You can specify a runloop mode to let it rendering. +/// Default is NSRunLoopCommonModes on multi-core device, NSDefaultRunLoopMode on single-core device +@property (nonatomic, copy, nonnull) NSRunLoopMode runLoopMode; + +/// Create a player with animated image provider. If the provider's `animatedImageFrameCount` is less than 1, returns nil. +/// The provider can be any protocol implementation, like `SDAnimatedImage`, `SDImageGIFCoder`, etc. +/// @note This provider can represent mutable content, like prorgessive animated loading. But you need to update the frame count by yourself +/// @param provider The animated provider +- (nullable instancetype)initWithProvider:(nonnull id)provider; + +/// Create a player with animated image provider. If the provider's `animatedImageFrameCount` is less than 1, returns nil. +/// The provider can be any protocol implementation, like `SDAnimatedImage` or `SDImageGIFCoder`, etc. +/// @note This provider can represent mutable content, like prorgessive animated loading. But you need to update the frame count by yourself +/// @param provider The animated provider ++ (nullable instancetype)playerWithProvider:(nonnull id)provider; + +/// The handler block when current frame and index changed. +@property (nonatomic, copy, nullable) void (^animationFrameHandler)(NSUInteger index, UIImage * _Nonnull frame); + +/// The handler block when one loop count finished. +@property (nonatomic, copy, nullable) void (^animationLoopHandler)(NSUInteger loopCount); + +/// Return the status whehther animation is playing. +@property (nonatomic, readonly) BOOL isPlaying; + +/// Start the animation. Or resume the previously paused animation. +- (void)startPlaying; + +/// Pause the aniamtion. Keep the current frame index and loop count. +- (void)pausePlaying; + +/// Stop the animation. Reset the current frame index and loop count. +- (void)stopPlaying; + +/// Seek to the desired frame index and loop count. +/// @note This can be used for advanced control like progressive loading, or skipping specify frames. +/// @param index The frame index +/// @param loopCount The loop count +- (void)seekToFrameAtIndex:(NSUInteger)index loopCount:(NSUInteger)loopCount; + +/// Clear the frame cache buffer. The frame cache buffer size can be controled by `maxBufferSize`. +/// By default, when stop or pause the animation, the frame buffer is still kept to ready for the next restart +- (void)clearFrameBuffer; + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.m new file mode 100644 index 000000000..39658b431 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImagePlayer.m @@ -0,0 +1,390 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDAnimatedImagePlayer.h" +#import "NSImage+Compatibility.h" +#import "SDDisplayLink.h" +#import "SDDeviceHelper.h" +#import "SDInternalMacros.h" + +@interface SDAnimatedImagePlayer () { + NSRunLoopMode _runLoopMode; +} + +@property (nonatomic, strong, readwrite) UIImage *currentFrame; +@property (nonatomic, assign, readwrite) NSUInteger currentFrameIndex; +@property (nonatomic, assign, readwrite) NSUInteger currentLoopCount; +@property (nonatomic, strong) id animatedProvider; +@property (nonatomic, strong) NSMutableDictionary *frameBuffer; +@property (nonatomic, assign) NSTimeInterval currentTime; +@property (nonatomic, assign) BOOL bufferMiss; +@property (nonatomic, assign) BOOL needsDisplayWhenImageBecomesAvailable; +@property (nonatomic, assign) NSUInteger maxBufferCount; +@property (nonatomic, strong) NSOperationQueue *fetchQueue; +@property (nonatomic, strong) dispatch_semaphore_t lock; +@property (nonatomic, strong) SDDisplayLink *displayLink; + +@end + +@implementation SDAnimatedImagePlayer + +- (instancetype)initWithProvider:(id)provider { + self = [super init]; + if (self) { + NSUInteger animatedImageFrameCount = provider.animatedImageFrameCount; + // Check the frame count + if (animatedImageFrameCount <= 1) { + return nil; + } + self.totalFrameCount = animatedImageFrameCount; + // Get the current frame and loop count. + self.totalLoopCount = provider.animatedImageLoopCount; + self.animatedProvider = provider; + self.playbackRate = 1.0; +#if SD_UIKIT + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; +#endif + } + return self; +} + ++ (instancetype)playerWithProvider:(id)provider { + SDAnimatedImagePlayer *player = [[SDAnimatedImagePlayer alloc] initWithProvider:provider]; + return player; +} + +#pragma mark - Life Cycle + +- (void)dealloc { +#if SD_UIKIT + [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; +#endif +} + +- (void)didReceiveMemoryWarning:(NSNotification *)notification { + [_fetchQueue cancelAllOperations]; + [_fetchQueue addOperationWithBlock:^{ + NSNumber *currentFrameIndex = @(self.currentFrameIndex); + SD_LOCK(self.lock); + NSArray *keys = self.frameBuffer.allKeys; + // only keep the next frame for later rendering + for (NSNumber * key in keys) { + if (![key isEqualToNumber:currentFrameIndex]) { + [self.frameBuffer removeObjectForKey:key]; + } + } + SD_UNLOCK(self.lock); + }]; +} + +#pragma mark - Private +- (NSOperationQueue *)fetchQueue { + if (!_fetchQueue) { + _fetchQueue = [[NSOperationQueue alloc] init]; + _fetchQueue.maxConcurrentOperationCount = 1; + } + return _fetchQueue; +} + +- (NSMutableDictionary *)frameBuffer { + if (!_frameBuffer) { + _frameBuffer = [NSMutableDictionary dictionary]; + } + return _frameBuffer; +} + +- (dispatch_semaphore_t)lock { + if (!_lock) { + _lock = dispatch_semaphore_create(1); + } + return _lock; +} + +- (SDDisplayLink *)displayLink { + if (!_displayLink) { + _displayLink = [SDDisplayLink displayLinkWithTarget:self selector:@selector(displayDidRefresh:)]; + [_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:self.runLoopMode]; + [_displayLink stop]; + } + return _displayLink; +} + +- (void)setRunLoopMode:(NSRunLoopMode)runLoopMode { + if ([_runLoopMode isEqual:runLoopMode]) { + return; + } + if (_displayLink) { + if (_runLoopMode) { + [_displayLink removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:_runLoopMode]; + } + if (runLoopMode.length > 0) { + [_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:runLoopMode]; + } + } + _runLoopMode = [runLoopMode copy]; +} + +- (NSRunLoopMode)runLoopMode { + if (!_runLoopMode) { + _runLoopMode = [[self class] defaultRunLoopMode]; + } + return _runLoopMode; +} + +#pragma mark - State Control + +- (void)setupCurrentFrame { + if (self.currentFrameIndex != 0) { + return; + } + if ([self.animatedProvider isKindOfClass:[UIImage class]]) { + UIImage *image = (UIImage *)self.animatedProvider; + // Use the poster image if available + #if SD_MAC + UIImage *posterFrame = [[NSImage alloc] initWithCGImage:image.CGImage scale:image.scale orientation:kCGImagePropertyOrientationUp]; + #else + UIImage *posterFrame = [[UIImage alloc] initWithCGImage:image.CGImage scale:image.scale orientation:image.imageOrientation]; + #endif + if (posterFrame) { + self.currentFrame = posterFrame; + SD_LOCK(self.lock); + self.frameBuffer[@(self.currentFrameIndex)] = self.currentFrame; + SD_UNLOCK(self.lock); + [self handleFrameChange]; + } + } +} + +- (void)resetCurrentFrameIndex { + self.currentFrame = nil; + self.currentFrameIndex = 0; + self.currentLoopCount = 0; + self.currentTime = 0; + self.bufferMiss = NO; + self.needsDisplayWhenImageBecomesAvailable = NO; + [self handleFrameChange]; +} + +- (void)clearFrameBuffer { + SD_LOCK(self.lock); + [_frameBuffer removeAllObjects]; + SD_UNLOCK(self.lock); +} + +#pragma mark - Animation Control +- (void)startPlaying { + [self.displayLink start]; + // Calculate max buffer size + [self calculateMaxBufferCount]; + // Setup frame + if (self.currentFrameIndex == 0 && !self.currentFrame) { + [self setupCurrentFrame]; + } +} + +- (void)stopPlaying { + [_fetchQueue cancelAllOperations]; + // Using `_displayLink` here because when UIImageView dealloc, it may trigger `[self stopAnimating]`, we already release the display link in SDAnimatedImageView's dealloc method. + [_displayLink stop]; + [self resetCurrentFrameIndex]; +} + +- (void)pausePlaying { + [_fetchQueue cancelAllOperations]; + [_displayLink stop]; +} + +- (BOOL)isPlaying { + return _displayLink.isRunning; +} + +- (void)seekToFrameAtIndex:(NSUInteger)index loopCount:(NSUInteger)loopCount { + if (index >= self.totalFrameCount) { + return; + } + self.currentFrameIndex = index; + self.currentLoopCount = loopCount; + [self handleFrameChange]; +} + +#pragma mark - Core Render +- (void)displayDidRefresh:(SDDisplayLink *)displayLink { + // If for some reason a wild call makes it through when we shouldn't be animating, bail. + // Early return! + if (!self.isPlaying) { + return; + } + + NSUInteger totalFrameCount = self.totalFrameCount; + if (totalFrameCount <= 1) { + // Total frame count less than 1, wrong configuration and stop animating + [self stopPlaying]; + return; + } + + NSTimeInterval playbackRate = self.playbackRate; + if (playbackRate <= 0) { + // Does not support <= 0 play rate + [self stopPlaying]; + return; + } + + // Calculate refresh duration + NSTimeInterval duration = self.displayLink.duration; + + NSUInteger currentFrameIndex = self.currentFrameIndex; + NSUInteger nextFrameIndex = (currentFrameIndex + 1) % totalFrameCount; + + // Check if we need to display new frame firstly + BOOL bufferFull = NO; + if (self.needsDisplayWhenImageBecomesAvailable) { + UIImage *currentFrame; + SD_LOCK(self.lock); + currentFrame = self.frameBuffer[@(currentFrameIndex)]; + SD_UNLOCK(self.lock); + + // Update the current frame + if (currentFrame) { + SD_LOCK(self.lock); + // Remove the frame buffer if need + if (self.frameBuffer.count > self.maxBufferCount) { + self.frameBuffer[@(currentFrameIndex)] = nil; + } + // Check whether we can stop fetch + if (self.frameBuffer.count == totalFrameCount) { + bufferFull = YES; + } + SD_UNLOCK(self.lock); + + // Update the current frame immediately + self.currentFrame = currentFrame; + [self handleFrameChange]; + + self.bufferMiss = NO; + self.needsDisplayWhenImageBecomesAvailable = NO; + } + else { + self.bufferMiss = YES; + } + } + + // Check if we have the frame buffer + if (!self.bufferMiss) { + // Then check if timestamp is reached + self.currentTime += duration; + NSTimeInterval currentDuration = [self.animatedProvider animatedImageDurationAtIndex:currentFrameIndex]; + currentDuration = currentDuration / playbackRate; + if (self.currentTime < currentDuration) { + // Current frame timestamp not reached, return + return; + } + + // Otherwise, we shoudle be ready to display next frame + self.needsDisplayWhenImageBecomesAvailable = YES; + self.currentFrameIndex = nextFrameIndex; + self.currentTime -= currentDuration; + NSTimeInterval nextDuration = [self.animatedProvider animatedImageDurationAtIndex:nextFrameIndex]; + nextDuration = nextDuration / playbackRate; + if (self.currentTime > nextDuration) { + // Do not skip frame + self.currentTime = nextDuration; + } + + // Update the loop count when last frame rendered + if (nextFrameIndex == 0) { + // Update the loop count + self.currentLoopCount++; + [self handleLoopChnage]; + + // if reached the max loop count, stop animating, 0 means loop indefinitely + NSUInteger maxLoopCount = self.totalLoopCount; + if (maxLoopCount != 0 && (self.currentLoopCount >= maxLoopCount)) { + [self stopPlaying]; + return; + } + } + } + + // Since we support handler, check animating state again + if (!self.isPlaying) { + return; + } + + // Check if we should prefetch next frame or current frame + // When buffer miss, means the decode speed is slower than render speed, we fetch current miss frame + // Or, most cases, the decode speed is faster than render speed, we fetch next frame + NSUInteger fetchFrameIndex = self.bufferMiss? currentFrameIndex : nextFrameIndex; + UIImage *fetchFrame; + SD_LOCK(self.lock); + fetchFrame = self.bufferMiss? nil : self.frameBuffer[@(nextFrameIndex)]; + SD_UNLOCK(self.lock); + + if (!fetchFrame && !bufferFull && self.fetchQueue.operationCount == 0) { + // Prefetch next frame in background queue + id animatedProvider = self.animatedProvider; + @weakify(self); + NSOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ + @strongify(self); + if (!self) { + return; + } + UIImage *frame = [animatedProvider animatedImageFrameAtIndex:fetchFrameIndex]; + + BOOL isAnimating = self.displayLink.isRunning; + if (isAnimating) { + SD_LOCK(self.lock); + self.frameBuffer[@(fetchFrameIndex)] = frame; + SD_UNLOCK(self.lock); + } + }]; + [self.fetchQueue addOperation:operation]; + } +} + +- (void)handleFrameChange { + if (self.animationFrameHandler) { + self.animationFrameHandler(self.currentFrameIndex, self.currentFrame); + } +} + +- (void)handleLoopChnage { + if (self.animationLoopHandler) { + self.animationLoopHandler(self.currentLoopCount); + } +} + +#pragma mark - Util +- (void)calculateMaxBufferCount { + NSUInteger bytes = CGImageGetBytesPerRow(self.currentFrame.CGImage) * CGImageGetHeight(self.currentFrame.CGImage); + if (bytes == 0) bytes = 1024; + + NSUInteger max = 0; + if (self.maxBufferSize > 0) { + max = self.maxBufferSize; + } else { + // Calculate based on current memory, these factors are by experience + NSUInteger total = [SDDeviceHelper totalMemory]; + NSUInteger free = [SDDeviceHelper freeMemory]; + max = MIN(total * 0.2, free * 0.6); + } + + NSUInteger maxBufferCount = (double)max / (double)bytes; + if (!maxBufferCount) { + // At least 1 frame + maxBufferCount = 1; + } + + self.maxBufferCount = maxBufferCount; +} + ++ (NSString *)defaultRunLoopMode { + // Key off `activeProcessorCount` (as opposed to `processorCount`) since the system could shut down cores in certain situations. + return [NSProcessInfo processInfo].activeProcessorCount > 1 ? NSRunLoopCommonModes : NSDefaultRunLoopMode; +} + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.h index 7d682eeb8..be52f8cbf 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.h @@ -11,7 +11,8 @@ #if SD_MAC /** - A subclass of `NSBitmapImageRep` to fix that GIF loop count issue because `NSBitmapImageRep` will reset `NSImageCurrentFrameDuration` by using `kCGImagePropertyGIFDelayTime` but not `kCGImagePropertyGIFUnclampedDelayTime`. + A subclass of `NSBitmapImageRep` to fix that GIF duration issue because `NSBitmapImageRep` will reset `NSImageCurrentFrameDuration` by using `kCGImagePropertyGIFDelayTime` but not `kCGImagePropertyGIFUnclampedDelayTime`. + This also fix the GIF loop count issue, which will use the Netscape standard (See http://www6.uniovi.es/gifanim/gifabout.htm) to only place once when the `kCGImagePropertyGIFLoopCount` is nil. This is what modern browser's behavior. Built in GIF coder use this instead of `NSBitmapImageRep` for better GIF rendering. If you do not want this, only enable `SDImageIOCoder`, which just call `NSImage` API and actually use `NSBitmapImageRep` for GIF image. This also support APNG format using `SDImageAPNGCoder`. Which provide full alpha-channel support and the correct duration match the `kCGImagePropertyAPNGUnclampedDelayTime`. */ diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m index 88d2384d3..d0da9baee 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageRep.m @@ -10,8 +10,11 @@ #if SD_MAC -#import "SDImageGIFCoderInternal.h" -#import "SDImageAPNGCoderInternal.h" +#import "SDImageIOAnimatedCoderInternal.h" +#import "SDImageGIFCoder.h" +#import "SDImageAPNGCoder.h" +#import "SDImageHEICCoder.h" +#import "SDImageHEICCoderInternal.h" @implementation SDAnimatedImageRep { CGImageSourceRef _imageSource; @@ -49,13 +52,23 @@ } if (CFStringCompare(type, kUTTypeGIF, 0) == kCFCompareEqualTo) { // GIF - // Do nothing because NSBitmapImageRep support it + // Fix the `NSBitmapImageRep` GIF loop count calculation issue + // Which will use 0 when there are no loop count information metadata in GIF data + NSUInteger loopCount = [SDImageGIFCoder imageLoopCountWithSource:imageSource]; + [self setProperty:NSImageLoopCount withValue:@(loopCount)]; } else if (CFStringCompare(type, kUTTypePNG, 0) == kCFCompareEqualTo) { // APNG // Do initilize about frame count, current frame/duration and loop count [self setProperty:NSImageFrameCount withValue:@(frameCount)]; [self setProperty:NSImageCurrentFrame withValue:@(0)]; - NSUInteger loopCount = [[SDImageAPNGCoder sharedCoder] sd_imageLoopCountWithSource:imageSource]; + NSUInteger loopCount = [SDImageAPNGCoder imageLoopCountWithSource:imageSource]; + [self setProperty:NSImageLoopCount withValue:@(loopCount)]; + } else if (CFStringCompare(type, kSDUTTypeHEICS, 0) == kCFCompareEqualTo) { + // HEIC + // Do initilize about frame count, current frame/duration and loop count + [self setProperty:NSImageFrameCount withValue:@(frameCount)]; + [self setProperty:NSImageCurrentFrame withValue:@(0)]; + NSUInteger loopCount = [SDImageHEICCoder imageLoopCountWithSource:imageSource]; [self setProperty:NSImageLoopCount withValue:@(loopCount)]; } } @@ -77,13 +90,16 @@ return; } NSUInteger index = [value unsignedIntegerValue]; - float frameDuration = 0; + NSTimeInterval frameDuration = 0; if (CFStringCompare(type, kUTTypeGIF, 0) == kCFCompareEqualTo) { // GIF - frameDuration = [[SDImageGIFCoder sharedCoder] sd_frameDurationAtIndex:index source:imageSource]; + frameDuration = [SDImageGIFCoder frameDurationAtIndex:index source:imageSource]; } else if (CFStringCompare(type, kUTTypePNG, 0) == kCFCompareEqualTo) { // APNG - frameDuration = [[SDImageAPNGCoder sharedCoder] sd_frameDurationAtIndex:index source:imageSource]; + frameDuration = [SDImageAPNGCoder frameDurationAtIndex:index source:imageSource]; + } else if (CFStringCompare(type, kSDUTTypeHEICS, 0) == kCFCompareEqualTo) { + // HEIC + frameDuration = [SDImageHEICCoder frameDurationAtIndex:index source:imageSource]; } if (!frameDuration) { return; diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.h index ec5bda139..2d9ac6653 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.h @@ -21,7 +21,7 @@ @interface SDAnimatedImageView : UIImageView /** - Current display frame image. + Current display frame image. This value is KVO Compliance. */ @property (nonatomic, strong, readonly, nullable) UIImage *currentFrame; /** @@ -43,6 +43,15 @@ This class override UIImageView's `animationRepeatCount` property on iOS, use this property as well. */ @property (nonatomic, assign) NSInteger animationRepeatCount; +/** + The animation playback rate. Default is 1.0. + `1.0` means the normal speed. + `0.0` means stopping the animation. + `0.0-1.0` means the slow speed. + `> 1.0` means the fast speed. + `< 0.0` is not supported currently and stop animation. (may support reverse playback in the future) + */ +@property (nonatomic, assign) double playbackRate; /** Provide a max buffer size by bytes. This is used to adjust frame buffer count and can be useful when the decoding cost is expensive (such as Animated WebP software decoding). Default is 0. `0` means automatically adjust by calculating current memory usage. @@ -58,13 +67,26 @@ */ @property (nonatomic, assign) BOOL shouldIncrementalLoad; -#if SD_UIKIT +/** + Whether or not to clear the frame buffer cache when animation stopped. See `maxBufferSize` + This is useful when you want to limit the memory usage during frequently visibility changes (such as image view inside a list view, then push and pop) + Default is NO. + */ +@property (nonatomic, assign) BOOL clearBufferWhenStopped; + +/** + Whether or not to reset the current frame index when animation stopped. + For some of use case, you may want to reset the frame index to 0 when stop, but some other want to keep the current frame index. + Default is NO. + */ +@property (nonatomic, assign) BOOL resetFrameIndexWhenStopped; + /** You can specify a runloop mode to let it rendering. - Default is NSRunLoopCommonModes on multi-core iOS device, NSDefaultRunLoopMode on single-core iOS device + Default is NSRunLoopCommonModes on multi-core device, NSDefaultRunLoopMode on single-core device + @note This is useful for some cases, for example, always specify NSDefaultRunLoopMode, if you want to pause the animation when user scroll (for Mac user, drag the mouse or touchpad) */ @property (nonatomic, copy, nonnull) NSRunLoopMode runLoopMode; -#endif @end #endif diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m index 70d2ccc03..e97343837 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDAnimatedImageView.m @@ -10,61 +10,25 @@ #if SD_UIKIT || SD_MAC +#import "SDAnimatedImagePlayer.h" #import "UIImage+Metadata.h" #import "NSImage+Compatibility.h" -#import "SDWeakProxy.h" #import "SDInternalMacros.h" -#import -#import - -#if SD_MAC -#import -static CVReturn renderCallback(CVDisplayLinkRef displayLink, const CVTimeStamp *inNow, const CVTimeStamp *inOutputTime, CVOptionFlags flagsIn, CVOptionFlags *flagsOut, void *displayLinkContext); -#endif - -static NSUInteger SDDeviceTotalMemory() { - return (NSUInteger)[[NSProcessInfo processInfo] physicalMemory]; -} - -static NSUInteger SDDeviceFreeMemory() { - mach_port_t host_port = mach_host_self(); - mach_msg_type_number_t host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t); - vm_size_t page_size; - vm_statistics_data_t vm_stat; - kern_return_t kern; - - kern = host_page_size(host_port, &page_size); - if (kern != KERN_SUCCESS) return 0; - kern = host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size); - if (kern != KERN_SUCCESS) return 0; - return vm_stat.free_count * page_size; -} +#import "objc/runtime.h" @interface SDAnimatedImageView () { - NSRunLoopMode _runLoopMode; BOOL _initFinished; // Extra flag to mark the `commonInit` is called + NSRunLoopMode _runLoopMode; + NSUInteger _maxBufferSize; + double _playbackRate; } @property (nonatomic, strong, readwrite) UIImage *currentFrame; @property (nonatomic, assign, readwrite) NSUInteger currentFrameIndex; @property (nonatomic, assign, readwrite) NSUInteger currentLoopCount; -@property (nonatomic, assign) NSUInteger totalFrameCount; -@property (nonatomic, assign) NSUInteger totalLoopCount; -@property (nonatomic, strong) UIImage *animatedImage; -@property (nonatomic, strong) NSMutableDictionary *frameBuffer; -@property (nonatomic, assign) NSTimeInterval currentTime; -@property (nonatomic, assign) BOOL bufferMiss; @property (nonatomic, assign) BOOL shouldAnimate; @property (nonatomic, assign) BOOL isProgressive; -@property (nonatomic, assign) NSUInteger maxBufferCount; -@property (nonatomic, strong) NSOperationQueue *fetchQueue; -@property (nonatomic, strong) dispatch_semaphore_t lock; -@property (nonatomic, assign) CGFloat animatedImageScale; -#if SD_MAC -@property (nonatomic, assign) CVDisplayLinkRef displayLink; -#else -@property (nonatomic, strong) CADisplayLink *displayLink; -#endif +@property (nonatomic,strong) SDAnimatedImagePlayer *player; // The animation player. @property (nonatomic) CALayer *imageViewLayer; // The actual rendering layer. @end @@ -131,51 +95,14 @@ static NSUInteger SDDeviceFreeMemory() { // So the properties which rely on this order, should using lazy-evaluation or do extra check in `setImage:`. self.shouldCustomLoopCount = NO; self.shouldIncrementalLoad = YES; + self.playbackRate = 1.0; #if SD_MAC self.wantsLayer = YES; -#endif -#if SD_UIKIT - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; #endif // Mark commonInit finished _initFinished = YES; } -- (void)resetAnimatedImage -{ - self.animatedImage = nil; - self.totalFrameCount = 0; - self.totalLoopCount = 0; - self.currentFrame = nil; - self.currentFrameIndex = 0; - self.currentLoopCount = 0; - self.currentTime = 0; - self.bufferMiss = NO; - self.shouldAnimate = NO; - self.isProgressive = NO; - self.maxBufferCount = 0; - self.animatedImageScale = 1; - [_fetchQueue cancelAllOperations]; - _fetchQueue = nil; - SD_LOCK(self.lock); - [_frameBuffer removeAllObjects]; - _frameBuffer = nil; - SD_UNLOCK(self.lock); -} - -- (void)resetProgressiveImage -{ - self.animatedImage = nil; - self.totalFrameCount = 0; - self.totalLoopCount = 0; - // preserve current state - self.shouldAnimate = NO; - self.isProgressive = YES; - self.maxBufferCount = 0; - self.animatedImageScale = 1; - // preserve buffer cache -} - #pragma mark - Accessors #pragma mark Public @@ -188,71 +115,87 @@ static NSUInteger SDDeviceFreeMemory() { // Check Progressive rendering [self updateIsProgressiveWithImage:image]; - if (self.isProgressive) { - // Reset all value, but keep current state - [self resetProgressiveImage]; - } else { + if (!self.isProgressive) { // Stop animating - [self stopAnimating]; - // Reset all value - [self resetAnimatedImage]; + self.player = nil; + self.currentFrame = nil; + self.currentFrameIndex = 0; + self.currentLoopCount = 0; } // We need call super method to keep function. This will impliedly call `setNeedsDisplay`. But we have no way to avoid this when using animated image. So we call `setNeedsDisplay` again at the end. super.image = image; - if ([image conformsToProtocol:@protocol(SDAnimatedImage)]) { - NSUInteger animatedImageFrameCount = ((UIImage *)image).animatedImageFrameCount; - // Check the frame count - if (animatedImageFrameCount <= 1) { + if ([image.class conformsToProtocol:@protocol(SDAnimatedImage)]) { + if (!self.player) { + id provider; + // Check progressive loading + if (self.isProgressive) { + provider = [self progressiveAnimatedCoderForImage:image]; + } else { + provider = (id)image; + } + // Create animted player + self.player = [SDAnimatedImagePlayer playerWithProvider:provider]; + } else { + // Update Frame Count + self.player.totalFrameCount = [(id)image animatedImageFrameCount]; + } + + if (!self.player) { + // animated player nil means the image format is not supported, or frame count <= 1 return; } - // If progressive rendering is disabled but animated image is incremental. Only show poster image - if (!self.isProgressive && image.sd_isIncremental) { - return; - } - self.animatedImage = (UIImage *)image; - self.totalFrameCount = animatedImageFrameCount; - // Get the current frame and loop count. - self.totalLoopCount = self.animatedImage.animatedImageLoopCount; - // Get the scale - self.animatedImageScale = image.scale; - if (!self.isProgressive) { - self.currentFrame = image; - SD_LOCK(self.lock); - self.frameBuffer[@(self.currentFrameIndex)] = self.currentFrame; - SD_UNLOCK(self.lock); + + // Custom Loop Count + if (self.shouldCustomLoopCount) { + self.player.totalLoopCount = self.animationRepeatCount; } + // RunLoop Mode + self.player.runLoopMode = self.runLoopMode; + + // Max Buffer Size + self.player.maxBufferSize = self.maxBufferSize; + + // Play Rate + self.player.playbackRate = self.playbackRate; + + // Setup handler + @weakify(self); + self.player.animationFrameHandler = ^(NSUInteger index, UIImage * frame) { + @strongify(self); + self.currentFrameIndex = index; + self.currentFrame = frame; + [self.imageViewLayer setNeedsDisplay]; + }; + self.player.animationLoopHandler = ^(NSUInteger loopCount) { + @strongify(self); + // Progressive image reach the current last frame index. Keep the state and pause animating. Wait for later restart + if (self.isProgressive) { + NSUInteger lastFrameIndex = self.player.totalFrameCount - 1; + [self.player seekToFrameAtIndex:lastFrameIndex loopCount:0]; + [self.player pausePlaying]; + } else { + self.currentLoopCount = loopCount; + } + }; + // Ensure disabled highlighting; it's not supported (see `-setHighlighted:`). super.highlighted = NO; - // Calculate max buffer size - [self calculateMaxBufferCount]; - // Update should animate - [self updateShouldAnimate]; - if (self.shouldAnimate) { - [self startAnimating]; - } + // Start animating + [self startAnimating]; [self.imageViewLayer setNeedsDisplay]; } } -#if SD_UIKIT +#pragma mark - Configuration + - (void)setRunLoopMode:(NSRunLoopMode)runLoopMode { - if ([_runLoopMode isEqual:runLoopMode]) { - return; - } - if (_displayLink) { - if (_runLoopMode) { - [_displayLink removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:_runLoopMode]; - } - if (runLoopMode.length > 0) { - [_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:runLoopMode]; - } - } _runLoopMode = [runLoopMode copy]; + self.player.runLoopMode = runLoopMode; } - (NSRunLoopMode)runLoopMode @@ -262,101 +205,44 @@ static NSUInteger SDDeviceFreeMemory() { } return _runLoopMode; } -#endif -- (BOOL)shouldIncrementalLoad { ++ (NSString *)defaultRunLoopMode { + // Key off `activeProcessorCount` (as opposed to `processorCount`) since the system could shut down cores in certain situations. + return [NSProcessInfo processInfo].activeProcessorCount > 1 ? NSRunLoopCommonModes : NSDefaultRunLoopMode; +} + +- (void)setMaxBufferSize:(NSUInteger)maxBufferSize +{ + _maxBufferSize = maxBufferSize; + self.player.maxBufferSize = maxBufferSize; +} + +- (NSUInteger)maxBufferSize { + return _maxBufferSize; // Defaults to 0 +} + +- (void)setPlaybackRate:(double)playbackRate +{ + _playbackRate = playbackRate; + self.player.playbackRate = playbackRate; +} + +- (double)playbackRate +{ + if (!_initFinished) { + return 1.0; // Defaults to 1.0 + } + return _playbackRate; +} + +- (BOOL)shouldIncrementalLoad +{ if (!_initFinished) { return YES; // Defaults to YES } return _initFinished; } -#pragma mark - Private -- (NSOperationQueue *)fetchQueue -{ - if (!_fetchQueue) { - _fetchQueue = [[NSOperationQueue alloc] init]; - _fetchQueue.maxConcurrentOperationCount = 1; - } - return _fetchQueue; -} - -- (NSMutableDictionary *)frameBuffer -{ - if (!_frameBuffer) { - _frameBuffer = [NSMutableDictionary dictionary]; - } - return _frameBuffer; -} - -- (dispatch_semaphore_t)lock { - if (!_lock) { - _lock = dispatch_semaphore_create(1); - } - return _lock; -} - -#if SD_MAC -- (CVDisplayLinkRef)displayLink -{ - if (!_displayLink) { - CVReturn error = CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink); - if (error) { - return NULL; - } - CVDisplayLinkSetOutputCallback(_displayLink, renderCallback, (__bridge void *)self); - } - return _displayLink; -} -#else -- (CADisplayLink *)displayLink -{ - if (!_displayLink) { - // It is important to note the use of a weak proxy here to avoid a retain cycle. `-displayLinkWithTarget:selector:` - // will retain its target until it is invalidated. We use a weak proxy so that the image view will get deallocated - // independent of the display link's lifetime. Upon image view deallocation, we invalidate the display - // link which will lead to the deallocation of both the display link and the weak proxy. - SDWeakProxy *weakProxy = [SDWeakProxy proxyWithTarget:self]; - _displayLink = [CADisplayLink displayLinkWithTarget:weakProxy selector:@selector(displayDidRefresh:)]; - [_displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:self.runLoopMode]; - } - return _displayLink; -} -#endif - -#pragma mark - Life Cycle - -- (void)dealloc -{ - // Removes the display link from all run loop modes. -#if SD_MAC - if (_displayLink) { - CVDisplayLinkRelease(_displayLink); - _displayLink = NULL; - } -#else - [_displayLink invalidate]; - _displayLink = nil; - [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; -#endif -} - -- (void)didReceiveMemoryWarning:(NSNotification *)notification { - [_fetchQueue cancelAllOperations]; - [_fetchQueue addOperationWithBlock:^{ - NSNumber *currentFrameIndex = @(self.currentFrameIndex); - SD_LOCK(self.lock); - NSArray *keys = self.frameBuffer.allKeys; - // only keep the next frame for later rendering - for (NSNumber * key in keys) { - if (![key isEqualToNumber:currentFrameIndex]) { - [self.frameBuffer removeObjectForKey:key]; - } - } - SD_UNLOCK(self.lock); - }]; -} - #pragma mark - UIView Method Overrides #pragma mark Observing View-Related Changes @@ -435,14 +321,26 @@ static NSUInteger SDDeviceFreeMemory() { #pragma mark - UIImageView Method Overrides #pragma mark Image Data +- (void)setAnimationRepeatCount:(NSInteger)animationRepeatCount +{ +#if SD_UIKIT + [super setAnimationRepeatCount:animationRepeatCount]; +#else + _animationRepeatCount = animationRepeatCount; +#endif + + if (self.shouldCustomLoopCount) { + self.player.totalLoopCount = animationRepeatCount; + } +} + - (void)startAnimating { - if (self.animatedImage) { -#if SD_MAC - CVDisplayLinkStart(self.displayLink); -#else - self.displayLink.paused = NO; -#endif + if (self.player) { + [self updateShouldAnimate]; + if (self.shouldAnimate) { + [self.player startPlaying]; + } } else { #if SD_UIKIT [super startAnimating]; @@ -452,14 +350,15 @@ static NSUInteger SDDeviceFreeMemory() { - (void)stopAnimating { - if (self.animatedImage) { - [_fetchQueue cancelAllOperations]; - // Using `_displayLink` here because when UIImageView dealloc, it may trigger `[self stopAnimating]`, we already release the display link in SDAnimatedImageView's dealloc method. -#if SD_MAC - CVDisplayLinkStop(_displayLink); -#else - _displayLink.paused = YES; -#endif + if (self.player) { + if (self.resetFrameIndexWhenStopped) { + [self.player stopPlaying]; + } else { + [self.player pausePlaying]; + } + if (self.clearBufferWhenStopped) { + [self.player clearFrameBuffer]; + } } else { #if SD_UIKIT [super stopAnimating]; @@ -467,22 +366,16 @@ static NSUInteger SDDeviceFreeMemory() { } } +#if SD_UIKIT - (BOOL)isAnimating { - BOOL isAnimating = NO; - if (self.animatedImage) { -#if SD_MAC - isAnimating = CVDisplayLinkIsRunning(self.displayLink); -#else - isAnimating = !self.displayLink.isPaused; -#endif + if (self.player) { + return self.player.isPlaying; } else { -#if SD_UIKIT - isAnimating = [super isAnimating]; -#endif + return [super isAnimating]; } - return isAnimating; } +#endif #if SD_MAC - (void)setAnimates:(BOOL)animates @@ -501,7 +394,7 @@ static NSUInteger SDDeviceFreeMemory() { - (void)setHighlighted:(BOOL)highlighted { // Highlighted image is unsupported for animated images, but implementing it breaks the image view when embedded in a UICollectionViewCell. - if (!self.animatedImage) { + if (!self.player) { [super setHighlighted:highlighted]; } } @@ -515,11 +408,11 @@ static NSUInteger SDDeviceFreeMemory() { - (void)updateShouldAnimate { #if SD_MAC - BOOL isVisible = self.window && self.superview && ![self isHidden] && self.alphaValue > 0.0 && self.animates; + BOOL isVisible = self.window && self.superview && ![self isHidden] && self.alphaValue > 0.0; #else BOOL isVisible = self.window && self.superview && ![self isHidden] && self.alpha > 0.0; #endif - self.shouldAnimate = self.animatedImage && self.totalFrameCount > 1 && isVisible; + self.shouldAnimate = self.player && isVisible; } // Update progressive status only after `setImage:` call. @@ -530,167 +423,34 @@ static NSUInteger SDDeviceFreeMemory() { // Early return return; } - if ([image conformsToProtocol:@protocol(SDAnimatedImage)] && image.sd_isIncremental) { + // We must use `image.class conformsToProtocol:` instead of `image conformsToProtocol:` here + // Because UIKit on macOS, using internal hard-coded override method, which returns NO + id currentAnimatedCoder = [self progressiveAnimatedCoderForImage:image]; + if (currentAnimatedCoder) { UIImage *previousImage = self.image; - if ([previousImage conformsToProtocol:@protocol(SDAnimatedImage)] && previousImage.sd_isIncremental) { - NSData *previousData = [((UIImage *)previousImage) animatedImageData]; - NSData *currentData = [((UIImage *)image) animatedImageData]; - // Check whether to use progressive rendering or not - if (!previousData || !currentData) { - // Early return - return; - } - - // Warning: normally the `previousData` is same instance as `currentData` because our `SDAnimatedImage` class share the same `coder` instance internally. But there may be a race condition, that later retrived `currentData` is already been updated and it's not the same instance as `previousData`. - // And for protocol extensible design, we should not assume `SDAnimatedImage` protocol implementations always share same instance. So both of two reasons, we need that `rangeOfData` check. - if ([currentData isEqualToData:previousData]) { - // If current data is the same data (or instance) as previous data - self.isProgressive = YES; - } else if (currentData.length > previousData.length) { - // If current data is appended by previous data, use `NSDataSearchAnchored`, search is limited to start of currentData - NSRange range = [currentData rangeOfData:previousData options:NSDataSearchAnchored range:NSMakeRange(0, previousData.length)]; - if (range.location != NSNotFound) { - // Contains hole previous data and they start with the same beginning - self.isProgressive = YES; - } - } - } else { - // Previous image is not progressive, so start progressive rendering + if (!previousImage) { + // If current animated coder supports progressive, and no previous image to check, start progressive loading self.isProgressive = YES; + } else { + id previousAnimatedCoder = [self progressiveAnimatedCoderForImage:previousImage]; + if (previousAnimatedCoder == currentAnimatedCoder) { + // If current animated coder is the same as previous, start progressive loading + self.isProgressive = YES; + } } } } -#if SD_MAC -- (void)displayDidRefresh:(CVDisplayLinkRef)displayLink duration:(NSTimeInterval)duration -#else -- (void)displayDidRefresh:(CADisplayLink *)displayLink -#endif +// Check if image can represent a `Progressive Animated Image` during loading +- (id)progressiveAnimatedCoderForImage:(UIImage *)image { - // If for some reason a wild call makes it through when we shouldn't be animating, bail. - // Early return! - if (!self.shouldAnimate) { - return; - } - -#if SD_UIKIT - NSTimeInterval duration = displayLink.duration * displayLink.frameInterval; -#endif - NSUInteger totalFrameCount = self.totalFrameCount; - NSUInteger currentFrameIndex = self.currentFrameIndex; - NSUInteger nextFrameIndex = (currentFrameIndex + 1) % totalFrameCount; - - // Check if we have the frame buffer firstly to improve performance - if (!self.bufferMiss) { - // Then check if timestamp is reached - self.currentTime += duration; - NSTimeInterval currentDuration = [self.animatedImage animatedImageDurationAtIndex:currentFrameIndex]; - if (self.currentTime < currentDuration) { - // Current frame timestamp not reached, return - return; - } - self.currentTime -= currentDuration; - NSTimeInterval nextDuration = [self.animatedImage animatedImageDurationAtIndex:nextFrameIndex]; - if (self.currentTime > nextDuration) { - // Do not skip frame - self.currentTime = nextDuration; + if ([image.class conformsToProtocol:@protocol(SDAnimatedImage)] && image.sd_isIncremental && [image respondsToSelector:@selector(animatedCoder)]) { + id animatedCoder = [(id)image animatedCoder]; + if ([animatedCoder conformsToProtocol:@protocol(SDProgressiveImageCoder)]) { + return (id)animatedCoder; } } - - // Update the current frame - UIImage *currentFrame; - UIImage *fetchFrame; - SD_LOCK(self.lock); - currentFrame = self.frameBuffer[@(currentFrameIndex)]; - fetchFrame = currentFrame ? self.frameBuffer[@(nextFrameIndex)] : nil; - SD_UNLOCK(self.lock); - BOOL bufferFull = NO; - if (currentFrame) { - SD_LOCK(self.lock); - // Remove the frame buffer if need - if (self.frameBuffer.count > self.maxBufferCount) { - self.frameBuffer[@(currentFrameIndex)] = nil; - } - // Check whether we can stop fetch - if (self.frameBuffer.count == totalFrameCount) { - bufferFull = YES; - } - SD_UNLOCK(self.lock); - self.currentFrame = currentFrame; - self.currentFrameIndex = nextFrameIndex; - self.bufferMiss = NO; - [self.imageViewLayer setNeedsDisplay]; - } else { - self.bufferMiss = YES; - } - - // Update the loop count when last frame rendered - if (nextFrameIndex == 0 && !self.bufferMiss) { - // Progressive image reach the current last frame index. Keep the state and stop animating. Wait for later restart - if (self.isProgressive) { - // Recovery the current frame index and removed frame buffer (See above) - self.currentFrameIndex = currentFrameIndex; - SD_LOCK(self.lock); - self.frameBuffer[@(currentFrameIndex)] = self.currentFrame; - SD_UNLOCK(self.lock); - [self stopAnimating]; - return; - } - // Update the loop count - self.currentLoopCount++; - // if reached the max loop count, stop animating, 0 means loop indefinitely - NSUInteger maxLoopCount = self.shouldCustomLoopCount ? self.animationRepeatCount : self.totalLoopCount; - if (maxLoopCount != 0 && (self.currentLoopCount >= maxLoopCount)) { - [self stopAnimating]; - return; - } - } - - // Check if we should prefetch next frame or current frame - NSUInteger fetchFrameIndex; - if (self.bufferMiss) { - // When buffer miss, means the decode speed is slower than render speed, we fetch current miss frame - fetchFrameIndex = currentFrameIndex; - } else { - // Or, most cases, the decode speed is faster than render speed, we fetch next frame - fetchFrameIndex = nextFrameIndex; - } - - if (!fetchFrame && !bufferFull && self.fetchQueue.operationCount == 0) { - // Prefetch next frame in background queue - UIImage *animatedImage = self.animatedImage; - @weakify(self); - NSOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ - @strongify(self); - if (!self) { - return; - } - UIImage *frame = [animatedImage animatedImageFrameAtIndex:fetchFrameIndex]; - - BOOL isAnimating = NO; -#if SD_MAC - isAnimating = CVDisplayLinkIsRunning(self.displayLink); -#else - isAnimating = !self.displayLink.isPaused; -#endif - if (isAnimating) { - SD_LOCK(self.lock); - self.frameBuffer[@(fetchFrameIndex)] = frame; - SD_UNLOCK(self.lock); - } - // Ensure when self dealloc, it dealloced on the main queue (UIKit/AppKit rule) - dispatch_async(dispatch_get_main_queue(), ^{ - [self class]; - }); - }]; - [self.fetchQueue addOperation:operation]; - } -} - -+ (NSString *)defaultRunLoopMode -{ - // Key off `activeProcessorCount` (as opposed to `processorCount`) since the system could shut down cores in certain situations. - return [NSProcessInfo processInfo].activeProcessorCount > 1 ? NSRunLoopCommonModes : NSDefaultRunLoopMode; + return nil; } @@ -699,9 +459,10 @@ static NSUInteger SDDeviceFreeMemory() { - (void)displayLayer:(CALayer *)layer { - if (self.currentFrame) { - layer.contentsScale = self.animatedImageScale; - layer.contents = (__bridge id)self.currentFrame.CGImage; + UIImage *currentFrame = self.currentFrame; + if (currentFrame) { + layer.contentsScale = currentFrame.scale; + layer.contents = (__bridge id)currentFrame.CGImage; } } @@ -739,45 +500,6 @@ static NSUInteger SDDeviceFreeMemory() { #endif - -#pragma mark - Util -- (void)calculateMaxBufferCount { - NSUInteger bytes = CGImageGetBytesPerRow(self.currentFrame.CGImage) * CGImageGetHeight(self.currentFrame.CGImage); - if (bytes == 0) bytes = 1024; - - NSUInteger max = 0; - if (self.maxBufferSize > 0) { - max = self.maxBufferSize; - } else { - // Calculate based on current memory, these factors are by experience - NSUInteger total = SDDeviceTotalMemory(); - NSUInteger free = SDDeviceFreeMemory(); - max = MIN(total * 0.2, free * 0.6); - } - - NSUInteger maxBufferCount = (double)max / (double)bytes; - if (!maxBufferCount) { - // At least 1 frame - maxBufferCount = 1; - } - - self.maxBufferCount = maxBufferCount; -} - @end -#if SD_MAC -static CVReturn renderCallback(CVDisplayLinkRef displayLink, const CVTimeStamp *inNow, const CVTimeStamp *inOutputTime, CVOptionFlags flagsIn, CVOptionFlags *flagsOut, void *displayLinkContext) { - // Calculate refresh duration - NSTimeInterval duration = (double)inOutputTime->videoRefreshPeriod / ((double)inOutputTime->videoTimeScale * inOutputTime->rateScalar); - // CVDisplayLink callback is not on main queue - SDAnimatedImageView *imageView = (__bridge SDAnimatedImageView *)displayLinkContext; - __weak SDAnimatedImageView *weakImageView = imageView; - dispatch_async(dispatch_get_main_queue(), ^{ - [weakImageView displayDidRefresh:displayLink duration:duration]; - }); - return kCVReturnSuccess; -} -#endif - #endif diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.h index ffc440e5a..dc5e1faec 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.h @@ -54,6 +54,26 @@ */ - (void)setData:(nullable NSData *)data forKey:(nonnull NSString *)key; +/** + Returns the extended data associated with a given key. + This method may blocks the calling thread until file read finished. + + @param key A string identifying the data. If nil, just return nil. + @return The value associated with key, or nil if no value is associated with key. + */ +- (nullable NSData *)extendedDataForKey:(nonnull NSString *)key; + +/** + Set extended data with a given key. + + @discussion You can set any extended data to exist cache key. Without override the exist disk file data. + on UNIX, the common way for this is to use the Extended file attributes (xattr) + + @param extendedData The extended data (pass nil to remove). + @param key The key with which to associate the value. If nil, this method has no effect. +*/ +- (void)setExtendedData:(nullable NSData *)extendedData forKey:(nonnull NSString *)key; + /** Removes the value of the specified key in the cache. This method may blocks the calling thread until file delete finished. diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m index 21648972a..d7308dccc 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDDiskCache.m @@ -8,8 +8,11 @@ #import "SDDiskCache.h" #import "SDImageCacheConfig.h" +#import "SDFileAttributeHelper.h" #import +static NSString * const SDDiskCacheExtendedAttributeName = @"com.hackemist.SDDiskCache"; + @interface SDDiskCache () @property (nonatomic, copy) NSString *diskCachePath; @@ -95,6 +98,31 @@ } } +- (NSData *)extendedDataForKey:(NSString *)key { + NSParameterAssert(key); + + // get cache Path for image key + NSString *cachePathForKey = [self cachePathForKey:key]; + + NSData *extendedData = [SDFileAttributeHelper extendedAttribute:SDDiskCacheExtendedAttributeName atPath:cachePathForKey traverseLink:NO error:nil]; + + return extendedData; +} + +- (void)setExtendedData:(NSData *)extendedData forKey:(NSString *)key { + NSParameterAssert(key); + // get cache Path for image key + NSString *cachePathForKey = [self cachePathForKey:key]; + + if (!extendedData) { + // Remove + [SDFileAttributeHelper removeExtendedAttribute:SDDiskCacheExtendedAttributeName atPath:cachePathForKey traverseLink:NO error:nil]; + } else { + // Override + [SDFileAttributeHelper setExtendedAttribute:SDDiskCacheExtendedAttributeName value:extendedData atPath:cachePathForKey traverseLink:NO overwrite:YES error:nil]; + } +} + - (void)removeDataForKey:(NSString *)key { NSParameterAssert(key); NSString *filePath = [self cachePathForKey:key]; @@ -118,11 +146,15 @@ case SDImageCacheConfigExpireTypeAccessDate: cacheContentDateKey = NSURLContentAccessDateKey; break; - case SDImageCacheConfigExpireTypeModificationDate: cacheContentDateKey = NSURLContentModificationDateKey; break; - + case SDImageCacheConfigExpireTypeCreationDate: + cacheContentDateKey = NSURLCreationDateKey; + break; + case SDImageCacheConfigExpireTypeChangeDate: + cacheContentDateKey = NSURLAttributeModificationDateKey; + break; default: break; } @@ -269,6 +301,8 @@ #define SD_MAX_FILE_EXTENSION_LENGTH (NAME_MAX - CC_MD5_DIGEST_LENGTH * 2 - 1) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" static inline NSString * _Nonnull SDDiskCacheFileNameForKey(NSString * _Nullable key) { const char *str = key.UTF8String; if (str == NULL) { @@ -287,5 +321,6 @@ static inline NSString * _Nonnull SDDiskCacheFileNameForKey(NSString * _Nullable r[11], r[12], r[13], r[14], r[15], ext.length == 0 ? @"" : [NSString stringWithFormat:@".%@", ext]]; return filename; } +#pragma clang diagnostic pop @end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.h new file mode 100644 index 000000000..900acd769 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.h @@ -0,0 +1,73 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDWebImageCompat.h" + +/** + These following class are provided to use `UIGraphicsImageRenderer` with polyfill, which allows write cross-platform(AppKit/UIKit) code and avoid runtime version check. + Compared to `UIGraphicsBeginImageContext`, `UIGraphicsImageRenderer` use dynamic bitmap from your draw code to generate CGContext, not always use ARGB8888, which is more performant on RAM usage. + Which means, if you draw CGImage/CIImage which contains grayscale only, the underlaying bitmap context use grayscale, it's managed by system and not a fixed type. (actually, the `kCGContextTypeAutomatic`) + For usage, See more in Apple's documentation: https://developer.apple.com/documentation/uikit/uigraphicsimagerenderer + For UIKit on iOS/tvOS 10+, these method just use the same `UIGraphicsImageRenderer` API. + For others (macOS/watchOS or iOS/tvOS 10-), these method use the `SDImageGraphics.h` to implements the same behavior (but without dynamic bitmap support) +*/ + +typedef void (^SDGraphicsImageDrawingActions)(CGContextRef _Nonnull context); +typedef NS_ENUM(NSInteger, SDGraphicsImageRendererFormatRange) { + SDGraphicsImageRendererFormatRangeUnspecified = -1, + SDGraphicsImageRendererFormatRangeAutomatic = 0, + SDGraphicsImageRendererFormatRangeExtended, + SDGraphicsImageRendererFormatRangeStandard +}; + +/// A set of drawing attributes that represent the configuration of an image renderer context. +@interface SDGraphicsImageRendererFormat : NSObject + +/// The display scale of the image renderer context. +/// The default value is equal to the scale of the main screen. +@property (nonatomic) CGFloat scale; + +/// A Boolean value indicating whether the underlying Core Graphics context has an alpha channel. +/// The default value is NO. +@property (nonatomic) BOOL opaque; + +/// Specifying whether the bitmap context should use extended color. +/// For iOS 12+, the value is from system `preferredRange` property +/// For iOS 10-11, the value is from system `prefersExtendedRange` property +/// For iOS 9-, the value is `.standard` +@property (nonatomic) SDGraphicsImageRendererFormatRange preferredRange; + +/// Init the default format. See each properties's default value. +- (nonnull instancetype)init; + +/// Returns a new format best suited for the main screen’s current configuration. ++ (nonnull instancetype)preferredFormat; + +@end + +/// A graphics renderer for creating Core Graphics-backed images. +@interface SDGraphicsImageRenderer : NSObject + +/// Creates an image renderer for drawing images of a given size. +/// @param size The size of images output from the renderer, specified in points. +/// @return An initialized image renderer. +- (nonnull instancetype)initWithSize:(CGSize)size; + +/// Creates a new image renderer with a given size and format. +/// @param size The size of images output from the renderer, specified in points. +/// @param format A SDGraphicsImageRendererFormat object that encapsulates the format used to create the renderer context. +/// @return An initialized image renderer. +- (nonnull instancetype)initWithSize:(CGSize)size format:(nonnull SDGraphicsImageRendererFormat *)format; + +/// Creates an image by following a set of drawing instructions. +/// @param actions A SDGraphicsImageDrawingActions block that, when invoked by the renderer, executes a set of drawing instructions to create the output image. +/// @note You should not retain or use the context outside the block, it's non-escaping. +/// @return A UIImage object created by the supplied drawing actions. +- (nonnull UIImage *)imageWithActions:(nonnull NS_NOESCAPE SDGraphicsImageDrawingActions)actions; + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m new file mode 100644 index 000000000..869de2cab --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDGraphicsImageRenderer.m @@ -0,0 +1,241 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDGraphicsImageRenderer.h" +#import "SDImageGraphics.h" + +@interface SDGraphicsImageRendererFormat () +#if SD_UIKIT +@property (nonatomic, strong) UIGraphicsImageRendererFormat *uiformat API_AVAILABLE(ios(10.0), tvos(10.0)); +#endif +@end + +@implementation SDGraphicsImageRendererFormat +@synthesize scale = _scale; +@synthesize opaque = _opaque; +@synthesize preferredRange = _preferredRange; + +#pragma mark - Property +- (CGFloat)scale { +#if SD_UIKIT + if (@available(iOS 10.0, tvOS 10.10, *)) { + return self.uiformat.scale; + } else { + return _scale; + } +#else + return _scale; +#endif +} + +- (void)setScale:(CGFloat)scale { +#if SD_UIKIT + if (@available(iOS 10.0, tvOS 10.10, *)) { + self.uiformat.scale = scale; + } else { + _scale = scale; + } +#else + _scale = scale; +#endif +} + +- (BOOL)opaque { +#if SD_UIKIT + if (@available(iOS 10.0, tvOS 10.10, *)) { + return self.uiformat.opaque; + } else { + return _opaque; + } +#else + return _opaque; +#endif +} + +- (void)setOpaque:(BOOL)opaque { +#if SD_UIKIT + if (@available(iOS 10.0, tvOS 10.10, *)) { + self.uiformat.opaque = opaque; + } else { + _opaque = opaque; + } +#else + _opaque = opaque; +#endif +} + +- (SDGraphicsImageRendererFormatRange)preferredRange { +#if SD_UIKIT + if (@available(iOS 10.0, tvOS 10.10, *)) { + if (@available(iOS 12.0, tvOS 12.0, *)) { + return (SDGraphicsImageRendererFormatRange)self.uiformat.preferredRange; + } else { + BOOL prefersExtendedRange = self.uiformat.prefersExtendedRange; + if (prefersExtendedRange) { + return SDGraphicsImageRendererFormatRangeExtended; + } else { + return SDGraphicsImageRendererFormatRangeStandard; + } + } + } else { + return _preferredRange; + } +#else + return _preferredRange; +#endif +} + +- (void)setPreferredRange:(SDGraphicsImageRendererFormatRange)preferredRange { +#if SD_UIKIT + if (@available(iOS 10.0, tvOS 10.10, *)) { + if (@available(iOS 12.0, tvOS 12.0, *)) { + self.uiformat.preferredRange = (UIGraphicsImageRendererFormatRange)preferredRange; + } else { + switch (preferredRange) { + case SDGraphicsImageRendererFormatRangeExtended: + self.uiformat.prefersExtendedRange = YES; + break; + case SDGraphicsImageRendererFormatRangeStandard: + self.uiformat.prefersExtendedRange = NO; + default: + // Automatic means default + break; + } + } + } else { + _preferredRange = preferredRange; + } +#else + _preferredRange = preferredRange; +#endif +} + +- (instancetype)init { + self = [super init]; + if (self) { +#if SD_UIKIT + if (@available(iOS 10.0, tvOS 10.10, *)) { + UIGraphicsImageRendererFormat *uiformat = [[UIGraphicsImageRendererFormat alloc] init]; + self.uiformat = uiformat; + } else { +#endif +#if SD_WATCH + CGFloat screenScale = [WKInterfaceDevice currentDevice].screenScale; +#elif SD_UIKIT + CGFloat screenScale = [UIScreen mainScreen].scale; +#elif SD_MAC + CGFloat screenScale = [NSScreen mainScreen].backingScaleFactor; +#endif + self.scale = screenScale; + self.opaque = NO; + self.preferredRange = SDGraphicsImageRendererFormatRangeStandard; +#if SD_UIKIT + } +#endif + } + return self; +} + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +- (instancetype)initForMainScreen { + self = [super init]; + if (self) { +#if SD_UIKIT + if (@available(iOS 10.0, tvOS 10.0, *)) { + UIGraphicsImageRendererFormat *uiformat; + // iOS 11.0.0 GM does have `preferredFormat`, but iOS 11 betas did not (argh!) + if ([UIGraphicsImageRenderer respondsToSelector:@selector(preferredFormat)]) { + uiformat = [UIGraphicsImageRendererFormat preferredFormat]; + } else { + uiformat = [UIGraphicsImageRendererFormat defaultFormat]; + } + self.uiformat = uiformat; + } else { +#endif +#if SD_WATCH + CGFloat screenScale = [WKInterfaceDevice currentDevice].screenScale; +#elif SD_UIKIT + CGFloat screenScale = [UIScreen mainScreen].scale; +#elif SD_MAC + CGFloat screenScale = [NSScreen mainScreen].backingScaleFactor; +#endif + self.scale = screenScale; + self.opaque = NO; + self.preferredRange = SDGraphicsImageRendererFormatRangeStandard; +#if SD_UIKIT + } +#endif + } + return self; +} +#pragma clang diagnostic pop + ++ (instancetype)preferredFormat { + SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] initForMainScreen]; + return format; +} + +@end + +@interface SDGraphicsImageRenderer () +@property (nonatomic, assign) CGSize size; +@property (nonatomic, strong) SDGraphicsImageRendererFormat *format; +#if SD_UIKIT +@property (nonatomic, strong) UIGraphicsImageRenderer *uirenderer API_AVAILABLE(ios(10.0), tvos(10.0)); +#endif +@end + +@implementation SDGraphicsImageRenderer + +- (instancetype)initWithSize:(CGSize)size { + return [self initWithSize:size format:SDGraphicsImageRendererFormat.preferredFormat]; +} + +- (instancetype)initWithSize:(CGSize)size format:(SDGraphicsImageRendererFormat *)format { + NSParameterAssert(format); + self = [super init]; + if (self) { + self.size = size; + self.format = format; +#if SD_UIKIT + if (@available(iOS 10.0, tvOS 10.0, *)) { + UIGraphicsImageRendererFormat *uiformat = format.uiformat; + self.uirenderer = [[UIGraphicsImageRenderer alloc] initWithSize:size format:uiformat]; + } +#endif + } + return self; +} + +- (UIImage *)imageWithActions:(NS_NOESCAPE SDGraphicsImageDrawingActions)actions { + NSParameterAssert(actions); +#if SD_UIKIT + if (@available(iOS 10.0, tvOS 10.0, *)) { + UIGraphicsImageDrawingActions uiactions = ^(UIGraphicsImageRendererContext *rendererContext) { + if (actions) { + actions(rendererContext.CGContext); + } + }; + return [self.uirenderer imageWithActions:uiactions]; + } else { +#endif + SDGraphicsBeginImageContextWithOptions(self.size, self.format.opaque, self.format.scale); + CGContextRef context = SDGraphicsGetCurrentContext(); + if (actions) { + actions(context); + } + UIImage *image = SDGraphicsGetImageFromCurrentImageContext(); + SDGraphicsEndImageContext(); + return image; +#if SD_UIKIT + } +#endif +} + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.h index a674a95b1..f73742cbf 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.h @@ -7,12 +7,12 @@ */ #import -#import "SDImageCoder.h" +#import "SDImageIOAnimatedCoder.h" /** Built in coder using ImageIO that supports APNG encoding/decoding */ -@interface SDImageAPNGCoder : NSObject +@interface SDImageAPNGCoder : SDImageIOAnimatedCoder @property (nonatomic, class, readonly, nonnull) SDImageAPNGCoder *sharedCoder; diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m index 3c699843c..a0700abba 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageAPNGCoder.m @@ -7,60 +7,21 @@ */ #import "SDImageAPNGCoder.h" -#import -#import "NSData+ImageContentType.h" -#import "UIImage+Metadata.h" -#import "NSImage+Compatibility.h" -#import "SDImageCoderHelper.h" -#import "SDAnimatedImageRep.h" +#if SD_MAC +#import +#else +#import +#endif // iOS 8 Image/IO framework binary does not contains these APNG contants, so we define them. Thanks Apple :) +// We can not use runtime @available check for this issue, because it's a global symbol and should be loaded during launch time by dyld. So hack if the min deployment target version < iOS 9.0, whatever it running on iOS 9+ or not. #if (__IPHONE_OS_VERSION_MIN_REQUIRED && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_9_0) const CFStringRef kCGImagePropertyAPNGLoopCount = (__bridge CFStringRef)@"LoopCount"; const CFStringRef kCGImagePropertyAPNGDelayTime = (__bridge CFStringRef)@"DelayTime"; const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef)@"UnclampedDelayTime"; #endif -@interface SDAPNGCoderFrame : NSObject - -@property (nonatomic, assign) NSUInteger index; // Frame index (zero based) -@property (nonatomic, assign) NSTimeInterval duration; // Frame duration in seconds - -@end - -@implementation SDAPNGCoderFrame -@end - -@implementation SDImageAPNGCoder { - size_t _width, _height; - CGImageSourceRef _imageSource; - NSData *_imageData; - CGFloat _scale; - NSUInteger _loopCount; - NSUInteger _frameCount; - NSArray *_frames; - BOOL _finished; -} - -- (void)dealloc -{ - if (_imageSource) { - CFRelease(_imageSource); - _imageSource = NULL; - } -#if SD_UIKIT - [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; -#endif -} - -- (void)didReceiveMemoryWarning:(NSNotification *)notification -{ - if (_imageSource) { - for (size_t i = 0; i < _frameCount; i++) { - CGImageSourceRemoveCacheAtIndex(_imageSource, i); - } - } -} +@implementation SDImageAPNGCoder + (instancetype)sharedCoder { static SDImageAPNGCoder *coder; @@ -71,346 +32,34 @@ const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime = (__bridge CFStringRef return coder; } -#pragma mark - Decode -- (BOOL)canDecodeFromData:(nullable NSData *)data { - return ([NSData sd_imageFormatForImageData:data] == SDImageFormatPNG); +#pragma mark - Subclass Override + ++ (SDImageFormat)imageFormat { + return SDImageFormatPNG; } -- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderOptions *)options { - if (!data) { - return nil; - } - CGFloat scale = 1; - NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; - if (scaleFactor != nil) { - scale = MAX([scaleFactor doubleValue], 1); - } - -#if SD_MAC - SDAnimatedImageRep *imageRep = [[SDAnimatedImageRep alloc] initWithData:data]; - NSSize size = NSMakeSize(imageRep.pixelsWide / scale, imageRep.pixelsHigh / scale); - imageRep.size = size; - NSImage *animatedImage = [[NSImage alloc] initWithSize:size]; - [animatedImage addRepresentation:imageRep]; - return animatedImage; -#else - - CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); - if (!source) { - return nil; - } - size_t count = CGImageSourceGetCount(source); - UIImage *animatedImage; - - BOOL decodeFirstFrame = [options[SDImageCoderDecodeFirstFrameOnly] boolValue]; - if (decodeFirstFrame || count <= 1) { - animatedImage = [[UIImage alloc] initWithData:data scale:scale]; - } else { - NSMutableArray *frames = [NSMutableArray array]; - - for (size_t i = 0; i < count; i++) { - CGImageRef imageRef = CGImageSourceCreateImageAtIndex(source, i, NULL); - if (!imageRef) { - continue; - } - - float duration = [self sd_frameDurationAtIndex:i source:source]; - UIImage *image = [[UIImage alloc] initWithCGImage:imageRef scale:scale orientation:UIImageOrientationUp]; - CGImageRelease(imageRef); - - SDImageFrame *frame = [SDImageFrame frameWithImage:image duration:duration]; - [frames addObject:frame]; - } - - NSUInteger loopCount = [self sd_imageLoopCountWithSource:source]; - - animatedImage = [SDImageCoderHelper animatedImageWithFrames:frames]; - animatedImage.sd_imageLoopCount = loopCount; - } - animatedImage.sd_imageFormat = SDImageFormatPNG; - CFRelease(source); - - return animatedImage; -#endif ++ (NSString *)imageUTType { + return (__bridge NSString *)kUTTypePNG; } -- (NSUInteger)sd_imageLoopCountWithSource:(CGImageSourceRef)source { - NSUInteger loopCount = 0; - NSDictionary *imageProperties = (__bridge_transfer NSDictionary *)CGImageSourceCopyProperties(source, nil); - NSDictionary *pngProperties = imageProperties[(__bridge NSString *)kCGImagePropertyPNGDictionary]; - if (pngProperties) { - NSNumber *apngLoopCount = pngProperties[(__bridge NSString *)kCGImagePropertyAPNGLoopCount]; - if (apngLoopCount != nil) { - loopCount = apngLoopCount.unsignedIntegerValue; - } - } - return loopCount; ++ (NSString *)dictionaryProperty { + return (__bridge NSString *)kCGImagePropertyPNGDictionary; } -- (float)sd_frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source { - float frameDuration = 0.1f; - CFDictionaryRef cfFrameProperties = CGImageSourceCopyPropertiesAtIndex(source, index, nil); - if (!cfFrameProperties) { - return frameDuration; - } - NSDictionary *frameProperties = (__bridge NSDictionary *)cfFrameProperties; - NSDictionary *pngProperties = frameProperties[(NSString *)kCGImagePropertyPNGDictionary]; - - NSNumber *delayTimeUnclampedProp = pngProperties[(__bridge NSString *)kCGImagePropertyAPNGUnclampedDelayTime]; - if (delayTimeUnclampedProp != nil) { - frameDuration = [delayTimeUnclampedProp floatValue]; - } else { - NSNumber *delayTimeProp = pngProperties[(__bridge NSString *)kCGImagePropertyAPNGDelayTime]; - if (delayTimeProp != nil) { - frameDuration = [delayTimeProp floatValue]; - } - } - - if (frameDuration < 0.011f) { - frameDuration = 0.100f; - } - - CFRelease(cfFrameProperties); - return frameDuration; ++ (NSString *)unclampedDelayTimeProperty { + return (__bridge NSString *)kCGImagePropertyAPNGUnclampedDelayTime; } -#pragma mark - Encode -- (BOOL)canEncodeToFormat:(SDImageFormat)format { - return (format == SDImageFormatPNG); ++ (NSString *)delayTimeProperty { + return (__bridge NSString *)kCGImagePropertyAPNGDelayTime; } -- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDImageCoderOptions *)options { - if (!image) { - return nil; - } - - if (format != SDImageFormatPNG) { - return nil; - } - - NSMutableData *imageData = [NSMutableData data]; - CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:SDImageFormatPNG]; - NSArray *frames = [SDImageCoderHelper framesFromAnimatedImage:image]; - - // Create an image destination. APNG does not support EXIF image orientation - // The `CGImageDestinationCreateWithData` will log a warning when count is 0, use 1 instead. - CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, imageUTType, frames.count ?: 1, NULL); - if (!imageDestination) { - // Handle failure. - return nil; - } - NSMutableDictionary *properties = [NSMutableDictionary dictionary]; - double compressionQuality = 1; - if (options[SDImageCoderEncodeCompressionQuality]) { - compressionQuality = [options[SDImageCoderEncodeCompressionQuality] doubleValue]; - } - properties[(__bridge NSString *)kCGImageDestinationLossyCompressionQuality] = @(compressionQuality); - - BOOL encodeFirstFrame = [options[SDImageCoderEncodeFirstFrameOnly] boolValue]; - if (encodeFirstFrame || frames.count == 0) { - // for static single PNG images - CGImageDestinationAddImage(imageDestination, image.CGImage, (__bridge CFDictionaryRef)properties); - } else { - // for animated APNG images - NSUInteger loopCount = image.sd_imageLoopCount; - NSDictionary *pngProperties = @{(__bridge NSString *)kCGImagePropertyAPNGLoopCount : @(loopCount)}; - properties[(__bridge NSString *)kCGImagePropertyPNGDictionary] = pngProperties; - CGImageDestinationSetProperties(imageDestination, (__bridge CFDictionaryRef)properties); - - for (size_t i = 0; i < frames.count; i++) { - SDImageFrame *frame = frames[i]; - float frameDuration = frame.duration; - CGImageRef frameImageRef = frame.image.CGImage; - NSDictionary *frameProperties = @{(__bridge NSString *)kCGImagePropertyPNGDictionary : @{(__bridge NSString *)kCGImagePropertyAPNGDelayTime : @(frameDuration)}}; - CGImageDestinationAddImage(imageDestination, frameImageRef, (__bridge CFDictionaryRef)frameProperties); - } - } - // Finalize the destination. - if (CGImageDestinationFinalize(imageDestination) == NO) { - // Handle failure. - imageData = nil; - } - - CFRelease(imageDestination); - - return [imageData copy]; ++ (NSString *)loopCountProperty { + return (__bridge NSString *)kCGImagePropertyAPNGLoopCount; } -#pragma mark - Progressive Decode - -- (BOOL)canIncrementalDecodeFromData:(NSData *)data { - return ([NSData sd_imageFormatForImageData:data] == SDImageFormatPNG); -} - -- (instancetype)initIncrementalWithOptions:(nullable SDImageCoderOptions *)options { - self = [super init]; - if (self) { - CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:SDImageFormatPNG]; - _imageSource = CGImageSourceCreateIncremental((__bridge CFDictionaryRef)@{(__bridge NSString *)kCGImageSourceTypeIdentifierHint : (__bridge NSString *)imageUTType}); - CGFloat scale = 1; - NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; - if (scaleFactor != nil) { - scale = MAX([scaleFactor doubleValue], 1); - } - _scale = scale; -#if SD_UIKIT - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; -#endif - } - return self; -} - -- (void)updateIncrementalData:(NSData *)data finished:(BOOL)finished { - if (_finished) { - return; - } - _imageData = data; - _finished = finished; - - // The following code is from http://www.cocoaintheshell.com/2011/05/progressive-images-download-imageio/ - // Thanks to the author @Nyx0uf - - // Update the data source, we must pass ALL the data, not just the new bytes - CGImageSourceUpdateData(_imageSource, (__bridge CFDataRef)data, finished); - - if (_width + _height == 0) { - CFDictionaryRef properties = CGImageSourceCopyPropertiesAtIndex(_imageSource, 0, NULL); - if (properties) { - CFTypeRef val = CFDictionaryGetValue(properties, kCGImagePropertyPixelHeight); - if (val) CFNumberGetValue(val, kCFNumberLongType, &_height); - val = CFDictionaryGetValue(properties, kCGImagePropertyPixelWidth); - if (val) CFNumberGetValue(val, kCFNumberLongType, &_width); - CFRelease(properties); - } - } - - // For animated image progressive decoding because the frame count and duration may be changed. - [self scanAndCheckFramesValidWithImageSource:_imageSource]; -} - -- (UIImage *)incrementalDecodedImageWithOptions:(SDImageCoderOptions *)options { - UIImage *image; - - if (_width + _height > 0) { - // Create the image - CGImageRef partialImageRef = CGImageSourceCreateImageAtIndex(_imageSource, 0, NULL); - - if (partialImageRef) { - CGFloat scale = _scale; - NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; - if (scaleFactor != nil) { - scale = MAX([scaleFactor doubleValue], 1); - } -#if SD_UIKIT || SD_WATCH - image = [[UIImage alloc] initWithCGImage:partialImageRef scale:scale orientation:UIImageOrientationUp]; -#else - image = [[UIImage alloc] initWithCGImage:partialImageRef scale:scale orientation:kCGImagePropertyOrientationUp]; -#endif - CGImageRelease(partialImageRef); - image.sd_imageFormat = SDImageFormatPNG; - } - } - - return image; -} - -#pragma mark - SDAnimatedImageCoder -- (nullable instancetype)initWithAnimatedImageData:(nullable NSData *)data options:(nullable SDImageCoderOptions *)options { - if (!data) { - return nil; - } - self = [super init]; - if (self) { - CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); - if (!imageSource) { - return nil; - } - BOOL framesValid = [self scanAndCheckFramesValidWithImageSource:imageSource]; - if (!framesValid) { - CFRelease(imageSource); - return nil; - } - CGFloat scale = 1; - NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; - if (scaleFactor != nil) { - scale = MAX([scaleFactor doubleValue], 1); - } - _scale = scale; - _imageSource = imageSource; - _imageData = data; -#if SD_UIKIT - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; -#endif - } - return self; -} - -- (BOOL)scanAndCheckFramesValidWithImageSource:(CGImageSourceRef)imageSource -{ - if (!imageSource) { - return NO; - } - NSUInteger frameCount = CGImageSourceGetCount(imageSource); - NSUInteger loopCount = [self sd_imageLoopCountWithSource:imageSource]; - NSMutableArray *frames = [NSMutableArray array]; - - for (size_t i = 0; i < frameCount; i++) { - SDAPNGCoderFrame *frame = [[SDAPNGCoderFrame alloc] init]; - frame.index = i; - frame.duration = [self sd_frameDurationAtIndex:i source:imageSource]; - [frames addObject:frame]; - } - - _frameCount = frameCount; - _loopCount = loopCount; - _frames = [frames copy]; - - return YES; -} - -- (NSData *)animatedImageData -{ - return _imageData; -} - -- (NSUInteger)animatedImageLoopCount -{ - return _loopCount; -} - -- (NSUInteger)animatedImageFrameCount -{ - return _frameCount; -} - -- (NSTimeInterval)animatedImageDurationAtIndex:(NSUInteger)index -{ - if (index >= _frameCount) { - return 0; - } - return _frames[index].duration; -} - -- (UIImage *)animatedImageFrameAtIndex:(NSUInteger)index -{ - CGImageRef imageRef = CGImageSourceCreateImageAtIndex(_imageSource, index, NULL); - if (!imageRef) { - return nil; - } - // Image/IO create CGImage does not decompressed, so we do this because this is called background queue, this can avoid main queue block when rendering(especially when one more imageViews use the same image instance) - CGImageRef newImageRef = [SDImageCoderHelper CGImageCreateDecoded:imageRef]; - if (!newImageRef) { - newImageRef = imageRef; - } else { - CGImageRelease(imageRef); - } -#if SD_MAC - UIImage *image = [[UIImage alloc] initWithCGImage:newImageRef scale:_scale orientation:kCGImagePropertyOrientationUp]; -#else - UIImage *image = [UIImage imageWithCGImage:newImageRef scale:_scale orientation:UIImageOrientationUp]; -#endif - CGImageRelease(newImageRef); - return image; ++ (NSUInteger)defaultLoopCount { + return 0; } @end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m index 4c16f7630..362a299b9 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCache.m @@ -14,6 +14,7 @@ #import "SDAnimatedImage.h" #import "UIImage+MemoryCacheCost.h" #import "UIImage+Metadata.h" +#import "UIImage+ExtendedCacheData.h" @interface SDImageCache () @@ -197,6 +198,29 @@ data = [[SDImageCodersManager sharedManager] encodedDataWithImage:image format:format options:nil]; } [self _storeImageDataToDisk:data forKey:key]; + if (image) { + // Check extended data + id extendedObject = image.sd_extendedObject; + if ([extendedObject conformsToProtocol:@protocol(NSCoding)]) { + NSData *extendedData; + if (@available(iOS 11, tvOS 11, macOS 10.13, watchOS 4, *)) { + NSError *error; + extendedData = [NSKeyedArchiver archivedDataWithRootObject:extendedObject requiringSecureCoding:NO error:&error]; + if (error) { + NSLog(@"NSKeyedArchiver archive failed with error: %@", error); + } + } else { + @try { + extendedData = [NSKeyedArchiver archivedDataWithRootObject:extendedObject]; + } @catch (NSException *exception) { + NSLog(@"NSKeyedArchiver archive failed with exception: %@", exception); + } + } + if (extendedData) { + [self.diskCache setExtendedData:extendedData forKey:key]; + } + } + } } if (completionBlock) { @@ -346,6 +370,29 @@ - (nullable UIImage *)diskImageForKey:(nullable NSString *)key data:(nullable NSData *)data options:(SDImageCacheOptions)options context:(SDWebImageContext *)context { if (data) { UIImage *image = SDImageCacheDecodeImageData(data, key, [[self class] imageOptionsFromCacheOptions:options], context); + if (image) { + // Check extended data + NSData *extendedData = [self.diskCache extendedDataForKey:key]; + if (extendedData) { + id extendedObject; + if (@available(iOS 11, tvOS 11, macOS 10.13, watchOS 4, *)) { + NSError *error; + NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingFromData:extendedData error:&error]; + unarchiver.requiresSecureCoding = NO; + extendedObject = [unarchiver decodeTopLevelObjectForKey:NSKeyedArchiveRootObjectKey error:&error]; + if (error) { + NSLog(@"NSKeyedUnarchiver unarchive failed with error: %@", error); + } + } else { + @try { + extendedObject = [NSKeyedUnarchiver unarchiveObjectWithData:extendedData]; + } @catch (NSException *exception) { + NSLog(@"NSKeyedUnarchiver unarchive failed with exception: %@", exception); + } + } + image.sd_extendedObject = extendedObject; + } + } return image; } else { return nil; diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h index 460fd06b9..e77e128cc 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheConfig.h @@ -12,13 +12,21 @@ /// Image Cache Expire Type typedef NS_ENUM(NSUInteger, SDImageCacheConfigExpireType) { /** - * When the image is accessed it will update this value + * When the image cache is accessed it will update this value */ SDImageCacheConfigExpireTypeAccessDate, /** - * The image was obtained from the disk cache (Default) + * When the image cache is created or modified it will update this value (Default) */ - SDImageCacheConfigExpireTypeModificationDate + SDImageCacheConfigExpireTypeModificationDate, + /** + * When the image cache is created it will update this value + */ + SDImageCacheConfigExpireTypeCreationDate, + /** + * When the image cache is created, modified, renamed, file attribute updated (like permission, xattr) it will update this value + */ + SDImageCacheConfigExpireTypeChangeDate, }; /** diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m index 99e57f1a4..75dfb4e6b 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCacheDefine.m @@ -18,12 +18,25 @@ UIImage * _Nullable SDImageCacheDecodeImageData(NSData * _Nonnull imageData, NSS BOOL decodeFirstFrame = SD_OPTIONS_CONTAINS(options, SDWebImageDecodeFirstFrameOnly); NSNumber *scaleValue = context[SDWebImageContextImageScaleFactor]; CGFloat scale = scaleValue.doubleValue >= 1 ? scaleValue.doubleValue : SDImageScaleFactorForKey(cacheKey); - SDImageCoderOptions *coderOptions = @{SDImageCoderDecodeFirstFrameOnly : @(decodeFirstFrame), SDImageCoderDecodeScaleFactor : @(scale)}; - if (context) { - SDImageCoderMutableOptions *mutableCoderOptions = [coderOptions mutableCopy]; - [mutableCoderOptions setValue:context forKey:SDImageCoderWebImageContext]; - coderOptions = [mutableCoderOptions copy]; + NSNumber *preserveAspectRatioValue = context[SDWebImageContextImagePreserveAspectRatio]; + NSValue *thumbnailSizeValue; + BOOL shouldScaleDown = SD_OPTIONS_CONTAINS(options, SDWebImageScaleDownLargeImages); + if (shouldScaleDown) { + CGFloat thumbnailPixels = SDImageCoderHelper.defaultScaleDownLimitBytes / 4; + CGFloat dimension = ceil(sqrt(thumbnailPixels)); + thumbnailSizeValue = @(CGSizeMake(dimension, dimension)); } + if (context[SDWebImageContextImageThumbnailPixelSize]) { + thumbnailSizeValue = context[SDWebImageContextImageThumbnailPixelSize]; + } + + SDImageCoderMutableOptions *mutableCoderOptions = [NSMutableDictionary dictionaryWithCapacity:2]; + mutableCoderOptions[SDImageCoderDecodeFirstFrameOnly] = @(decodeFirstFrame); + mutableCoderOptions[SDImageCoderDecodeScaleFactor] = @(scale); + mutableCoderOptions[SDImageCoderDecodePreserveAspectRatio] = preserveAspectRatioValue; + mutableCoderOptions[SDImageCoderDecodeThumbnailPixelSize] = thumbnailSizeValue; + mutableCoderOptions[SDImageCoderWebImageContext] = context; + SDImageCoderOptions *coderOptions = [mutableCoderOptions copy]; if (!decodeFirstFrame) { Class animatedImageClass = context[SDWebImageContextAnimatedImageClass]; @@ -56,12 +69,7 @@ UIImage * _Nullable SDImageCacheDecodeImageData(NSData * _Nonnull imageData, NSS shouldDecode = NO; } if (shouldDecode) { - BOOL shouldScaleDown = SD_OPTIONS_CONTAINS(options, SDWebImageScaleDownLargeImages); - if (shouldScaleDown) { - image = [SDImageCoderHelper decodedAndScaledDownImageWithImage:image limitBytes:0]; - } else { - image = [SDImageCoderHelper decodedImageWithImage:image]; - } + image = [SDImageCoderHelper decodedImageWithImage:image]; } } diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.h index 3b2049e5e..221246ac9 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.h @@ -27,6 +27,22 @@ FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderDecodeFirstFrame */ FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderDecodeScaleFactor; +/** + A Boolean value indicating whether to keep the original aspect ratio when generating thumbnail images (or bitmap images from vector format). + Defaults to YES. + @note works for `SDImageCoder`, `SDProgressiveImageCoder`, `SDAnimatedImageCoder`. + */ +FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderDecodePreserveAspectRatio; + +/** + A CGSize value indicating whether or not to generate the thumbnail images (or bitmap images from vector format). When this value is provided, the decoder will generate a thumbnail image which pixel size is smaller than or equal to (depends the `.preserveAspectRatio`) the value size. + Defaults to CGSizeZero, which means no thumbnail generation at all. + @note When you pass `.preserveAspectRatio == NO`, the thumbnail image is stretched to match each dimension. When `.preserveAspectRatio == YES`, the thumbnail image's width is limited to pixel size's width, the thumbnail image's height is limited to pixel size's height. For common cases, you can just pass a square size to limit both. + @note works for `SDImageCoder`, `SDProgressiveImageCoder`, `SDAnimatedImageCoder`. + */ +FOUNDATION_EXPORT SDImageCoderOption _Nonnull const SDImageCoderDecodeThumbnailPixelSize; + + // These options are for image encoding /** A Boolean value indicating whether to encode the first frame only for animated image during encoding. (NSNumber). If not provide, encode animated image if need. diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.m index c963376b9..df5224ae3 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoder.m @@ -10,6 +10,8 @@ SDImageCoderOption const SDImageCoderDecodeFirstFrameOnly = @"decodeFirstFrameOnly"; SDImageCoderOption const SDImageCoderDecodeScaleFactor = @"decodeScaleFactor"; +SDImageCoderOption const SDImageCoderDecodePreserveAspectRatio = @"decodePreserveAspectRatio"; +SDImageCoderOption const SDImageCoderDecodeThumbnailPixelSize = @"decodeThumbnailPixelSize"; SDImageCoderOption const SDImageCoderEncodeFirstFrameOnly = @"encodeFirstFrameOnly"; SDImageCoderOption const SDImageCoderEncodeCompressionQuality = @"encodeCompressionQuality"; diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h index dcf1da2b5..5dbd523c8 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.h @@ -73,6 +73,16 @@ */ + (CGImageRef _Nullable)CGImageCreateDecoded:(_Nonnull CGImageRef)cgImage orientation:(CGImagePropertyOrientation)orientation CF_RETURNS_RETAINED; +/** + Create a scaled CGImage by the provided CGImage and size. This follows The Create Rule and you are response to call release after usage. + It will detect whether the image size matching the scale size, if not, stretch the image to the target size. + + @param cgImage The CGImage + @param size The scale size in pixel. + @return A new created scaled image + */ ++ (CGImageRef _Nullable)CGImageCreateScaled:(_Nonnull CGImageRef)cgImage size:(CGSize)size CF_RETURNS_RETAINED; + /** Return the decoded image by the provided image. This one unlike `CGImageCreateDecoded:`, will not decode the image which contains alpha channel or animated image @param image The image to be decoded @@ -89,6 +99,12 @@ */ + (UIImage * _Nullable)decodedAndScaledDownImageWithImage:(UIImage * _Nullable)image limitBytes:(NSUInteger)bytes; +/** + Control the default limit bytes to scale down larget images. + This value must be larger than or equal to 1MB. Defaults to 60MB on iOS/tvOS, 90MB on macOS, 30MB on watchOS. + */ +@property (class, readwrite) NSUInteger defaultScaleDownLimitBytes; + #if SD_UIKIT || SD_WATCH /** Convert an EXIF image orientation to an iOS one. diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m index b8ac0f771..c29685a92 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCoderHelper.m @@ -12,35 +12,35 @@ #import "NSData+ImageContentType.h" #import "SDAnimatedImageRep.h" #import "UIImage+ForceDecode.h" +#import "SDAssociatedObject.h" #import "UIImage+Metadata.h" +#import "SDInternalMacros.h" +#import + +static inline size_t SDByteAlign(size_t size, size_t alignment) { + return ((size + (alignment - 1)) / alignment) * alignment; +} -#if SD_UIKIT || SD_WATCH static const size_t kBytesPerPixel = 4; static const size_t kBitsPerComponent = 8; +static const CGFloat kBytesPerMB = 1024.0f * 1024.0f; +static const CGFloat kPixelsPerMB = kBytesPerMB / kBytesPerPixel; /* * Defines the maximum size in MB of the decoded image when the flag `SDWebImageScaleDownLargeImages` is set * Suggested value for iPad1 and iPhone 3GS: 60. * Suggested value for iPad2 and iPhone 4: 120. * Suggested value for iPhone 3G and iPod 2 and earlier devices: 30. */ -static const CGFloat kDestImageSizeMB = 60.f; - -/* - * Defines the maximum size in MB of a tile used to decode image when the flag `SDWebImageScaleDownLargeImages` is set - * Suggested value for iPad1 and iPhone 3GS: 20. - * Suggested value for iPad2 and iPhone 4: 40. - * Suggested value for iPhone 3G and iPod 2 and earlier devices: 10. - */ -static const CGFloat kSourceImageTileSizeMB = 20.f; - -static const CGFloat kBytesPerMB = 1024.0f * 1024.0f; -static const CGFloat kPixelsPerMB = kBytesPerMB / kBytesPerPixel; -static const CGFloat kDestTotalPixels = kDestImageSizeMB * kPixelsPerMB; -static const CGFloat kTileTotalPixels = kSourceImageTileSizeMB * kPixelsPerMB; +#if SD_MAC +static CGFloat kDestImageLimitBytes = 90.f * kBytesPerMB; +#elif SD_UIKIT +static CGFloat kDestImageLimitBytes = 60.f * kBytesPerMB; +#elif SD_WATCH +static CGFloat kDestImageLimitBytes = 30.f * kBytesPerMB; +#endif static const CGFloat kDestSeemOverlap = 2.0f; // the numbers of pixels to overlap the seems where tiles meet. -#endif @implementation SDImageCoderHelper @@ -91,7 +91,7 @@ static const CGFloat kDestSeemOverlap = 2.0f; // the numbers of pixels to over for (size_t i = 0; i < frameCount; i++) { @autoreleasepool { SDImageFrame *frame = frames[i]; - float frameDuration = frame.duration; + NSTimeInterval frameDuration = frame.duration; CGImageRef frameImageRef = frame.image.CGImage; NSDictionary *frameProperties = @{(__bridge NSString *)kCGImagePropertyGIFDictionary : @{(__bridge NSString *)kCGImagePropertyGIFDelayTime : @(frameDuration)}}; CGImageDestinationAddImage(imageDestination, frameImageRef, (__bridge CFDictionaryRef)frameProperties); @@ -181,7 +181,7 @@ static const CGFloat kDestSeemOverlap = 2.0f; // the numbers of pixels to over @autoreleasepool { // NSBitmapImageRep need to manually change frame. "Good taste" API [bitmapImageRep setProperty:NSImageCurrentFrame withValue:@(i)]; - float frameDuration = [[bitmapImageRep valueForProperty:NSImageCurrentFrameDuration] floatValue]; + NSTimeInterval frameDuration = [[bitmapImageRep valueForProperty:NSImageCurrentFrameDuration] doubleValue]; NSImage *frameImage = [[NSImage alloc] initWithCGImage:bitmapImageRep.CGImage scale:scale orientation:kCGImagePropertyOrientationUp]; SDImageFrame *frame = [SDImageFrame frameWithImage:frameImage duration:frameDuration]; [frames addObject:frame]; @@ -277,10 +277,57 @@ static const CGFloat kDestSeemOverlap = 2.0f; // the numbers of pixels to over return newImageRef; } ++ (CGImageRef)CGImageCreateScaled:(CGImageRef)cgImage size:(CGSize)size { + if (!cgImage) { + return NULL; + } + size_t width = CGImageGetWidth(cgImage); + size_t height = CGImageGetHeight(cgImage); + if (width == size.width && height == size.height) { + CGImageRetain(cgImage); + return cgImage; + } + + __block vImage_Buffer input_buffer = {}, output_buffer = {}; + @onExit { + if (input_buffer.data) free(input_buffer.data); + if (output_buffer.data) free(output_buffer.data); + }; + BOOL hasAlpha = [self CGImageContainsAlpha:cgImage]; + // iOS display alpha info (BGRA8888/BGRX8888) + CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Host; + bitmapInfo |= hasAlpha ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst; + vImage_CGImageFormat format = (vImage_CGImageFormat) { + .bitsPerComponent = 8, + .bitsPerPixel = 32, + .colorSpace = NULL, + .bitmapInfo = bitmapInfo, + .version = 0, + .decode = NULL, + .renderingIntent = kCGRenderingIntentDefault, + }; + + vImage_Error a_ret = vImageBuffer_InitWithCGImage(&input_buffer, &format, NULL, cgImage, kvImageNoFlags); + if (a_ret != kvImageNoError) return NULL; + output_buffer.width = MAX(size.width, 0); + output_buffer.height = MAX(size.height, 0); + output_buffer.rowBytes = SDByteAlign(output_buffer.width * 4, 64); + output_buffer.data = malloc(output_buffer.rowBytes * output_buffer.height); + if (!output_buffer.data) return NULL; + + vImage_Error ret = vImageScale_ARGB8888(&input_buffer, &output_buffer, NULL, kvImageHighQualityResampling); + if (ret != kvImageNoError) return NULL; + + CGImageRef outputImage = vImageCreateCGImageFromBuffer(&output_buffer, &format, NULL, NULL, kvImageNoFlags, &ret); + if (ret != kvImageNoError) { + CGImageRelease(outputImage); + return NULL; + } + + return outputImage; +} + + (UIImage *)decodedImageWithImage:(UIImage *)image { -#if SD_MAC - return image; -#else if (![self shouldDecodeImage:image]) { return image; } @@ -289,18 +336,18 @@ static const CGFloat kDestSeemOverlap = 2.0f; // the numbers of pixels to over if (!imageRef) { return image; } +#if SD_MAC + UIImage *decodedImage = [[UIImage alloc] initWithCGImage:imageRef scale:image.scale orientation:kCGImagePropertyOrientationUp]; +#else UIImage *decodedImage = [[UIImage alloc] initWithCGImage:imageRef scale:image.scale orientation:image.imageOrientation]; - CGImageRelease(imageRef); - decodedImage.sd_isDecoded = YES; - decodedImage.sd_imageFormat = image.sd_imageFormat; - return decodedImage; #endif + CGImageRelease(imageRef); + SDImageCopyAssociatedObject(image, decodedImage); + decodedImage.sd_isDecoded = YES; + return decodedImage; } + (UIImage *)decodedAndScaledDownImageWithImage:(UIImage *)image limitBytes:(NSUInteger)bytes { -#if SD_MAC - return image; -#else if (![self shouldDecodeImage:image]) { return image; } @@ -311,13 +358,11 @@ static const CGFloat kDestSeemOverlap = 2.0f; // the numbers of pixels to over CGFloat destTotalPixels; CGFloat tileTotalPixels; - if (bytes > 0) { - destTotalPixels = bytes / kBytesPerPixel; - tileTotalPixels = destTotalPixels / 3; - } else { - destTotalPixels = kDestTotalPixels; - tileTotalPixels = kTileTotalPixels; + if (bytes == 0) { + bytes = kDestImageLimitBytes; } + destTotalPixels = bytes / kBytesPerPixel; + tileTotalPixels = destTotalPixels / 3; CGContextRef destContext; // autorelease the bitmap context and all vars to help system to free memory when there are memory warning. @@ -420,16 +465,30 @@ static const CGFloat kDestSeemOverlap = 2.0f; // the numbers of pixels to over if (destImageRef == NULL) { return image; } +#if SD_MAC + UIImage *destImage = [[UIImage alloc] initWithCGImage:destImageRef scale:image.scale orientation:kCGImagePropertyOrientationUp]; +#else UIImage *destImage = [[UIImage alloc] initWithCGImage:destImageRef scale:image.scale orientation:image.imageOrientation]; +#endif CGImageRelease(destImageRef); if (destImage == nil) { return image; } + SDImageCopyAssociatedObject(image, destImage); destImage.sd_isDecoded = YES; - destImage.sd_imageFormat = image.sd_imageFormat; return destImage; } -#endif +} + ++ (NSUInteger)defaultScaleDownLimitBytes { + return kDestImageLimitBytes; +} + ++ (void)setDefaultScaleDownLimitBytes:(NSUInteger)defaultScaleDownLimitBytes { + if (defaultScaleDownLimitBytes < kBytesPerMB) { + return; + } + kDestImageLimitBytes = defaultScaleDownLimitBytes; } #if SD_UIKIT || SD_WATCH @@ -503,7 +562,6 @@ static const CGFloat kDestSeemOverlap = 2.0f; // the numbers of pixels to over #endif #pragma mark - Helper Fuction -#if SD_UIKIT || SD_WATCH + (BOOL)shouldDecodeImage:(nullable UIImage *)image { // Avoid extra decode if (image.sd_isDecoded) { @@ -514,7 +572,7 @@ static const CGFloat kDestSeemOverlap = 2.0f; // the numbers of pixels to over return NO; } // do not decode animated images - if (image.images != nil) { + if (image.sd_isAnimated) { return NO; } @@ -533,11 +591,10 @@ static const CGFloat kDestSeemOverlap = 2.0f; // the numbers of pixels to over return NO; } CGFloat destTotalPixels; - if (bytes > 0) { - destTotalPixels = bytes / kBytesPerPixel; - } else { - destTotalPixels = kDestTotalPixels; + if (bytes == 0) { + bytes = kDestImageLimitBytes; } + destTotalPixels = bytes / kBytesPerPixel; if (destTotalPixels <= kPixelsPerMB) { // Too small to scale down return NO; @@ -551,7 +608,6 @@ static const CGFloat kDestSeemOverlap = 2.0f; // the numbers of pixels to over return shouldScaleDown; } -#endif static inline CGAffineTransform SDCGContextTransformFromOrientation(CGImagePropertyOrientation orientation, CGSize size) { // Inspiration from @libfeihu diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.m index e93646461..c49b5e7e9 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageCodersManager.m @@ -10,6 +10,7 @@ #import "SDImageIOCoder.h" #import "SDImageGIFCoder.h" #import "SDImageAPNGCoder.h" +#import "SDImageHEICCoder.h" #import "SDInternalMacros.h" @interface SDImageCodersManager () diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.h index 1ecc7cb56..5ef67acda 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.h @@ -7,7 +7,7 @@ */ #import -#import "SDImageCoder.h" +#import "SDImageIOAnimatedCoder.h" /** Built in coder using ImageIO that supports animated GIF encoding/decoding @@ -15,7 +15,7 @@ @note Use `SDImageGIFCoder` for fully animated GIFs. For `UIImageView`, it will produce animated `UIImage`(`NSImage` on macOS) for rendering. For `SDAnimatedImageView`, it will use `SDAnimatedImage` for rendering. @note The recommended approach for animated GIFs is using `SDAnimatedImage` with `SDAnimatedImageView`. It's more performant than `UIImageView` for GIF displaying(especially on memory usage) */ -@interface SDImageGIFCoder : NSObject +@interface SDImageGIFCoder : SDImageIOAnimatedCoder @property (nonatomic, class, readonly, nonnull) SDImageGIFCoder *sharedCoder; diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m index d14aa93be..e4aaa5d9f 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGIFCoder.m @@ -7,53 +7,13 @@ */ #import "SDImageGIFCoder.h" -#import "NSImage+Compatibility.h" -#import "UIImage+Metadata.h" -#import -#import "NSData+ImageContentType.h" -#import "SDImageCoderHelper.h" -#import "SDAnimatedImageRep.h" - -@interface SDGIFCoderFrame : NSObject - -@property (nonatomic, assign) NSUInteger index; // Frame index (zero based) -@property (nonatomic, assign) NSTimeInterval duration; // Frame duration in seconds - -@end - -@implementation SDGIFCoderFrame -@end - -@implementation SDImageGIFCoder { - size_t _width, _height; - CGImageSourceRef _imageSource; - NSData *_imageData; - CGFloat _scale; - NSUInteger _loopCount; - NSUInteger _frameCount; - NSArray *_frames; - BOOL _finished; -} - -- (void)dealloc -{ - if (_imageSource) { - CFRelease(_imageSource); - _imageSource = NULL; - } -#if SD_UIKIT - [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; +#if SD_MAC +#import +#else +#import #endif -} -- (void)didReceiveMemoryWarning:(NSNotification *)notification -{ - if (_imageSource) { - for (size_t i = 0; i < _frameCount; i++) { - CGImageSourceRemoveCacheAtIndex(_imageSource, i); - } - } -} +@implementation SDImageGIFCoder + (instancetype)sharedCoder { static SDImageGIFCoder *coder; @@ -64,345 +24,34 @@ return coder; } -#pragma mark - Decode -- (BOOL)canDecodeFromData:(nullable NSData *)data { - return ([NSData sd_imageFormatForImageData:data] == SDImageFormatGIF); +#pragma mark - Subclass Override + ++ (SDImageFormat)imageFormat { + return SDImageFormatGIF; } -- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderOptions *)options { - if (!data) { - return nil; - } - CGFloat scale = 1; - NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; - if (scaleFactor != nil) { - scale = MAX([scaleFactor doubleValue], 1); - } - -#if SD_MAC - SDAnimatedImageRep *imageRep = [[SDAnimatedImageRep alloc] initWithData:data]; - NSSize size = NSMakeSize(imageRep.pixelsWide / scale, imageRep.pixelsHigh / scale); - imageRep.size = size; - NSImage *animatedImage = [[NSImage alloc] initWithSize:size]; - [animatedImage addRepresentation:imageRep]; - return animatedImage; -#else - - CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); - if (!source) { - return nil; - } - size_t count = CGImageSourceGetCount(source); - UIImage *animatedImage; - - BOOL decodeFirstFrame = [options[SDImageCoderDecodeFirstFrameOnly] boolValue]; - if (decodeFirstFrame || count <= 1) { - animatedImage = [[UIImage alloc] initWithData:data scale:scale]; - } else { - NSMutableArray *frames = [NSMutableArray array]; - - for (size_t i = 0; i < count; i++) { - CGImageRef imageRef = CGImageSourceCreateImageAtIndex(source, i, NULL); - if (!imageRef) { - continue; - } - - float duration = [self sd_frameDurationAtIndex:i source:source]; - UIImage *image = [[UIImage alloc] initWithCGImage:imageRef scale:scale orientation:UIImageOrientationUp]; - CGImageRelease(imageRef); - - SDImageFrame *frame = [SDImageFrame frameWithImage:image duration:duration]; - [frames addObject:frame]; - } - - NSUInteger loopCount = [self sd_imageLoopCountWithSource:source]; - - animatedImage = [SDImageCoderHelper animatedImageWithFrames:frames]; - animatedImage.sd_imageLoopCount = loopCount; - } - animatedImage.sd_imageFormat = SDImageFormatGIF; - CFRelease(source); - - return animatedImage; -#endif ++ (NSString *)imageUTType { + return (__bridge NSString *)kUTTypeGIF; } -- (NSUInteger)sd_imageLoopCountWithSource:(CGImageSourceRef)source { - NSUInteger loopCount = 1; - NSDictionary *imageProperties = (__bridge_transfer NSDictionary *)CGImageSourceCopyProperties(source, nil); - NSDictionary *gifProperties = imageProperties[(__bridge NSString *)kCGImagePropertyGIFDictionary]; - if (gifProperties) { - NSNumber *gifLoopCount = gifProperties[(__bridge NSString *)kCGImagePropertyGIFLoopCount]; - if (gifLoopCount != nil) { - loopCount = gifLoopCount.unsignedIntegerValue; - } - } - return loopCount; ++ (NSString *)dictionaryProperty { + return (__bridge NSString *)kCGImagePropertyGIFDictionary; } -- (float)sd_frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source { - float frameDuration = 0.1f; - CFDictionaryRef cfFrameProperties = CGImageSourceCopyPropertiesAtIndex(source, index, nil); - if (!cfFrameProperties) { - return frameDuration; - } - NSDictionary *frameProperties = (__bridge NSDictionary *)cfFrameProperties; - NSDictionary *gifProperties = frameProperties[(NSString *)kCGImagePropertyGIFDictionary]; - - NSNumber *delayTimeUnclampedProp = gifProperties[(NSString *)kCGImagePropertyGIFUnclampedDelayTime]; - if (delayTimeUnclampedProp != nil) { - frameDuration = [delayTimeUnclampedProp floatValue]; - } else { - NSNumber *delayTimeProp = gifProperties[(NSString *)kCGImagePropertyGIFDelayTime]; - if (delayTimeProp != nil) { - frameDuration = [delayTimeProp floatValue]; - } - } - - // Many annoying ads specify a 0 duration to make an image flash as quickly as possible. - // We follow Firefox's behavior and use a duration of 100 ms for any frames that specify - // a duration of <= 10 ms. See and - // for more information. - - if (frameDuration < 0.011f) { - frameDuration = 0.100f; - } - - CFRelease(cfFrameProperties); - return frameDuration; ++ (NSString *)unclampedDelayTimeProperty { + return (__bridge NSString *)kCGImagePropertyGIFUnclampedDelayTime; } -#pragma mark - Progressive Decode - -- (BOOL)canIncrementalDecodeFromData:(NSData *)data { - return ([NSData sd_imageFormatForImageData:data] == SDImageFormatGIF); ++ (NSString *)delayTimeProperty { + return (__bridge NSString *)kCGImagePropertyGIFDelayTime; } -- (instancetype)initIncrementalWithOptions:(nullable SDImageCoderOptions *)options { - self = [super init]; - if (self) { - CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:SDImageFormatGIF]; - _imageSource = CGImageSourceCreateIncremental((__bridge CFDictionaryRef)@{(__bridge NSString *)kCGImageSourceTypeIdentifierHint : (__bridge NSString *)imageUTType}); - CGFloat scale = 1; - NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; - if (scaleFactor != nil) { - scale = MAX([scaleFactor doubleValue], 1); - } - _scale = scale; -#if SD_UIKIT - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; -#endif - } - return self; ++ (NSString *)loopCountProperty { + return (__bridge NSString *)kCGImagePropertyGIFLoopCount; } -- (void)updateIncrementalData:(NSData *)data finished:(BOOL)finished { - if (_finished) { - return; - } - _imageData = data; - _finished = finished; - - // The following code is from http://www.cocoaintheshell.com/2011/05/progressive-images-download-imageio/ - // Thanks to the author @Nyx0uf - - // Update the data source, we must pass ALL the data, not just the new bytes - CGImageSourceUpdateData(_imageSource, (__bridge CFDataRef)data, finished); - - if (_width + _height == 0) { - CFDictionaryRef properties = CGImageSourceCopyPropertiesAtIndex(_imageSource, 0, NULL); - if (properties) { - CFTypeRef val = CFDictionaryGetValue(properties, kCGImagePropertyPixelHeight); - if (val) CFNumberGetValue(val, kCFNumberLongType, &_height); - val = CFDictionaryGetValue(properties, kCGImagePropertyPixelWidth); - if (val) CFNumberGetValue(val, kCFNumberLongType, &_width); - CFRelease(properties); - } - } - - // For animated image progressive decoding because the frame count and duration may be changed. - [self scanAndCheckFramesValidWithImageSource:_imageSource]; -} - -- (UIImage *)incrementalDecodedImageWithOptions:(SDImageCoderOptions *)options { - UIImage *image; - - if (_width + _height > 0) { - // Create the image - CGImageRef partialImageRef = CGImageSourceCreateImageAtIndex(_imageSource, 0, NULL); - - if (partialImageRef) { - CGFloat scale = _scale; - NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; - if (scaleFactor != nil) { - scale = MAX([scaleFactor doubleValue], 1); - } -#if SD_UIKIT || SD_WATCH - image = [[UIImage alloc] initWithCGImage:partialImageRef scale:scale orientation:UIImageOrientationUp]; -#else - image = [[UIImage alloc] initWithCGImage:partialImageRef scale:scale orientation:kCGImagePropertyOrientationUp]; -#endif - CGImageRelease(partialImageRef); - image.sd_imageFormat = SDImageFormatGIF; - } - } - - return image; -} - -#pragma mark - Encode -- (BOOL)canEncodeToFormat:(SDImageFormat)format { - return (format == SDImageFormatGIF); -} - -- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDImageCoderOptions *)options { - if (!image) { - return nil; - } - - if (format != SDImageFormatGIF) { - return nil; - } - - NSMutableData *imageData = [NSMutableData data]; - CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:SDImageFormatGIF]; - NSArray *frames = [SDImageCoderHelper framesFromAnimatedImage:image]; - - // Create an image destination. GIF does not support EXIF image orientation - // The `CGImageDestinationCreateWithData` will log a warning when count is 0, use 1 instead. - CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, imageUTType, frames.count ?: 1, NULL); - if (!imageDestination) { - // Handle failure. - return nil; - } - NSMutableDictionary *properties = [NSMutableDictionary dictionary]; - double compressionQuality = 1; - if (options[SDImageCoderEncodeCompressionQuality]) { - compressionQuality = [options[SDImageCoderEncodeCompressionQuality] doubleValue]; - } - properties[(__bridge NSString *)kCGImageDestinationLossyCompressionQuality] = @(compressionQuality); - - BOOL encodeFirstFrame = [options[SDImageCoderEncodeFirstFrameOnly] boolValue]; - if (encodeFirstFrame || frames.count == 0) { - // for static single GIF images - CGImageDestinationAddImage(imageDestination, image.CGImage, (__bridge CFDictionaryRef)properties); - } else { - // for animated GIF images - NSUInteger loopCount = image.sd_imageLoopCount; - NSDictionary *gifProperties = @{(__bridge NSString *)kCGImagePropertyGIFLoopCount : @(loopCount)}; - properties[(__bridge NSString *)kCGImagePropertyGIFDictionary] = gifProperties; - CGImageDestinationSetProperties(imageDestination, (__bridge CFDictionaryRef)properties); - - for (size_t i = 0; i < frames.count; i++) { - SDImageFrame *frame = frames[i]; - float frameDuration = frame.duration; - CGImageRef frameImageRef = frame.image.CGImage; - NSDictionary *frameProperties = @{(__bridge NSString *)kCGImagePropertyGIFDictionary : @{(__bridge NSString *)kCGImagePropertyGIFDelayTime : @(frameDuration)}}; - CGImageDestinationAddImage(imageDestination, frameImageRef, (__bridge CFDictionaryRef)frameProperties); - } - } - // Finalize the destination. - if (CGImageDestinationFinalize(imageDestination) == NO) { - // Handle failure. - imageData = nil; - } - - CFRelease(imageDestination); - - return [imageData copy]; -} - -#pragma mark - SDAnimatedImageCoder -- (nullable instancetype)initWithAnimatedImageData:(nullable NSData *)data options:(nullable SDImageCoderOptions *)options { - if (!data) { - return nil; - } - self = [super init]; - if (self) { - CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); - if (!imageSource) { - return nil; - } - BOOL framesValid = [self scanAndCheckFramesValidWithImageSource:imageSource]; - if (!framesValid) { - CFRelease(imageSource); - return nil; - } - CGFloat scale = 1; - NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; - if (scaleFactor != nil) { - scale = MAX([scaleFactor doubleValue], 1); - } - _scale = scale; - _imageSource = imageSource; - _imageData = data; -#if SD_UIKIT - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; -#endif - } - return self; -} - -- (BOOL)scanAndCheckFramesValidWithImageSource:(CGImageSourceRef)imageSource { - if (!imageSource) { - return NO; - } - NSUInteger frameCount = CGImageSourceGetCount(imageSource); - NSUInteger loopCount = [self sd_imageLoopCountWithSource:imageSource]; - NSMutableArray *frames = [NSMutableArray array]; - - for (size_t i = 0; i < frameCount; i++) { - SDGIFCoderFrame *frame = [[SDGIFCoderFrame alloc] init]; - frame.index = i; - frame.duration = [self sd_frameDurationAtIndex:i source:imageSource]; - [frames addObject:frame]; - } - - _frameCount = frameCount; - _loopCount = loopCount; - _frames = [frames copy]; - - return YES; -} - -- (NSData *)animatedImageData { - return _imageData; -} - -- (NSUInteger)animatedImageLoopCount { - return _loopCount; -} - -- (NSUInteger)animatedImageFrameCount { - return _frameCount; -} - -- (NSTimeInterval)animatedImageDurationAtIndex:(NSUInteger)index { - if (index >= _frameCount) { - return 0; - } - return _frames[index].duration; -} - -- (UIImage *)animatedImageFrameAtIndex:(NSUInteger)index { - CGImageRef imageRef = CGImageSourceCreateImageAtIndex(_imageSource, index, NULL); - if (!imageRef) { - return nil; - } - // Image/IO create CGImage does not decode, so we do this because this is called background queue, this can avoid main queue block when rendering(especially when one more imageViews use the same image instance) - CGImageRef newImageRef = [SDImageCoderHelper CGImageCreateDecoded:imageRef]; - if (!newImageRef) { - newImageRef = imageRef; - } else { - CGImageRelease(imageRef); - } -#if SD_MAC - UIImage *image = [[UIImage alloc] initWithCGImage:newImageRef scale:_scale orientation:kCGImagePropertyOrientationUp]; -#else - UIImage *image = [[UIImage alloc] initWithCGImage:newImageRef scale:_scale orientation:UIImageOrientationUp]; -#endif - CGImageRelease(newImageRef); - return image; ++ (NSUInteger)defaultLoopCount { + return 1; } @end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.h index 67019c5bb..131d68508 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageGraphics.h @@ -13,6 +13,7 @@ These following graphics context method are provided to easily write cross-platform(AppKit/UIKit) code. For UIKit, these methods just call the same method in `UIGraphics.h`. See the documentation for usage. For AppKit, these methods use `NSGraphicsContext` to create image context and match the behavior like UIKit. + @note If you don't care bitmap format (ARGB8888) and just draw image, use `SDGraphicsImageRenderer` instead. It's more performant on RAM usage.` */ /// Returns the current graphics context. diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.h new file mode 100644 index 000000000..3b6036d9f --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.h @@ -0,0 +1,24 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDImageIOAnimatedCoder.h" + +/** + This coder is used for HEIC (HEIF with HEVC container codec) image format. + Image/IO provide the static HEIC (.heic) support in iOS 11/macOS 10.13/tvOS 11/watchOS 4+. + Image/IO provide the animated HEIC (.heics) support in iOS 13/macOS 10.15/tvOS 13/watchOS 6+. + See https://nokiatech.github.io/heif/technical.html for the standard. + @note This coder is not in the default coder list for now, since HEIC animated image is really rare, and Apple's implementation still contains performance issues. You can enable if you need this. + @note If you need to support lower firmware version for HEIF, you can have a try at https://github.com/SDWebImage/SDWebImageHEIFCoder + */ +@interface SDImageHEICCoder : SDImageIOAnimatedCoder + +@property (nonatomic, class, readonly, nonnull) SDImageHEICCoder *sharedCoder; + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.m new file mode 100644 index 000000000..cac53c7cd --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageHEICCoder.m @@ -0,0 +1,167 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDImageHEICCoder.h" +#import "SDImageHEICCoderInternal.h" + +// These constantce are available from iOS 13+ and Xcode 11. This raw value is used for toolchain and firmware compatiblitiy +static NSString * kSDCGImagePropertyHEICSDictionary = @"{HEICS}"; +static NSString * kSDCGImagePropertyHEICSLoopCount = @"LoopCount"; +static NSString * kSDCGImagePropertyHEICSDelayTime = @"DelayTime"; +static NSString * kSDCGImagePropertyHEICSUnclampedDelayTime = @"UnclampedDelayTime"; + +@implementation SDImageHEICCoder + ++ (void)initialize { +#if __IPHONE_13_0 || __TVOS_13_0 || __MAC_10_15 || __WATCHOS_6_0 + // Xcode 11 + if (@available(iOS 13, tvOS 13, macOS 10.15, watchOS 6, *)) { + // Use SDK instead of raw value + kSDCGImagePropertyHEICSDictionary = (__bridge NSString *)kCGImagePropertyHEICSDictionary; + kSDCGImagePropertyHEICSLoopCount = (__bridge NSString *)kCGImagePropertyHEICSLoopCount; + kSDCGImagePropertyHEICSDelayTime = (__bridge NSString *)kCGImagePropertyHEICSDelayTime; + kSDCGImagePropertyHEICSUnclampedDelayTime = (__bridge NSString *)kCGImagePropertyHEICSUnclampedDelayTime; + } +#endif +} + ++ (instancetype)sharedCoder { + static SDImageHEICCoder *coder; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + coder = [[SDImageHEICCoder alloc] init]; + }); + return coder; +} + +#pragma mark - SDImageCoder + +- (BOOL)canDecodeFromData:(nullable NSData *)data { + switch ([NSData sd_imageFormatForImageData:data]) { + case SDImageFormatHEIC: + // Check HEIC decoding compatibility + return [self.class canDecodeFromHEICFormat]; + case SDImageFormatHEIF: + // Check HEIF decoding compatibility + return [self.class canDecodeFromHEIFFormat]; + default: + return NO; + } +} + +- (BOOL)canIncrementalDecodeFromData:(NSData *)data { + return [self canDecodeFromData:data]; +} + +- (BOOL)canEncodeToFormat:(SDImageFormat)format { + switch (format) { + case SDImageFormatHEIC: + // Check HEIC encoding compatibility + return [self.class canEncodeToHEICFormat]; + case SDImageFormatHEIF: + // Check HEIF encoding compatibility + return [self.class canEncodeToHEIFFormat]; + default: + return NO; + } +} + +#pragma mark - HEIF Format + ++ (BOOL)canDecodeFromFormat:(SDImageFormat)format { + CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:format]; + NSArray *imageUTTypes = (__bridge_transfer NSArray *)CGImageSourceCopyTypeIdentifiers(); + if ([imageUTTypes containsObject:(__bridge NSString *)(imageUTType)]) { + return YES; + } + return NO; +} + ++ (BOOL)canDecodeFromHEICFormat { + static BOOL canDecode = NO; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + canDecode = [self canDecodeFromFormat:SDImageFormatHEIC]; + }); + return canDecode; +} + ++ (BOOL)canDecodeFromHEIFFormat { + static BOOL canDecode = NO; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + canDecode = [self canDecodeFromFormat:SDImageFormatHEIF]; + }); + return canDecode; +} + ++ (BOOL)canEncodeToFormat:(SDImageFormat)format { + NSMutableData *imageData = [NSMutableData data]; + CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:format]; + + // Create an image destination. + CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, imageUTType, 1, NULL); + if (!imageDestination) { + // Can't encode to HEIC + return NO; + } else { + // Can encode to HEIC + CFRelease(imageDestination); + return YES; + } +} + ++ (BOOL)canEncodeToHEICFormat { + static BOOL canEncode = NO; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + canEncode = [self canEncodeToFormat:SDImageFormatHEIC]; + }); + return canEncode; +} + ++ (BOOL)canEncodeToHEIFFormat { + static BOOL canEncode = NO; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + canEncode = [self canEncodeToFormat:SDImageFormatHEIF]; + }); + return canEncode; +} + +#pragma mark - Subclass Override + ++ (SDImageFormat)imageFormat { + return SDImageFormatHEIC; +} + ++ (NSString *)imageUTType { + return (__bridge NSString *)kSDUTTypeHEIC; +} + ++ (NSString *)dictionaryProperty { + return kSDCGImagePropertyHEICSDictionary; +} + ++ (NSString *)unclampedDelayTimeProperty { + return kSDCGImagePropertyHEICSUnclampedDelayTime; +} + ++ (NSString *)delayTimeProperty { + return kSDCGImagePropertyHEICSDelayTime; +} + ++ (NSString *)loopCountProperty { + return kSDCGImagePropertyHEICSLoopCount; +} + ++ (NSUInteger)defaultLoopCount { + return 0; +} + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h new file mode 100644 index 000000000..4d651e8d7 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.h @@ -0,0 +1,59 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import +#import "SDImageCoder.h" + +/** + This is the abstract class for all animated coder, which use the Image/IO API. You can not use this directly as real coders. A exception will be raised if you use this class. + All of the properties need the subclass to implment and works as expceted. + For Image/IO, See Apple's documentation: https://developer.apple.com/documentation/imageio + */ +@interface SDImageIOAnimatedCoder : NSObject + +#pragma mark - Subclass Override +/** + The supported animated image format. Such as `SDImageFormatGIF`. + @note Subclass override. + */ +@property (class, readonly) SDImageFormat imageFormat; +/** + The supported image format UTI Type. Such as `kUTTypeGIF`. + This can be used for cases when we can not detect `SDImageFormat. Such as progressive decoding's hint format `kCGImageSourceTypeIdentifierHint`. + @note Subclass override. + */ +@property (class, readonly, nonnull) NSString *imageUTType; +/** + The image container property key used in Image/IO API. Such as `kCGImagePropertyGIFDictionary`. + @note Subclass override. + */ +@property (class, readonly, nonnull) NSString *dictionaryProperty; +/** + The image unclamped deply time property key used in Image/IO API. Such as `kCGImagePropertyGIFUnclampedDelayTime` + @note Subclass override. + */ +@property (class, readonly, nonnull) NSString *unclampedDelayTimeProperty; +/** + The image delay time property key used in Image/IO API. Such as `kCGImagePropertyGIFDelayTime`. + @note Subclass override. + */ +@property (class, readonly, nonnull) NSString *delayTimeProperty; +/** + The image loop count property key used in Image/IO API. Such as `kCGImagePropertyGIFLoopCount`. + @note Subclass override. + */ +@property (class, readonly, nonnull) NSString *loopCountProperty; +/** + The default loop count when there are no any loop count information inside image container metadata. + For example, for GIF format, the standard use 1 (play once). For APNG format, the standard use 0 (infinity loop). + @note Subclass override. + */ +@property (class, readonly) NSUInteger defaultLoopCount; + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m new file mode 100644 index 000000000..b72dc4e01 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOAnimatedCoder.m @@ -0,0 +1,548 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDImageIOAnimatedCoder.h" +#import "NSImage+Compatibility.h" +#import "UIImage+Metadata.h" +#import "NSData+ImageContentType.h" +#import "SDImageCoderHelper.h" +#import "SDAnimatedImageRep.h" +#import "UIImage+ForceDecode.h" + +@interface SDImageIOCoderFrame : NSObject + +@property (nonatomic, assign) NSUInteger index; // Frame index (zero based) +@property (nonatomic, assign) NSTimeInterval duration; // Frame duration in seconds + +@end + +@implementation SDImageIOCoderFrame +@end + +@implementation SDImageIOAnimatedCoder { + size_t _width, _height; + CGImageSourceRef _imageSource; + NSData *_imageData; + CGFloat _scale; + NSUInteger _loopCount; + NSUInteger _frameCount; + NSArray *_frames; + BOOL _finished; + BOOL _preserveAspectRatio; + CGSize _thumbnailSize; +} + +- (void)dealloc +{ + if (_imageSource) { + CFRelease(_imageSource); + _imageSource = NULL; + } +#if SD_UIKIT + [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; +#endif +} + +- (void)didReceiveMemoryWarning:(NSNotification *)notification +{ + if (_imageSource) { + for (size_t i = 0; i < _frameCount; i++) { + CGImageSourceRemoveCacheAtIndex(_imageSource, i); + } + } +} + +#pragma mark - Subclass Override + ++ (SDImageFormat)imageFormat { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] + userInfo:nil]; +} + ++ (NSString *)imageUTType { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] + userInfo:nil]; +} + ++ (NSString *)dictionaryProperty { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] + userInfo:nil]; +} + ++ (NSString *)unclampedDelayTimeProperty { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] + userInfo:nil]; +} + ++ (NSString *)delayTimeProperty { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] + userInfo:nil]; +} + ++ (NSString *)loopCountProperty { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] + userInfo:nil]; +} + ++ (NSUInteger)defaultLoopCount { + @throw [NSException exceptionWithName:NSInternalInconsistencyException + reason:[NSString stringWithFormat:@"For `SDImageIOAnimatedCoder` subclass, you must override %@ method", NSStringFromSelector(_cmd)] + userInfo:nil]; +} + +#pragma mark - Utils + ++ (NSUInteger)imageLoopCountWithSource:(CGImageSourceRef)source { + NSUInteger loopCount = self.defaultLoopCount; + NSDictionary *imageProperties = (__bridge_transfer NSDictionary *)CGImageSourceCopyProperties(source, nil); + NSDictionary *containerProperties = imageProperties[self.dictionaryProperty]; + if (containerProperties) { + NSNumber *containerLoopCount = containerProperties[self.loopCountProperty]; + if (containerLoopCount != nil) { + loopCount = containerLoopCount.unsignedIntegerValue; + } + } + return loopCount; +} + ++ (NSTimeInterval)frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source { + NSTimeInterval frameDuration = 0.1; + CFDictionaryRef cfFrameProperties = CGImageSourceCopyPropertiesAtIndex(source, index, nil); + if (!cfFrameProperties) { + return frameDuration; + } + NSDictionary *frameProperties = (__bridge NSDictionary *)cfFrameProperties; + NSDictionary *containerProperties = frameProperties[self.dictionaryProperty]; + + NSNumber *delayTimeUnclampedProp = containerProperties[self.unclampedDelayTimeProperty]; + if (delayTimeUnclampedProp != nil) { + frameDuration = [delayTimeUnclampedProp doubleValue]; + } else { + NSNumber *delayTimeProp = containerProperties[self.delayTimeProperty]; + if (delayTimeProp != nil) { + frameDuration = [delayTimeProp doubleValue]; + } + } + + // Many annoying ads specify a 0 duration to make an image flash as quickly as possible. + // We follow Firefox's behavior and use a duration of 100 ms for any frames that specify + // a duration of <= 10 ms. See and + // for more information. + + if (frameDuration < 0.011) { + frameDuration = 0.1; + } + + CFRelease(cfFrameProperties); + return frameDuration; +} + ++ (UIImage *)createFrameAtIndex:(NSUInteger)index source:(CGImageSourceRef)source scale:(CGFloat)scale preserveAspectRatio:(BOOL)preserveAspectRatio thumbnailSize:(CGSize)thumbnailSize { + // Parse the image properties + NSDictionary *properties = (__bridge_transfer NSDictionary *)CGImageSourceCopyPropertiesAtIndex(source, index, NULL); + NSUInteger pixelWidth = [properties[(__bridge NSString *)kCGImagePropertyPixelWidth] unsignedIntegerValue]; + NSUInteger pixelHeight = [properties[(__bridge NSString *)kCGImagePropertyPixelHeight] unsignedIntegerValue]; + CGImagePropertyOrientation exifOrientation = (CGImagePropertyOrientation)[properties[(__bridge NSString *)kCGImagePropertyOrientation] unsignedIntegerValue]; + if (!exifOrientation) { + exifOrientation = kCGImagePropertyOrientationUp; + } + + CGImageRef imageRef; + if (thumbnailSize.width == 0 || thumbnailSize.height == 0 || (pixelWidth <= thumbnailSize.width && pixelHeight <= thumbnailSize.height)) { + imageRef = CGImageSourceCreateImageAtIndex(source, index, NULL); + } else { + NSMutableDictionary *thumbnailOptions = [NSMutableDictionary dictionary]; + thumbnailOptions[(__bridge NSString *)kCGImageSourceCreateThumbnailWithTransform] = @(preserveAspectRatio); + CGFloat maxPixelSize; + if (preserveAspectRatio) { + CGFloat pixelRatio = pixelWidth / pixelHeight; + CGFloat thumbnailRatio = thumbnailSize.width / thumbnailSize.height; + if (pixelRatio > thumbnailRatio) { + maxPixelSize = thumbnailSize.width; + } else { + maxPixelSize = thumbnailSize.height; + } + } else { + maxPixelSize = MAX(thumbnailSize.width, thumbnailSize.height); + } + thumbnailOptions[(__bridge NSString *)kCGImageSourceThumbnailMaxPixelSize] = @(maxPixelSize); + thumbnailOptions[(__bridge NSString *)kCGImageSourceCreateThumbnailFromImageIfAbsent] = @(YES); + imageRef = CGImageSourceCreateThumbnailAtIndex(source, index, (__bridge CFDictionaryRef)thumbnailOptions); + if (preserveAspectRatio) { + // kCGImageSourceCreateThumbnailWithTransform will apply EXIF transform as well, we should not apply twice + exifOrientation = kCGImagePropertyOrientationUp; + } else { + // `CGImageSourceCreateThumbnailAtIndex` take only pixel dimension, if not `preserveAspectRatio`, we should manual scale to the target size + if (imageRef) { + CGImageRef scaledImageRef = [SDImageCoderHelper CGImageCreateScaled:imageRef size:thumbnailSize]; + CGImageRelease(imageRef); + imageRef = scaledImageRef; + } + } + } + if (!imageRef) { + return nil; + } + +#if SD_UIKIT || SD_WATCH + UIImageOrientation imageOrientation = [SDImageCoderHelper imageOrientationFromEXIFOrientation:exifOrientation]; + UIImage *image = [[UIImage alloc] initWithCGImage:imageRef scale:scale orientation:imageOrientation]; +#else + UIImage *image = [[UIImage alloc] initWithCGImage:imageRef scale:scale orientation:exifOrientation]; +#endif + CGImageRelease(imageRef); + return image; +} + +#pragma mark - Decode +- (BOOL)canDecodeFromData:(nullable NSData *)data { + return ([NSData sd_imageFormatForImageData:data] == self.class.imageFormat); +} + +- (UIImage *)decodedImageWithData:(NSData *)data options:(nullable SDImageCoderOptions *)options { + if (!data) { + return nil; + } + CGFloat scale = 1; + NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; + if (scaleFactor != nil) { + scale = MAX([scaleFactor doubleValue], 1); + } + + CGSize thumbnailSize = CGSizeZero; + NSValue *thumbnailSizeValue = options[SDImageCoderDecodeThumbnailPixelSize]; + if (thumbnailSizeValue != nil) { +#if SD_MAC + thumbnailSize = thumbnailSizeValue.sizeValue; +#else + thumbnailSize = thumbnailSizeValue.CGSizeValue; +#endif + } + + BOOL preserveAspectRatio = YES; + NSNumber *preserveAspectRatioValue = options[SDImageCoderDecodePreserveAspectRatio]; + if (preserveAspectRatioValue != nil) { + preserveAspectRatio = preserveAspectRatioValue.boolValue; + } + +#if SD_MAC + // If don't use thumbnail, prefers the built-in generation of frames (GIF/APNG) + // Which decode frames in time and reduce memory usage + if (thumbnailSize.width == 0 || thumbnailSize.height == 0) { + SDAnimatedImageRep *imageRep = [[SDAnimatedImageRep alloc] initWithData:data]; + NSSize size = NSMakeSize(imageRep.pixelsWide / scale, imageRep.pixelsHigh / scale); + imageRep.size = size; + NSImage *animatedImage = [[NSImage alloc] initWithSize:size]; + [animatedImage addRepresentation:imageRep]; + return animatedImage; + } +#endif + + CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); + if (!source) { + return nil; + } + size_t count = CGImageSourceGetCount(source); + UIImage *animatedImage; + + BOOL decodeFirstFrame = [options[SDImageCoderDecodeFirstFrameOnly] boolValue]; + if (decodeFirstFrame || count <= 1) { + animatedImage = [self.class createFrameAtIndex:0 source:source scale:scale preserveAspectRatio:preserveAspectRatio thumbnailSize:thumbnailSize]; + } else { + NSMutableArray *frames = [NSMutableArray array]; + + for (size_t i = 0; i < count; i++) { + UIImage *image = [self.class createFrameAtIndex:i source:source scale:scale preserveAspectRatio:preserveAspectRatio thumbnailSize:thumbnailSize]; + if (!image) { + continue; + } + + NSTimeInterval duration = [self.class frameDurationAtIndex:i source:source]; + + SDImageFrame *frame = [SDImageFrame frameWithImage:image duration:duration]; + [frames addObject:frame]; + } + + NSUInteger loopCount = [self.class imageLoopCountWithSource:source]; + + animatedImage = [SDImageCoderHelper animatedImageWithFrames:frames]; + animatedImage.sd_imageLoopCount = loopCount; + } + animatedImage.sd_imageFormat = self.class.imageFormat; + CFRelease(source); + + return animatedImage; +} + +#pragma mark - Progressive Decode + +- (BOOL)canIncrementalDecodeFromData:(NSData *)data { + return ([NSData sd_imageFormatForImageData:data] == self.class.imageFormat); +} + +- (instancetype)initIncrementalWithOptions:(nullable SDImageCoderOptions *)options { + self = [super init]; + if (self) { + NSString *imageUTType = self.class.imageUTType; + _imageSource = CGImageSourceCreateIncremental((__bridge CFDictionaryRef)@{(__bridge NSString *)kCGImageSourceTypeIdentifierHint : imageUTType}); + CGFloat scale = 1; + NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; + if (scaleFactor != nil) { + scale = MAX([scaleFactor doubleValue], 1); + } + _scale = scale; + CGSize thumbnailSize = CGSizeZero; + NSValue *thumbnailSizeValue = options[SDImageCoderDecodeThumbnailPixelSize]; + if (thumbnailSizeValue != nil) { + #if SD_MAC + thumbnailSize = thumbnailSizeValue.sizeValue; + #else + thumbnailSize = thumbnailSizeValue.CGSizeValue; + #endif + } + _thumbnailSize = thumbnailSize; + BOOL preserveAspectRatio = YES; + NSNumber *preserveAspectRatioValue = options[SDImageCoderDecodePreserveAspectRatio]; + if (preserveAspectRatioValue != nil) { + preserveAspectRatio = preserveAspectRatioValue.boolValue; + } + _preserveAspectRatio = preserveAspectRatio; +#if SD_UIKIT + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; +#endif + } + return self; +} + +- (void)updateIncrementalData:(NSData *)data finished:(BOOL)finished { + if (_finished) { + return; + } + _imageData = data; + _finished = finished; + + // The following code is from http://www.cocoaintheshell.com/2011/05/progressive-images-download-imageio/ + // Thanks to the author @Nyx0uf + + // Update the data source, we must pass ALL the data, not just the new bytes + CGImageSourceUpdateData(_imageSource, (__bridge CFDataRef)data, finished); + + if (_width + _height == 0) { + CFDictionaryRef properties = CGImageSourceCopyPropertiesAtIndex(_imageSource, 0, NULL); + if (properties) { + CFTypeRef val = CFDictionaryGetValue(properties, kCGImagePropertyPixelHeight); + if (val) CFNumberGetValue(val, kCFNumberLongType, &_height); + val = CFDictionaryGetValue(properties, kCGImagePropertyPixelWidth); + if (val) CFNumberGetValue(val, kCFNumberLongType, &_width); + CFRelease(properties); + } + } + + // For animated image progressive decoding because the frame count and duration may be changed. + [self scanAndCheckFramesValidWithImageSource:_imageSource]; +} + +- (UIImage *)incrementalDecodedImageWithOptions:(SDImageCoderOptions *)options { + UIImage *image; + + if (_width + _height > 0) { + // Create the image + CGFloat scale = _scale; + NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; + if (scaleFactor != nil) { + scale = MAX([scaleFactor doubleValue], 1); + } + image = [SDImageIOAnimatedCoder createFrameAtIndex:0 source:_imageSource scale:scale preserveAspectRatio:_preserveAspectRatio thumbnailSize:_thumbnailSize]; + if (image) { + image.sd_imageFormat = self.class.imageFormat; + } + } + + return image; +} + +#pragma mark - Encode +- (BOOL)canEncodeToFormat:(SDImageFormat)format { + return (format == self.class.imageFormat); +} + +- (NSData *)encodedDataWithImage:(UIImage *)image format:(SDImageFormat)format options:(nullable SDImageCoderOptions *)options { + if (!image) { + return nil; + } + + if (format != self.class.imageFormat) { + return nil; + } + + NSMutableData *imageData = [NSMutableData data]; + CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:format]; + NSArray *frames = [SDImageCoderHelper framesFromAnimatedImage:image]; + + // Create an image destination. Animated Image does not support EXIF image orientation TODO + // The `CGImageDestinationCreateWithData` will log a warning when count is 0, use 1 instead. + CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, imageUTType, frames.count ?: 1, NULL); + if (!imageDestination) { + // Handle failure. + return nil; + } + NSMutableDictionary *properties = [NSMutableDictionary dictionary]; + double compressionQuality = 1; + if (options[SDImageCoderEncodeCompressionQuality]) { + compressionQuality = [options[SDImageCoderEncodeCompressionQuality] doubleValue]; + } + properties[(__bridge NSString *)kCGImageDestinationLossyCompressionQuality] = @(compressionQuality); + + BOOL encodeFirstFrame = [options[SDImageCoderEncodeFirstFrameOnly] boolValue]; + if (encodeFirstFrame || frames.count == 0) { + // for static single images + CGImageDestinationAddImage(imageDestination, image.CGImage, (__bridge CFDictionaryRef)properties); + } else { + // for animated images + NSUInteger loopCount = image.sd_imageLoopCount; + NSDictionary *containerProperties = @{self.class.loopCountProperty : @(loopCount)}; + properties[self.class.dictionaryProperty] = containerProperties; + CGImageDestinationSetProperties(imageDestination, (__bridge CFDictionaryRef)properties); + + for (size_t i = 0; i < frames.count; i++) { + SDImageFrame *frame = frames[i]; + NSTimeInterval frameDuration = frame.duration; + CGImageRef frameImageRef = frame.image.CGImage; + NSDictionary *frameProperties = @{self.class.dictionaryProperty : @{self.class.delayTimeProperty : @(frameDuration)}}; + CGImageDestinationAddImage(imageDestination, frameImageRef, (__bridge CFDictionaryRef)frameProperties); + } + } + // Finalize the destination. + if (CGImageDestinationFinalize(imageDestination) == NO) { + // Handle failure. + imageData = nil; + } + + CFRelease(imageDestination); + + return [imageData copy]; +} + +#pragma mark - SDAnimatedImageCoder +- (nullable instancetype)initWithAnimatedImageData:(nullable NSData *)data options:(nullable SDImageCoderOptions *)options { + if (!data) { + return nil; + } + self = [super init]; + if (self) { + CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); + if (!imageSource) { + return nil; + } + BOOL framesValid = [self scanAndCheckFramesValidWithImageSource:imageSource]; + if (!framesValid) { + CFRelease(imageSource); + return nil; + } + CGFloat scale = 1; + NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; + if (scaleFactor != nil) { + scale = MAX([scaleFactor doubleValue], 1); + } + _scale = scale; + CGSize thumbnailSize = CGSizeZero; + NSValue *thumbnailSizeValue = options[SDImageCoderDecodeThumbnailPixelSize]; + if (thumbnailSizeValue != nil) { + #if SD_MAC + thumbnailSize = thumbnailSizeValue.sizeValue; + #else + thumbnailSize = thumbnailSizeValue.CGSizeValue; + #endif + } + _thumbnailSize = thumbnailSize; + BOOL preserveAspectRatio = YES; + NSNumber *preserveAspectRatioValue = options[SDImageCoderDecodePreserveAspectRatio]; + if (preserveAspectRatioValue != nil) { + preserveAspectRatio = preserveAspectRatioValue.boolValue; + } + _preserveAspectRatio = preserveAspectRatio; + _imageSource = imageSource; + _imageData = data; +#if SD_UIKIT + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; +#endif + } + return self; +} + +- (BOOL)scanAndCheckFramesValidWithImageSource:(CGImageSourceRef)imageSource { + if (!imageSource) { + return NO; + } + NSUInteger frameCount = CGImageSourceGetCount(imageSource); + NSUInteger loopCount = [self.class imageLoopCountWithSource:imageSource]; + NSMutableArray *frames = [NSMutableArray array]; + + for (size_t i = 0; i < frameCount; i++) { + SDImageIOCoderFrame *frame = [[SDImageIOCoderFrame alloc] init]; + frame.index = i; + frame.duration = [self.class frameDurationAtIndex:i source:imageSource]; + [frames addObject:frame]; + } + + _frameCount = frameCount; + _loopCount = loopCount; + _frames = [frames copy]; + + return YES; +} + +- (NSData *)animatedImageData { + return _imageData; +} + +- (NSUInteger)animatedImageLoopCount { + return _loopCount; +} + +- (NSUInteger)animatedImageFrameCount { + return _frameCount; +} + +- (NSTimeInterval)animatedImageDurationAtIndex:(NSUInteger)index { + if (index >= _frameCount) { + return 0; + } + return _frames[index].duration; +} + +- (UIImage *)animatedImageFrameAtIndex:(NSUInteger)index { + UIImage *image = [self.class createFrameAtIndex:index source:_imageSource scale:_scale preserveAspectRatio:_preserveAspectRatio thumbnailSize:_thumbnailSize]; + if (!image) { + return nil; + } + image.sd_imageFormat = self.class.imageFormat; + // Image/IO create CGImage does not decode, so we do this because this is called background queue, this can avoid main queue block when rendering(especially when one more imageViews use the same image instance) + CGImageRef imageRef = [SDImageCoderHelper CGImageCreateDecoded:image.CGImage]; + if (!imageRef) { + return image; + } +#if SD_MAC + image = [[UIImage alloc] initWithCGImage:imageRef scale:_scale orientation:kCGImagePropertyOrientationUp]; +#else + image = [[UIImage alloc] initWithCGImage:imageRef scale:_scale orientation:image.imageOrientation]; +#endif + CGImageRelease(imageRef); + image.sd_isDecoded = YES; + image.sd_imageFormat = self.class.imageFormat; + return image; +} + +@end + diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m index 546666967..f617f4373 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageIOCoder.m @@ -11,6 +11,8 @@ #import "NSImage+Compatibility.h" #import #import "UIImage+Metadata.h" +#import "SDImageHEICCoderInternal.h" +#import "SDImageIOAnimatedCoderInternal.h" @implementation SDImageIOCoder { size_t _width, _height; @@ -18,6 +20,8 @@ CGImageSourceRef _imageSource; CGFloat _scale; BOOL _finished; + BOOL _preserveAspectRatio; + CGSize _thumbnailSize; } - (void)dealloc { @@ -54,10 +58,10 @@ return NO; case SDImageFormatHEIC: // Check HEIC decoding compatibility - return [[self class] canDecodeFromHEICFormat]; + return [SDImageHEICCoder canDecodeFromHEICFormat]; case SDImageFormatHEIF: // Check HEIF decoding compatibility - return [[self class] canDecodeFromHEIFFormat]; + return [SDImageHEICCoder canDecodeFromHEIFFormat]; default: return YES; } @@ -73,7 +77,33 @@ scale = MAX([scaleFactor doubleValue], 1) ; } - UIImage *image = [[UIImage alloc] initWithData:data scale:scale]; + CGSize thumbnailSize = CGSizeZero; + NSValue *thumbnailSizeValue = options[SDImageCoderDecodeThumbnailPixelSize]; + if (thumbnailSizeValue != nil) { +#if SD_MAC + thumbnailSize = thumbnailSizeValue.sizeValue; +#else + thumbnailSize = thumbnailSizeValue.CGSizeValue; +#endif + } + + BOOL preserveAspectRatio = YES; + NSNumber *preserveAspectRatioValue = options[SDImageCoderDecodePreserveAspectRatio]; + if (preserveAspectRatioValue != nil) { + preserveAspectRatio = preserveAspectRatioValue.boolValue; + } + + CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL); + if (!source) { + return nil; + } + + UIImage *image = [SDImageIOAnimatedCoder createFrameAtIndex:0 source:source scale:scale preserveAspectRatio:preserveAspectRatio thumbnailSize:thumbnailSize]; + CFRelease(source); + if (!image) { + return nil; + } + image.sd_imageFormat = [NSData sd_imageFormatForImageData:data]; return image; } @@ -94,6 +124,22 @@ scale = MAX([scaleFactor doubleValue], 1); } _scale = scale; + CGSize thumbnailSize = CGSizeZero; + NSValue *thumbnailSizeValue = options[SDImageCoderDecodeThumbnailPixelSize]; + if (thumbnailSizeValue != nil) { + #if SD_MAC + thumbnailSize = thumbnailSizeValue.sizeValue; + #else + thumbnailSize = thumbnailSizeValue.CGSizeValue; + #endif + } + _thumbnailSize = thumbnailSize; + BOOL preserveAspectRatio = YES; + NSNumber *preserveAspectRatioValue = options[SDImageCoderDecodePreserveAspectRatio]; + if (preserveAspectRatioValue != nil) { + preserveAspectRatio = preserveAspectRatioValue.boolValue; + } + _preserveAspectRatio = preserveAspectRatio; #if SD_UIKIT [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; #endif @@ -139,21 +185,13 @@ if (_width + _height > 0) { // Create the image - CGImageRef partialImageRef = CGImageSourceCreateImageAtIndex(_imageSource, 0, NULL); - - if (partialImageRef) { - CGFloat scale = _scale; - NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; - if (scaleFactor != nil) { - scale = MAX([scaleFactor doubleValue], 1); - } -#if SD_UIKIT || SD_WATCH - UIImageOrientation imageOrientation = [SDImageCoderHelper imageOrientationFromEXIFOrientation:_orientation]; - image = [[UIImage alloc] initWithCGImage:partialImageRef scale:scale orientation:imageOrientation]; -#else - image = [[UIImage alloc] initWithCGImage:partialImageRef scale:scale orientation:_orientation]; -#endif - CGImageRelease(partialImageRef); + CGFloat scale = _scale; + NSNumber *scaleFactor = options[SDImageCoderDecodeScaleFactor]; + if (scaleFactor != nil) { + scale = MAX([scaleFactor doubleValue], 1); + } + image = [SDImageIOAnimatedCoder createFrameAtIndex:0 source:_imageSource scale:scale preserveAspectRatio:_preserveAspectRatio thumbnailSize:_thumbnailSize]; + if (image) { CFStringRef uttype = CGImageSourceGetType(_imageSource); image.sd_imageFormat = [NSData sd_imageFormatFromUTType:uttype]; } @@ -170,10 +208,10 @@ return NO; case SDImageFormatHEIC: // Check HEIC encoding compatibility - return [[self class] canEncodeToHEICFormat]; + return [SDImageHEICCoder canEncodeToHEICFormat]; case SDImageFormatHEIF: // Check HEIF encoding compatibility - return [[self class] canEncodeToHEIFFormat]; + return [SDImageHEICCoder canEncodeToHEIFFormat]; default: return YES; } @@ -230,65 +268,4 @@ return [imageData copy]; } -+ (BOOL)canDecodeFromFormat:(SDImageFormat)format { - CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:format]; - NSArray *imageUTTypes = (__bridge_transfer NSArray *)CGImageSourceCopyTypeIdentifiers(); - if ([imageUTTypes containsObject:(__bridge NSString *)(imageUTType)]) { - return YES; - } - return NO; -} - -+ (BOOL)canDecodeFromHEICFormat { - static BOOL canDecode = NO; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - canDecode = [self canDecodeFromFormat:SDImageFormatHEIC]; - }); - return canDecode; -} - -+ (BOOL)canDecodeFromHEIFFormat { - static BOOL canDecode = NO; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - canDecode = [self canDecodeFromFormat:SDImageFormatHEIF]; - }); - return canDecode; -} - -+ (BOOL)canEncodeToFormat:(SDImageFormat)format { - NSMutableData *imageData = [NSMutableData data]; - CFStringRef imageUTType = [NSData sd_UTTypeFromImageFormat:format]; - - // Create an image destination. - CGImageDestinationRef imageDestination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)imageData, imageUTType, 1, NULL); - if (!imageDestination) { - // Can't encode to HEIC - return NO; - } else { - // Can encode to HEIC - CFRelease(imageDestination); - return YES; - } -} - -+ (BOOL)canEncodeToHEICFormat { - static BOOL canEncode = NO; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - canEncode = [self canEncodeToFormat:SDImageFormatHEIC]; - }); - return canEncode; -} - -+ (BOOL)canEncodeToHEIFFormat { - static BOOL canEncode = NO; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - canEncode = [self canEncodeToFormat:SDImageFormatHEIF]; - }); - return canEncode; -} - @end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m index 8cbbe4e0b..4c831c59e 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDImageLoader.m @@ -32,12 +32,25 @@ UIImage * _Nullable SDImageLoaderDecodeImageData(NSData * _Nonnull imageData, NS BOOL decodeFirstFrame = SD_OPTIONS_CONTAINS(options, SDWebImageDecodeFirstFrameOnly); NSNumber *scaleValue = context[SDWebImageContextImageScaleFactor]; CGFloat scale = scaleValue.doubleValue >= 1 ? scaleValue.doubleValue : SDImageScaleFactorForKey(cacheKey); - SDImageCoderOptions *coderOptions = @{SDImageCoderDecodeFirstFrameOnly : @(decodeFirstFrame), SDImageCoderDecodeScaleFactor : @(scale)}; - if (context) { - SDImageCoderMutableOptions *mutableCoderOptions = [coderOptions mutableCopy]; - [mutableCoderOptions setValue:context forKey:SDImageCoderWebImageContext]; - coderOptions = [mutableCoderOptions copy]; + NSNumber *preserveAspectRatioValue = context[SDWebImageContextImagePreserveAspectRatio]; + NSValue *thumbnailSizeValue; + BOOL shouldScaleDown = SD_OPTIONS_CONTAINS(options, SDWebImageScaleDownLargeImages); + if (shouldScaleDown) { + CGFloat thumbnailPixels = SDImageCoderHelper.defaultScaleDownLimitBytes / 4; + CGFloat dimension = ceil(sqrt(thumbnailPixels)); + thumbnailSizeValue = @(CGSizeMake(dimension, dimension)); } + if (context[SDWebImageContextImageThumbnailPixelSize]) { + thumbnailSizeValue = context[SDWebImageContextImageThumbnailPixelSize]; + } + + SDImageCoderMutableOptions *mutableCoderOptions = [NSMutableDictionary dictionaryWithCapacity:2]; + mutableCoderOptions[SDImageCoderDecodeFirstFrameOnly] = @(decodeFirstFrame); + mutableCoderOptions[SDImageCoderDecodeScaleFactor] = @(scale); + mutableCoderOptions[SDImageCoderDecodePreserveAspectRatio] = preserveAspectRatioValue; + mutableCoderOptions[SDImageCoderDecodeThumbnailPixelSize] = thumbnailSizeValue; + mutableCoderOptions[SDImageCoderWebImageContext] = context; + SDImageCoderOptions *coderOptions = [mutableCoderOptions copy]; if (!decodeFirstFrame) { // check whether we should use `SDAnimatedImage` @@ -71,12 +84,7 @@ UIImage * _Nullable SDImageLoaderDecodeImageData(NSData * _Nonnull imageData, NS } if (shouldDecode) { - BOOL shouldScaleDown = SD_OPTIONS_CONTAINS(options, SDWebImageScaleDownLargeImages); - if (shouldScaleDown) { - image = [SDImageCoderHelper decodedAndScaledDownImageWithImage:image limitBytes:0]; - } else { - image = [SDImageCoderHelper decodedImageWithImage:image]; - } + image = [SDImageCoderHelper decodedImageWithImage:image]; } } @@ -99,12 +107,25 @@ UIImage * _Nullable SDImageLoaderDecodeProgressiveImageData(NSData * _Nonnull im BOOL decodeFirstFrame = SD_OPTIONS_CONTAINS(options, SDWebImageDecodeFirstFrameOnly); NSNumber *scaleValue = context[SDWebImageContextImageScaleFactor]; CGFloat scale = scaleValue.doubleValue >= 1 ? scaleValue.doubleValue : SDImageScaleFactorForKey(cacheKey); - SDImageCoderOptions *coderOptions = @{SDImageCoderDecodeFirstFrameOnly : @(decodeFirstFrame), SDImageCoderDecodeScaleFactor : @(scale)}; - if (context) { - SDImageCoderMutableOptions *mutableCoderOptions = [coderOptions mutableCopy]; - [mutableCoderOptions setValue:context forKey:SDImageCoderWebImageContext]; - coderOptions = [mutableCoderOptions copy]; + NSNumber *preserveAspectRatioValue = context[SDWebImageContextImagePreserveAspectRatio]; + NSValue *thumbnailSizeValue; + BOOL shouldScaleDown = SD_OPTIONS_CONTAINS(options, SDWebImageScaleDownLargeImages); + if (shouldScaleDown) { + CGFloat thumbnailPixels = SDImageCoderHelper.defaultScaleDownLimitBytes / 4; + CGFloat dimension = ceil(sqrt(thumbnailPixels)); + thumbnailSizeValue = @(CGSizeMake(dimension, dimension)); } + if (context[SDWebImageContextImageThumbnailPixelSize]) { + thumbnailSizeValue = context[SDWebImageContextImageThumbnailPixelSize]; + } + + SDImageCoderMutableOptions *mutableCoderOptions = [NSMutableDictionary dictionaryWithCapacity:2]; + mutableCoderOptions[SDImageCoderDecodeFirstFrameOnly] = @(decodeFirstFrame); + mutableCoderOptions[SDImageCoderDecodeScaleFactor] = @(scale); + mutableCoderOptions[SDImageCoderDecodePreserveAspectRatio] = preserveAspectRatioValue; + mutableCoderOptions[SDImageCoderDecodeThumbnailPixelSize] = thumbnailSizeValue; + mutableCoderOptions[SDImageCoderWebImageContext] = context; + SDImageCoderOptions *coderOptions = [mutableCoderOptions copy]; id progressiveCoder = objc_getAssociatedObject(operation, SDImageLoaderProgressiveCoderKey); if (!progressiveCoder) { diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.h index 8b4158167..43c39e843 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.h @@ -15,6 +15,7 @@ @protocol SDMemoryCache @required + /** Create a new memory cache instance with the specify cache config. You can check `maxMemoryCost` and `maxMemoryCount` used for memory cache. @@ -25,7 +26,7 @@ /** Returns the value associated with a given key. - + @param key An object identifying the value. If nil, just return nil. @return The value associated with key, or nil if no value is associated with key. */ @@ -33,7 +34,7 @@ /** Sets the value of the specified key in the cache (0 cost). - + @param object The object to be stored in the cache. If nil, it calls `removeObjectForKey:`. @param key The key with which to associate the value. If nil, this method has no effect. @discussion Unlike an NSMutableDictionary object, a cache does not copy the key @@ -44,7 +45,7 @@ /** Sets the value of the specified key in the cache, and associates the key-value pair with the specified cost. - + @param object The object to store in the cache. If nil, it calls `removeObjectForKey`. @param key The key with which to associate the value. If nil, this method has no effect. @param cost The cost with which to associate the key-value pair. @@ -55,7 +56,7 @@ /** Removes the value of the specified key in the cache. - + @param key The key identifying the value to be removed. If nil, this method has no effect. */ - (void)removeObjectForKey:(nonnull id)key; diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.m index e3991994c..b354b495d 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDMemoryCache.m @@ -30,6 +30,7 @@ static void * SDMemoryCacheContext = &SDMemoryCacheContext; #if SD_UIKIT [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; #endif + self.delegate = nil; } - (instancetype)init { @@ -54,14 +55,14 @@ static void * SDMemoryCacheContext = &SDMemoryCacheContext; SDImageCacheConfig *config = self.config; self.totalCostLimit = config.maxMemoryCost; self.countLimit = config.maxMemoryCount; - + [config addObserver:self forKeyPath:NSStringFromSelector(@selector(maxMemoryCost)) options:0 context:SDMemoryCacheContext]; [config addObserver:self forKeyPath:NSStringFromSelector(@selector(maxMemoryCount)) options:0 context:SDMemoryCacheContext]; - + #if SD_UIKIT self.weakCache = [[NSMapTable alloc] initWithKeyOptions:NSPointerFunctionsStrongMemory valueOptions:NSPointerFunctionsWeakMemory capacity:0]; self.weakCacheLock = dispatch_semaphore_create(1); - + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.h index 84c92a375..3c271b1fc 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageCacheSerializer.h @@ -17,6 +17,10 @@ typedef NSData * _Nullable(^SDWebImageCacheSerializerBlock)(UIImage * _Nonnull i */ @protocol SDWebImageCacheSerializer +/// Provide the image data associated to the image and store to disk cache +/// @param image The loaded image +/// @param data The original loaded image data +/// @param imageURL The image URL - (nullable NSData *)cacheDataWithImage:(nonnull UIImage *)image originalData:(nullable NSData *)data imageURL:(nullable NSURL *)imageURL; @end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h index 0c7a120fb..bd4d4e68c 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.h @@ -122,9 +122,12 @@ typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) { SDWebImageAvoidAutoSetImage = 1 << 10, /** - * By default, images are decoded respecting their original size. On iOS, this flag will scale down the - * images to a size compatible with the constrained memory of devices. - * This flag take no effect if `SDWebImageAvoidDecodeImage` is set. And it will be ignored if `SDWebImageProgressiveLoad` is set. + * By default, images are decoded respecting their original size. + * This flag will scale down the images to a size compatible with the constrained memory of devices. + * To control the limit memory bytes, check `SDImageCoderHelper.defaultScaleDownLimitBytes` (Defaults to 60MB on iOS) + * This will actually translate to use context option `.imageThumbnailPixelSize` from v5.5.0 (Defaults to (3966, 3966) on iOS). Previously does not. + * This flags effect the progressive and animated images as well from v5.5.0. Previously does not. + * @note If you need detail controls, it's better to use context option `imageThumbnailPixelSize` and `imagePreserveAspectRatio` instead. */ SDWebImageScaleDownLargeImages = 1 << 11, @@ -184,6 +187,14 @@ typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) { * Note this options is not compatible with `SDWebImageDecodeFirstFrameOnly`, which always produce a UIImage/NSImage. */ SDWebImageMatchAnimatedImageClass = 1 << 21, + + /** + * By default, when we load the image from network, the image will be written to the cache (memory and disk, controlled by your `storeCacheType` context option) + * This maybe an asynchronously operation and the final `SDInternalCompletionBlock` callback does not gurantee the disk cache written is finished and may cause logic error. (For example, you modify the disk data just in completion block, however, the disk cache is not ready) + * If you need to process with the disk cache in the completion block, you should use this option to ensure the disk cache already been written when callback. + * Note if you use this when using the custom cache serializer, or using the transformer, we will also wait until the output image data written is finished. + */ + SDWebImageWaitStoreCache = 1 << 22, }; @@ -209,6 +220,19 @@ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImageT */ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImageScaleFactor; +/** + A Boolean value indicating whether to keep the original aspect ratio when generating thumbnail images (or bitmap images from vector format). + Defaults to YES. (NSNumber) + */ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImagePreserveAspectRatio; + +/** + A CGSize raw value indicating whether or not to generate the thumbnail images (or bitmap images from vector format). When this value is provided, the decoder will generate a thumbnail image which pixel size is smaller than or equal to (depends the `.imagePreserveAspectRatio`) the value size. + @note When you pass `.preserveAspectRatio == NO`, the thumbnail image is stretched to match each dimension. When `.preserveAspectRatio == YES`, the thumbnail image's width is limited to pixel size's width, the thumbnail image's height is limited to pixel size's height. For common cases, you can just pass a square size to limit both. + Defaults to CGSizeZero, which means no thumbnail generation at all. (NSValue) + */ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextImageThumbnailPixelSize; + /** A SDImageCacheType raw value which specify the store cache type when the image has just been downloaded and will be stored to the cache. Specify `SDImageCacheTypeNone` to disable cache storage; `SDImageCacheTypeDisk` to store in disk cache only; `SDImageCacheTypeMemory` to store in memory only. And `SDImageCacheTypeAll` to store in both memory cache and disk cache. If you use image transformer feature, this actually apply for the transformed image, but not the original image itself. Use `SDWebImageContextOriginalStoreCacheType` if you want to control the original image's store cache type at the same time. @@ -233,6 +257,16 @@ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextAnimat */ FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextDownloadRequestModifier; +/** + A id instance to modify the image download response. It's used for downloader to modify the original response from URL and options. If you provide one, it will ignore the `responseModifier` in downloader and use provided one instead. (id) + */ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextDownloadResponseModifier; + +/** + A id instance to decrypt the image download data. This can be used for image data decryption, such as Base64 encoded image. If you provide one, it will ignore the `decryptor` in downloader and use provided one instead. (id) + */ +FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextDownloadDecryptor; + /** A id instance to convert an URL into a cache key. It's used when manager need cache key to use image cache. If you provide one, it will ignore the `cacheKeyFilter` in manager and use provided one instead. (id) */ diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m index cfd177567..921e878af 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDefine.m @@ -9,6 +9,7 @@ #import "SDWebImageDefine.h" #import "UIImage+Metadata.h" #import "NSImage+Compatibility.h" +#import "SDAssociatedObject.h" #pragma mark - Image scale @@ -110,8 +111,7 @@ inline UIImage * _Nullable SDScaledImageForScaleFactor(CGFloat scale, UIImage * scaledImage = [[UIImage alloc] initWithCGImage:image.CGImage scale:scale orientation:kCGImagePropertyOrientationUp]; #endif } - scaledImage.sd_isIncremental = image.sd_isIncremental; - scaledImage.sd_imageFormat = image.sd_imageFormat; + SDImageCopyAssociatedObject(image, scaledImage); return scaledImage; } @@ -122,9 +122,13 @@ SDWebImageContextOption const SDWebImageContextSetImageOperationKey = @"setImage SDWebImageContextOption const SDWebImageContextCustomManager = @"customManager"; SDWebImageContextOption const SDWebImageContextImageTransformer = @"imageTransformer"; SDWebImageContextOption const SDWebImageContextImageScaleFactor = @"imageScaleFactor"; +SDWebImageContextOption const SDWebImageContextImagePreserveAspectRatio = @"imagePreserveAspectRatio"; +SDWebImageContextOption const SDWebImageContextImageThumbnailPixelSize = @"imageThumbnailPixelSize"; SDWebImageContextOption const SDWebImageContextStoreCacheType = @"storeCacheType"; SDWebImageContextOption const SDWebImageContextOriginalStoreCacheType = @"originalStoreCacheType"; SDWebImageContextOption const SDWebImageContextAnimatedImageClass = @"animatedImageClass"; SDWebImageContextOption const SDWebImageContextDownloadRequestModifier = @"downloadRequestModifier"; +SDWebImageContextOption const SDWebImageContextDownloadResponseModifier = @"downloadResponseModifier"; +SDWebImageContextOption const SDWebImageContextDownloadDecryptor = @"downloadDecryptor"; SDWebImageContextOption const SDWebImageContextCacheKeyFilter = @"cacheKeyFilter"; SDWebImageContextOption const SDWebImageContextCacheSerializer = @"cacheSerializer"; diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h index 1222802d3..571b72a26 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.h @@ -12,6 +12,8 @@ #import "SDWebImageOperation.h" #import "SDWebImageDownloaderConfig.h" #import "SDWebImageDownloaderRequestModifier.h" +#import "SDWebImageDownloaderResponseModifier.h" +#import "SDWebImageDownloaderDecryptor.h" #import "SDImageLoader.h" /// Downloader options @@ -142,12 +144,29 @@ typedef SDImageLoaderCompletedBlock SDWebImageDownloaderCompletedBlock; /** * Set the request modifier to modify the original download request before image load. - * This request modifier method will be called for each downloading image request. Return the original request means no modication. Return nil will cancel the download request. + * This request modifier method will be called for each downloading image request. Return the original request means no modification. Return nil will cancel the download request. * Defaults to nil, means does not modify the original download request. * @note If you want to modify single request, consider using `SDWebImageContextDownloadRequestModifier` context option. */ @property (nonatomic, strong, nullable) id requestModifier; +/** + * Set the response modifier to modify the original download response during image load. + * This request modifier method will be called for each downloading image response. Return the original response means no modification. Return nil will mark current download as cancelled. + * Defaults to nil, means does not modify the original download response. + * @note If you want to modify single response, consider using `SDWebImageContextDownloadResponseModifier` context option. + */ +@property (nonatomic, strong, nullable) id responseModifier; + +/** + * Set the decryptor to decrypt the original download data before image decoding. This can be used for encrypted image data, like Base64. + * This decryptor method will be called for each downloading image data. Return the original data means no modification. Return nil will mark this download failed. + * Defaults to nil, means does not modify the original download data. + * @note When using decryptor, progressive decoding will be disabled, to avoid data corrupt issue. + * @note If you want to decrypt single download data, consider using `SDWebImageContextDownloadDecryptor` context option. + */ +@property (nonatomic, strong, nullable) id decryptor; + /** * The configuration in use by the internal NSURLSession. If you want to provide a custom sessionConfiguration, use `SDWebImageDownloaderConfig.sessionConfiguration` and create a new downloader instance. @note This is immutable according to NSURLSession's documentation. Mutating this object directly has no effect. diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m index 4d8a0e69e..94bfa0493 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloader.m @@ -24,9 +24,8 @@ static void * SDWebImageDownloaderContext = &SDWebImageDownloaderContext; @property (nonatomic, strong, nullable, readwrite) NSURL *url; @property (nonatomic, strong, nullable, readwrite) NSURLRequest *request; @property (nonatomic, strong, nullable, readwrite) NSURLResponse *response; -@property (nonatomic, strong, nullable, readwrite) id downloadOperationCancelToken; +@property (nonatomic, weak, nullable, readwrite) id downloadOperationCancelToken; @property (nonatomic, weak, nullable) NSOperation *downloadOperation; -@property (nonatomic, weak, nullable) SDWebImageDownloader *downloader; @property (nonatomic, assign, getter=isCancelled) BOOL cancelled; - (nonnull instancetype)init NS_UNAVAILABLE; @@ -38,7 +37,6 @@ static void * SDWebImageDownloaderContext = &SDWebImageDownloaderContext; @interface SDWebImageDownloader () @property (strong, nonatomic, nonnull) NSOperationQueue *downloadQueue; -@property (weak, nonatomic, nullable) NSOperation *lastAddedOperation; @property (strong, nonatomic, nonnull) NSMutableDictionary *> *URLOperations; @property (strong, nonatomic, nullable) NSMutableDictionary *HTTPHeaders; @property (strong, nonatomic, nonnull) dispatch_semaphore_t HTTPHeadersLock; // A lock to keep the access to `HTTPHeaders` thread-safe @@ -228,10 +226,11 @@ static void * SDWebImageDownloaderContext = &SDWebImageDownloaderContext; SD_UNLOCK(self.operationsLock); }; self.URLOperations[url] = operation; + // Add the handlers before submitting to operation queue, avoid the race condition that operation finished before setting handlers. + downloadOperationCancelToken = [operation addHandlersForProgress:progressBlock completed:completedBlock]; // Add operation to operation queue only after all configuration done according to Apple's doc. // `addOperation:` does not synchronously execute the `operation.completionBlock` so this will not cause deadlock. [self.downloadQueue addOperation:operation]; - downloadOperationCancelToken = [operation addHandlersForProgress:progressBlock completed:completedBlock]; } else { // When we reuse the download operation to attach more callbacks, there may be thread safe issue because the getter of callbacks may in another queue (decoding queue or delegate queue) // So we lock the operation here, and in `SDWebImageDownloaderOperation`, we use `@synchonzied (self)`, to ensure the thread safe between these two classes. @@ -254,7 +253,6 @@ static void * SDWebImageDownloaderContext = &SDWebImageDownloaderContext; token.url = url; token.request = operation.request; token.downloadOperationCancelToken = downloadOperationCancelToken; - token.downloader = self; return token; } @@ -275,6 +273,16 @@ static void * SDWebImageDownloaderContext = &SDWebImageDownloaderContext; SD_LOCK(self.HTTPHeadersLock); mutableRequest.allHTTPHeaderFields = self.HTTPHeaders; SD_UNLOCK(self.HTTPHeadersLock); + + // Context Option + SDWebImageMutableContext *mutableContext; + if (context) { + mutableContext = [context mutableCopy]; + } else { + mutableContext = [NSMutableDictionary dictionary]; + } + + // Request Modifier id requestModifier; if ([context valueForKey:SDWebImageContextDownloadRequestModifier]) { requestModifier = [context valueForKey:SDWebImageContextDownloadRequestModifier]; @@ -294,6 +302,30 @@ static void * SDWebImageDownloaderContext = &SDWebImageDownloaderContext; } else { request = [mutableRequest copy]; } + // Response Modifier + id responseModifier; + if ([context valueForKey:SDWebImageContextDownloadResponseModifier]) { + responseModifier = [context valueForKey:SDWebImageContextDownloadResponseModifier]; + } else { + responseModifier = self.responseModifier; + } + if (responseModifier) { + mutableContext[SDWebImageContextDownloadResponseModifier] = responseModifier; + } + // Decryptor + id decryptor; + if ([context valueForKey:SDWebImageContextDownloadDecryptor]) { + decryptor = [context valueForKey:SDWebImageContextDownloadDecryptor]; + } else { + decryptor = self.decryptor; + } + if (decryptor) { + mutableContext[SDWebImageContextDownloadDecryptor] = decryptor; + } + + context = [mutableContext copy]; + + // Operation Class Class operationClass = self.config.operationClass; if (operationClass && [operationClass isSubclassOfClass:[NSOperation class]] && [operationClass conformsToProtocol:@protocol(SDWebImageDownloaderOperation)]) { // Custom operation class @@ -321,30 +353,17 @@ static void * SDWebImageDownloaderContext = &SDWebImageDownloaderContext; } if (self.config.executionOrder == SDWebImageDownloaderLIFOExecutionOrder) { - // Emulate LIFO execution order by systematically adding new operations as last operation's dependency - [self.lastAddedOperation addDependency:operation]; - self.lastAddedOperation = operation; + // Emulate LIFO execution order by systematically, each previous adding operation can dependency the new operation + // This can gurantee the new operation to be execulated firstly, even if when some operations finished, meanwhile you appending new operations + // Just make last added operation dependents new operation can not solve this problem. See test case #test15DownloaderLIFOExecutionOrder + for (NSOperation *pendingOperation in self.downloadQueue.operations) { + [pendingOperation addDependency:operation]; + } } return operation; } -- (void)cancel:(nullable SDWebImageDownloadToken *)token { - NSURL *url = token.url; - if (!url) { - return; - } - SD_LOCK(self.operationsLock); - NSOperation *operation = [self.URLOperations objectForKey:url]; - if (operation) { - BOOL canceled = [operation cancel:token.downloadOperationCancelToken]; - if (canceled) { - [self.URLOperations removeObjectForKey:url]; - } - } - SD_UNLOCK(self.operationsLock); -} - - (void)cancelAllDownloads { [self.downloadQueue cancelAllOperations]; } @@ -385,7 +404,12 @@ static void * SDWebImageDownloaderContext = &SDWebImageDownloaderContext; NSOperation *returnOperation = nil; for (NSOperation *operation in self.downloadQueue.operations) { if ([operation respondsToSelector:@selector(dataTask)]) { - if (operation.dataTask.taskIdentifier == task.taskIdentifier) { + // So we lock the operation here, and in `SDWebImageDownloaderOperation`, we use `@synchonzied (self)`, to ensure the thread safe between these two classes. + NSURLSessionTask *operationTask; + @synchronized (operation) { + operationTask = operation.dataTask; + } + if (operationTask.taskIdentifier == task.taskIdentifier) { returnOperation = operation; break; } @@ -504,13 +528,7 @@ didReceiveResponse:(NSURLResponse *)response return; } self.cancelled = YES; - if (self.downloader) { - // Downloader is alive, cancel token - [self.downloader cancel:self]; - } else { - // Downloader is dealloced, only cancel download operation - [self.downloadOperation cancel:self.downloadOperationCancelToken]; - } + [self.downloadOperation cancel:self.downloadOperationCancelToken]; self.downloadOperationCancelToken = nil; } } diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.h new file mode 100644 index 000000000..184d4f855 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.h @@ -0,0 +1,44 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDWebImageCompat.h" + +typedef NSData * _Nullable (^SDWebImageDownloaderDecryptorBlock)(NSData * _Nonnull data, NSURLResponse * _Nullable response); + +/** +This is the protocol for downloader decryptor. Which decrypt the original encrypted data before decoding. Note progressive decoding is not compatible for decryptor. +We can use a block to specify the downloader decryptor. But Using protocol can make this extensible, and allow Swift user to use it easily instead of using `@convention(block)` to store a block into context options. +*/ +@protocol SDWebImageDownloaderDecryptor + +/// Decrypt the original download data and return a new data. You can use this to decrypt the data using your perfereed algorithm. +/// @param data The original download data +/// @param response The URL response for data. If you modifiy the original URL response via response modifier, the modified version will be here. This arg is nullable. +/// @note If nil is returned, the image download will be marked as failed with error `SDWebImageErrorBadImageData` +- (nullable NSData *)decryptedDataWithData:(nonnull NSData *)data response:(nullable NSURLResponse *)response; + +@end + +/** +A downloader response modifier class with block. +*/ +@interface SDWebImageDownloaderDecryptor : NSObject + +- (nonnull instancetype)initWithBlock:(nonnull SDWebImageDownloaderDecryptorBlock)block; ++ (nonnull instancetype)decryptorWithBlock:(nonnull SDWebImageDownloaderDecryptorBlock)block; + +@end + +/// Convenience way to create decryptor for common data encryption. +@interface SDWebImageDownloaderDecryptor (Conveniences) + +/// Base64 Encoded image data decryptor +@property (class, readonly, nonnull) SDWebImageDownloaderDecryptor *base64Decryptor; + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.m new file mode 100644 index 000000000..a3b75b26a --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderDecryptor.m @@ -0,0 +1,55 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDWebImageDownloaderDecryptor.h" + +@interface SDWebImageDownloaderDecryptor () + +@property (nonatomic, copy, nonnull) SDWebImageDownloaderDecryptorBlock block; + +@end + +@implementation SDWebImageDownloaderDecryptor + +- (instancetype)initWithBlock:(SDWebImageDownloaderDecryptorBlock)block { + self = [super init]; + if (self) { + self.block = block; + } + return self; +} + ++ (instancetype)decryptorWithBlock:(SDWebImageDownloaderDecryptorBlock)block { + SDWebImageDownloaderDecryptor *decryptor = [[SDWebImageDownloaderDecryptor alloc] initWithBlock:block]; + return decryptor; +} + +- (nullable NSData *)decryptedDataWithData:(nonnull NSData *)data response:(nullable NSURLResponse *)response { + if (!self.block) { + return nil; + } + return self.block(data, response); +} + +@end + +@implementation SDWebImageDownloaderDecryptor (Conveniences) + ++ (SDWebImageDownloaderDecryptor *)base64Decryptor { + static SDWebImageDownloaderDecryptor *decryptor; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + decryptor = [SDWebImageDownloaderDecryptor decryptorWithBlock:^NSData * _Nullable(NSData * _Nonnull data, NSURLResponse * _Nullable response) { + NSData *modifiedData = [[NSData alloc] initWithBase64EncodedData:data options:NSDataBase64DecodingIgnoreUnknownCharacters]; + return modifiedData; + }]; + }); + return decryptor; +} + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m index c07047e54..6527eddd5 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderOperation.m @@ -9,9 +9,11 @@ #import "SDWebImageDownloaderOperation.h" #import "SDWebImageError.h" #import "SDInternalMacros.h" +#import "SDWebImageDownloaderResponseModifier.h" +#import "SDWebImageDownloaderDecryptor.h" // iOS 8 Foundation.framework extern these symbol but the define is in CFNetwork.framework. We just fix this without import CFNetwork.framework -#if (__IPHONE_OS_VERSION_MIN_REQUIRED && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_9_0) +#if ((__IPHONE_OS_VERSION_MIN_REQUIRED && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_9_0) || (__MAC_OS_X_VERSION_MIN_REQUIRED && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_11)) const float NSURLSessionTaskPriorityHigh = 0.75; const float NSURLSessionTaskPriorityDefault = 0.5; const float NSURLSessionTaskPriorityLow = 0.25; @@ -39,6 +41,9 @@ typedef NSMutableDictionary SDCallbacksDictionary; @property (strong, nonatomic, nullable) NSError *responseError; @property (assign, nonatomic) double previousProgress; // previous progress percent +@property (strong, nonatomic, nullable) id responseModifier; // modifiy original URLResponse +@property (strong, nonatomic, nullable) id decryptor; // decrypt image data + // This is weak because it is injected by whoever manages this session. If this gets nil-ed out, we won't be able to run // the task associated with this operation @property (weak, nonatomic, nullable) NSURLSession *unownedSession; @@ -76,6 +81,8 @@ typedef NSMutableDictionary SDCallbacksDictionary; _options = options; _context = [context copy]; _callbackBlocks = [NSMutableArray new]; + _responseModifier = context[SDWebImageContextDownloadResponseModifier]; + _decryptor = context[SDWebImageContextDownloadDecryptor]; _executing = NO; _finished = NO; _expectedSize = 0; @@ -293,13 +300,27 @@ typedef NSMutableDictionary SDCallbacksDictionary; didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler { NSURLSessionResponseDisposition disposition = NSURLSessionResponseAllow; + + // Check response modifier, if return nil, will marked as cancelled. + BOOL valid = YES; + if (self.responseModifier && response) { + response = [self.responseModifier modifiedResponseWithResponse:response]; + if (!response) { + valid = NO; + self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorInvalidDownloadResponse userInfo:nil]; + } + } + NSInteger expected = (NSInteger)response.expectedContentLength; expected = expected > 0 ? expected : 0; self.expectedSize = expected; self.response = response; + NSInteger statusCode = [response respondsToSelector:@selector(statusCode)] ? ((NSHTTPURLResponse *)response).statusCode : 200; - BOOL valid = statusCode >= 200 && statusCode < 400; - if (!valid) { + // Status code should between [200,400) + BOOL statusCodeValid = statusCode >= 200 && statusCode < 400; + if (!statusCodeValid) { + valid = NO; self.responseError = [NSError errorWithDomain:SDWebImageErrorDomain code:SDWebImageErrorInvalidDownloadStatusCode userInfo:@{SDWebImageErrorDownloadStatusCodeKey : @(statusCode)}]; } //'304 Not Modified' is an exceptional one @@ -353,8 +374,10 @@ didReceiveResponse:(NSURLResponse *)response return; } self.previousProgress = currentProgress; - - if (self.options & SDWebImageDownloaderProgressiveLoad) { + + // Using data decryptor will disable the progressive decoding, since there are no support for progressive decrypt + BOOL supportProgressive = (self.options & SDWebImageDownloaderProgressiveLoad) && !self.decryptor; + if (supportProgressive) { // Get the image data NSData *imageData = [self.imageData copy]; @@ -421,6 +444,10 @@ didReceiveResponse:(NSURLResponse *)response if ([self callbacksForKey:kCompletedCallbackKey].count > 0) { NSData *imageData = [self.imageData copy]; self.imageData = nil; + // data decryptor + if (imageData && self.decryptor) { + imageData = [self.decryptor decryptedDataWithData:imageData response:self.response]; + } if (imageData) { /** if you specified to only use cached data via `SDWebImageDownloaderIgnoreCachedResponse`, * then we should check if the cached data is equal to image data diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.h index ed07b2dc0..eabdf61d0 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderRequestModifier.h @@ -17,6 +17,9 @@ typedef NSURLRequest * _Nullable (^SDWebImageDownloaderRequestModifierBlock)(NSU */ @protocol SDWebImageDownloaderRequestModifier +/// Modify the original URL request and return a new one instead. You can modify the HTTP header, cachePolicy, etc for this URL. +/// @param request The original URL request for image loading +/// @note If return nil, the URL request will be cancelled. - (nullable NSURLRequest *)modifiedRequestWithRequest:(nonnull NSURLRequest *)request; @end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.h new file mode 100644 index 000000000..a8bcc0b57 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.h @@ -0,0 +1,35 @@ +/* + * This file is part of the SDWebImage package. + * (c) Olivier Poitrey + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#import +#import "SDWebImageCompat.h" + +typedef NSURLResponse * _Nullable (^SDWebImageDownloaderResponseModifierBlock)(NSURLResponse * _Nonnull response); + +/** + This is the protocol for downloader response modifier. + We can use a block to specify the downloader response modifier. But Using protocol can make this extensible, and allow Swift user to use it easily instead of using `@convention(block)` to store a block into context options. + */ +@protocol SDWebImageDownloaderResponseModifier + +/// Modify the original URL response and return a new response. You can use this to check MIME-Type, mock server response, etc. +/// @param response The original URL response, note for HTTP request it's actually a `NSHTTPURLResponse` instance +/// @note If nil is returned, the image download will marked as cancelled with error `SDWebImageErrorInvalidDownloadResponse` +- (nullable NSURLResponse *)modifiedResponseWithResponse:(nonnull NSURLResponse *)response; + +@end + +/** + A downloader response modifier class with block. + */ +@interface SDWebImageDownloaderResponseModifier : NSObject + +- (nonnull instancetype)initWithBlock:(nonnull SDWebImageDownloaderResponseModifierBlock)block; ++ (nonnull instancetype)responseModifierWithBlock:(nonnull SDWebImageDownloaderResponseModifierBlock)block; + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.m new file mode 100644 index 000000000..0894b953b --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageDownloaderResponseModifier.m @@ -0,0 +1,40 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + + +#import "SDWebImageDownloaderResponseModifier.h" + +@interface SDWebImageDownloaderResponseModifier () + +@property (nonatomic, copy, nonnull) SDWebImageDownloaderResponseModifierBlock block; + +@end + +@implementation SDWebImageDownloaderResponseModifier + +- (instancetype)initWithBlock:(SDWebImageDownloaderResponseModifierBlock)block { + self = [super init]; + if (self) { + self.block = block; + } + return self; +} + ++ (instancetype)responseModifierWithBlock:(SDWebImageDownloaderResponseModifierBlock)block { + SDWebImageDownloaderResponseModifier *responseModifier = [[SDWebImageDownloaderResponseModifier alloc] initWithBlock:block]; + return responseModifier; +} + +- (nullable NSURLResponse *)modifiedResponseWithResponse:(nonnull NSURLResponse *)response { + if (!self.block) { + return nil; + } + return self.block(response); +} + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h index cd8754212..3c08cc9de 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageError.h @@ -22,4 +22,5 @@ typedef NS_ERROR_ENUM(SDWebImageErrorDomain, SDWebImageError) { SDWebImageErrorInvalidDownloadOperation = 2000, // The image download operation is invalid, such as nil operation or unexpected error occur when operation initialized SDWebImageErrorInvalidDownloadStatusCode = 2001, // The image download response a invalid status code. You can check the status code in error's userInfo under `SDWebImageErrorDownloadStatusCodeKey` SDWebImageErrorCancelled = 2002, // The image loading operation is cancelled before finished, during either async disk cache query, or waiting before actual network request. For actual network request error, check `NSURLErrorDomain` error domain and code. + SDWebImageErrorInvalidDownloadResponse = 2003, // When using response modifier, the modified download response is nil and marked as cancelled. }; diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m index e89d72609..49e60994b 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageIndicator.m @@ -47,10 +47,13 @@ static NSInteger UIActivityIndicatorViewStyleLarge = 101; } #if SD_UIKIT +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (void)commonInit { self.indicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; self.indicatorView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin; } +#pragma clang diagnostic pop #endif #if SD_MAC @@ -85,6 +88,8 @@ static NSInteger UIActivityIndicatorViewStyleLarge = 101; @implementation SDWebImageActivityIndicator (Conveniences) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + (SDWebImageActivityIndicator *)grayIndicator { SDWebImageActivityIndicator *indicator = [SDWebImageActivityIndicator new]; #if SD_UIKIT @@ -168,6 +173,7 @@ static NSInteger UIActivityIndicatorViewStyleLarge = 101; #endif return indicator; } +#pragma clang diagnostic pop @end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.h b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.h index d1ab013e1..d940f7422 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.h +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.h @@ -87,7 +87,7 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager]; [manager loadImageWithURL:imageURL options:0 progress:nil - completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { + completed:^(UIImage *image, NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { if (image) { // do something with image } diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m index 693fa6801..97ffb4886 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/SDWebImageManager.m @@ -10,6 +10,7 @@ #import "SDImageCache.h" #import "SDWebImageDownloader.h" #import "UIImage+Metadata.h" +#import "SDAssociatedObject.h" #import "SDWebImageError.h" #import "SDInternalMacros.h" @@ -94,19 +95,45 @@ static id _defaultImageLoader; } - (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url { - return [self cacheKeyForURL:url cacheKeyFilter:self.cacheKeyFilter]; + return [self cacheKeyForURL:url context:nil]; } -- (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url cacheKeyFilter:(id)cacheKeyFilter { +- (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url context:(nullable SDWebImageContext *)context { if (!url) { return @""; } - - if (cacheKeyFilter) { - return [cacheKeyFilter cacheKeyForURL:url]; - } else { - return url.absoluteString; + + NSString *key; + // Cache Key Filter + id cacheKeyFilter = self.cacheKeyFilter; + if (context[SDWebImageContextCacheKeyFilter]) { + cacheKeyFilter = context[SDWebImageContextCacheKeyFilter]; } + if (cacheKeyFilter) { + key = [cacheKeyFilter cacheKeyForURL:url]; + } else { + key = url.absoluteString; + } + // Thumbnail Key Appending + NSValue *thumbnailSizeValue = context[SDWebImageContextImageThumbnailPixelSize]; + if (thumbnailSizeValue != nil) { + CGSize thumbnailSize = CGSizeZero; +#if SD_MAC + thumbnailSize = thumbnailSizeValue.sizeValue; +#else + thumbnailSize = thumbnailSizeValue.CGSizeValue; +#endif + + BOOL preserveAspectRatio = YES; + NSNumber *preserveAspectRatioValue = context[SDWebImageContextImagePreserveAspectRatio]; + if (preserveAspectRatioValue != nil) { + preserveAspectRatio = preserveAspectRatioValue.boolValue; + } + NSString *transformerKey = [NSString stringWithFormat:@"Thumbnail({%f,%f},%d)", thumbnailSize.width, thumbnailSize.height, preserveAspectRatio]; + key = SDTransformedKeyForKey(key, transformerKey); + } + + return key; } - (SDWebImageCombinedOperation *)loadImageWithURL:(NSURL *)url options:(SDWebImageOptions)options progress:(SDImageLoaderProgressBlock)progressBlock completed:(SDInternalCompletionBlock)completedBlock { @@ -187,8 +214,7 @@ static id _defaultImageLoader; // Check whether we should query cache BOOL shouldQueryCache = !SD_OPTIONS_CONTAINS(options, SDWebImageFromLoaderOnly); if (shouldQueryCache) { - id cacheKeyFilter = context[SDWebImageContextCacheKeyFilter]; - NSString *key = [self cacheKeyForURL:url cacheKeyFilter:cacheKeyFilter]; + NSString *key = [self cacheKeyForURL:url context:context]; @weakify(operation); operation.cacheOperation = [self.imageCache queryImageForKey:key options:options context:context completion:^(UIImage * _Nullable cachedImage, NSData * _Nullable cachedData, SDImageCacheType cacheType) { @strongify(operation); @@ -238,7 +264,6 @@ static id _defaultImageLoader; context = [mutableContext copy]; } - // `SDWebImageCombinedOperation` -> `SDWebImageDownloadToken` -> `downloadOperationCancelToken`, which is a `SDCallbacksDictionary` and retain the completed block below, so we need weak-strong again to avoid retain cycle @weakify(operation); operation.loaderOperation = [self.imageLoader requestImageWithURL:url options:options context:context progress:progressBlock completed:^(UIImage *downloadedImage, NSData *downloadedData, NSError *error, BOOL finished) { @strongify(operation); @@ -265,7 +290,7 @@ static id _defaultImageLoader; [self.failedURLs removeObject:url]; SD_UNLOCK(self.failedURLsLock); } - + // Continue store cache process [self callStoreCacheProcessForOperation:operation url:url options:options context:context downloadedImage:downloadedImage downloadedData:downloadedData finished:finished progress:progressBlock completed:completedBlock]; } @@ -303,13 +328,13 @@ static id _defaultImageLoader; if (context[SDWebImageContextOriginalStoreCacheType]) { originalStoreCacheType = [context[SDWebImageContextOriginalStoreCacheType] integerValue]; } - id cacheKeyFilter = context[SDWebImageContextCacheKeyFilter]; - NSString *key = [self cacheKeyForURL:url cacheKeyFilter:cacheKeyFilter]; + NSString *key = [self cacheKeyForURL:url context:context]; id transformer = context[SDWebImageContextImageTransformer]; id cacheSerializer = context[SDWebImageContextCacheSerializer]; BOOL shouldTransformImage = downloadedImage && (!downloadedImage.sd_isAnimated || (options & SDWebImageTransformAnimatedImage)) && transformer; BOOL shouldCacheOriginal = downloadedImage && finished; + BOOL waitStoreCache = SD_OPTIONS_CONTAINS(options, SDWebImageWaitStoreCache); // if available, store original image to cache if (shouldCacheOriginal) { @@ -319,37 +344,72 @@ static id _defaultImageLoader; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ @autoreleasepool { NSData *cacheData = [cacheSerializer cacheDataWithImage:downloadedImage originalData:downloadedData imageURL:url]; - [self.imageCache storeImage:downloadedImage imageData:cacheData forKey:key cacheType:targetStoreCacheType completion:nil]; + [self storeImage:downloadedImage imageData:cacheData forKey:key cacheType:targetStoreCacheType waitStoreCache:waitStoreCache completion:^{ + // Continue transform process + [self callTransformProcessForOperation:operation url:url options:options context:context originalImage:downloadedImage originalData:downloadedData finished:finished progress:progressBlock completed:completedBlock]; + }]; } }); } else { - [self.imageCache storeImage:downloadedImage imageData:downloadedData forKey:key cacheType:targetStoreCacheType completion:nil]; + [self storeImage:downloadedImage imageData:downloadedData forKey:key cacheType:targetStoreCacheType waitStoreCache:waitStoreCache completion:^{ + // Continue transform process + [self callTransformProcessForOperation:operation url:url options:options context:context originalImage:downloadedImage originalData:downloadedData finished:finished progress:progressBlock completed:completedBlock]; + }]; } + } else { + // Continue transform process + [self callTransformProcessForOperation:operation url:url options:options context:context originalImage:downloadedImage originalData:downloadedData finished:finished progress:progressBlock completed:completedBlock]; } +} + +// Transform process +- (void)callTransformProcessForOperation:(nonnull SDWebImageCombinedOperation *)operation + url:(nonnull NSURL *)url + options:(SDWebImageOptions)options + context:(SDWebImageContext *)context + originalImage:(nullable UIImage *)originalImage + originalData:(nullable NSData *)originalData + finished:(BOOL)finished + progress:(nullable SDImageLoaderProgressBlock)progressBlock + completed:(nullable SDInternalCompletionBlock)completedBlock { + // the target image store cache type + SDImageCacheType storeCacheType = SDImageCacheTypeAll; + if (context[SDWebImageContextStoreCacheType]) { + storeCacheType = [context[SDWebImageContextStoreCacheType] integerValue]; + } + NSString *key = [self cacheKeyForURL:url context:context]; + id transformer = context[SDWebImageContextImageTransformer]; + id cacheSerializer = context[SDWebImageContextCacheSerializer]; + BOOL shouldTransformImage = originalImage && (!originalImage.sd_isAnimated || (options & SDWebImageTransformAnimatedImage)) && transformer; + BOOL waitStoreCache = SD_OPTIONS_CONTAINS(options, SDWebImageWaitStoreCache); // if available, store transformed image to cache if (shouldTransformImage) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ @autoreleasepool { - UIImage *transformedImage = [transformer transformedImageWithImage:downloadedImage forKey:key]; + UIImage *transformedImage = [transformer transformedImageWithImage:originalImage forKey:key]; if (transformedImage && finished) { NSString *transformerKey = [transformer transformerKey]; NSString *cacheKey = SDTransformedKeyForKey(key, transformerKey); - BOOL imageWasTransformed = ![transformedImage isEqual:downloadedImage]; + BOOL imageWasTransformed = ![transformedImage isEqual:originalImage]; NSData *cacheData; // pass nil if the image was transformed, so we can recalculate the data from the image if (cacheSerializer && (storeCacheType == SDImageCacheTypeDisk || storeCacheType == SDImageCacheTypeAll)) { - cacheData = [cacheSerializer cacheDataWithImage:transformedImage originalData:(imageWasTransformed ? nil : downloadedData) imageURL:url]; + cacheData = [cacheSerializer cacheDataWithImage:transformedImage originalData:(imageWasTransformed ? nil : originalData) imageURL:url]; } else { - cacheData = (imageWasTransformed ? nil : downloadedData); + cacheData = (imageWasTransformed ? nil : originalData); } - [self.imageCache storeImage:transformedImage imageData:cacheData forKey:cacheKey cacheType:storeCacheType completion:nil]; + // keep the original image format and extended data + SDImageCopyAssociatedObject(originalImage, transformedImage); + [self storeImage:transformedImage imageData:cacheData forKey:cacheKey cacheType:storeCacheType waitStoreCache:waitStoreCache completion:^{ + [self callCompletionBlockForOperation:operation completion:completedBlock image:transformedImage data:originalData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; + }]; + } else { + [self callCompletionBlockForOperation:operation completion:completedBlock image:transformedImage data:originalData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; } - - [self callCompletionBlockForOperation:operation completion:completedBlock image:transformedImage data:downloadedData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; } }); } else { - [self callCompletionBlockForOperation:operation completion:completedBlock image:downloadedImage data:downloadedData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; + [self callCompletionBlockForOperation:operation completion:completedBlock image:originalImage data:originalData error:nil cacheType:SDImageCacheTypeNone finished:finished url:url]; } } @@ -364,6 +424,27 @@ static id _defaultImageLoader; SD_UNLOCK(self.runningOperationsLock); } +- (void)storeImage:(nullable UIImage *)image + imageData:(nullable NSData *)data + forKey:(nullable NSString *)key + cacheType:(SDImageCacheType)cacheType + waitStoreCache:(BOOL)waitStoreCache + completion:(nullable SDWebImageNoParamsBlock)completion { + // Check whether we should wait the store cache finished. If not, callback immediately + [self.imageCache storeImage:image imageData:data forKey:key cacheType:cacheType completion:^{ + if (waitStoreCache) { + if (completion) { + completion(); + } + } + }]; + if (!waitStoreCache) { + if (completion) { + completion(); + } + } +} + - (void)callCompletionBlockForOperation:(nullable SDWebImageCombinedOperation*)operation completion:(nullable SDInternalCompletionBlock)completionBlock error:(nullable NSError *)error diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.h b/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.h new file mode 100644 index 000000000..482c8c40a --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.h @@ -0,0 +1,24 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* (c) Fabrice Aneche +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDWebImageCompat.h" + +@interface UIImage (ExtendedCacheData) + +/** + Read and Write the extended object and bind it to the image. Which can hold some extra metadata like Image's scale factor, URL rich link, date, etc. + The extended object should conforms to NSCoding, which we use `NSKeyedArchiver` and `NSKeyedUnarchiver` to archive it to data, and write to disk cache. + @note The disk cache preserve both of the data and extended data with the same cache key. For manual query, use the `SDDiskCache` protocol method `extendedDataForKey:` instead. + @note You can specify arbitrary object conforms to NSCoding (NSObject protocol here is used to support object using `NS_ROOT_CLASS`, which is not NSObject subclass). If you load image from disk cache, you should check the extended object class to avoid corrupted data. + @warning This object don't need to implements NSSecureCoding (but it's recommended), because we allows arbitrary class. + */ +@property (nonatomic, strong, nullable) id sd_extendedObject; + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.m b/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.m new file mode 100644 index 000000000..05d29cff0 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+ExtendedCacheData.m @@ -0,0 +1,23 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* (c) Fabrice Aneche +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "UIImage+ExtendedCacheData.h" +#import + +@implementation UIImage (ExtendedCacheData) + +- (id)sd_extendedObject { + return objc_getAssociatedObject(self, @selector(sd_extendedObject)); +} + +- (void)setSd_extendedObject:(id)sd_extendedObject { + objc_setAssociatedObject(self, @selector(sd_extendedObject), sd_extendedObject, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m b/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m index 8637b1a24..a01cf12a6 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/UIImage+Transform.m @@ -9,6 +9,7 @@ #import "UIImage+Transform.h" #import "NSImage+Compatibility.h" #import "SDImageGraphics.h" +#import "SDGraphicsImageRenderer.h" #import "NSBezierPath+RoundedCorners.h" #import #if SD_UIKIT || SD_MAC @@ -163,13 +164,29 @@ static inline UIColor * SDGetColorFromPixel(Pixel_8888 pixel, CGBitmapInfo bitma return [UIColor colorWithRed:r green:g blue:b alpha:a]; } +#if SD_UIKIT || SD_MAC +// Create-Rule, caller should call CGImageRelease +static inline CGImageRef _Nullable SDCreateCGImageFromCIImage(CIImage * _Nonnull ciImage) { + CGImageRef imageRef = NULL; + if (@available(iOS 10, macOS 10.12, tvOS 10, *)) { + imageRef = ciImage.CGImage; + } + if (!imageRef) { + CIContext *context = [CIContext context]; + imageRef = [context createCGImage:ciImage fromRect:ciImage.extent]; + } else { + CGImageRetain(imageRef); + } + return imageRef; +} +#endif + @implementation UIImage (Transform) -- (void)sd_drawInRect:(CGRect)rect withScaleMode:(SDImageScaleMode)scaleMode clipsToBounds:(BOOL)clips { +- (void)sd_drawInRect:(CGRect)rect context:(CGContextRef)context scaleMode:(SDImageScaleMode)scaleMode clipsToBounds:(BOOL)clips { CGRect drawRect = SDCGRectFitWithScaleMode(rect, self.size, scaleMode); if (drawRect.size.width == 0 || drawRect.size.height == 0) return; if (clips) { - CGContextRef context = SDGraphicsGetCurrentContext(); if (context) { CGContextSaveGState(context); CGContextAddRect(context, rect); @@ -184,162 +201,215 @@ static inline UIColor * SDGetColorFromPixel(Pixel_8888 pixel, CGBitmapInfo bitma - (nullable UIImage *)sd_resizedImageWithSize:(CGSize)size scaleMode:(SDImageScaleMode)scaleMode { if (size.width <= 0 || size.height <= 0) return nil; - SDGraphicsBeginImageContextWithOptions(size, NO, self.scale); - [self sd_drawInRect:CGRectMake(0, 0, size.width, size.height) withScaleMode:scaleMode clipsToBounds:NO]; - UIImage *image = SDGraphicsGetImageFromCurrentImageContext(); - SDGraphicsEndImageContext(); + SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; + format.scale = self.scale; + SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:size format:format]; + UIImage *image = [renderer imageWithActions:^(CGContextRef _Nonnull context) { + [self sd_drawInRect:CGRectMake(0, 0, size.width, size.height) context:context scaleMode:scaleMode clipsToBounds:NO]; + }]; return image; } - (nullable UIImage *)sd_croppedImageWithRect:(CGRect)rect { - if (!self.CGImage) return nil; rect.origin.x *= self.scale; rect.origin.y *= self.scale; rect.size.width *= self.scale; rect.size.height *= self.scale; if (rect.size.width <= 0 || rect.size.height <= 0) return nil; - CGImageRef imageRef = CGImageCreateWithImageInRect(self.CGImage, rect); + +#if SD_UIKIT || SD_MAC + // CIImage shortcut + if (self.CIImage) { + CGRect croppingRect = CGRectMake(rect.origin.x, self.size.height - CGRectGetMaxY(rect), rect.size.width, rect.size.height); + CIImage *ciImage = [self.CIImage imageByCroppingToRect:croppingRect]; +#if SD_UIKIT + UIImage *image = [UIImage imageWithCIImage:ciImage scale:self.scale orientation:self.imageOrientation]; +#else + UIImage *image = [[UIImage alloc] initWithCIImage:ciImage scale:self.scale orientation:kCGImagePropertyOrientationUp]; +#endif + return image; + } +#endif + + CGImageRef imageRef = self.CGImage; if (!imageRef) { return nil; } + + CGImageRef croppedImageRef = CGImageCreateWithImageInRect(imageRef, rect); + if (!croppedImageRef) { + return nil; + } #if SD_UIKIT || SD_WATCH - UIImage *image = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation]; + UIImage *image = [UIImage imageWithCGImage:croppedImageRef scale:self.scale orientation:self.imageOrientation]; #else - UIImage *image = [[UIImage alloc] initWithCGImage:imageRef scale:self.scale orientation:kCGImagePropertyOrientationUp]; + UIImage *image = [[UIImage alloc] initWithCGImage:croppedImageRef scale:self.scale orientation:kCGImagePropertyOrientationUp]; #endif - CGImageRelease(imageRef); + CGImageRelease(croppedImageRef); return image; } - (nullable UIImage *)sd_roundedCornerImageWithRadius:(CGFloat)cornerRadius corners:(SDRectCorner)corners borderWidth:(CGFloat)borderWidth borderColor:(nullable UIColor *)borderColor { - if (!self.CGImage) return nil; - SDGraphicsBeginImageContextWithOptions(self.size, NO, self.scale); - CGContextRef context = SDGraphicsGetCurrentContext(); - CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height); - - CGFloat minSize = MIN(self.size.width, self.size.height); - if (borderWidth < minSize / 2) { -#if SD_UIKIT || SD_WATCH - UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectInset(rect, borderWidth, borderWidth) byRoundingCorners:corners cornerRadii:CGSizeMake(cornerRadius, cornerRadius)]; -#else - NSBezierPath *path = [NSBezierPath sd_bezierPathWithRoundedRect:CGRectInset(rect, borderWidth, borderWidth) byRoundingCorners:corners cornerRadius:cornerRadius]; -#endif - [path closePath]; + SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; + format.scale = self.scale; + SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:self.size format:format]; + UIImage *image = [renderer imageWithActions:^(CGContextRef _Nonnull context) { + CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height); - CGContextSaveGState(context); - [path addClip]; - [self drawInRect:rect]; - CGContextRestoreGState(context); - } - - if (borderColor && borderWidth < minSize / 2 && borderWidth > 0) { - CGFloat strokeInset = (floor(borderWidth * self.scale) + 0.5) / self.scale; - CGRect strokeRect = CGRectInset(rect, strokeInset, strokeInset); - CGFloat strokeRadius = cornerRadius > self.scale / 2 ? cornerRadius - self.scale / 2 : 0; + CGFloat minSize = MIN(self.size.width, self.size.height); + if (borderWidth < minSize / 2) { #if SD_UIKIT || SD_WATCH - UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:strokeRect byRoundingCorners:corners cornerRadii:CGSizeMake(strokeRadius, strokeRadius)]; + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectInset(rect, borderWidth, borderWidth) byRoundingCorners:corners cornerRadii:CGSizeMake(cornerRadius, cornerRadius)]; #else - NSBezierPath *path = [NSBezierPath sd_bezierPathWithRoundedRect:strokeRect byRoundingCorners:corners cornerRadius:strokeRadius]; + NSBezierPath *path = [NSBezierPath sd_bezierPathWithRoundedRect:CGRectInset(rect, borderWidth, borderWidth) byRoundingCorners:corners cornerRadius:cornerRadius]; #endif - [path closePath]; + [path closePath]; + + CGContextSaveGState(context); + [path addClip]; + [self drawInRect:rect]; + CGContextRestoreGState(context); + } - path.lineWidth = borderWidth; - [borderColor setStroke]; - [path stroke]; - } - - UIImage *image = SDGraphicsGetImageFromCurrentImageContext(); - SDGraphicsEndImageContext(); + if (borderColor && borderWidth < minSize / 2 && borderWidth > 0) { + CGFloat strokeInset = (floor(borderWidth * self.scale) + 0.5) / self.scale; + CGRect strokeRect = CGRectInset(rect, strokeInset, strokeInset); + CGFloat strokeRadius = cornerRadius > self.scale / 2 ? cornerRadius - self.scale / 2 : 0; +#if SD_UIKIT || SD_WATCH + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:strokeRect byRoundingCorners:corners cornerRadii:CGSizeMake(strokeRadius, strokeRadius)]; +#else + NSBezierPath *path = [NSBezierPath sd_bezierPathWithRoundedRect:strokeRect byRoundingCorners:corners cornerRadius:strokeRadius]; +#endif + [path closePath]; + + path.lineWidth = borderWidth; + [borderColor setStroke]; + [path stroke]; + } + }]; return image; } - (nullable UIImage *)sd_rotatedImageWithAngle:(CGFloat)angle fitSize:(BOOL)fitSize { - if (!self.CGImage) return nil; - size_t width = (size_t)CGImageGetWidth(self.CGImage); - size_t height = (size_t)CGImageGetHeight(self.CGImage); - CGRect newRect = CGRectApplyAffineTransform(CGRectMake(0., 0., width, height), + size_t width = self.size.width; + size_t height = self.size.height; + CGRect newRect = CGRectApplyAffineTransform(CGRectMake(0, 0, width, height), fitSize ? CGAffineTransformMakeRotation(angle) : CGAffineTransformIdentity); - - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - CGContextRef context = CGBitmapContextCreate(NULL, - (size_t)newRect.size.width, - (size_t)newRect.size.height, - 8, - (size_t)newRect.size.width * 4, - colorSpace, - kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst); - CGColorSpaceRelease(colorSpace); - if (!context) return nil; - - CGContextSetShouldAntialias(context, true); - CGContextSetAllowsAntialiasing(context, true); - CGContextSetInterpolationQuality(context, kCGInterpolationHigh); - - CGContextTranslateCTM(context, +(newRect.size.width * 0.5), +(newRect.size.height * 0.5)); - CGContextRotateCTM(context, angle); - - CGContextDrawImage(context, CGRectMake(-(width * 0.5), -(height * 0.5), width, height), self.CGImage); - CGImageRef imgRef = CGBitmapContextCreateImage(context); + +#if SD_UIKIT || SD_MAC + // CIImage shortcut + if (self.CIImage) { + CIImage *ciImage = self.CIImage; + if (fitSize) { + CGAffineTransform transform = CGAffineTransformMakeRotation(angle); + ciImage = [ciImage imageByApplyingTransform:transform]; + } else { + CIFilter *filter = [CIFilter filterWithName:@"CIStraightenFilter"]; + [filter setValue:ciImage forKey:kCIInputImageKey]; + [filter setValue:@(angle) forKey:kCIInputAngleKey]; + ciImage = filter.outputImage; + } #if SD_UIKIT || SD_WATCH - UIImage *img = [UIImage imageWithCGImage:imgRef scale:self.scale orientation:self.imageOrientation]; + UIImage *image = [UIImage imageWithCIImage:ciImage scale:self.scale orientation:self.imageOrientation]; #else - UIImage *img = [[UIImage alloc] initWithCGImage:imgRef scale:self.scale orientation:kCGImagePropertyOrientationUp]; + UIImage *image = [[UIImage alloc] initWithCIImage:ciImage scale:self.scale orientation:kCGImagePropertyOrientationUp]; #endif - CGImageRelease(imgRef); - CGContextRelease(context); - return img; + return image; + } +#endif + + SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; + format.scale = self.scale; + SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:newRect.size format:format]; + UIImage *image = [renderer imageWithActions:^(CGContextRef _Nonnull context) { + CGContextSetShouldAntialias(context, true); + CGContextSetAllowsAntialiasing(context, true); + CGContextSetInterpolationQuality(context, kCGInterpolationHigh); + CGContextTranslateCTM(context, +(newRect.size.width * 0.5), +(newRect.size.height * 0.5)); +#if SD_UIKIT || SD_WATCH + // Use UIKit coordinate system counterclockwise (⟲) + CGContextRotateCTM(context, -angle); +#else + CGContextRotateCTM(context, angle); +#endif + + [self drawInRect:CGRectMake(-(width * 0.5), -(height * 0.5), width, height)]; + }]; + return image; } - (nullable UIImage *)sd_flippedImageWithHorizontal:(BOOL)horizontal vertical:(BOOL)vertical { - if (!self.CGImage) return nil; - size_t width = (size_t)CGImageGetWidth(self.CGImage); - size_t height = (size_t)CGImageGetHeight(self.CGImage); - size_t bytesPerRow = width * 4; - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - CGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst); - CGColorSpaceRelease(colorSpace); - if (!context) return nil; - - CGContextDrawImage(context, CGRectMake(0, 0, width, height), self.CGImage); - UInt8 *data = (UInt8 *)CGBitmapContextGetData(context); - if (!data) { - CGContextRelease(context); - return nil; - } - vImage_Buffer src = { data, height, width, bytesPerRow }; - vImage_Buffer dest = { data, height, width, bytesPerRow }; - if (vertical) { - vImageVerticalReflect_ARGB8888(&src, &dest, kvImageBackgroundColorFill); - } - if (horizontal) { - vImageHorizontalReflect_ARGB8888(&src, &dest, kvImageBackgroundColorFill); - } - CGImageRef imgRef = CGBitmapContextCreateImage(context); - CGContextRelease(context); -#if SD_UIKIT || SD_WATCH - UIImage *img = [UIImage imageWithCGImage:imgRef scale:self.scale orientation:self.imageOrientation]; + size_t width = self.size.width; + size_t height = self.size.height; + +#if SD_UIKIT || SD_MAC + // CIImage shortcut + if (self.CIImage) { + CGAffineTransform transform = CGAffineTransformIdentity; + // Use UIKit coordinate system + if (horizontal) { + CGAffineTransform flipHorizontal = CGAffineTransformMake(-1, 0, 0, 1, width, 0); + transform = CGAffineTransformConcat(transform, flipHorizontal); + } + if (vertical) { + CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, height); + transform = CGAffineTransformConcat(transform, flipVertical); + } + CIImage *ciImage = [self.CIImage imageByApplyingTransform:transform]; +#if SD_UIKIT + UIImage *image = [UIImage imageWithCIImage:ciImage scale:self.scale orientation:self.imageOrientation]; #else - UIImage *img = [[UIImage alloc] initWithCGImage:imgRef scale:self.scale orientation:kCGImagePropertyOrientationUp]; + UIImage *image = [[UIImage alloc] initWithCIImage:ciImage scale:self.scale orientation:kCGImagePropertyOrientationUp]; #endif - CGImageRelease(imgRef); - return img; + return image; + } +#endif + + SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; + format.scale = self.scale; + SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:self.size format:format]; + UIImage *image = [renderer imageWithActions:^(CGContextRef _Nonnull context) { + // Use UIKit coordinate system + if (horizontal) { + CGAffineTransform flipHorizontal = CGAffineTransformMake(-1, 0, 0, 1, width, 0); + CGContextConcatCTM(context, flipHorizontal); + } + if (vertical) { + CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, height); + CGContextConcatCTM(context, flipVertical); + } + [self drawInRect:CGRectMake(0, 0, width, height)]; + }]; + return image; } #pragma mark - Image Blending - (nullable UIImage *)sd_tintedImageWithColor:(nonnull UIColor *)tintColor { - if (!self.CGImage) return nil; - if (!tintColor.CGColor) return nil; - BOOL hasTint = CGColorGetAlpha(tintColor.CGColor) > __FLT_EPSILON__; if (!hasTint) { -#if SD_UIKIT || SD_WATCH - return [UIImage imageWithCGImage:self.CGImage scale:self.scale orientation:self.imageOrientation]; -#else - return [[UIImage alloc] initWithCGImage:self.CGImage scale:self.scale orientation:kCGImagePropertyOrientationUp]; -#endif + return self; } +#if SD_UIKIT || SD_MAC + // CIImage shortcut + if (self.CIImage) { + CIImage *ciImage = self.CIImage; + CIImage *colorImage = [CIImage imageWithColor:[[CIColor alloc] initWithColor:tintColor]]; + colorImage = [colorImage imageByCroppingToRect:ciImage.extent]; + CIFilter *filter = [CIFilter filterWithName:@"CISourceAtopCompositing"]; + [filter setValue:colorImage forKey:kCIInputImageKey]; + [filter setValue:ciImage forKey:kCIInputBackgroundImageKey]; + ciImage = filter.outputImage; +#if SD_UIKIT + UIImage *image = [UIImage imageWithCIImage:ciImage scale:self.scale orientation:self.imageOrientation]; +#else + UIImage *image = [[UIImage alloc] initWithCIImage:ciImage scale:self.scale orientation:kCGImagePropertyOrientationUp]; +#endif + return image; + } +#endif + CGSize size = self.size; CGRect rect = { CGPointZero, size }; CGFloat scale = self.scale; @@ -347,23 +417,30 @@ static inline UIColor * SDGetColorFromPixel(Pixel_8888 pixel, CGBitmapInfo bitma // blend mode, see https://en.wikipedia.org/wiki/Alpha_compositing CGBlendMode blendMode = kCGBlendModeSourceAtop; - SDGraphicsBeginImageContextWithOptions(size, NO, scale); - CGContextRef context = SDGraphicsGetCurrentContext(); - [self drawInRect:rect]; - CGContextSetBlendMode(context, blendMode); - CGContextSetFillColorWithColor(context, tintColor.CGColor); - CGContextFillRect(context, rect); - UIImage *image = SDGraphicsGetImageFromCurrentImageContext(); - SDGraphicsEndImageContext(); - + SDGraphicsImageRendererFormat *format = [[SDGraphicsImageRendererFormat alloc] init]; + format.scale = scale; + SDGraphicsImageRenderer *renderer = [[SDGraphicsImageRenderer alloc] initWithSize:size format:format]; + UIImage *image = [renderer imageWithActions:^(CGContextRef _Nonnull context) { + [self drawInRect:rect]; + CGContextSetBlendMode(context, blendMode); + CGContextSetFillColorWithColor(context, tintColor.CGColor); + CGContextFillRect(context, rect); + }]; return image; } - (nullable UIColor *)sd_colorAtPoint:(CGPoint)point { - if (!self) { - return nil; + CGImageRef imageRef = NULL; + // CIImage compatible +#if SD_UIKIT || SD_MAC + if (self.CIImage) { + imageRef = SDCreateCGImageFromCIImage(self.CIImage); + } +#endif + if (!imageRef) { + imageRef = self.CGImage; + CGImageRetain(imageRef); } - CGImageRef imageRef = self.CGImage; if (!imageRef) { return nil; } @@ -372,42 +449,53 @@ static inline UIColor * SDGetColorFromPixel(Pixel_8888 pixel, CGBitmapInfo bitma CGFloat width = CGImageGetWidth(imageRef); CGFloat height = CGImageGetHeight(imageRef); if (point.x < 0 || point.y < 0 || point.x >= width || point.y >= height) { + CGImageRelease(imageRef); return nil; } // Get pixels CGDataProviderRef provider = CGImageGetDataProvider(imageRef); if (!provider) { + CGImageRelease(imageRef); return nil; } CFDataRef data = CGDataProviderCopyData(provider); if (!data) { + CGImageRelease(imageRef); return nil; } // Get pixel at point size_t bytesPerRow = CGImageGetBytesPerRow(imageRef); size_t components = CGImageGetBitsPerPixel(imageRef) / CGImageGetBitsPerComponent(imageRef); + CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef); CFRange range = CFRangeMake(bytesPerRow * point.y + components * point.x, 4); if (CFDataGetLength(data) < range.location + range.length) { CFRelease(data); + CGImageRelease(imageRef); return nil; } Pixel_8888 pixel = {0}; CFDataGetBytes(data, range, pixel); CFRelease(data); - + CGImageRelease(imageRef); // Convert to color - CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef); return SDGetColorFromPixel(pixel, bitmapInfo); } - (nullable NSArray *)sd_colorsWithRect:(CGRect)rect { - if (!self) { - return nil; + CGImageRef imageRef = NULL; + // CIImage compatible +#if SD_UIKIT || SD_MAC + if (self.CIImage) { + imageRef = SDCreateCGImageFromCIImage(self.CIImage); + } +#endif + if (!imageRef) { + imageRef = self.CGImage; + CGImageRetain(imageRef); } - CGImageRef imageRef = self.CGImage; if (!imageRef) { return nil; } @@ -416,16 +504,19 @@ static inline UIColor * SDGetColorFromPixel(Pixel_8888 pixel, CGBitmapInfo bitma CGFloat width = CGImageGetWidth(imageRef); CGFloat height = CGImageGetHeight(imageRef); if (CGRectGetWidth(rect) <= 0 || CGRectGetHeight(rect) <= 0 || CGRectGetMinX(rect) < 0 || CGRectGetMinY(rect) < 0 || CGRectGetMaxX(rect) > width || CGRectGetMaxY(rect) > height) { + CGImageRelease(imageRef); return nil; } // Get pixels CGDataProviderRef provider = CGImageGetDataProvider(imageRef); if (!provider) { + CGImageRelease(imageRef); return nil; } CFDataRef data = CGDataProviderCopyData(provider); if (!data) { + CGImageRelease(imageRef); return nil; } @@ -437,6 +528,7 @@ static inline UIColor * SDGetColorFromPixel(Pixel_8888 pixel, CGBitmapInfo bitma size_t end = bytesPerRow * (CGRectGetMaxY(rect) - 1) + components * CGRectGetMaxX(rect); if (CFDataGetLength(data) < (CFIndex)end) { CFRelease(data); + CGImageRelease(imageRef); return nil; } @@ -460,29 +552,53 @@ static inline UIColor * SDGetColorFromPixel(Pixel_8888 pixel, CGBitmapInfo bitma [colors addObject:color]; } CFRelease(data); + CGImageRelease(imageRef); return [colors copy]; } #pragma mark - Image Effect -// We use vImage to do box convolve for performance and support for watchOS. However, you can just use `CIFilter.CIBoxBlur`. For other blur effect, use any filter in `CICategoryBlur` +// We use vImage to do box convolve for performance and support for watchOS. However, you can just use `CIFilter.CIGaussianBlur`. For other blur effect, use any filter in `CICategoryBlur` - (nullable UIImage *)sd_blurredImageWithRadius:(CGFloat)blurRadius { if (self.size.width < 1 || self.size.height < 1) { return nil; } - if (!self.CGImage) { - return nil; - } - BOOL hasBlur = blurRadius > __FLT_EPSILON__; if (!hasBlur) { return self; } CGFloat scale = self.scale; + CGFloat inputRadius = blurRadius * scale; +#if SD_UIKIT || SD_MAC + if (self.CIImage) { + CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"]; + [filter setValue:self.CIImage forKey:kCIInputImageKey]; + [filter setValue:@(inputRadius) forKey:kCIInputRadiusKey]; + CIImage *ciImage = filter.outputImage; + ciImage = [ciImage imageByCroppingToRect:CGRectMake(0, 0, self.size.width, self.size.height)]; +#if SD_UIKIT + UIImage *image = [UIImage imageWithCIImage:ciImage scale:self.scale orientation:self.imageOrientation]; +#else + UIImage *image = [[UIImage alloc] initWithCIImage:ciImage scale:self.scale orientation:kCGImagePropertyOrientationUp]; +#endif + return image; + } +#endif + CGImageRef imageRef = self.CGImage; + //convert to BGRA if it isn't + if (CGImageGetBitsPerPixel(imageRef) != 32 || + CGImageGetBitsPerComponent(imageRef) != 8 || + !((CGImageGetBitmapInfo(imageRef) & kCGBitmapAlphaInfoMask))) { + SDGraphicsBeginImageContextWithOptions(self.size, NO, self.scale); + [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; + imageRef = SDGraphicsGetImageFromCurrentImageContext().CGImage; + SDGraphicsEndImageContext(); + } + vImage_Buffer effect = {}, scratch = {}; vImage_Buffer *input = NULL, *output = NULL; @@ -490,14 +606,14 @@ static inline UIColor * SDGetColorFromPixel(Pixel_8888 pixel, CGBitmapInfo bitma .bitsPerComponent = 8, .bitsPerPixel = 32, .colorSpace = NULL, - .bitmapInfo = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little, //requests a BGRA buffer. + .bitmapInfo = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host, //requests a BGRA buffer. .version = 0, .decode = NULL, .renderingIntent = kCGRenderingIntentDefault }; vImage_Error err; - err = vImageBuffer_InitWithCGImage(&effect, &format, NULL, imageRef, kvImagePrintDiagnosticsToConsole); + err = vImageBuffer_InitWithCGImage(&effect, &format, NULL, imageRef, kvImageNoFlags); if (err != kvImageNoError) { NSLog(@"UIImage+Transform error: vImageBuffer_InitWithCGImage returned error code %zi for inputImage: %@", err, self); return nil; @@ -524,9 +640,8 @@ static inline UIColor * SDGetColorFromPixel(Pixel_8888 pixel, CGBitmapInfo bitma // // ... if d is odd, use three box-blurs of size 'd', centered on the output pixel. // - CGFloat inputRadius = blurRadius * scale; if (inputRadius - 2.0 < __FLT_EPSILON__) inputRadius = 2.0; - uint32_t radius = floor((inputRadius * 3.0 * sqrt(2 * M_PI) / 4 + 0.5) / 2); + uint32_t radius = floor(inputRadius * 3.0 * sqrt(2 * M_PI) / 4 + 0.5); radius |= 1; // force radius to be odd so that the three box-blur methodology works. int iterations; if (blurRadius * scale < 0.5) iterations = 1; @@ -562,12 +677,19 @@ static inline UIColor * SDGetColorFromPixel(Pixel_8888 pixel, CGBitmapInfo bitma #if SD_UIKIT || SD_MAC - (nullable UIImage *)sd_filteredImageWithFilter:(nonnull CIFilter *)filter { - if (!self.CGImage) return nil; - - CIContext *context = [CIContext context]; - CIImage *inputImage = [CIImage imageWithCGImage:self.CGImage]; + CIImage *inputImage; + if (self.CIImage) { + inputImage = self.CIImage; + } else { + CGImageRef imageRef = self.CGImage; + if (!imageRef) { + return nil; + } + inputImage = [CIImage imageWithCGImage:imageRef]; + } if (!inputImage) return nil; + CIContext *context = [CIContext context]; [filter setValue:inputImage forKey:kCIInputImageKey]; CIImage *outputImage = filter.outputImage; if (!outputImage) return nil; diff --git a/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m b/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m index 3019b0e06..311dd1baf 100644 --- a/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m +++ b/ios/Pods/SDWebImage/SDWebImage/Core/UIView+WebCache.m @@ -324,9 +324,7 @@ const int64_t SDWebImageProgressUnitCountUnknown = 1LL; } // Center the indicator view #if SD_MAC - CGPoint center = CGPointMake(NSMidX(self.bounds), NSMidY(self.bounds)); - NSRect frame = view.frame; - view.frame = NSMakeRect(center.x - NSMidX(frame), center.y - NSMidY(frame), NSWidth(frame), NSHeight(frame)); + [view setFrameOrigin:CGPointMake(round((NSWidth(self.bounds) - NSWidth(view.frame)) / 2), round((NSHeight(self.bounds) - NSHeight(view.frame)) / 2))]; #else view.center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)); #endif diff --git a/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.h b/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.h new file mode 100644 index 000000000..199cf4fce --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.h @@ -0,0 +1,14 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDWebImageCompat.h" + +/// Copy the associated object from source image to target image. The associated object including all the category read/write properties. +/// @param source source +/// @param target target +FOUNDATION_EXPORT void SDImageCopyAssociatedObject(UIImage * _Nullable source, UIImage * _Nullable target); diff --git a/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m b/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m new file mode 100644 index 000000000..a7c70763c --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Private/SDAssociatedObject.m @@ -0,0 +1,27 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDAssociatedObject.h" +#import "UIImage+Metadata.h" +#import "UIImage+ExtendedCacheData.h" +#import "UIImage+MemoryCacheCost.h" +#import "UIImage+ForceDecode.h" + +void SDImageCopyAssociatedObject(UIImage * _Nullable source, UIImage * _Nullable target) { + if (!source || !target) { + return; + } + // Image Metadata + target.sd_isIncremental = source.sd_isIncremental; + target.sd_imageLoopCount = source.sd_imageLoopCount; + target.sd_imageFormat = source.sd_imageFormat; + // Force Decode + target.sd_isDecoded = source.sd_isDecoded; + // Extended Cache Data + target.sd_extendedObject = source.sd_extendedObject; +} diff --git a/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.h b/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.h new file mode 100644 index 000000000..740fb2e39 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.h @@ -0,0 +1,17 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDWebImageCompat.h" + +@interface SDDeviceHelper : NSObject + ++ (NSUInteger)totalMemory; ++ (NSUInteger)freeMemory; + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.m b/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.m new file mode 100644 index 000000000..83d022967 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Private/SDDeviceHelper.m @@ -0,0 +1,32 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDDeviceHelper.h" +#import + +@implementation SDDeviceHelper + ++ (NSUInteger)totalMemory { + return (NSUInteger)[[NSProcessInfo processInfo] physicalMemory]; +} + ++ (NSUInteger)freeMemory { + mach_port_t host_port = mach_host_self(); + mach_msg_type_number_t host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t); + vm_size_t page_size; + vm_statistics_data_t vm_stat; + kern_return_t kern; + + kern = host_page_size(host_port, &page_size); + if (kern != KERN_SUCCESS) return 0; + kern = host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size); + if (kern != KERN_SUCCESS) return 0; + return vm_stat.free_count * page_size; +} + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.h b/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.h new file mode 100644 index 000000000..60d4e80ef --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.h @@ -0,0 +1,30 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDWebImageCompat.h" + +// Cross-platform display link wrapper. Do not retain the target +// Use `CADisplayLink` on iOS/tvOS, `CVDisplayLink` on macOS, `NSTimer` on watchOS + +@interface SDDisplayLink : NSObject + +@property (readonly, nonatomic, weak, nullable) id target; +@property (readonly, nonatomic, assign, nonnull) SEL selector; +@property (readonly, nonatomic) CFTimeInterval duration; +@property (readonly, nonatomic) BOOL isRunning; + ++ (nonnull instancetype)displayLinkWithTarget:(nonnull id)target selector:(nonnull SEL)sel; + +- (void)addToRunLoop:(nonnull NSRunLoop *)runloop forMode:(nonnull NSRunLoopMode)mode; +- (void)removeFromRunLoop:(nonnull NSRunLoop *)runloop forMode:(nonnull NSRunLoopMode)mode; + +- (void)start; +- (void)stop; + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m b/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m new file mode 100644 index 000000000..8ff0fc160 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Private/SDDisplayLink.m @@ -0,0 +1,222 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import "SDDisplayLink.h" +#import "SDWeakProxy.h" +#if SD_MAC +#import +#elif SD_IOS || SD_TV +#import +#endif + +#if SD_MAC +static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeStamp *inNow, const CVTimeStamp *inOutputTime, CVOptionFlags flagsIn, CVOptionFlags *flagsOut, void *displayLinkContext); +#endif + +#define kSDDisplayLinkInterval 1.0 / 60 + +@interface SDDisplayLink () + +#if SD_MAC +@property (nonatomic, assign) CVDisplayLinkRef displayLink; +@property (nonatomic, assign) CVTimeStamp outputTime; +@property (nonatomic, copy) NSRunLoopMode runloopMode; +#elif SD_IOS || SD_TV +@property (nonatomic, strong) CADisplayLink *displayLink; +#else +@property (nonatomic, strong) NSTimer *displayLink; +@property (nonatomic, strong) NSRunLoop *runloop; +@property (nonatomic, copy) NSRunLoopMode runloopMode; +@property (nonatomic, assign) NSTimeInterval currentFireDate; +#endif + +@end + +@implementation SDDisplayLink + +- (void)dealloc { +#if SD_MAC + if (_displayLink) { + CVDisplayLinkRelease(_displayLink); + _displayLink = NULL; + } +#elif SD_IOS || SD_TV + [_displayLink invalidate]; + _displayLink = nil; +#else + [_displayLink invalidate]; + _displayLink = nil; +#endif +} + +- (instancetype)initWithTarget:(id)target selector:(SEL)sel { + self = [super init]; + if (self) { + _target = target; + _selector = sel; +#if SD_MAC + CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink); + CVDisplayLinkSetOutputCallback(_displayLink, DisplayLinkCallback, (__bridge void *)self); +#elif SD_IOS || SD_TV + SDWeakProxy *weakProxy = [SDWeakProxy proxyWithTarget:self]; + _displayLink = [CADisplayLink displayLinkWithTarget:weakProxy selector:@selector(displayLinkDidRefresh:)]; +#else + SDWeakProxy *weakProxy = [SDWeakProxy proxyWithTarget:self]; + _displayLink = [NSTimer timerWithTimeInterval:kSDDisplayLinkInterval target:weakProxy selector:@selector(displayLinkDidRefresh:) userInfo:nil repeats:YES]; +#endif + } + return self; +} + ++ (instancetype)displayLinkWithTarget:(id)target selector:(SEL)sel { + SDDisplayLink *displayLink = [[SDDisplayLink alloc] initWithTarget:target selector:sel]; + return displayLink; +} + +- (CFTimeInterval)duration { +#if SD_MAC + CVTimeStamp outputTime = self.outputTime; + NSTimeInterval duration = 0; + double periodPerSecond = (double)outputTime.videoTimeScale * outputTime.rateScalar; + if (periodPerSecond > 0) { + duration = (double)outputTime.videoRefreshPeriod / periodPerSecond; + } +#elif SD_IOS || SD_TV +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + NSTimeInterval duration = self.displayLink.duration * self.displayLink.frameInterval; +#pragma clang diagnostic pop +#else + NSTimeInterval duration = 0; + if (self.displayLink.isValid && self.currentFireDate != 0) { + NSTimeInterval nextFireDate = CFRunLoopTimerGetNextFireDate((__bridge CFRunLoopTimerRef)self.displayLink); + duration = nextFireDate - self.currentFireDate; + } +#endif + if (duration == 0) { + duration = kSDDisplayLinkInterval; + } + return duration; +} + +- (BOOL)isRunning { +#if SD_MAC + return CVDisplayLinkIsRunning(self.displayLink); +#elif SD_IOS || SD_TV + return !self.displayLink.isPaused; +#else + return self.displayLink.isValid; +#endif +} + +- (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode { + if (!runloop || !mode) { + return; + } +#if SD_MAC + self.runloopMode = mode; +#elif SD_IOS || SD_TV + [self.displayLink addToRunLoop:runloop forMode:mode]; +#else + self.runloop = runloop; + self.runloopMode = mode; + CFRunLoopMode cfMode; + if ([mode isEqualToString:NSDefaultRunLoopMode]) { + cfMode = kCFRunLoopDefaultMode; + } else if ([mode isEqualToString:NSRunLoopCommonModes]) { + cfMode = kCFRunLoopCommonModes; + } else { + cfMode = (__bridge CFStringRef)mode; + } + CFRunLoopAddTimer(runloop.getCFRunLoop, (__bridge CFRunLoopTimerRef)self.displayLink, cfMode); +#endif +} + +- (void)removeFromRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode { + if (!runloop || !mode) { + return; + } +#if SD_MAC + self.runloopMode = nil; +#elif SD_IOS || SD_TV + [self.displayLink removeFromRunLoop:runloop forMode:mode]; +#else + self.runloop = nil; + self.runloopMode = nil; + CFRunLoopMode cfMode; + if ([mode isEqualToString:NSDefaultRunLoopMode]) { + cfMode = kCFRunLoopDefaultMode; + } else if ([mode isEqualToString:NSRunLoopCommonModes]) { + cfMode = kCFRunLoopCommonModes; + } else { + cfMode = (__bridge CFStringRef)mode; + } + CFRunLoopRemoveTimer(runloop.getCFRunLoop, (__bridge CFRunLoopTimerRef)self.displayLink, cfMode); +#endif +} + +- (void)start { +#if SD_MAC + CVDisplayLinkStart(self.displayLink); +#elif SD_IOS || SD_TV + self.displayLink.paused = NO; +#else + if (self.displayLink.isValid) { + [self.displayLink fire]; + } else { + SDWeakProxy *weakProxy = [SDWeakProxy proxyWithTarget:self]; + self.displayLink = [NSTimer timerWithTimeInterval:kSDDisplayLinkInterval target:weakProxy selector:@selector(displayLinkDidRefresh:) userInfo:nil repeats:YES]; + [self addToRunLoop:self.runloop forMode:self.runloopMode]; + } +#endif +} + +- (void)stop { +#if SD_MAC + CVDisplayLinkStop(self.displayLink); +#elif SD_IOS || SD_TV + self.displayLink.paused = YES; +#else + [self.displayLink invalidate]; +#endif +} + +- (void)displayLinkDidRefresh:(id)displayLink { +#if SD_MAC + // CVDisplayLink does not use runloop, but we can provide similar behavior for modes + // May use `default` runloop to avoid extra callback when in `eventTracking` (mouse drag, scroll) or `modalPanel` (modal panel) + NSString *runloopMode = self.runloopMode; + if (![runloopMode isEqualToString:NSRunLoopCommonModes] && ![runloopMode isEqualToString:NSRunLoop.mainRunLoop.currentMode]) { + return; + } +#endif +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" + [_target performSelector:_selector withObject:self]; +#pragma clang diagnostic pop +#if SD_WATCH + self.currentFireDate = CFRunLoopTimerGetNextFireDate((__bridge CFRunLoopTimerRef)self.displayLink); +#endif +} + +@end + +#if SD_MAC +static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeStamp *inNow, const CVTimeStamp *inOutputTime, CVOptionFlags flagsIn, CVOptionFlags *flagsOut, void *displayLinkContext) { + // CVDisplayLink callback is not on main queue + SDDisplayLink *object = (__bridge SDDisplayLink *)displayLinkContext; + if (inOutputTime) { + object.outputTime = *inOutputTime; + } + __weak SDDisplayLink *weakObject = object; + dispatch_async(dispatch_get_main_queue(), ^{ + [weakObject displayLinkDidRefresh:(__bridge id)(displayLink)]; + }); + return kCVReturnSuccess; +} +#endif diff --git a/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.h b/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.h new file mode 100644 index 000000000..1e66ded78 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.h @@ -0,0 +1,18 @@ +// +// This file is from https://gist.github.com/zydeco/6292773 +// +// Created by Jesús A. Álvarez on 2008-12-17. +// Copyright 2008-2009 namedfork.net. All rights reserved. +// + +#import + +@interface SDFileAttributeHelper : NSObject + ++ (NSArray*)extendedAttributeNamesAtPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err; ++ (BOOL)hasExtendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err; ++ (NSData*)extendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err; ++ (BOOL)setExtendedAttribute:(NSString*)name value:(NSData*)value atPath:(NSString*)path traverseLink:(BOOL)follow overwrite:(BOOL)overwrite error:(NSError**)err; ++ (BOOL)removeExtendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err; + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.m b/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.m new file mode 100644 index 000000000..fcb8ad473 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Private/SDFileAttributeHelper.m @@ -0,0 +1,127 @@ +// +// This file is from https://gist.github.com/zydeco/6292773 +// +// Created by Jesús A. Álvarez on 2008-12-17. +// Copyright 2008-2009 namedfork.net. All rights reserved. +// + +#import "SDFileAttributeHelper.h" +#import + +@implementation SDFileAttributeHelper + ++ (NSArray*)extendedAttributeNamesAtPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err { + int flags = follow? 0 : XATTR_NOFOLLOW; + + // get size of name list + ssize_t nameBuffLen = listxattr([path fileSystemRepresentation], NULL, 0, flags); + if (nameBuffLen == -1) { + if (err) *err = [NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo: + [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String:strerror(errno)], @"error", + @"listxattr", @"function", + path, @":path", + [NSNumber numberWithBool:follow], @":traverseLink", + nil] + ]; + return nil; + } else if (nameBuffLen == 0) return [NSArray array]; + + // get name list + NSMutableData *nameBuff = [NSMutableData dataWithLength:nameBuffLen]; + listxattr([path fileSystemRepresentation], [nameBuff mutableBytes], nameBuffLen, flags); + + // convert to array + NSMutableArray * names = [NSMutableArray arrayWithCapacity:5]; + char *nextName, *endOfNames = [nameBuff mutableBytes] + nameBuffLen; + for(nextName = [nameBuff mutableBytes]; nextName < endOfNames; nextName += 1+strlen(nextName)) + [names addObject:[NSString stringWithUTF8String:nextName]]; + return [NSArray arrayWithArray:names]; +} + ++ (BOOL)hasExtendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err { + int flags = follow? 0 : XATTR_NOFOLLOW; + + // get size of name list + ssize_t nameBuffLen = listxattr([path fileSystemRepresentation], NULL, 0, flags); + if (nameBuffLen == -1) { + if (err) *err = [NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo: + [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String:strerror(errno)], @"error", + @"listxattr", @"function", + path, @":path", + [NSNumber numberWithBool:follow], @":traverseLink", + nil] + ]; + return NO; + } else if (nameBuffLen == 0) return NO; + + // get name list + NSMutableData *nameBuff = [NSMutableData dataWithLength:nameBuffLen]; + listxattr([path fileSystemRepresentation], [nameBuff mutableBytes], nameBuffLen, flags); + + // find our name + char *nextName, *endOfNames = [nameBuff mutableBytes] + nameBuffLen; + for(nextName = [nameBuff mutableBytes]; nextName < endOfNames; nextName += 1+strlen(nextName)) + if (strcmp(nextName, [name UTF8String]) == 0) return YES; + return NO; +} + ++ (NSData*)extendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err { + int flags = follow? 0 : XATTR_NOFOLLOW; + // get length + ssize_t attrLen = getxattr([path fileSystemRepresentation], [name UTF8String], NULL, 0, 0, flags); + if (attrLen == -1) { + if (err) *err = [NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo: + [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String:strerror(errno)], @"error", + @"getxattr", @"function", + name, @":name", + path, @":path", + [NSNumber numberWithBool:follow], @":traverseLink", + nil] + ]; + return nil; + } + + // get attribute data + NSMutableData * attrData = [NSMutableData dataWithLength:attrLen]; + getxattr([path fileSystemRepresentation], [name UTF8String], [attrData mutableBytes], attrLen, 0, flags); + return attrData; +} + ++ (BOOL)setExtendedAttribute:(NSString*)name value:(NSData*)value atPath:(NSString*)path traverseLink:(BOOL)follow overwrite:(BOOL)overwrite error:(NSError**)err { + int flags = (follow? 0 : XATTR_NOFOLLOW) | (overwrite? 0 : XATTR_CREATE); + if (0 == setxattr([path fileSystemRepresentation], [name UTF8String], [value bytes], [value length], 0, flags)) return YES; + // error + if (err) *err = [NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo: + [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String:strerror(errno)], @"error", + @"setxattr", @"function", + name, @":name", + [NSNumber numberWithUnsignedInteger:[value length]], @":value.length", + path, @":path", + [NSNumber numberWithBool:follow], @":traverseLink", + [NSNumber numberWithBool:overwrite], @":overwrite", + nil] + ]; + return NO; +} + ++ (BOOL)removeExtendedAttribute:(NSString*)name atPath:(NSString*)path traverseLink:(BOOL)follow error:(NSError**)err { + int flags = (follow? 0 : XATTR_NOFOLLOW); + if (0 == removexattr([path fileSystemRepresentation], [name UTF8String], flags)) return YES; + // error + if (err) *err = [NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo: + [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithUTF8String:strerror(errno)], @"error", + @"removexattr", @"function", + name, @":name", + path, @":path", + [NSNumber numberWithBool:follow], @":traverseLink", + nil] + ]; + return NO; +} + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAPNGCoderInternal.h b/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAPNGCoderInternal.h deleted file mode 100644 index 93d53a6f1..000000000 --- a/ios/Pods/SDWebImage/SDWebImage/Private/SDImageAPNGCoderInternal.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * This file is part of the SDWebImage package. - * (c) Olivier Poitrey - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -#import "SDWebImageCompat.h" -#import "SDImageAPNGCoder.h" - -@interface SDImageAPNGCoder () - -- (float)sd_frameDurationAtIndex:(NSUInteger)index source:(nonnull CGImageSourceRef)source; -- (NSUInteger)sd_imageLoopCountWithSource:(nonnull CGImageSourceRef)source; - -@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Private/SDImageGIFCoderInternal.h b/ios/Pods/SDWebImage/SDWebImage/Private/SDImageGIFCoderInternal.h deleted file mode 100644 index 769d206ce..000000000 --- a/ios/Pods/SDWebImage/SDWebImage/Private/SDImageGIFCoderInternal.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * This file is part of the SDWebImage package. - * (c) Olivier Poitrey - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -#import "SDWebImageCompat.h" -#import "SDImageGIFCoder.h" - -@interface SDImageGIFCoder () - -- (float)sd_frameDurationAtIndex:(NSUInteger)index source:(nonnull CGImageSourceRef)source; - -@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Private/SDImageHEICCoderInternal.h b/ios/Pods/SDWebImage/SDWebImage/Private/SDImageHEICCoderInternal.h new file mode 100644 index 000000000..e7017bba6 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Private/SDImageHEICCoderInternal.h @@ -0,0 +1,25 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDImageHEICCoder.h" + +// AVFileTypeHEIC/AVFileTypeHEIF is defined in AVFoundation via iOS 11, we use this without import AVFoundation +#define kSDUTTypeHEIC ((__bridge CFStringRef)@"public.heic") +#define kSDUTTypeHEIF ((__bridge CFStringRef)@"public.heif") +// HEIC Sequence (Animated Image) +#define kSDUTTypeHEICS ((__bridge CFStringRef)@"public.heics") + +@interface SDImageHEICCoder () + ++ (BOOL)canDecodeFromHEICFormat; ++ (BOOL)canDecodeFromHEIFFormat; ++ (BOOL)canEncodeToHEICFormat; ++ (BOOL)canEncodeToHEIFFormat; + +@end diff --git a/ios/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h b/ios/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h new file mode 100644 index 000000000..f2976ea80 --- /dev/null +++ b/ios/Pods/SDWebImage/SDWebImage/Private/SDImageIOAnimatedCoderInternal.h @@ -0,0 +1,18 @@ +/* +* This file is part of the SDWebImage package. +* (c) Olivier Poitrey +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +#import +#import "SDImageIOAnimatedCoder.h" + +@interface SDImageIOAnimatedCoder () + ++ (NSTimeInterval)frameDurationAtIndex:(NSUInteger)index source:(nonnull CGImageSourceRef)source; ++ (NSUInteger)imageLoopCountWithSource:(nonnull CGImageSourceRef)source; ++ (nullable UIImage *)createFrameAtIndex:(NSUInteger)index source:(nonnull CGImageSourceRef)source scale:(CGFloat)scale preserveAspectRatio:(BOOL)preserveAspectRatio thumbnailSize:(CGSize)thumbnailSize; + +@end diff --git a/ios/Pods/SDWebImage/WebImage/SDWebImage.h b/ios/Pods/SDWebImage/WebImage/SDWebImage.h index 89c2ec36a..f219978e1 100644 --- a/ios/Pods/SDWebImage/WebImage/SDWebImage.h +++ b/ios/Pods/SDWebImage/WebImage/SDWebImage.h @@ -36,6 +36,8 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[]; #import #import #import +#import +#import #import #import #import @@ -44,6 +46,7 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[]; #import #import #import +#import #import #import #import @@ -53,6 +56,7 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[]; #import #import #import +#import #import #import #import @@ -61,12 +65,15 @@ FOUNDATION_EXPORT const unsigned char WebImageVersionString[]; #import #import #import +#import #import #import #import #import #import #import +#import +#import // Mac #if __has_include() diff --git a/ios/Pods/SDWebImageWebPCoder/SDWebImageWebPCoder/Classes/SDImageWebPCoder.m b/ios/Pods/SDWebImageWebPCoder/SDWebImageWebPCoder/Classes/SDImageWebPCoder.m index 617bdb2d9..1ff3b7afe 100644 --- a/ios/Pods/SDWebImageWebPCoder/SDWebImageWebPCoder/Classes/SDImageWebPCoder.m +++ b/ios/Pods/SDWebImageWebPCoder/SDWebImageWebPCoder/Classes/SDImageWebPCoder.m @@ -432,7 +432,11 @@ // See #2618, the `CGColorSpaceCreateWithICCProfile` does not copy ICC Profile data, it only retain `CFDataRef`. // When the libwebp `WebPDemuxer` dealloc, all chunks will be freed. So we must copy the ICC data (really cheap, less than 10KB) NSData *profileData = [NSData dataWithBytes:chunk_iter.chunk.bytes length:chunk_iter.chunk.size]; - colorSpaceRef = CGColorSpaceCreateWithICCProfile((__bridge CFDataRef)profileData); + if (@available(iOS 10, tvOS 10, macOS 10.12, watchOS 3, *)) { + colorSpaceRef = CGColorSpaceCreateWithICCData((__bridge CFDataRef)profileData); + } else { + colorSpaceRef = CGColorSpaceCreateWithICCProfile((__bridge CFDataRef)profileData); + } WebPDemuxReleaseChunkIterator(&chunk_iter); if (colorSpaceRef) { // We use RGB color model to decode WebP images currently, so we must filter out other colorSpace diff --git a/ios/Pods/Target Support Files/Firebase/Firebase.xcconfig b/ios/Pods/Target Support Files/Firebase/Firebase.xcconfig index 09cb0cf2c..4dd38b583 100644 --- a/ios/Pods/Target Support Files/Firebase/Firebase.xcconfig +++ b/ios/Pods/Target Support Files/Firebase/Firebase.xcconfig @@ -2,7 +2,7 @@ APPLICATION_EXTENSION_API_ONLY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Firebase FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Firebase" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/nanopb" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Firebase" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstallations" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/PromisesObjC" "${PODS_ROOT}/Headers/Public/nanopb" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/ios/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.xcconfig b/ios/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.xcconfig index 0deec7c04..8b92f175d 100644 --- a/ios/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.xcconfig +++ b/ios/Pods/Target Support Files/FirebaseAnalytics/FirebaseAnalytics.xcconfig @@ -2,7 +2,7 @@ APPLICATION_EXTENSION_API_ONLY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseAnalytics FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/nanopb" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstallations" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/PromisesObjC" "${PODS_ROOT}/Headers/Public/nanopb" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/ios/Pods/Target Support Files/FirebaseCore/FirebaseCore.xcconfig b/ios/Pods/Target Support Files/FirebaseCore/FirebaseCore.xcconfig index 9444de4fc..a9efeedd3 100644 --- a/ios/Pods/Target Support Files/FirebaseCore/FirebaseCore.xcconfig +++ b/ios/Pods/Target Support Files/FirebaseCore/FirebaseCore.xcconfig @@ -1,8 +1,8 @@ APPLICATION_EXTENSION_API_ONLY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore GCC_C_LANGUAGE_STANDARD = c99 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 FIRCore_VERSION=6.2.3 Firebase_VERSION=6.8.1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FirebaseCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/nanopb" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 FIRCore_VERSION=6.6.1 Firebase_VERSION=6.16.0 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FirebaseCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_TARGET_SRCROOT}" OTHER_CFLAGS = $(inherited) -fno-autolink PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/ios/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-dummy.m b/ios/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-dummy.m new file mode 100644 index 000000000..ae19551aa --- /dev/null +++ b/ios/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_FirebaseInstallations : NSObject +@end +@implementation PodsDummy_FirebaseInstallations +@end diff --git a/ios/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.xcconfig b/ios/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.xcconfig new file mode 100644 index 000000000..63e5a3ffa --- /dev/null +++ b/ios/Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.xcconfig @@ -0,0 +1,12 @@ +APPLICATION_EXTENSION_API_ONLY = YES +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations +GCC_C_LANGUAGE_STANDARD = c99 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 FIRInstallations_LIB_VERSION=1.1.0 FIR_INSTALLATIONS_ALLOWS_INCOMPATIBLE_IID_VERSION=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FirebaseInstallations" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstallations" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/PromisesObjC" "${PODS_ROOT}/Headers/Public/nanopb" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/FirebaseInstallations +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/ios/Pods/Target Support Files/FirebaseInstanceID/FirebaseInstanceID.xcconfig b/ios/Pods/Target Support Files/FirebaseInstanceID/FirebaseInstanceID.xcconfig index a3da93ef6..9dfe33262 100644 --- a/ios/Pods/Target Support Files/FirebaseInstanceID/FirebaseInstanceID.xcconfig +++ b/ios/Pods/Target Support Files/FirebaseInstanceID/FirebaseInstanceID.xcconfig @@ -1,8 +1,8 @@ APPLICATION_EXTENSION_API_ONLY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID GCC_C_LANGUAGE_STANDARD = c99 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 FIRInstanceID_LIB_VERSION=4.2.5 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/nanopb" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 FIRInstanceID_LIB_VERSION=4.3.0 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstallations" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/PromisesObjC" "${PODS_ROOT}/Headers/Public/nanopb" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/ios/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.xcconfig b/ios/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.xcconfig index c36e3d74d..bfdc52141 100644 --- a/ios/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.xcconfig +++ b/ios/Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.xcconfig @@ -2,7 +2,7 @@ APPLICATION_EXTENSION_API_ONLY = YES CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport GCC_C_LANGUAGE_STANDARD = c99 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 GDTCOR_VERSION=3.3.1 GCC_TREAT_WARNINGS_AS_ERRORS = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GoogleDataTransport" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_TARGET_SRCROOT}/GoogleDataTransport/" PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/ios/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.xcconfig b/ios/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.xcconfig index 477dcc127..d823f9fa7 100644 --- a/ios/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.xcconfig +++ b/ios/Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.xcconfig @@ -2,7 +2,7 @@ APPLICATION_EXTENSION_API_ONLY = YES CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport GCC_C_LANGUAGE_STANDARD = c99 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 GDTCCTSUPPORT_VERSION=1.3.1 GCC_TREAT_WARNINGS_AS_ERRORS = YES HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_TARGET_SRCROOT}/GoogleDataTransportCCTSupport/" PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/ios/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.xcconfig b/ios/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.xcconfig index abf119d93..06269e7f5 100644 --- a/ios/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.xcconfig +++ b/ios/Pods/Target Support Files/GoogleUtilities/GoogleUtilities.xcconfig @@ -1,7 +1,8 @@ APPLICATION_EXTENSION_API_ONLY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities +GCC_C_LANGUAGE_STANDARD = c99 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GoogleUtilities" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GoogleUtilities" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GoogleUtilities" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_TARGET_SRCROOT}" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN-acknowledgements.markdown b/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN-acknowledgements.markdown index f9281d76d..75d698db6 100644 --- a/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN-acknowledgements.markdown +++ b/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN-acknowledgements.markdown @@ -65,11 +65,213 @@ Fabric: Copyright 2018 Google, Inc. All Rights Reserved. Use of this software is ## Firebase -Copyright 2019 Google + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + ## FirebaseAnalytics -Copyright 2019 Google +Copyright 2020 Google ## FirebaseCore @@ -689,6 +891,212 @@ Copyright 2019 Google limitations under the License. +## FirebaseInstallations + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + ## FirebaseInstanceID @@ -1078,7 +1486,7 @@ Copyright 2019 Google ## GoogleAppMeasurement -Copyright 2019 Google +Copyright 2020 Google ## GoogleDataTransport @@ -1697,6 +2105,51 @@ Copyright 2019 Google See the License for the specific language governing permissions and limitations under the License. +================================================================================ + +The following copyright from Landon J. Fuller applies to the isAppEncrypted +function in Environment/third_party/GULAppEnvironmentUtil.m. + +Copyright (c) 2017 Landon J. Fuller +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Comment from +iPhone Dev Wiki +Crack Prevention: App Store binaries are signed by both their developer +and Apple. This encrypts the binary so that decryption keys are needed in order +to make the binary readable. When iOS executes the binary, the decryption keys +are used to decrypt the binary into a readable state where it is then loaded +into memory and executed. iOS can tell the encryption status of a binary via the +cryptid structure member of LC_ENCRYPTION_INFO MachO load command. If cryptid is +a non-zero value then the binary is encrypted. + +'Cracking' works by letting the kernel decrypt the binary then siphoning the +decrypted data into a new binary file, resigning, and repackaging. This will +only work on jailbroken devices as codesignature validation has been removed. +Resigning takes place because while the codesignature doesn't have to be valid +thanks to the jailbreak, it does have to be in place unless you have AppSync or +similar to disable codesignature checks. + +More information at Landon +Fuller's blog + ## JitsiMeetSDK @@ -1715,6 +2168,212 @@ See the License for the specific language governing permissions and limitations under the License. +## PromisesObjC + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + ## RNAudio The MIT License (MIT) diff --git a/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN-acknowledgements.plist b/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN-acknowledgements.plist index a1ff25b21..96456cccb 100644 --- a/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN-acknowledgements.plist +++ b/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN-acknowledgements.plist @@ -100,9 +100,211 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. FooterText - Copyright 2019 Google + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + License - Copyright + Apache Title Firebase Type @@ -110,7 +312,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. FooterText - Copyright 2019 Google + Copyright 2020 Google License Copyright Title @@ -947,6 +1149,218 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright [yyyy] [name of copyright owner] + 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. + + License + Apache + Title + FirebaseInstallations + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + 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 @@ -1155,7 +1569,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. FooterText - Copyright 2019 Google + Copyright 2020 Google License Copyright Title @@ -1791,6 +2205,51 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 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. + +================================================================================ + +The following copyright from Landon J. Fuller applies to the isAppEncrypted +function in Environment/third_party/GULAppEnvironmentUtil.m. + +Copyright (c) 2017 Landon J. Fuller <landon@landonf.org> +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Comment from +<a href="http://iphonedevwiki.net/index.php/Crack_prevention">iPhone Dev Wiki +Crack Prevention</a>: App Store binaries are signed by both their developer +and Apple. This encrypts the binary so that decryption keys are needed in order +to make the binary readable. When iOS executes the binary, the decryption keys +are used to decrypt the binary into a readable state where it is then loaded +into memory and executed. iOS can tell the encryption status of a binary via the +cryptid structure member of LC_ENCRYPTION_INFO MachO load command. If cryptid is +a non-zero value then the binary is encrypted. + +'Cracking' works by letting the kernel decrypt the binary then siphoning the +decrypted data into a new binary file, resigning, and repackaging. This will +only work on jailbroken devices as codesignature validation has been removed. +Resigning takes place because while the codesignature doesn't have to be valid +thanks to the jailbreak, it does have to be in place unless you have AppSync or +similar to disable codesignature checks. + +More information at <a href="http://landonf.org/2009/02/index.html">Landon +Fuller's blog</a> License Apache @@ -1822,6 +2281,218 @@ limitations under the License. Type PSGroupSpecifier + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + License + Apache + Title + PromisesObjC + Type + PSGroupSpecifier + FooterText The MIT License (MIT) diff --git a/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN.debug.xcconfig b/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN.debug.xcconfig index 02ad9ce2a..6dc696563 100644 --- a/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN.debug.xcconfig +++ b/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN.debug.xcconfig @@ -1,9 +1,9 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_ROOT}/JitsiMeetSDK/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) SD_WEBP=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BugsnagReactNative" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/EXAV" "${PODS_ROOT}/Headers/Public/EXAppLoaderProvider" "${PODS_ROOT}/Headers/Public/EXConstants" "${PODS_ROOT}/Headers/Public/EXFileSystem" "${PODS_ROOT}/Headers/Public/EXHaptics" "${PODS_ROOT}/Headers/Public/EXPermissions" "${PODS_ROOT}/Headers/Public/EXWebBrowser" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/KeyCommands" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/RNAudio" "${PODS_ROOT}/Headers/Public/RNBootSplash" "${PODS_ROOT}/Headers/Public/RNDateTimePicker" "${PODS_ROOT}/Headers/Public/RNDeviceInfo" "${PODS_ROOT}/Headers/Public/RNFastImage" "${PODS_ROOT}/Headers/Public/RNFirebase" "${PODS_ROOT}/Headers/Public/RNGestureHandler" "${PODS_ROOT}/Headers/Public/RNImageCropPicker" "${PODS_ROOT}/Headers/Public/RNLocalize" "${PODS_ROOT}/Headers/Public/RNReanimated" "${PODS_ROOT}/Headers/Public/RNRootView" "${PODS_ROOT}/Headers/Public/RNScreens" "${PODS_ROOT}/Headers/Public/RNUserDefaults" "${PODS_ROOT}/Headers/Public/RNVectorIcons" "${PODS_ROOT}/Headers/Public/RSKImageCropper" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/ReactNativeART" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SDWebImageWebPCoder" "${PODS_ROOT}/Headers/Public/UMBarCodeScannerInterface" "${PODS_ROOT}/Headers/Public/UMCameraInterface" "${PODS_ROOT}/Headers/Public/UMConstantsInterface" "${PODS_ROOT}/Headers/Public/UMCore" "${PODS_ROOT}/Headers/Public/UMFaceDetectorInterface" "${PODS_ROOT}/Headers/Public/UMFileSystemInterface" "${PODS_ROOT}/Headers/Public/UMFontInterface" "${PODS_ROOT}/Headers/Public/UMImageLoaderInterface" "${PODS_ROOT}/Headers/Public/UMPermissionsInterface" "${PODS_ROOT}/Headers/Public/UMReactNativeAdapter" "${PODS_ROOT}/Headers/Public/UMSensorsInterface" "${PODS_ROOT}/Headers/Public/UMTaskManagerInterface" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/libwebp" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_ROOT}/Headers/Public/react-native-appearance" "${PODS_ROOT}/Headers/Public/react-native-background-timer" "${PODS_ROOT}/Headers/Public/react-native-cameraroll" "${PODS_ROOT}/Headers/Public/react-native-document-picker" "${PODS_ROOT}/Headers/Public/react-native-jitsi-meet" "${PODS_ROOT}/Headers/Public/react-native-keyboard-input" "${PODS_ROOT}/Headers/Public/react-native-keyboard-tracking-view" "${PODS_ROOT}/Headers/Public/react-native-notifications" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-slider" "${PODS_ROOT}/Headers/Public/react-native-video" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/rn-fetch-blob" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "$(PODS_ROOT)/Headers/Private/React-Core" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BugsnagReactNative" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/EXAV" "${PODS_ROOT}/Headers/Public/EXAppLoaderProvider" "${PODS_ROOT}/Headers/Public/EXConstants" "${PODS_ROOT}/Headers/Public/EXFileSystem" "${PODS_ROOT}/Headers/Public/EXHaptics" "${PODS_ROOT}/Headers/Public/EXPermissions" "${PODS_ROOT}/Headers/Public/EXWebBrowser" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstallations" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/KeyCommands" "${PODS_ROOT}/Headers/Public/PromisesObjC" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/RNAudio" "${PODS_ROOT}/Headers/Public/RNBootSplash" "${PODS_ROOT}/Headers/Public/RNDateTimePicker" "${PODS_ROOT}/Headers/Public/RNDeviceInfo" "${PODS_ROOT}/Headers/Public/RNFastImage" "${PODS_ROOT}/Headers/Public/RNFirebase" "${PODS_ROOT}/Headers/Public/RNGestureHandler" "${PODS_ROOT}/Headers/Public/RNImageCropPicker" "${PODS_ROOT}/Headers/Public/RNLocalize" "${PODS_ROOT}/Headers/Public/RNReanimated" "${PODS_ROOT}/Headers/Public/RNRootView" "${PODS_ROOT}/Headers/Public/RNScreens" "${PODS_ROOT}/Headers/Public/RNUserDefaults" "${PODS_ROOT}/Headers/Public/RNVectorIcons" "${PODS_ROOT}/Headers/Public/RSKImageCropper" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/ReactNativeART" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SDWebImageWebPCoder" "${PODS_ROOT}/Headers/Public/UMBarCodeScannerInterface" "${PODS_ROOT}/Headers/Public/UMCameraInterface" "${PODS_ROOT}/Headers/Public/UMConstantsInterface" "${PODS_ROOT}/Headers/Public/UMCore" "${PODS_ROOT}/Headers/Public/UMFaceDetectorInterface" "${PODS_ROOT}/Headers/Public/UMFileSystemInterface" "${PODS_ROOT}/Headers/Public/UMFontInterface" "${PODS_ROOT}/Headers/Public/UMImageLoaderInterface" "${PODS_ROOT}/Headers/Public/UMPermissionsInterface" "${PODS_ROOT}/Headers/Public/UMReactNativeAdapter" "${PODS_ROOT}/Headers/Public/UMSensorsInterface" "${PODS_ROOT}/Headers/Public/UMTaskManagerInterface" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/libwebp" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_ROOT}/Headers/Public/react-native-appearance" "${PODS_ROOT}/Headers/Public/react-native-background-timer" "${PODS_ROOT}/Headers/Public/react-native-cameraroll" "${PODS_ROOT}/Headers/Public/react-native-document-picker" "${PODS_ROOT}/Headers/Public/react-native-jitsi-meet" "${PODS_ROOT}/Headers/Public/react-native-keyboard-input" "${PODS_ROOT}/Headers/Public/react-native-keyboard-tracking-view" "${PODS_ROOT}/Headers/Public/react-native-notifications" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-slider" "${PODS_ROOT}/Headers/Public/react-native-video" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/rn-fetch-blob" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" "$(PODS_ROOT)/Headers/Private/React-Core" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BugsnagReactNative" "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/EXAV" "${PODS_CONFIGURATION_BUILD_DIR}/EXAppLoaderProvider" "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants" "${PODS_CONFIGURATION_BUILD_DIR}/EXFileSystem" "${PODS_CONFIGURATION_BUILD_DIR}/EXHaptics" "${PODS_CONFIGURATION_BUILD_DIR}/EXPermissions" "${PODS_CONFIGURATION_BUILD_DIR}/EXWebBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/Folly" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/KeyCommands" "${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety" "${PODS_CONFIGURATION_BUILD_DIR}/RNAudio" "${PODS_CONFIGURATION_BUILD_DIR}/RNBootSplash" "${PODS_CONFIGURATION_BUILD_DIR}/RNDateTimePicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/RNFastImage" "${PODS_CONFIGURATION_BUILD_DIR}/RNFirebase" "${PODS_CONFIGURATION_BUILD_DIR}/RNGestureHandler" "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/RNReanimated" "${PODS_CONFIGURATION_BUILD_DIR}/RNRootView" "${PODS_CONFIGURATION_BUILD_DIR}/RNScreens" "${PODS_CONFIGURATION_BUILD_DIR}/RNUserDefaults" "${PODS_CONFIGURATION_BUILD_DIR}/RNVectorIcons" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration" "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsi" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/ReactNativeART" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/UMCore" "${PODS_CONFIGURATION_BUILD_DIR}/UMReactNativeAdapter" "${PODS_CONFIGURATION_BUILD_DIR}/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-appearance" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-background-timer" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-cameraroll" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-jitsi-meet" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-input" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-tracking-view" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-notifications" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-slider" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-video" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview" "${PODS_CONFIGURATION_BUILD_DIR}/rn-extensions-share" "${PODS_CONFIGURATION_BUILD_DIR}/rn-fetch-blob" -OTHER_LDFLAGS = $(inherited) -ObjC -l"BugsnagReactNative" -l"DoubleConversion" -l"EXAV" -l"EXAppLoaderProvider" -l"EXConstants" -l"EXFileSystem" -l"EXHaptics" -l"EXPermissions" -l"EXWebBrowser" -l"FBReactNativeSpec" -l"FirebaseCore" -l"FirebaseCoreDiagnostics" -l"FirebaseInstanceID" -l"Folly" -l"GoogleDataTransport" -l"GoogleDataTransportCCTSupport" -l"GoogleUtilities" -l"KeyCommands" -l"RCTTypeSafety" -l"RNAudio" -l"RNBootSplash" -l"RNDateTimePicker" -l"RNDeviceInfo" -l"RNFastImage" -l"RNFirebase" -l"RNGestureHandler" -l"RNImageCropPicker" -l"RNLocalize" -l"RNReanimated" -l"RNRootView" -l"RNScreens" -l"RNUserDefaults" -l"RNVectorIcons" -l"RSKImageCropper" -l"React-Core" -l"React-CoreModules" -l"React-RCTActionSheet" -l"React-RCTAnimation" -l"React-RCTBlob" -l"React-RCTImage" -l"React-RCTLinking" -l"React-RCTNetwork" -l"React-RCTSettings" -l"React-RCTText" -l"React-RCTVibration" -l"React-cxxreact" -l"React-jsi" -l"React-jsiexecutor" -l"React-jsinspector" -l"ReactCommon" -l"ReactNativeART" -l"SDWebImage" -l"SDWebImageWebPCoder" -l"UMCore" -l"UMReactNativeAdapter" -l"Yoga" -l"c++" -l"glog" -l"libwebp" -l"nanopb" -l"react-native-appearance" -l"react-native-background-timer" -l"react-native-cameraroll" -l"react-native-document-picker" -l"react-native-jitsi-meet" -l"react-native-keyboard-input" -l"react-native-keyboard-tracking-view" -l"react-native-notifications" -l"react-native-orientation-locker" -l"react-native-slider" -l"react-native-video" -l"react-native-webview" -l"rn-extensions-share" -l"rn-fetch-blob" -l"sqlite3" -l"stdc++" -l"z" -framework "AVFoundation" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseAnalytics" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "ImageIO" -framework "JavaScriptCore" -framework "JitsiMeet" -framework "MessageUI" -framework "Photos" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -framework "WebRTC" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BugsnagReactNative" "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/EXAV" "${PODS_CONFIGURATION_BUILD_DIR}/EXAppLoaderProvider" "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants" "${PODS_CONFIGURATION_BUILD_DIR}/EXFileSystem" "${PODS_CONFIGURATION_BUILD_DIR}/EXHaptics" "${PODS_CONFIGURATION_BUILD_DIR}/EXPermissions" "${PODS_CONFIGURATION_BUILD_DIR}/EXWebBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/Folly" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/KeyCommands" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety" "${PODS_CONFIGURATION_BUILD_DIR}/RNAudio" "${PODS_CONFIGURATION_BUILD_DIR}/RNBootSplash" "${PODS_CONFIGURATION_BUILD_DIR}/RNDateTimePicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/RNFastImage" "${PODS_CONFIGURATION_BUILD_DIR}/RNFirebase" "${PODS_CONFIGURATION_BUILD_DIR}/RNGestureHandler" "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/RNReanimated" "${PODS_CONFIGURATION_BUILD_DIR}/RNRootView" "${PODS_CONFIGURATION_BUILD_DIR}/RNScreens" "${PODS_CONFIGURATION_BUILD_DIR}/RNUserDefaults" "${PODS_CONFIGURATION_BUILD_DIR}/RNVectorIcons" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration" "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsi" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/ReactNativeART" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/UMCore" "${PODS_CONFIGURATION_BUILD_DIR}/UMReactNativeAdapter" "${PODS_CONFIGURATION_BUILD_DIR}/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-appearance" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-background-timer" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-cameraroll" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-jitsi-meet" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-input" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-tracking-view" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-notifications" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-slider" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-video" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview" "${PODS_CONFIGURATION_BUILD_DIR}/rn-extensions-share" "${PODS_CONFIGURATION_BUILD_DIR}/rn-fetch-blob" +OTHER_LDFLAGS = $(inherited) -ObjC -l"BugsnagReactNative" -l"DoubleConversion" -l"EXAV" -l"EXAppLoaderProvider" -l"EXConstants" -l"EXFileSystem" -l"EXHaptics" -l"EXPermissions" -l"EXWebBrowser" -l"FBReactNativeSpec" -l"FirebaseCore" -l"FirebaseCoreDiagnostics" -l"FirebaseInstallations" -l"FirebaseInstanceID" -l"Folly" -l"GoogleDataTransport" -l"GoogleDataTransportCCTSupport" -l"GoogleUtilities" -l"KeyCommands" -l"PromisesObjC" -l"RCTTypeSafety" -l"RNAudio" -l"RNBootSplash" -l"RNDateTimePicker" -l"RNDeviceInfo" -l"RNFastImage" -l"RNFirebase" -l"RNGestureHandler" -l"RNImageCropPicker" -l"RNLocalize" -l"RNReanimated" -l"RNRootView" -l"RNScreens" -l"RNUserDefaults" -l"RNVectorIcons" -l"RSKImageCropper" -l"React-Core" -l"React-CoreModules" -l"React-RCTActionSheet" -l"React-RCTAnimation" -l"React-RCTBlob" -l"React-RCTImage" -l"React-RCTLinking" -l"React-RCTNetwork" -l"React-RCTSettings" -l"React-RCTText" -l"React-RCTVibration" -l"React-cxxreact" -l"React-jsi" -l"React-jsiexecutor" -l"React-jsinspector" -l"ReactCommon" -l"ReactNativeART" -l"SDWebImage" -l"SDWebImageWebPCoder" -l"UMCore" -l"UMReactNativeAdapter" -l"Yoga" -l"c++" -l"glog" -l"libwebp" -l"nanopb" -l"react-native-appearance" -l"react-native-background-timer" -l"react-native-cameraroll" -l"react-native-document-picker" -l"react-native-jitsi-meet" -l"react-native-keyboard-input" -l"react-native-keyboard-tracking-view" -l"react-native-notifications" -l"react-native-orientation-locker" -l"react-native-slider" -l"react-native-video" -l"react-native-webview" -l"rn-extensions-share" -l"rn-fetch-blob" -l"sqlite3" -l"stdc++" -l"z" -framework "AVFoundation" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseAnalytics" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "ImageIO" -framework "JavaScriptCore" -framework "JitsiMeet" -framework "MessageUI" -framework "Photos" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -framework "WebRTC" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN.release.xcconfig b/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN.release.xcconfig index 02ad9ce2a..6dc696563 100644 --- a/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN.release.xcconfig +++ b/ios/Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN.release.xcconfig @@ -1,9 +1,9 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_ROOT}/JitsiMeetSDK/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) SD_WEBP=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BugsnagReactNative" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/EXAV" "${PODS_ROOT}/Headers/Public/EXAppLoaderProvider" "${PODS_ROOT}/Headers/Public/EXConstants" "${PODS_ROOT}/Headers/Public/EXFileSystem" "${PODS_ROOT}/Headers/Public/EXHaptics" "${PODS_ROOT}/Headers/Public/EXPermissions" "${PODS_ROOT}/Headers/Public/EXWebBrowser" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/KeyCommands" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/RNAudio" "${PODS_ROOT}/Headers/Public/RNBootSplash" "${PODS_ROOT}/Headers/Public/RNDateTimePicker" "${PODS_ROOT}/Headers/Public/RNDeviceInfo" "${PODS_ROOT}/Headers/Public/RNFastImage" "${PODS_ROOT}/Headers/Public/RNFirebase" "${PODS_ROOT}/Headers/Public/RNGestureHandler" "${PODS_ROOT}/Headers/Public/RNImageCropPicker" "${PODS_ROOT}/Headers/Public/RNLocalize" "${PODS_ROOT}/Headers/Public/RNReanimated" "${PODS_ROOT}/Headers/Public/RNRootView" "${PODS_ROOT}/Headers/Public/RNScreens" "${PODS_ROOT}/Headers/Public/RNUserDefaults" "${PODS_ROOT}/Headers/Public/RNVectorIcons" "${PODS_ROOT}/Headers/Public/RSKImageCropper" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/ReactNativeART" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SDWebImageWebPCoder" "${PODS_ROOT}/Headers/Public/UMBarCodeScannerInterface" "${PODS_ROOT}/Headers/Public/UMCameraInterface" "${PODS_ROOT}/Headers/Public/UMConstantsInterface" "${PODS_ROOT}/Headers/Public/UMCore" "${PODS_ROOT}/Headers/Public/UMFaceDetectorInterface" "${PODS_ROOT}/Headers/Public/UMFileSystemInterface" "${PODS_ROOT}/Headers/Public/UMFontInterface" "${PODS_ROOT}/Headers/Public/UMImageLoaderInterface" "${PODS_ROOT}/Headers/Public/UMPermissionsInterface" "${PODS_ROOT}/Headers/Public/UMReactNativeAdapter" "${PODS_ROOT}/Headers/Public/UMSensorsInterface" "${PODS_ROOT}/Headers/Public/UMTaskManagerInterface" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/libwebp" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_ROOT}/Headers/Public/react-native-appearance" "${PODS_ROOT}/Headers/Public/react-native-background-timer" "${PODS_ROOT}/Headers/Public/react-native-cameraroll" "${PODS_ROOT}/Headers/Public/react-native-document-picker" "${PODS_ROOT}/Headers/Public/react-native-jitsi-meet" "${PODS_ROOT}/Headers/Public/react-native-keyboard-input" "${PODS_ROOT}/Headers/Public/react-native-keyboard-tracking-view" "${PODS_ROOT}/Headers/Public/react-native-notifications" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-slider" "${PODS_ROOT}/Headers/Public/react-native-video" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/rn-fetch-blob" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "$(PODS_ROOT)/Headers/Private/React-Core" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BugsnagReactNative" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/EXAV" "${PODS_ROOT}/Headers/Public/EXAppLoaderProvider" "${PODS_ROOT}/Headers/Public/EXConstants" "${PODS_ROOT}/Headers/Public/EXFileSystem" "${PODS_ROOT}/Headers/Public/EXHaptics" "${PODS_ROOT}/Headers/Public/EXPermissions" "${PODS_ROOT}/Headers/Public/EXWebBrowser" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstallations" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/KeyCommands" "${PODS_ROOT}/Headers/Public/PromisesObjC" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/RNAudio" "${PODS_ROOT}/Headers/Public/RNBootSplash" "${PODS_ROOT}/Headers/Public/RNDateTimePicker" "${PODS_ROOT}/Headers/Public/RNDeviceInfo" "${PODS_ROOT}/Headers/Public/RNFastImage" "${PODS_ROOT}/Headers/Public/RNFirebase" "${PODS_ROOT}/Headers/Public/RNGestureHandler" "${PODS_ROOT}/Headers/Public/RNImageCropPicker" "${PODS_ROOT}/Headers/Public/RNLocalize" "${PODS_ROOT}/Headers/Public/RNReanimated" "${PODS_ROOT}/Headers/Public/RNRootView" "${PODS_ROOT}/Headers/Public/RNScreens" "${PODS_ROOT}/Headers/Public/RNUserDefaults" "${PODS_ROOT}/Headers/Public/RNVectorIcons" "${PODS_ROOT}/Headers/Public/RSKImageCropper" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/ReactNativeART" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SDWebImageWebPCoder" "${PODS_ROOT}/Headers/Public/UMBarCodeScannerInterface" "${PODS_ROOT}/Headers/Public/UMCameraInterface" "${PODS_ROOT}/Headers/Public/UMConstantsInterface" "${PODS_ROOT}/Headers/Public/UMCore" "${PODS_ROOT}/Headers/Public/UMFaceDetectorInterface" "${PODS_ROOT}/Headers/Public/UMFileSystemInterface" "${PODS_ROOT}/Headers/Public/UMFontInterface" "${PODS_ROOT}/Headers/Public/UMImageLoaderInterface" "${PODS_ROOT}/Headers/Public/UMPermissionsInterface" "${PODS_ROOT}/Headers/Public/UMReactNativeAdapter" "${PODS_ROOT}/Headers/Public/UMSensorsInterface" "${PODS_ROOT}/Headers/Public/UMTaskManagerInterface" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/libwebp" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_ROOT}/Headers/Public/react-native-appearance" "${PODS_ROOT}/Headers/Public/react-native-background-timer" "${PODS_ROOT}/Headers/Public/react-native-cameraroll" "${PODS_ROOT}/Headers/Public/react-native-document-picker" "${PODS_ROOT}/Headers/Public/react-native-jitsi-meet" "${PODS_ROOT}/Headers/Public/react-native-keyboard-input" "${PODS_ROOT}/Headers/Public/react-native-keyboard-tracking-view" "${PODS_ROOT}/Headers/Public/react-native-notifications" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-slider" "${PODS_ROOT}/Headers/Public/react-native-video" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/rn-fetch-blob" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" "$(PODS_ROOT)/Headers/Private/React-Core" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BugsnagReactNative" "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/EXAV" "${PODS_CONFIGURATION_BUILD_DIR}/EXAppLoaderProvider" "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants" "${PODS_CONFIGURATION_BUILD_DIR}/EXFileSystem" "${PODS_CONFIGURATION_BUILD_DIR}/EXHaptics" "${PODS_CONFIGURATION_BUILD_DIR}/EXPermissions" "${PODS_CONFIGURATION_BUILD_DIR}/EXWebBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/Folly" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/KeyCommands" "${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety" "${PODS_CONFIGURATION_BUILD_DIR}/RNAudio" "${PODS_CONFIGURATION_BUILD_DIR}/RNBootSplash" "${PODS_CONFIGURATION_BUILD_DIR}/RNDateTimePicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/RNFastImage" "${PODS_CONFIGURATION_BUILD_DIR}/RNFirebase" "${PODS_CONFIGURATION_BUILD_DIR}/RNGestureHandler" "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/RNReanimated" "${PODS_CONFIGURATION_BUILD_DIR}/RNRootView" "${PODS_CONFIGURATION_BUILD_DIR}/RNScreens" "${PODS_CONFIGURATION_BUILD_DIR}/RNUserDefaults" "${PODS_CONFIGURATION_BUILD_DIR}/RNVectorIcons" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration" "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsi" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/ReactNativeART" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/UMCore" "${PODS_CONFIGURATION_BUILD_DIR}/UMReactNativeAdapter" "${PODS_CONFIGURATION_BUILD_DIR}/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-appearance" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-background-timer" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-cameraroll" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-jitsi-meet" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-input" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-tracking-view" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-notifications" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-slider" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-video" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview" "${PODS_CONFIGURATION_BUILD_DIR}/rn-extensions-share" "${PODS_CONFIGURATION_BUILD_DIR}/rn-fetch-blob" -OTHER_LDFLAGS = $(inherited) -ObjC -l"BugsnagReactNative" -l"DoubleConversion" -l"EXAV" -l"EXAppLoaderProvider" -l"EXConstants" -l"EXFileSystem" -l"EXHaptics" -l"EXPermissions" -l"EXWebBrowser" -l"FBReactNativeSpec" -l"FirebaseCore" -l"FirebaseCoreDiagnostics" -l"FirebaseInstanceID" -l"Folly" -l"GoogleDataTransport" -l"GoogleDataTransportCCTSupport" -l"GoogleUtilities" -l"KeyCommands" -l"RCTTypeSafety" -l"RNAudio" -l"RNBootSplash" -l"RNDateTimePicker" -l"RNDeviceInfo" -l"RNFastImage" -l"RNFirebase" -l"RNGestureHandler" -l"RNImageCropPicker" -l"RNLocalize" -l"RNReanimated" -l"RNRootView" -l"RNScreens" -l"RNUserDefaults" -l"RNVectorIcons" -l"RSKImageCropper" -l"React-Core" -l"React-CoreModules" -l"React-RCTActionSheet" -l"React-RCTAnimation" -l"React-RCTBlob" -l"React-RCTImage" -l"React-RCTLinking" -l"React-RCTNetwork" -l"React-RCTSettings" -l"React-RCTText" -l"React-RCTVibration" -l"React-cxxreact" -l"React-jsi" -l"React-jsiexecutor" -l"React-jsinspector" -l"ReactCommon" -l"ReactNativeART" -l"SDWebImage" -l"SDWebImageWebPCoder" -l"UMCore" -l"UMReactNativeAdapter" -l"Yoga" -l"c++" -l"glog" -l"libwebp" -l"nanopb" -l"react-native-appearance" -l"react-native-background-timer" -l"react-native-cameraroll" -l"react-native-document-picker" -l"react-native-jitsi-meet" -l"react-native-keyboard-input" -l"react-native-keyboard-tracking-view" -l"react-native-notifications" -l"react-native-orientation-locker" -l"react-native-slider" -l"react-native-video" -l"react-native-webview" -l"rn-extensions-share" -l"rn-fetch-blob" -l"sqlite3" -l"stdc++" -l"z" -framework "AVFoundation" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseAnalytics" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "ImageIO" -framework "JavaScriptCore" -framework "JitsiMeet" -framework "MessageUI" -framework "Photos" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -framework "WebRTC" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BugsnagReactNative" "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/EXAV" "${PODS_CONFIGURATION_BUILD_DIR}/EXAppLoaderProvider" "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants" "${PODS_CONFIGURATION_BUILD_DIR}/EXFileSystem" "${PODS_CONFIGURATION_BUILD_DIR}/EXHaptics" "${PODS_CONFIGURATION_BUILD_DIR}/EXPermissions" "${PODS_CONFIGURATION_BUILD_DIR}/EXWebBrowser" "${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/Folly" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/KeyCommands" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety" "${PODS_CONFIGURATION_BUILD_DIR}/RNAudio" "${PODS_CONFIGURATION_BUILD_DIR}/RNBootSplash" "${PODS_CONFIGURATION_BUILD_DIR}/RNDateTimePicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/RNFastImage" "${PODS_CONFIGURATION_BUILD_DIR}/RNFirebase" "${PODS_CONFIGURATION_BUILD_DIR}/RNGestureHandler" "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/RNReanimated" "${PODS_CONFIGURATION_BUILD_DIR}/RNRootView" "${PODS_CONFIGURATION_BUILD_DIR}/RNScreens" "${PODS_CONFIGURATION_BUILD_DIR}/RNUserDefaults" "${PODS_CONFIGURATION_BUILD_DIR}/RNVectorIcons" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration" "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsi" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/ReactNativeART" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/UMCore" "${PODS_CONFIGURATION_BUILD_DIR}/UMReactNativeAdapter" "${PODS_CONFIGURATION_BUILD_DIR}/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-appearance" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-background-timer" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-cameraroll" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-jitsi-meet" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-input" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-tracking-view" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-notifications" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-slider" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-video" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview" "${PODS_CONFIGURATION_BUILD_DIR}/rn-extensions-share" "${PODS_CONFIGURATION_BUILD_DIR}/rn-fetch-blob" +OTHER_LDFLAGS = $(inherited) -ObjC -l"BugsnagReactNative" -l"DoubleConversion" -l"EXAV" -l"EXAppLoaderProvider" -l"EXConstants" -l"EXFileSystem" -l"EXHaptics" -l"EXPermissions" -l"EXWebBrowser" -l"FBReactNativeSpec" -l"FirebaseCore" -l"FirebaseCoreDiagnostics" -l"FirebaseInstallations" -l"FirebaseInstanceID" -l"Folly" -l"GoogleDataTransport" -l"GoogleDataTransportCCTSupport" -l"GoogleUtilities" -l"KeyCommands" -l"PromisesObjC" -l"RCTTypeSafety" -l"RNAudio" -l"RNBootSplash" -l"RNDateTimePicker" -l"RNDeviceInfo" -l"RNFastImage" -l"RNFirebase" -l"RNGestureHandler" -l"RNImageCropPicker" -l"RNLocalize" -l"RNReanimated" -l"RNRootView" -l"RNScreens" -l"RNUserDefaults" -l"RNVectorIcons" -l"RSKImageCropper" -l"React-Core" -l"React-CoreModules" -l"React-RCTActionSheet" -l"React-RCTAnimation" -l"React-RCTBlob" -l"React-RCTImage" -l"React-RCTLinking" -l"React-RCTNetwork" -l"React-RCTSettings" -l"React-RCTText" -l"React-RCTVibration" -l"React-cxxreact" -l"React-jsi" -l"React-jsiexecutor" -l"React-jsinspector" -l"ReactCommon" -l"ReactNativeART" -l"SDWebImage" -l"SDWebImageWebPCoder" -l"UMCore" -l"UMReactNativeAdapter" -l"Yoga" -l"c++" -l"glog" -l"libwebp" -l"nanopb" -l"react-native-appearance" -l"react-native-background-timer" -l"react-native-cameraroll" -l"react-native-document-picker" -l"react-native-jitsi-meet" -l"react-native-keyboard-input" -l"react-native-keyboard-tracking-view" -l"react-native-notifications" -l"react-native-orientation-locker" -l"react-native-slider" -l"react-native-video" -l"react-native-webview" -l"rn-extensions-share" -l"rn-fetch-blob" -l"sqlite3" -l"stdc++" -l"z" -framework "AVFoundation" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseAnalytics" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "ImageIO" -framework "JavaScriptCore" -framework "JitsiMeet" -framework "MessageUI" -framework "Photos" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -framework "WebRTC" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.markdown b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.markdown index f9281d76d..75d698db6 100644 --- a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.markdown +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.markdown @@ -65,11 +65,213 @@ Fabric: Copyright 2018 Google, Inc. All Rights Reserved. Use of this software is ## Firebase -Copyright 2019 Google + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + ## FirebaseAnalytics -Copyright 2019 Google +Copyright 2020 Google ## FirebaseCore @@ -689,6 +891,212 @@ Copyright 2019 Google limitations under the License. +## FirebaseInstallations + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + ## FirebaseInstanceID @@ -1078,7 +1486,7 @@ Copyright 2019 Google ## GoogleAppMeasurement -Copyright 2019 Google +Copyright 2020 Google ## GoogleDataTransport @@ -1697,6 +2105,51 @@ Copyright 2019 Google See the License for the specific language governing permissions and limitations under the License. +================================================================================ + +The following copyright from Landon J. Fuller applies to the isAppEncrypted +function in Environment/third_party/GULAppEnvironmentUtil.m. + +Copyright (c) 2017 Landon J. Fuller +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Comment from +iPhone Dev Wiki +Crack Prevention: App Store binaries are signed by both their developer +and Apple. This encrypts the binary so that decryption keys are needed in order +to make the binary readable. When iOS executes the binary, the decryption keys +are used to decrypt the binary into a readable state where it is then loaded +into memory and executed. iOS can tell the encryption status of a binary via the +cryptid structure member of LC_ENCRYPTION_INFO MachO load command. If cryptid is +a non-zero value then the binary is encrypted. + +'Cracking' works by letting the kernel decrypt the binary then siphoning the +decrypted data into a new binary file, resigning, and repackaging. This will +only work on jailbroken devices as codesignature validation has been removed. +Resigning takes place because while the codesignature doesn't have to be valid +thanks to the jailbreak, it does have to be in place unless you have AppSync or +similar to disable codesignature checks. + +More information at Landon +Fuller's blog + ## JitsiMeetSDK @@ -1715,6 +2168,212 @@ See the License for the specific language governing permissions and limitations under the License. +## PromisesObjC + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + ## RNAudio The MIT License (MIT) diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.plist b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.plist index a1ff25b21..96456cccb 100644 --- a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.plist +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.plist @@ -100,9 +100,211 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. FooterText - Copyright 2019 Google + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + License - Copyright + Apache Title Firebase Type @@ -110,7 +312,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. FooterText - Copyright 2019 Google + Copyright 2020 Google License Copyright Title @@ -947,6 +1149,218 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright [yyyy] [name of copyright owner] + 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. + + License + Apache + Title + FirebaseInstallations + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + 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 @@ -1155,7 +1569,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. FooterText - Copyright 2019 Google + Copyright 2020 Google License Copyright Title @@ -1791,6 +2205,51 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 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. + +================================================================================ + +The following copyright from Landon J. Fuller applies to the isAppEncrypted +function in Environment/third_party/GULAppEnvironmentUtil.m. + +Copyright (c) 2017 Landon J. Fuller <landon@landonf.org> +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Comment from +<a href="http://iphonedevwiki.net/index.php/Crack_prevention">iPhone Dev Wiki +Crack Prevention</a>: App Store binaries are signed by both their developer +and Apple. This encrypts the binary so that decryption keys are needed in order +to make the binary readable. When iOS executes the binary, the decryption keys +are used to decrypt the binary into a readable state where it is then loaded +into memory and executed. iOS can tell the encryption status of a binary via the +cryptid structure member of LC_ENCRYPTION_INFO MachO load command. If cryptid is +a non-zero value then the binary is encrypted. + +'Cracking' works by letting the kernel decrypt the binary then siphoning the +decrypted data into a new binary file, resigning, and repackaging. This will +only work on jailbroken devices as codesignature validation has been removed. +Resigning takes place because while the codesignature doesn't have to be valid +thanks to the jailbreak, it does have to be in place unless you have AppSync or +similar to disable codesignature checks. + +More information at <a href="http://landonf.org/2009/02/index.html">Landon +Fuller's blog</a> License Apache @@ -1822,6 +2281,218 @@ limitations under the License. Type PSGroupSpecifier + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + License + Apache + Title + PromisesObjC + Type + PSGroupSpecifier + FooterText The MIT License (MIT) diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig index 32f1af740..5452efcaa 100644 --- a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig @@ -1,9 +1,9 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_ROOT}/JitsiMeetSDK/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) SD_WEBP=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BugsnagReactNative" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/EXAV" "${PODS_ROOT}/Headers/Public/EXAppLoaderProvider" "${PODS_ROOT}/Headers/Public/EXConstants" "${PODS_ROOT}/Headers/Public/EXFileSystem" "${PODS_ROOT}/Headers/Public/EXHaptics" "${PODS_ROOT}/Headers/Public/EXPermissions" "${PODS_ROOT}/Headers/Public/EXWebBrowser" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/KeyCommands" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/RNAudio" "${PODS_ROOT}/Headers/Public/RNBootSplash" "${PODS_ROOT}/Headers/Public/RNDateTimePicker" "${PODS_ROOT}/Headers/Public/RNDeviceInfo" "${PODS_ROOT}/Headers/Public/RNFastImage" "${PODS_ROOT}/Headers/Public/RNFirebase" "${PODS_ROOT}/Headers/Public/RNGestureHandler" "${PODS_ROOT}/Headers/Public/RNImageCropPicker" "${PODS_ROOT}/Headers/Public/RNLocalize" "${PODS_ROOT}/Headers/Public/RNReanimated" "${PODS_ROOT}/Headers/Public/RNRootView" "${PODS_ROOT}/Headers/Public/RNScreens" "${PODS_ROOT}/Headers/Public/RNUserDefaults" "${PODS_ROOT}/Headers/Public/RNVectorIcons" "${PODS_ROOT}/Headers/Public/RSKImageCropper" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/ReactNativeART" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SDWebImageWebPCoder" "${PODS_ROOT}/Headers/Public/UMBarCodeScannerInterface" "${PODS_ROOT}/Headers/Public/UMCameraInterface" "${PODS_ROOT}/Headers/Public/UMConstantsInterface" "${PODS_ROOT}/Headers/Public/UMCore" "${PODS_ROOT}/Headers/Public/UMFaceDetectorInterface" "${PODS_ROOT}/Headers/Public/UMFileSystemInterface" "${PODS_ROOT}/Headers/Public/UMFontInterface" "${PODS_ROOT}/Headers/Public/UMImageLoaderInterface" "${PODS_ROOT}/Headers/Public/UMPermissionsInterface" "${PODS_ROOT}/Headers/Public/UMReactNativeAdapter" "${PODS_ROOT}/Headers/Public/UMSensorsInterface" "${PODS_ROOT}/Headers/Public/UMTaskManagerInterface" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/libwebp" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_ROOT}/Headers/Public/react-native-appearance" "${PODS_ROOT}/Headers/Public/react-native-background-timer" "${PODS_ROOT}/Headers/Public/react-native-cameraroll" "${PODS_ROOT}/Headers/Public/react-native-document-picker" "${PODS_ROOT}/Headers/Public/react-native-jitsi-meet" "${PODS_ROOT}/Headers/Public/react-native-keyboard-input" "${PODS_ROOT}/Headers/Public/react-native-keyboard-tracking-view" "${PODS_ROOT}/Headers/Public/react-native-notifications" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-slider" "${PODS_ROOT}/Headers/Public/react-native-video" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/rn-fetch-blob" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "$(PODS_ROOT)/Headers/Private/React-Core" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BugsnagReactNative" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/EXAV" "${PODS_ROOT}/Headers/Public/EXAppLoaderProvider" "${PODS_ROOT}/Headers/Public/EXConstants" "${PODS_ROOT}/Headers/Public/EXFileSystem" "${PODS_ROOT}/Headers/Public/EXHaptics" "${PODS_ROOT}/Headers/Public/EXPermissions" "${PODS_ROOT}/Headers/Public/EXWebBrowser" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstallations" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/KeyCommands" "${PODS_ROOT}/Headers/Public/PromisesObjC" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/RNAudio" "${PODS_ROOT}/Headers/Public/RNBootSplash" "${PODS_ROOT}/Headers/Public/RNDateTimePicker" "${PODS_ROOT}/Headers/Public/RNDeviceInfo" "${PODS_ROOT}/Headers/Public/RNFastImage" "${PODS_ROOT}/Headers/Public/RNFirebase" "${PODS_ROOT}/Headers/Public/RNGestureHandler" "${PODS_ROOT}/Headers/Public/RNImageCropPicker" "${PODS_ROOT}/Headers/Public/RNLocalize" "${PODS_ROOT}/Headers/Public/RNReanimated" "${PODS_ROOT}/Headers/Public/RNRootView" "${PODS_ROOT}/Headers/Public/RNScreens" "${PODS_ROOT}/Headers/Public/RNUserDefaults" "${PODS_ROOT}/Headers/Public/RNVectorIcons" "${PODS_ROOT}/Headers/Public/RSKImageCropper" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/ReactNativeART" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SDWebImageWebPCoder" "${PODS_ROOT}/Headers/Public/UMBarCodeScannerInterface" "${PODS_ROOT}/Headers/Public/UMCameraInterface" "${PODS_ROOT}/Headers/Public/UMConstantsInterface" "${PODS_ROOT}/Headers/Public/UMCore" "${PODS_ROOT}/Headers/Public/UMFaceDetectorInterface" "${PODS_ROOT}/Headers/Public/UMFileSystemInterface" "${PODS_ROOT}/Headers/Public/UMFontInterface" "${PODS_ROOT}/Headers/Public/UMImageLoaderInterface" "${PODS_ROOT}/Headers/Public/UMPermissionsInterface" "${PODS_ROOT}/Headers/Public/UMReactNativeAdapter" "${PODS_ROOT}/Headers/Public/UMSensorsInterface" "${PODS_ROOT}/Headers/Public/UMTaskManagerInterface" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/libwebp" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_ROOT}/Headers/Public/react-native-appearance" "${PODS_ROOT}/Headers/Public/react-native-background-timer" "${PODS_ROOT}/Headers/Public/react-native-cameraroll" "${PODS_ROOT}/Headers/Public/react-native-document-picker" "${PODS_ROOT}/Headers/Public/react-native-jitsi-meet" "${PODS_ROOT}/Headers/Public/react-native-keyboard-input" "${PODS_ROOT}/Headers/Public/react-native-keyboard-tracking-view" "${PODS_ROOT}/Headers/Public/react-native-notifications" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-slider" "${PODS_ROOT}/Headers/Public/react-native-video" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/rn-fetch-blob" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" "$(PODS_ROOT)/Headers/Private/React-Core" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BugsnagReactNative" "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/Folly" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/KeyCommands" "${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety" "${PODS_CONFIGURATION_BUILD_DIR}/RNAudio" "${PODS_CONFIGURATION_BUILD_DIR}/RNBootSplash" "${PODS_CONFIGURATION_BUILD_DIR}/RNDateTimePicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/RNFastImage" "${PODS_CONFIGURATION_BUILD_DIR}/RNFirebase" "${PODS_CONFIGURATION_BUILD_DIR}/RNGestureHandler" "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/RNReanimated" "${PODS_CONFIGURATION_BUILD_DIR}/RNRootView" "${PODS_CONFIGURATION_BUILD_DIR}/RNScreens" "${PODS_CONFIGURATION_BUILD_DIR}/RNUserDefaults" "${PODS_CONFIGURATION_BUILD_DIR}/RNVectorIcons" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration" "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsi" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/ReactNativeART" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-appearance" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-background-timer" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-cameraroll" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-jitsi-meet" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-input" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-tracking-view" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-notifications" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-slider" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-video" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview" "${PODS_CONFIGURATION_BUILD_DIR}/rn-extensions-share" "${PODS_CONFIGURATION_BUILD_DIR}/rn-fetch-blob" -OTHER_LDFLAGS = $(inherited) -ObjC -l"BugsnagReactNative" -l"DoubleConversion" -l"FBReactNativeSpec" -l"FirebaseCore" -l"FirebaseCoreDiagnostics" -l"FirebaseInstanceID" -l"Folly" -l"GoogleDataTransport" -l"GoogleDataTransportCCTSupport" -l"GoogleUtilities" -l"KeyCommands" -l"RCTTypeSafety" -l"RNAudio" -l"RNBootSplash" -l"RNDateTimePicker" -l"RNDeviceInfo" -l"RNFastImage" -l"RNFirebase" -l"RNGestureHandler" -l"RNImageCropPicker" -l"RNLocalize" -l"RNReanimated" -l"RNRootView" -l"RNScreens" -l"RNUserDefaults" -l"RNVectorIcons" -l"RSKImageCropper" -l"React-Core" -l"React-CoreModules" -l"React-RCTActionSheet" -l"React-RCTAnimation" -l"React-RCTBlob" -l"React-RCTImage" -l"React-RCTLinking" -l"React-RCTNetwork" -l"React-RCTSettings" -l"React-RCTText" -l"React-RCTVibration" -l"React-cxxreact" -l"React-jsi" -l"React-jsiexecutor" -l"React-jsinspector" -l"ReactCommon" -l"ReactNativeART" -l"SDWebImage" -l"SDWebImageWebPCoder" -l"Yoga" -l"c++" -l"glog" -l"libwebp" -l"nanopb" -l"react-native-appearance" -l"react-native-background-timer" -l"react-native-cameraroll" -l"react-native-document-picker" -l"react-native-jitsi-meet" -l"react-native-keyboard-input" -l"react-native-keyboard-tracking-view" -l"react-native-notifications" -l"react-native-orientation-locker" -l"react-native-slider" -l"react-native-video" -l"react-native-webview" -l"rn-extensions-share" -l"rn-fetch-blob" -l"sqlite3" -l"stdc++" -l"z" -framework "AVFoundation" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseAnalytics" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "ImageIO" -framework "JavaScriptCore" -framework "JitsiMeet" -framework "MessageUI" -framework "Photos" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -framework "WebRTC" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BugsnagReactNative" "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/Folly" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/KeyCommands" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety" "${PODS_CONFIGURATION_BUILD_DIR}/RNAudio" "${PODS_CONFIGURATION_BUILD_DIR}/RNBootSplash" "${PODS_CONFIGURATION_BUILD_DIR}/RNDateTimePicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/RNFastImage" "${PODS_CONFIGURATION_BUILD_DIR}/RNFirebase" "${PODS_CONFIGURATION_BUILD_DIR}/RNGestureHandler" "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/RNReanimated" "${PODS_CONFIGURATION_BUILD_DIR}/RNRootView" "${PODS_CONFIGURATION_BUILD_DIR}/RNScreens" "${PODS_CONFIGURATION_BUILD_DIR}/RNUserDefaults" "${PODS_CONFIGURATION_BUILD_DIR}/RNVectorIcons" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration" "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsi" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/ReactNativeART" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-appearance" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-background-timer" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-cameraroll" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-jitsi-meet" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-input" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-tracking-view" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-notifications" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-slider" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-video" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview" "${PODS_CONFIGURATION_BUILD_DIR}/rn-extensions-share" "${PODS_CONFIGURATION_BUILD_DIR}/rn-fetch-blob" +OTHER_LDFLAGS = $(inherited) -ObjC -l"BugsnagReactNative" -l"DoubleConversion" -l"FBReactNativeSpec" -l"FirebaseCore" -l"FirebaseCoreDiagnostics" -l"FirebaseInstallations" -l"FirebaseInstanceID" -l"Folly" -l"GoogleDataTransport" -l"GoogleDataTransportCCTSupport" -l"GoogleUtilities" -l"KeyCommands" -l"PromisesObjC" -l"RCTTypeSafety" -l"RNAudio" -l"RNBootSplash" -l"RNDateTimePicker" -l"RNDeviceInfo" -l"RNFastImage" -l"RNFirebase" -l"RNGestureHandler" -l"RNImageCropPicker" -l"RNLocalize" -l"RNReanimated" -l"RNRootView" -l"RNScreens" -l"RNUserDefaults" -l"RNVectorIcons" -l"RSKImageCropper" -l"React-Core" -l"React-CoreModules" -l"React-RCTActionSheet" -l"React-RCTAnimation" -l"React-RCTBlob" -l"React-RCTImage" -l"React-RCTLinking" -l"React-RCTNetwork" -l"React-RCTSettings" -l"React-RCTText" -l"React-RCTVibration" -l"React-cxxreact" -l"React-jsi" -l"React-jsiexecutor" -l"React-jsinspector" -l"ReactCommon" -l"ReactNativeART" -l"SDWebImage" -l"SDWebImageWebPCoder" -l"Yoga" -l"c++" -l"glog" -l"libwebp" -l"nanopb" -l"react-native-appearance" -l"react-native-background-timer" -l"react-native-cameraroll" -l"react-native-document-picker" -l"react-native-jitsi-meet" -l"react-native-keyboard-input" -l"react-native-keyboard-tracking-view" -l"react-native-notifications" -l"react-native-orientation-locker" -l"react-native-slider" -l"react-native-video" -l"react-native-webview" -l"rn-extensions-share" -l"rn-fetch-blob" -l"sqlite3" -l"stdc++" -l"z" -framework "AVFoundation" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseAnalytics" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "ImageIO" -framework "JavaScriptCore" -framework "JitsiMeet" -framework "MessageUI" -framework "Photos" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -framework "WebRTC" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig index 32f1af740..5452efcaa 100644 --- a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig @@ -1,9 +1,9 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" "${PODS_ROOT}/JitsiMeetSDK/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) SD_WEBP=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BugsnagReactNative" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/EXAV" "${PODS_ROOT}/Headers/Public/EXAppLoaderProvider" "${PODS_ROOT}/Headers/Public/EXConstants" "${PODS_ROOT}/Headers/Public/EXFileSystem" "${PODS_ROOT}/Headers/Public/EXHaptics" "${PODS_ROOT}/Headers/Public/EXPermissions" "${PODS_ROOT}/Headers/Public/EXWebBrowser" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/KeyCommands" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/RNAudio" "${PODS_ROOT}/Headers/Public/RNBootSplash" "${PODS_ROOT}/Headers/Public/RNDateTimePicker" "${PODS_ROOT}/Headers/Public/RNDeviceInfo" "${PODS_ROOT}/Headers/Public/RNFastImage" "${PODS_ROOT}/Headers/Public/RNFirebase" "${PODS_ROOT}/Headers/Public/RNGestureHandler" "${PODS_ROOT}/Headers/Public/RNImageCropPicker" "${PODS_ROOT}/Headers/Public/RNLocalize" "${PODS_ROOT}/Headers/Public/RNReanimated" "${PODS_ROOT}/Headers/Public/RNRootView" "${PODS_ROOT}/Headers/Public/RNScreens" "${PODS_ROOT}/Headers/Public/RNUserDefaults" "${PODS_ROOT}/Headers/Public/RNVectorIcons" "${PODS_ROOT}/Headers/Public/RSKImageCropper" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/ReactNativeART" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SDWebImageWebPCoder" "${PODS_ROOT}/Headers/Public/UMBarCodeScannerInterface" "${PODS_ROOT}/Headers/Public/UMCameraInterface" "${PODS_ROOT}/Headers/Public/UMConstantsInterface" "${PODS_ROOT}/Headers/Public/UMCore" "${PODS_ROOT}/Headers/Public/UMFaceDetectorInterface" "${PODS_ROOT}/Headers/Public/UMFileSystemInterface" "${PODS_ROOT}/Headers/Public/UMFontInterface" "${PODS_ROOT}/Headers/Public/UMImageLoaderInterface" "${PODS_ROOT}/Headers/Public/UMPermissionsInterface" "${PODS_ROOT}/Headers/Public/UMReactNativeAdapter" "${PODS_ROOT}/Headers/Public/UMSensorsInterface" "${PODS_ROOT}/Headers/Public/UMTaskManagerInterface" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/libwebp" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_ROOT}/Headers/Public/react-native-appearance" "${PODS_ROOT}/Headers/Public/react-native-background-timer" "${PODS_ROOT}/Headers/Public/react-native-cameraroll" "${PODS_ROOT}/Headers/Public/react-native-document-picker" "${PODS_ROOT}/Headers/Public/react-native-jitsi-meet" "${PODS_ROOT}/Headers/Public/react-native-keyboard-input" "${PODS_ROOT}/Headers/Public/react-native-keyboard-tracking-view" "${PODS_ROOT}/Headers/Public/react-native-notifications" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-slider" "${PODS_ROOT}/Headers/Public/react-native-video" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/rn-fetch-blob" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "$(PODS_ROOT)/Headers/Private/React-Core" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BugsnagReactNative" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/EXAV" "${PODS_ROOT}/Headers/Public/EXAppLoaderProvider" "${PODS_ROOT}/Headers/Public/EXConstants" "${PODS_ROOT}/Headers/Public/EXFileSystem" "${PODS_ROOT}/Headers/Public/EXHaptics" "${PODS_ROOT}/Headers/Public/EXPermissions" "${PODS_ROOT}/Headers/Public/EXWebBrowser" "${PODS_ROOT}/Headers/Public/FBLazyVector" "${PODS_ROOT}/Headers/Public/FBReactNativeSpec" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstallations" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/KeyCommands" "${PODS_ROOT}/Headers/Public/PromisesObjC" "${PODS_ROOT}/Headers/Public/RCTRequired" "${PODS_ROOT}/Headers/Public/RCTTypeSafety" "${PODS_ROOT}/Headers/Public/RNAudio" "${PODS_ROOT}/Headers/Public/RNBootSplash" "${PODS_ROOT}/Headers/Public/RNDateTimePicker" "${PODS_ROOT}/Headers/Public/RNDeviceInfo" "${PODS_ROOT}/Headers/Public/RNFastImage" "${PODS_ROOT}/Headers/Public/RNFirebase" "${PODS_ROOT}/Headers/Public/RNGestureHandler" "${PODS_ROOT}/Headers/Public/RNImageCropPicker" "${PODS_ROOT}/Headers/Public/RNLocalize" "${PODS_ROOT}/Headers/Public/RNReanimated" "${PODS_ROOT}/Headers/Public/RNRootView" "${PODS_ROOT}/Headers/Public/RNScreens" "${PODS_ROOT}/Headers/Public/RNUserDefaults" "${PODS_ROOT}/Headers/Public/RNVectorIcons" "${PODS_ROOT}/Headers/Public/RSKImageCropper" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/ReactCommon" "${PODS_ROOT}/Headers/Public/ReactNativeART" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SDWebImageWebPCoder" "${PODS_ROOT}/Headers/Public/UMBarCodeScannerInterface" "${PODS_ROOT}/Headers/Public/UMCameraInterface" "${PODS_ROOT}/Headers/Public/UMConstantsInterface" "${PODS_ROOT}/Headers/Public/UMCore" "${PODS_ROOT}/Headers/Public/UMFaceDetectorInterface" "${PODS_ROOT}/Headers/Public/UMFileSystemInterface" "${PODS_ROOT}/Headers/Public/UMFontInterface" "${PODS_ROOT}/Headers/Public/UMImageLoaderInterface" "${PODS_ROOT}/Headers/Public/UMPermissionsInterface" "${PODS_ROOT}/Headers/Public/UMReactNativeAdapter" "${PODS_ROOT}/Headers/Public/UMSensorsInterface" "${PODS_ROOT}/Headers/Public/UMTaskManagerInterface" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/libwebp" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_ROOT}/Headers/Public/react-native-appearance" "${PODS_ROOT}/Headers/Public/react-native-background-timer" "${PODS_ROOT}/Headers/Public/react-native-cameraroll" "${PODS_ROOT}/Headers/Public/react-native-document-picker" "${PODS_ROOT}/Headers/Public/react-native-jitsi-meet" "${PODS_ROOT}/Headers/Public/react-native-keyboard-input" "${PODS_ROOT}/Headers/Public/react-native-keyboard-tracking-view" "${PODS_ROOT}/Headers/Public/react-native-notifications" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-slider" "${PODS_ROOT}/Headers/Public/react-native-video" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/rn-fetch-blob" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" "$(PODS_ROOT)/Headers/Private/React-Core" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BugsnagReactNative" "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/Folly" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/KeyCommands" "${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety" "${PODS_CONFIGURATION_BUILD_DIR}/RNAudio" "${PODS_CONFIGURATION_BUILD_DIR}/RNBootSplash" "${PODS_CONFIGURATION_BUILD_DIR}/RNDateTimePicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/RNFastImage" "${PODS_CONFIGURATION_BUILD_DIR}/RNFirebase" "${PODS_CONFIGURATION_BUILD_DIR}/RNGestureHandler" "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/RNReanimated" "${PODS_CONFIGURATION_BUILD_DIR}/RNRootView" "${PODS_CONFIGURATION_BUILD_DIR}/RNScreens" "${PODS_CONFIGURATION_BUILD_DIR}/RNUserDefaults" "${PODS_CONFIGURATION_BUILD_DIR}/RNVectorIcons" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration" "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsi" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/ReactNativeART" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-appearance" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-background-timer" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-cameraroll" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-jitsi-meet" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-input" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-tracking-view" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-notifications" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-slider" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-video" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview" "${PODS_CONFIGURATION_BUILD_DIR}/rn-extensions-share" "${PODS_CONFIGURATION_BUILD_DIR}/rn-fetch-blob" -OTHER_LDFLAGS = $(inherited) -ObjC -l"BugsnagReactNative" -l"DoubleConversion" -l"FBReactNativeSpec" -l"FirebaseCore" -l"FirebaseCoreDiagnostics" -l"FirebaseInstanceID" -l"Folly" -l"GoogleDataTransport" -l"GoogleDataTransportCCTSupport" -l"GoogleUtilities" -l"KeyCommands" -l"RCTTypeSafety" -l"RNAudio" -l"RNBootSplash" -l"RNDateTimePicker" -l"RNDeviceInfo" -l"RNFastImage" -l"RNFirebase" -l"RNGestureHandler" -l"RNImageCropPicker" -l"RNLocalize" -l"RNReanimated" -l"RNRootView" -l"RNScreens" -l"RNUserDefaults" -l"RNVectorIcons" -l"RSKImageCropper" -l"React-Core" -l"React-CoreModules" -l"React-RCTActionSheet" -l"React-RCTAnimation" -l"React-RCTBlob" -l"React-RCTImage" -l"React-RCTLinking" -l"React-RCTNetwork" -l"React-RCTSettings" -l"React-RCTText" -l"React-RCTVibration" -l"React-cxxreact" -l"React-jsi" -l"React-jsiexecutor" -l"React-jsinspector" -l"ReactCommon" -l"ReactNativeART" -l"SDWebImage" -l"SDWebImageWebPCoder" -l"Yoga" -l"c++" -l"glog" -l"libwebp" -l"nanopb" -l"react-native-appearance" -l"react-native-background-timer" -l"react-native-cameraroll" -l"react-native-document-picker" -l"react-native-jitsi-meet" -l"react-native-keyboard-input" -l"react-native-keyboard-tracking-view" -l"react-native-notifications" -l"react-native-orientation-locker" -l"react-native-slider" -l"react-native-video" -l"react-native-webview" -l"rn-extensions-share" -l"rn-fetch-blob" -l"sqlite3" -l"stdc++" -l"z" -framework "AVFoundation" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseAnalytics" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "ImageIO" -framework "JavaScriptCore" -framework "JitsiMeet" -framework "MessageUI" -framework "Photos" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -framework "WebRTC" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BugsnagReactNative" "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/FBReactNativeSpec" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCoreDiagnostics" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstallations" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/Folly" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleDataTransportCCTSupport" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/KeyCommands" "${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC" "${PODS_CONFIGURATION_BUILD_DIR}/RCTTypeSafety" "${PODS_CONFIGURATION_BUILD_DIR}/RNAudio" "${PODS_CONFIGURATION_BUILD_DIR}/RNBootSplash" "${PODS_CONFIGURATION_BUILD_DIR}/RNDateTimePicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/RNFastImage" "${PODS_CONFIGURATION_BUILD_DIR}/RNFirebase" "${PODS_CONFIGURATION_BUILD_DIR}/RNGestureHandler" "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/RNReanimated" "${PODS_CONFIGURATION_BUILD_DIR}/RNRootView" "${PODS_CONFIGURATION_BUILD_DIR}/RNScreens" "${PODS_CONFIGURATION_BUILD_DIR}/RNUserDefaults" "${PODS_CONFIGURATION_BUILD_DIR}/RNVectorIcons" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/React-Core" "${PODS_CONFIGURATION_BUILD_DIR}/React-CoreModules" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTActionSheet" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTAnimation" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTBlob" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTImage" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTLinking" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTNetwork" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTSettings" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTText" "${PODS_CONFIGURATION_BUILD_DIR}/React-RCTVibration" "${PODS_CONFIGURATION_BUILD_DIR}/React-cxxreact" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsi" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsiexecutor" "${PODS_CONFIGURATION_BUILD_DIR}/React-jsinspector" "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon" "${PODS_CONFIGURATION_BUILD_DIR}/ReactNativeART" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImageWebPCoder" "${PODS_CONFIGURATION_BUILD_DIR}/Yoga" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/libwebp" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-appearance" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-background-timer" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-cameraroll" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-jitsi-meet" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-input" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-keyboard-tracking-view" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-notifications" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-slider" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-video" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview" "${PODS_CONFIGURATION_BUILD_DIR}/rn-extensions-share" "${PODS_CONFIGURATION_BUILD_DIR}/rn-fetch-blob" +OTHER_LDFLAGS = $(inherited) -ObjC -l"BugsnagReactNative" -l"DoubleConversion" -l"FBReactNativeSpec" -l"FirebaseCore" -l"FirebaseCoreDiagnostics" -l"FirebaseInstallations" -l"FirebaseInstanceID" -l"Folly" -l"GoogleDataTransport" -l"GoogleDataTransportCCTSupport" -l"GoogleUtilities" -l"KeyCommands" -l"PromisesObjC" -l"RCTTypeSafety" -l"RNAudio" -l"RNBootSplash" -l"RNDateTimePicker" -l"RNDeviceInfo" -l"RNFastImage" -l"RNFirebase" -l"RNGestureHandler" -l"RNImageCropPicker" -l"RNLocalize" -l"RNReanimated" -l"RNRootView" -l"RNScreens" -l"RNUserDefaults" -l"RNVectorIcons" -l"RSKImageCropper" -l"React-Core" -l"React-CoreModules" -l"React-RCTActionSheet" -l"React-RCTAnimation" -l"React-RCTBlob" -l"React-RCTImage" -l"React-RCTLinking" -l"React-RCTNetwork" -l"React-RCTSettings" -l"React-RCTText" -l"React-RCTVibration" -l"React-cxxreact" -l"React-jsi" -l"React-jsiexecutor" -l"React-jsinspector" -l"ReactCommon" -l"ReactNativeART" -l"SDWebImage" -l"SDWebImageWebPCoder" -l"Yoga" -l"c++" -l"glog" -l"libwebp" -l"nanopb" -l"react-native-appearance" -l"react-native-background-timer" -l"react-native-cameraroll" -l"react-native-document-picker" -l"react-native-jitsi-meet" -l"react-native-keyboard-input" -l"react-native-keyboard-tracking-view" -l"react-native-notifications" -l"react-native-orientation-locker" -l"react-native-slider" -l"react-native-video" -l"react-native-webview" -l"rn-extensions-share" -l"rn-fetch-blob" -l"sqlite3" -l"stdc++" -l"z" -framework "AVFoundation" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseAnalytics" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "ImageIO" -framework "JavaScriptCore" -framework "JitsiMeet" -framework "MessageUI" -framework "Photos" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" -framework "WebRTC" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/ios/Pods/Target Support Files/PromisesObjC/PromisesObjC-dummy.m b/ios/Pods/Target Support Files/PromisesObjC/PromisesObjC-dummy.m new file mode 100644 index 000000000..ab1f21040 --- /dev/null +++ b/ios/Pods/Target Support Files/PromisesObjC/PromisesObjC-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_PromisesObjC : NSObject +@end +@implementation PodsDummy_PromisesObjC +@end diff --git a/ios/Pods/Target Support Files/PromisesObjC/PromisesObjC.xcconfig b/ios/Pods/Target Support Files/PromisesObjC/PromisesObjC.xcconfig new file mode 100644 index 000000000..35fc3030f --- /dev/null +++ b/ios/Pods/Target Support Files/PromisesObjC/PromisesObjC.xcconfig @@ -0,0 +1,11 @@ +APPLICATION_EXTENSION_API_ONLY = YES +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/PromisesObjC +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/PromisesObjC" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/PromisesObjC" "${PODS_TARGET_SRCROOT}/Sources/FBLPromises/include" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/PromisesObjC +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/ios/Pods/Target Support Files/RNFirebase/RNFirebase.xcconfig b/ios/Pods/Target Support Files/RNFirebase/RNFirebase.xcconfig index 96a815953..11532cef9 100644 --- a/ios/Pods/Target Support Files/RNFirebase/RNFirebase.xcconfig +++ b/ios/Pods/Target Support Files/RNFirebase/RNFirebase.xcconfig @@ -2,7 +2,7 @@ APPLICATION_EXTENSION_API_ONLY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RNFirebase FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RNFirebase" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/RNFirebase" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/nanopb" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/RNFirebase" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnostics" "${PODS_ROOT}/Headers/Public/FirebaseCoreDiagnosticsInterop" "${PODS_ROOT}/Headers/Public/FirebaseInstallations" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GoogleDataTransport" "${PODS_ROOT}/Headers/Public/GoogleDataTransportCCTSupport" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/PromisesObjC" "${PODS_ROOT}/Headers/Public/RNFirebase" "${PODS_ROOT}/Headers/Public/React-Core" "${PODS_ROOT}/Headers/Public/React-RCTBlob" "${PODS_ROOT}/Headers/Public/React-RCTText" "${PODS_ROOT}/Headers/Public/React-cxxreact" "${PODS_ROOT}/Headers/Public/React-jsi" "${PODS_ROOT}/Headers/Public/React-jsiexecutor" "${PODS_ROOT}/Headers/Public/React-jsinspector" "${PODS_ROOT}/Headers/Public/Yoga" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/nanopb" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_ROOT = ${SRCROOT} diff --git a/ios/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig b/ios/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig index d5ea06f14..680f9bcb4 100644 --- a/ios/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig +++ b/ios/Pods/Target Support Files/SDWebImage/SDWebImage.xcconfig @@ -1,5 +1,6 @@ APPLICATION_EXTENSION_API_ONLY = YES CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage +DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = NO GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SDWebImage" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SDWebImage" PODS_BUILD_DIR = ${BUILD_DIR} @@ -8,4 +9,5 @@ PODS_ROOT = ${SRCROOT} PODS_TARGET_SRCROOT = ${PODS_ROOT}/SDWebImage PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} SKIP_INSTALL = YES +SUPPORTS_MACCATALYST = YES USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/ios/Pods/libwebp/README b/ios/Pods/libwebp/README index 60da8a288..059272763 100644 --- a/ios/Pods/libwebp/README +++ b/ios/Pods/libwebp/README @@ -4,7 +4,7 @@ \__\__/\____/\_____/__/ ____ ___ / _/ / \ \ / _ \/ _/ / \_/ / / \ \ __/ \__ - \____/____/\_____/_____/____/v1.0.3 + \____/____/\_____/_____/____/v1.1.0 Description: ============ diff --git a/ios/Pods/libwebp/README.mux b/ios/Pods/libwebp/README.mux index e7eb50671..22560fe8c 100644 --- a/ios/Pods/libwebp/README.mux +++ b/ios/Pods/libwebp/README.mux @@ -1,7 +1,7 @@  __ __ ____ ____ ____ __ __ _ __ __ / \\/ \/ _ \/ _ \/ _ \/ \ \/ \___/_ / _\ \ / __/ _ \ __/ / / (_/ /__ - \__\__/\_____/_____/__/ \__//_/\_____/__/___/v1.0.3 + \__\__/\_____/_____/__/ \__//_/\_____/__/___/v1.1.0 Description: diff --git a/ios/Pods/libwebp/src/Makefile.am b/ios/Pods/libwebp/src/Makefile.am index 4cb299979..bcebf7396 100644 --- a/ios/Pods/libwebp/src/Makefile.am +++ b/ios/Pods/libwebp/src/Makefile.am @@ -36,7 +36,7 @@ libwebp_la_LIBADD += utils/libwebputils.la # other than the ones listed on the command line, i.e., after linking, it will # not have unresolved symbols. Some platforms (Windows among them) require all # symbols in shared libraries to be resolved at library creation. -libwebp_la_LDFLAGS = -no-undefined -version-info 7:5:0 +libwebp_la_LDFLAGS = -no-undefined -version-info 8:0:1 libwebpincludedir = $(includedir)/webp pkgconfig_DATA = libwebp.pc @@ -48,7 +48,7 @@ if BUILD_LIBWEBPDECODER libwebpdecoder_la_LIBADD += dsp/libwebpdspdecode.la libwebpdecoder_la_LIBADD += utils/libwebputilsdecode.la - libwebpdecoder_la_LDFLAGS = -no-undefined -version-info 3:5:0 + libwebpdecoder_la_LDFLAGS = -no-undefined -version-info 4:0:1 pkgconfig_DATA += libwebpdecoder.pc endif diff --git a/ios/Pods/libwebp/src/dec/frame_dec.c b/ios/Pods/libwebp/src/dec/frame_dec.c index bda9e1a6f..04609a8e5 100644 --- a/ios/Pods/libwebp/src/dec/frame_dec.c +++ b/ios/Pods/libwebp/src/dec/frame_dec.c @@ -732,7 +732,7 @@ static int AllocateMemory(VP8Decoder* const dec) { mem += f_info_size; dec->thread_ctx_.id_ = 0; dec->thread_ctx_.f_info_ = dec->f_info_; - if (dec->mt_method_ > 0) { + if (dec->filter_type_ > 0 && dec->mt_method_ > 0) { // secondary cache line. The deblocking process need to make use of the // filtering strength from previous macroblock row, while the new ones // are being decoded in parallel. We'll just swap the pointers. diff --git a/ios/Pods/libwebp/src/dec/idec_dec.c b/ios/Pods/libwebp/src/dec/idec_dec.c index 9bc916680..9035df565 100644 --- a/ios/Pods/libwebp/src/dec/idec_dec.c +++ b/ios/Pods/libwebp/src/dec/idec_dec.c @@ -166,9 +166,11 @@ static int AppendToMemBuffer(WebPIDecoder* const idec, VP8Decoder* const dec = (VP8Decoder*)idec->dec_; MemBuffer* const mem = &idec->mem_; const int need_compressed_alpha = NeedCompressedAlpha(idec); - const uint8_t* const old_start = mem->buf_ + mem->start_; + const uint8_t* const old_start = + (mem->buf_ == NULL) ? NULL : mem->buf_ + mem->start_; const uint8_t* const old_base = need_compressed_alpha ? dec->alpha_data_ : old_start; + assert(mem->buf_ != NULL || mem->start_ == 0); assert(mem->mode_ == MEM_MODE_APPEND); if (data_size > MAX_CHUNK_PAYLOAD) { // security safeguard: trying to allocate more than what the format @@ -184,7 +186,7 @@ static int AppendToMemBuffer(WebPIDecoder* const idec, uint8_t* const new_buf = (uint8_t*)WebPSafeMalloc(extra_size, sizeof(*new_buf)); if (new_buf == NULL) return 0; - memcpy(new_buf, old_base, current_size); + if (old_base != NULL) memcpy(new_buf, old_base, current_size); WebPSafeFree(mem->buf_); mem->buf_ = new_buf; mem->buf_size_ = (size_t)extra_size; @@ -192,6 +194,7 @@ static int AppendToMemBuffer(WebPIDecoder* const idec, mem->end_ = current_size; } + assert(mem->buf_ != NULL); memcpy(mem->buf_ + mem->end_, data, data_size); mem->end_ += data_size; assert(mem->end_ <= mem->buf_size_); @@ -204,7 +207,9 @@ static int RemapMemBuffer(WebPIDecoder* const idec, const uint8_t* const data, size_t data_size) { MemBuffer* const mem = &idec->mem_; const uint8_t* const old_buf = mem->buf_; - const uint8_t* const old_start = old_buf + mem->start_; + const uint8_t* const old_start = + (old_buf == NULL) ? NULL : old_buf + mem->start_; + assert(old_buf != NULL || mem->start_ == 0); assert(mem->mode_ == MEM_MODE_MAP); if (data_size < mem->buf_size_) return 0; // can't remap to a shorter buffer! diff --git a/ios/Pods/libwebp/src/dec/vp8i_dec.h b/ios/Pods/libwebp/src/dec/vp8i_dec.h index 3de8d86f9..600a68441 100644 --- a/ios/Pods/libwebp/src/dec/vp8i_dec.h +++ b/ios/Pods/libwebp/src/dec/vp8i_dec.h @@ -31,8 +31,8 @@ extern "C" { // version numbers #define DEC_MAJ_VERSION 1 -#define DEC_MIN_VERSION 0 -#define DEC_REV_VERSION 3 +#define DEC_MIN_VERSION 1 +#define DEC_REV_VERSION 0 // YUV-cache parameters. Cache is 32-bytes wide (= one cacheline). // Constraints are: We need to store one 16x16 block of luma samples (y), diff --git a/ios/Pods/libwebp/src/dec/vp8l_dec.c b/ios/Pods/libwebp/src/dec/vp8l_dec.c index d3e27119e..93615d4ed 100644 --- a/ios/Pods/libwebp/src/dec/vp8l_dec.c +++ b/ios/Pods/libwebp/src/dec/vp8l_dec.c @@ -754,11 +754,11 @@ static WEBP_INLINE HTreeGroup* GetHtreeGroupForPos(VP8LMetadata* const hdr, typedef void (*ProcessRowsFunc)(VP8LDecoder* const dec, int row); -static void ApplyInverseTransforms(VP8LDecoder* const dec, int num_rows, +static void ApplyInverseTransforms(VP8LDecoder* const dec, + int start_row, int num_rows, const uint32_t* const rows) { int n = dec->next_transform_; const int cache_pixs = dec->width_ * num_rows; - const int start_row = dec->last_row_; const int end_row = start_row + num_rows; const uint32_t* rows_in = rows; uint32_t* const rows_out = dec->argb_cache_; @@ -789,8 +789,7 @@ static void ProcessRows(VP8LDecoder* const dec, int row) { VP8Io* const io = dec->io_; uint8_t* rows_data = (uint8_t*)dec->argb_cache_; const int in_stride = io->width * sizeof(uint32_t); // in unit of RGBA - - ApplyInverseTransforms(dec, num_rows, rows); + ApplyInverseTransforms(dec, dec->last_row_, num_rows, rows); if (!SetCropWindow(io, dec->last_row_, row, &rows_data, in_stride)) { // Nothing to output (this time). } else { @@ -1193,6 +1192,7 @@ static int DecodeImageData(VP8LDecoder* const dec, uint32_t* const data, VP8LFillBitWindow(br); dist_code = GetCopyDistance(dist_symbol, br); dist = PlaneCodeToDistance(width, dist_code); + if (VP8LIsEndOfStream(br)) break; if (src - data < (ptrdiff_t)dist || src_end - src < (ptrdiff_t)length) { goto Error; @@ -1553,7 +1553,7 @@ static void ExtractAlphaRows(VP8LDecoder* const dec, int last_row) { const int cache_pixs = width * num_rows_to_process; uint8_t* const dst = output + width * cur_row; const uint32_t* const src = dec->argb_cache_; - ApplyInverseTransforms(dec, num_rows_to_process, in); + ApplyInverseTransforms(dec, cur_row, num_rows_to_process, in); WebPExtractGreen(src, dst, cache_pixs); AlphaApplyFilter(alph_dec, cur_row, cur_row + num_rows_to_process, dst, width); diff --git a/ios/Pods/libwebp/src/dec/vp8li_dec.h b/ios/Pods/libwebp/src/dec/vp8li_dec.h index 0a4d613f9..72b2e8612 100644 --- a/ios/Pods/libwebp/src/dec/vp8li_dec.h +++ b/ios/Pods/libwebp/src/dec/vp8li_dec.h @@ -37,7 +37,7 @@ struct VP8LTransform { int bits_; // subsampling bits defining transform window. int xsize_; // transform window X index. int ysize_; // transform window Y index. - uint32_t *data_; // transform data. + uint32_t* data_; // transform data. }; typedef struct { @@ -48,23 +48,23 @@ typedef struct { int huffman_mask_; int huffman_subsample_bits_; int huffman_xsize_; - uint32_t *huffman_image_; + uint32_t* huffman_image_; int num_htree_groups_; - HTreeGroup *htree_groups_; - HuffmanCode *huffman_tables_; + HTreeGroup* htree_groups_; + HuffmanCode* huffman_tables_; } VP8LMetadata; typedef struct VP8LDecoder VP8LDecoder; struct VP8LDecoder { VP8StatusCode status_; VP8LDecodeState state_; - VP8Io *io_; + VP8Io* io_; - const WebPDecBuffer *output_; // shortcut to io->opaque->output + const WebPDecBuffer* output_; // shortcut to io->opaque->output - uint32_t *pixels_; // Internal data: either uint8_t* for alpha + uint32_t* pixels_; // Internal data: either uint8_t* for alpha // or uint32_t* for BGRA. - uint32_t *argb_cache_; // Scratch buffer for temporary BGRA storage. + uint32_t* argb_cache_; // Scratch buffer for temporary BGRA storage. VP8LBitReader br_; int incremental_; // if true, incremental decoding is expected @@ -86,8 +86,8 @@ struct VP8LDecoder { // or'd bitset storing the transforms types. uint32_t transforms_seen_; - uint8_t *rescaler_memory; // Working memory for rescaling work. - WebPRescaler *rescaler; // Common rescaler for all channels. + uint8_t* rescaler_memory; // Working memory for rescaling work. + WebPRescaler* rescaler; // Common rescaler for all channels. }; //------------------------------------------------------------------------------ diff --git a/ios/Pods/libwebp/src/demux/demux.c b/ios/Pods/libwebp/src/demux/demux.c index ab6433e54..1b3cc2e0a 100644 --- a/ios/Pods/libwebp/src/demux/demux.c +++ b/ios/Pods/libwebp/src/demux/demux.c @@ -24,8 +24,8 @@ #include "src/webp/format_constants.h" #define DMUX_MAJ_VERSION 1 -#define DMUX_MIN_VERSION 0 -#define DMUX_REV_VERSION 3 +#define DMUX_MIN_VERSION 1 +#define DMUX_REV_VERSION 0 typedef struct { size_t start_; // start location of the data diff --git a/ios/Pods/libwebp/src/demux/libwebpdemux.rc b/ios/Pods/libwebp/src/demux/libwebpdemux.rc index 2d46b8dfe..66f26d1a7 100644 --- a/ios/Pods/libwebp/src/demux/libwebpdemux.rc +++ b/ios/Pods/libwebp/src/demux/libwebpdemux.rc @@ -6,8 +6,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,3 - PRODUCTVERSION 1,0,0,3 + FILEVERSION 1,0,1,0 + PRODUCTVERSION 1,0,1,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -24,12 +24,12 @@ BEGIN BEGIN VALUE "CompanyName", "Google, Inc." VALUE "FileDescription", "libwebpdemux DLL" - VALUE "FileVersion", "1.0.3" + VALUE "FileVersion", "1.1.0" VALUE "InternalName", "libwebpdemux.dll" VALUE "LegalCopyright", "Copyright (C) 2019" VALUE "OriginalFilename", "libwebpdemux.dll" VALUE "ProductName", "WebP Image Demuxer" - VALUE "ProductVersion", "1.0.3" + VALUE "ProductVersion", "1.1.0" END END BLOCK "VarFileInfo" diff --git a/ios/Pods/libwebp/src/dsp/dec_neon.c b/ios/Pods/libwebp/src/dsp/dec_neon.c index ffa697fcf..239ec4167 100644 --- a/ios/Pods/libwebp/src/dsp/dec_neon.c +++ b/ios/Pods/libwebp/src/dsp/dec_neon.c @@ -1361,7 +1361,8 @@ static void RD4_NEON(uint8_t* dst) { // Down-right const uint32_t J = dst[-1 + 1 * BPS]; const uint32_t K = dst[-1 + 2 * BPS]; const uint32_t L = dst[-1 + 3 * BPS]; - const uint64x1_t LKJI____ = vcreate_u64(L | (K << 8) | (J << 16) | (I << 24)); + const uint64x1_t LKJI____ = + vcreate_u64((uint64_t)L | (K << 8) | (J << 16) | (I << 24)); const uint64x1_t LKJIXABC = vorr_u64(LKJI____, ____XABC); const uint8x8_t KJIXABC_ = vreinterpret_u8_u64(vshr_n_u64(LKJIXABC, 8)); const uint8x8_t JIXABC__ = vreinterpret_u8_u64(vshr_n_u64(LKJIXABC, 16)); @@ -1427,10 +1428,16 @@ static WEBP_INLINE void DC8_NEON(uint8_t* dst, int do_top, int do_left) { if (do_top) { const uint8x8_t A = vld1_u8(dst - BPS); // top row +#if defined(__aarch64__) + const uint16x8_t B = vmovl_u8(A); + const uint16_t p2 = vaddvq_u16(B); + sum_top = vdupq_n_u16(p2); +#else const uint16x4_t p0 = vpaddl_u8(A); // cascading summation of the top const uint16x4_t p1 = vpadd_u16(p0, p0); const uint16x4_t p2 = vpadd_u16(p1, p1); sum_top = vcombine_u16(p2, p2); +#endif } if (do_left) { diff --git a/ios/Pods/libwebp/src/dsp/dsp.h b/ios/Pods/libwebp/src/dsp/dsp.h index fafc2d05d..a784de334 100644 --- a/ios/Pods/libwebp/src/dsp/dsp.h +++ b/ios/Pods/libwebp/src/dsp/dsp.h @@ -246,9 +246,9 @@ extern VP8Fdct VP8FTransform2; // performs two transforms at a time extern VP8WHT VP8FTransformWHT; // Predictions // *dst is the destination block. *top and *left can be NULL. -typedef void (*VP8IntraPreds)(uint8_t *dst, const uint8_t* left, +typedef void (*VP8IntraPreds)(uint8_t* dst, const uint8_t* left, const uint8_t* top); -typedef void (*VP8Intra4Preds)(uint8_t *dst, const uint8_t* top); +typedef void (*VP8Intra4Preds)(uint8_t* dst, const uint8_t* top); extern VP8Intra4Preds VP8EncPredLuma4; extern VP8IntraPreds VP8EncPredLuma16; extern VP8IntraPreds VP8EncPredChroma8; diff --git a/ios/Pods/libwebp/src/dsp/lossless.c b/ios/Pods/libwebp/src/dsp/lossless.c index d05af84e7..aad5f43ec 100644 --- a/ios/Pods/libwebp/src/dsp/lossless.c +++ b/ios/Pods/libwebp/src/dsp/lossless.c @@ -81,7 +81,7 @@ static WEBP_INLINE uint32_t ClampedAddSubtractHalf(uint32_t c0, uint32_t c1, // gcc <= 4.9 on ARM generates incorrect code in Select() when Sub3() is // inlined. -#if defined(__arm__) && LOCAL_GCC_VERSION <= 0x409 +#if defined(__arm__) && defined(__GNUC__) && LOCAL_GCC_VERSION <= 0x409 # define LOCAL_INLINE __attribute__ ((noinline)) #else # define LOCAL_INLINE WEBP_INLINE @@ -167,15 +167,20 @@ static uint32_t Predictor13_C(uint32_t left, const uint32_t* const top) { return pred; } -GENERATE_PREDICTOR_ADD(Predictor0_C, PredictorAdd0_C) +static void PredictorAdd0_C(const uint32_t* in, const uint32_t* upper, + int num_pixels, uint32_t* out) { + int x; + (void)upper; + for (x = 0; x < num_pixels; ++x) out[x] = VP8LAddPixels(in[x], ARGB_BLACK); +} static void PredictorAdd1_C(const uint32_t* in, const uint32_t* upper, int num_pixels, uint32_t* out) { int i; uint32_t left = out[-1]; + (void)upper; for (i = 0; i < num_pixels; ++i) { out[i] = left = VP8LAddPixels(in[i], left); } - (void)upper; } GENERATE_PREDICTOR_ADD(Predictor2_C, PredictorAdd2_C) GENERATE_PREDICTOR_ADD(Predictor3_C, PredictorAdd3_C) diff --git a/ios/Pods/libwebp/src/dsp/lossless_common.h b/ios/Pods/libwebp/src/dsp/lossless_common.h index a2648d173..9c2ebe680 100644 --- a/ios/Pods/libwebp/src/dsp/lossless_common.h +++ b/ios/Pods/libwebp/src/dsp/lossless_common.h @@ -177,6 +177,7 @@ uint32_t VP8LSubPixels(uint32_t a, uint32_t b) { static void PREDICTOR_ADD(const uint32_t* in, const uint32_t* upper, \ int num_pixels, uint32_t* out) { \ int x; \ + assert(upper != NULL); \ for (x = 0; x < num_pixels; ++x) { \ const uint32_t pred = (PREDICTOR)(out[x - 1], upper + x); \ out[x] = VP8LAddPixels(in[x], pred); \ @@ -189,6 +190,7 @@ static void PREDICTOR_ADD(const uint32_t* in, const uint32_t* upper, \ static void PREDICTOR_SUB(const uint32_t* in, const uint32_t* upper, \ int num_pixels, uint32_t* out) { \ int x; \ + assert(upper != NULL); \ for (x = 0; x < num_pixels; ++x) { \ const uint32_t pred = (PREDICTOR)(in[x - 1], upper + x); \ out[x] = VP8LSubPixels(in[x], pred); \ diff --git a/ios/Pods/libwebp/src/dsp/lossless_enc_sse2.c b/ios/Pods/libwebp/src/dsp/lossless_enc_sse2.c index 8adc52139..e676f6fdc 100644 --- a/ios/Pods/libwebp/src/dsp/lossless_enc_sse2.c +++ b/ios/Pods/libwebp/src/dsp/lossless_enc_sse2.c @@ -455,8 +455,9 @@ static void PredictorSub0_SSE2(const uint32_t* in, const uint32_t* upper, _mm_storeu_si128((__m128i*)&out[i], res); } if (i != num_pixels) { - VP8LPredictorsSub_C[0](in + i, upper + i, num_pixels - i, out + i); + VP8LPredictorsSub_C[0](in + i, NULL, num_pixels - i, out + i); } + (void)upper; } #define GENERATE_PREDICTOR_1(X, IN) \ diff --git a/ios/Pods/libwebp/src/dsp/lossless_sse2.c b/ios/Pods/libwebp/src/dsp/lossless_sse2.c index 17d757641..aef0cee1b 100644 --- a/ios/Pods/libwebp/src/dsp/lossless_sse2.c +++ b/ios/Pods/libwebp/src/dsp/lossless_sse2.c @@ -191,8 +191,9 @@ static void PredictorAdd0_SSE2(const uint32_t* in, const uint32_t* upper, _mm_storeu_si128((__m128i*)&out[i], res); } if (i != num_pixels) { - VP8LPredictorsAdd_C[0](in + i, upper + i, num_pixels - i, out + i); + VP8LPredictorsAdd_C[0](in + i, NULL, num_pixels - i, out + i); } + (void)upper; } // Predictor1: left. diff --git a/ios/Pods/libwebp/src/dsp/upsampling_msa.c b/ios/Pods/libwebp/src/dsp/upsampling_msa.c index 99eea70e7..f2e03e85e 100644 --- a/ios/Pods/libwebp/src/dsp/upsampling_msa.c +++ b/ios/Pods/libwebp/src/dsp/upsampling_msa.c @@ -576,9 +576,9 @@ static void FUNC_NAME(const uint8_t* top_y, const uint8_t* bot_y, \ const uint32_t l_uv = ((cur_u[0]) | ((cur_v[0]) << 16)); \ const uint32_t uv0 = (3 * tl_uv + l_uv + 0x00020002u) >> 2; \ const uint8_t* ptop_y = &top_y[1]; \ - uint8_t *ptop_dst = top_dst + XSTEP; \ + uint8_t* ptop_dst = top_dst + XSTEP; \ const uint8_t* pbot_y = &bot_y[1]; \ - uint8_t *pbot_dst = bot_dst + XSTEP; \ + uint8_t* pbot_dst = bot_dst + XSTEP; \ \ FUNC(top_y[0], uv0 & 0xff, (uv0 >> 16), top_dst); \ if (bot_y != NULL) { \ diff --git a/ios/Pods/libwebp/src/dsp/upsampling_neon.c b/ios/Pods/libwebp/src/dsp/upsampling_neon.c index 17cbc9f91..6ba71a7de 100644 --- a/ios/Pods/libwebp/src/dsp/upsampling_neon.c +++ b/ios/Pods/libwebp/src/dsp/upsampling_neon.c @@ -58,8 +58,8 @@ } while (0) // Turn the macro into a function for reducing code-size when non-critical -static void Upsample16Pixels_NEON(const uint8_t *r1, const uint8_t *r2, - uint8_t *out) { +static void Upsample16Pixels_NEON(const uint8_t* r1, const uint8_t* r2, + uint8_t* out) { UPSAMPLE_16PIXELS(r1, r2, out); } @@ -190,14 +190,14 @@ static const int16_t kCoeffs1[4] = { 19077, 26149, 6419, 13320 }; } #define NEON_UPSAMPLE_FUNC(FUNC_NAME, FMT, XSTEP) \ -static void FUNC_NAME(const uint8_t *top_y, const uint8_t *bottom_y, \ - const uint8_t *top_u, const uint8_t *top_v, \ - const uint8_t *cur_u, const uint8_t *cur_v, \ - uint8_t *top_dst, uint8_t *bottom_dst, int len) { \ +static void FUNC_NAME(const uint8_t* top_y, const uint8_t* bottom_y, \ + const uint8_t* top_u, const uint8_t* top_v, \ + const uint8_t* cur_u, const uint8_t* cur_v, \ + uint8_t* top_dst, uint8_t* bottom_dst, int len) { \ int block; \ /* 16 byte aligned array to cache reconstructed u and v */ \ uint8_t uv_buf[2 * 32 + 15]; \ - uint8_t *const r_uv = (uint8_t*)((uintptr_t)(uv_buf + 15) & ~15); \ + uint8_t* const r_uv = (uint8_t*)((uintptr_t)(uv_buf + 15) & ~15); \ const int uv_len = (len + 1) >> 1; \ /* 9 pixels must be read-able for each block */ \ const int num_blocks = (uv_len - 1) >> 3; \ diff --git a/ios/Pods/libwebp/src/enc/histogram_enc.c b/ios/Pods/libwebp/src/enc/histogram_enc.c index d89b98524..a4e6bf3a9 100644 --- a/ios/Pods/libwebp/src/enc/histogram_enc.c +++ b/ios/Pods/libwebp/src/enc/histogram_enc.c @@ -641,7 +641,7 @@ static void HistogramAnalyzeEntropyBin(VP8LHistogramSet* const image_histo, // Merges some histograms with same bin_id together if it's advantageous. // Sets the remaining histograms to NULL. static void HistogramCombineEntropyBin(VP8LHistogramSet* const image_histo, - int *num_used, + int* num_used, const uint16_t* const clusters, uint16_t* const cluster_mappings, VP8LHistogram* cur_combo, diff --git a/ios/Pods/libwebp/src/enc/picture_csp_enc.c b/ios/Pods/libwebp/src/enc/picture_csp_enc.c index 02d9df76d..718e014ed 100644 --- a/ios/Pods/libwebp/src/enc/picture_csp_enc.c +++ b/ios/Pods/libwebp/src/enc/picture_csp_enc.c @@ -29,11 +29,15 @@ #define USE_INVERSE_ALPHA_TABLE #ifdef WORDS_BIGENDIAN -#define ALPHA_OFFSET 0 // uint32_t 0xff000000 is 0xff,00,00,00 in memory +// uint32_t 0xff000000 is 0xff,00,00,00 in memory +#define CHANNEL_OFFSET(i) (i) #else -#define ALPHA_OFFSET 3 // uint32_t 0xff000000 is 0x00,00,00,ff in memory +// uint32_t 0xff000000 is 0x00,00,00,ff in memory +#define CHANNEL_OFFSET(i) (3-(i)) #endif +#define ALPHA_OFFSET CHANNEL_OFFSET(0) + //------------------------------------------------------------------------------ // Detection of non-trivial transparency @@ -997,10 +1001,10 @@ static int PictureARGBToYUVA(WebPPicture* picture, WebPEncCSP colorspace, return WebPEncodingSetError(picture, VP8_ENC_ERROR_INVALID_CONFIGURATION); } else { const uint8_t* const argb = (const uint8_t*)picture->argb; - const uint8_t* const a = argb + (0 ^ ALPHA_OFFSET); - const uint8_t* const r = argb + (1 ^ ALPHA_OFFSET); - const uint8_t* const g = argb + (2 ^ ALPHA_OFFSET); - const uint8_t* const b = argb + (3 ^ ALPHA_OFFSET); + const uint8_t* const a = argb + CHANNEL_OFFSET(0); + const uint8_t* const r = argb + CHANNEL_OFFSET(1); + const uint8_t* const g = argb + CHANNEL_OFFSET(2); + const uint8_t* const b = argb + CHANNEL_OFFSET(3); picture->colorspace = WEBP_YUV420; return ImportYUVAFromRGBA(r, g, b, a, 4, 4 * picture->argb_stride, @@ -1050,7 +1054,7 @@ int WebPPictureYUVAToARGB(WebPPicture* picture) { const int height = picture->height; const int argb_stride = 4 * picture->argb_stride; uint8_t* dst = (uint8_t*)picture->argb; - const uint8_t *cur_u = picture->u, *cur_v = picture->v, *cur_y = picture->y; + const uint8_t* cur_u = picture->u, *cur_v = picture->v, *cur_y = picture->y; WebPUpsampleLinePairFunc upsample = WebPGetLinePairConverter(ALPHA_OFFSET > 0); diff --git a/ios/Pods/libwebp/src/enc/vp8i_enc.h b/ios/Pods/libwebp/src/enc/vp8i_enc.h index 24e194461..fedcaeea2 100644 --- a/ios/Pods/libwebp/src/enc/vp8i_enc.h +++ b/ios/Pods/libwebp/src/enc/vp8i_enc.h @@ -31,8 +31,8 @@ extern "C" { // version numbers #define ENC_MAJ_VERSION 1 -#define ENC_MIN_VERSION 0 -#define ENC_REV_VERSION 3 +#define ENC_MIN_VERSION 1 +#define ENC_REV_VERSION 0 enum { MAX_LF_LEVELS = 64, // Maximum loop filter level MAX_VARIABLE_LEVEL = 67, // last (inclusive) level with variable cost @@ -249,7 +249,7 @@ typedef struct { int percent0_; // saved initial progress percent DError left_derr_; // left error diffusion (u/v) - DError *top_derr_; // top diffusion error - NULL if disabled + DError* top_derr_; // top diffusion error - NULL if disabled uint8_t* y_left_; // left luma samples (addressable from index -1 to 15). uint8_t* u_left_; // left u samples (addressable from index -1 to 7) diff --git a/ios/Pods/libwebp/src/libwebp.rc b/ios/Pods/libwebp/src/libwebp.rc index a036c9e4e..78dccc97e 100644 --- a/ios/Pods/libwebp/src/libwebp.rc +++ b/ios/Pods/libwebp/src/libwebp.rc @@ -6,8 +6,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,3 - PRODUCTVERSION 1,0,0,3 + FILEVERSION 1,0,1,0 + PRODUCTVERSION 1,0,1,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -24,12 +24,12 @@ BEGIN BEGIN VALUE "CompanyName", "Google, Inc." VALUE "FileDescription", "libwebp DLL" - VALUE "FileVersion", "1.0.3" + VALUE "FileVersion", "1.1.0" VALUE "InternalName", "libwebp.dll" VALUE "LegalCopyright", "Copyright (C) 2019" VALUE "OriginalFilename", "libwebp.dll" VALUE "ProductName", "WebP Image Codec" - VALUE "ProductVersion", "1.0.3" + VALUE "ProductVersion", "1.1.0" END END BLOCK "VarFileInfo" diff --git a/ios/Pods/libwebp/src/libwebpdecoder.rc b/ios/Pods/libwebp/src/libwebpdecoder.rc index d8b8e431d..bf0cffd4a 100644 --- a/ios/Pods/libwebp/src/libwebpdecoder.rc +++ b/ios/Pods/libwebp/src/libwebpdecoder.rc @@ -6,8 +6,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,3 - PRODUCTVERSION 1,0,0,3 + FILEVERSION 1,0,1,0 + PRODUCTVERSION 1,0,1,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -24,12 +24,12 @@ BEGIN BEGIN VALUE "CompanyName", "Google, Inc." VALUE "FileDescription", "libwebpdecoder DLL" - VALUE "FileVersion", "1.0.3" + VALUE "FileVersion", "1.1.0" VALUE "InternalName", "libwebpdecoder.dll" VALUE "LegalCopyright", "Copyright (C) 2019" VALUE "OriginalFilename", "libwebpdecoder.dll" VALUE "ProductName", "WebP Image Decoder" - VALUE "ProductVersion", "1.0.3" + VALUE "ProductVersion", "1.1.0" END END BLOCK "VarFileInfo" diff --git a/ios/Pods/libwebp/src/mux/Makefile.am b/ios/Pods/libwebp/src/mux/Makefile.am index d9a0b2805..5480296cb 100644 --- a/ios/Pods/libwebp/src/mux/Makefile.am +++ b/ios/Pods/libwebp/src/mux/Makefile.am @@ -17,6 +17,6 @@ noinst_HEADERS = noinst_HEADERS += ../webp/format_constants.h libwebpmux_la_LIBADD = ../libwebp.la -libwebpmux_la_LDFLAGS = -no-undefined -version-info 3:4:0 -lm +libwebpmux_la_LDFLAGS = -no-undefined -version-info 3:5:0 -lm libwebpmuxincludedir = $(includedir)/webp pkgconfig_DATA = libwebpmux.pc diff --git a/ios/Pods/libwebp/src/mux/libwebpmux.rc b/ios/Pods/libwebp/src/mux/libwebpmux.rc index 6725d42a1..84503cbcb 100644 --- a/ios/Pods/libwebp/src/mux/libwebpmux.rc +++ b/ios/Pods/libwebp/src/mux/libwebpmux.rc @@ -6,8 +6,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,3 - PRODUCTVERSION 1,0,0,3 + FILEVERSION 1,0,1,0 + PRODUCTVERSION 1,0,1,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -24,12 +24,12 @@ BEGIN BEGIN VALUE "CompanyName", "Google, Inc." VALUE "FileDescription", "libwebpmux DLL" - VALUE "FileVersion", "1.0.3" + VALUE "FileVersion", "1.1.0" VALUE "InternalName", "libwebpmux.dll" VALUE "LegalCopyright", "Copyright (C) 2019" VALUE "OriginalFilename", "libwebpmux.dll" VALUE "ProductName", "WebP Image Muxer" - VALUE "ProductVersion", "1.0.3" + VALUE "ProductVersion", "1.1.0" END END BLOCK "VarFileInfo" diff --git a/ios/Pods/libwebp/src/mux/muxi.h b/ios/Pods/libwebp/src/mux/muxi.h index 7bc0b07e9..ad3e1bdb9 100644 --- a/ios/Pods/libwebp/src/mux/muxi.h +++ b/ios/Pods/libwebp/src/mux/muxi.h @@ -28,8 +28,8 @@ extern "C" { // Defines and constants. #define MUX_MAJ_VERSION 1 -#define MUX_MIN_VERSION 0 -#define MUX_REV_VERSION 3 +#define MUX_MIN_VERSION 1 +#define MUX_REV_VERSION 0 // Chunk object. typedef struct WebPChunk WebPChunk; diff --git a/ios/Pods/libwebp/src/mux/muxread.c b/ios/Pods/libwebp/src/mux/muxread.c index 268f6acb5..ae3b876bc 100644 --- a/ios/Pods/libwebp/src/mux/muxread.c +++ b/ios/Pods/libwebp/src/mux/muxread.c @@ -100,7 +100,7 @@ static int MuxImageParse(const WebPChunk* const chunk, int copy_data, WebPMuxImage* const wpi) { const uint8_t* bytes = chunk->data_.bytes; size_t size = chunk->data_.size; - const uint8_t* const last = bytes + size; + const uint8_t* const last = (bytes == NULL) ? NULL : bytes + size; WebPChunk subchunk; size_t subchunk_size; WebPChunk** unknown_chunk_list = &wpi->unknown_; diff --git a/ios/Pods/libwebp/src/utils/color_cache_utils.h b/ios/Pods/libwebp/src/utils/color_cache_utils.h index ec21d5199..b45d47c2d 100644 --- a/ios/Pods/libwebp/src/utils/color_cache_utils.h +++ b/ios/Pods/libwebp/src/utils/color_cache_utils.h @@ -26,7 +26,7 @@ extern "C" { // Main color cache struct. typedef struct { - uint32_t *colors_; // color entries + uint32_t* colors_; // color entries int hash_shift_; // Hash shift: 32 - hash_bits_. int hash_bits_; } VP8LColorCache; diff --git a/ios/Pods/libwebp/src/utils/thread_utils.c b/ios/Pods/libwebp/src/utils/thread_utils.c index 438296b45..4e470e17a 100644 --- a/ios/Pods/libwebp/src/utils/thread_utils.c +++ b/ios/Pods/libwebp/src/utils/thread_utils.c @@ -73,7 +73,7 @@ typedef struct { #endif static int pthread_create(pthread_t* const thread, const void* attr, - unsigned int (__stdcall *start)(void*), void* arg) { + unsigned int (__stdcall* start)(void*), void* arg) { (void)attr; #ifdef USE_CREATE_THREAD *thread = CreateThread(NULL, /* lpThreadAttributes */ diff --git a/ios/Pods/libwebp/src/utils/utils.c b/ios/Pods/libwebp/src/utils/utils.c index 44d5c14f0..764f752b8 100644 --- a/ios/Pods/libwebp/src/utils/utils.c +++ b/ios/Pods/libwebp/src/utils/utils.c @@ -216,9 +216,14 @@ void WebPSafeFree(void* const ptr) { free(ptr); } -// Public API function. +// Public API functions. + +void* WebPMalloc(size_t size) { + return WebPSafeMalloc(1, size); +} + void WebPFree(void* ptr) { - free(ptr); + WebPSafeFree(ptr); } //------------------------------------------------------------------------------ diff --git a/ios/Pods/libwebp/src/webp/decode.h b/ios/Pods/libwebp/src/webp/decode.h index ae8bfe840..80dd0ef0c 100644 --- a/ios/Pods/libwebp/src/webp/decode.h +++ b/ios/Pods/libwebp/src/webp/decode.h @@ -20,7 +20,7 @@ extern "C" { #endif -#define WEBP_DECODER_ABI_VERSION 0x0208 // MAJOR(8b) + MINOR(8b) +#define WEBP_DECODER_ABI_VERSION 0x0209 // MAJOR(8b) + MINOR(8b) // Note: forward declaring enumerations is not allowed in (strict) C and C++, // the types are left here for reference. @@ -91,9 +91,6 @@ WEBP_EXTERN uint8_t* WebPDecodeYUV(const uint8_t* data, size_t data_size, uint8_t** u, uint8_t** v, int* stride, int* uv_stride); -// Releases memory returned by the WebPDecode*() functions above. -WEBP_EXTERN void WebPFree(void* ptr); - // These five functions are variants of the above ones, that decode the image // directly into a pre-allocated buffer 'output_buffer'. The maximum storage // available in this buffer is indicated by 'output_buffer_size'. If this diff --git a/ios/Pods/libwebp/src/webp/encode.h b/ios/Pods/libwebp/src/webp/encode.h index 339f8810a..655166e7d 100644 --- a/ios/Pods/libwebp/src/webp/encode.h +++ b/ios/Pods/libwebp/src/webp/encode.h @@ -20,7 +20,7 @@ extern "C" { #endif -#define WEBP_ENCODER_ABI_VERSION 0x020e // MAJOR(8b) + MINOR(8b) +#define WEBP_ENCODER_ABI_VERSION 0x020f // MAJOR(8b) + MINOR(8b) // Note: forward declaring enumerations is not allowed in (strict) C and C++, // the types are left here for reference. @@ -79,9 +79,6 @@ WEBP_EXTERN size_t WebPEncodeLosslessBGRA(const uint8_t* bgra, int width, int height, int stride, uint8_t** output); -// Releases memory returned by the WebPEncode*() functions above. -WEBP_EXTERN void WebPFree(void* ptr); - //------------------------------------------------------------------------------ // Coding parameters @@ -306,7 +303,7 @@ struct WebPPicture { // YUV input (mostly used for input to lossy compression) WebPEncCSP colorspace; // colorspace: should be YUV420 for now (=Y'CbCr). int width, height; // dimensions (less or equal to WEBP_MAX_DIMENSION) - uint8_t *y, *u, *v; // pointers to luma/chroma planes. + uint8_t* y, *u, *v; // pointers to luma/chroma planes. int y_stride, uv_stride; // luma/chroma strides. uint8_t* a; // pointer to the alpha plane int a_stride; // stride of the alpha plane @@ -350,7 +347,7 @@ struct WebPPicture { uint32_t pad3[3]; // padding for later use // Unused for now - uint8_t *pad4, *pad5; + uint8_t* pad4, *pad5; uint32_t pad6[8]; // padding for later use // PRIVATE FIELDS diff --git a/ios/Pods/libwebp/src/webp/mux.h b/ios/Pods/libwebp/src/webp/mux.h index 66096a92e..7d27489a4 100644 --- a/ios/Pods/libwebp/src/webp/mux.h +++ b/ios/Pods/libwebp/src/webp/mux.h @@ -57,7 +57,7 @@ extern "C" { WebPMuxGetChunk(mux, "ICCP", &icc_profile); // ... (Consume icc_data). WebPMuxDelete(mux); - free(data); + WebPFree(data); */ // Note: forward declaring enumerations is not allowed in (strict) C and C++, @@ -245,7 +245,7 @@ WEBP_EXTERN WebPMuxError WebPMuxPushFrame( WebPMux* mux, const WebPMuxFrameInfo* frame, int copy_data); // Gets the nth frame from the mux object. -// The content of 'frame->bitstream' is allocated using malloc(), and NOT +// The content of 'frame->bitstream' is allocated using WebPMalloc(), and NOT // owned by the 'mux' object. It MUST be deallocated by the caller by calling // WebPDataClear(). // nth=0 has a special meaning - last position. @@ -376,10 +376,10 @@ WEBP_EXTERN WebPMuxError WebPMuxNumChunks(const WebPMux* mux, // Assembles all chunks in WebP RIFF format and returns in 'assembled_data'. // This function also validates the mux object. // Note: The content of 'assembled_data' will be ignored and overwritten. -// Also, the content of 'assembled_data' is allocated using malloc(), and NOT -// owned by the 'mux' object. It MUST be deallocated by the caller by calling -// WebPDataClear(). It's always safe to call WebPDataClear() upon return, -// even in case of error. +// Also, the content of 'assembled_data' is allocated using WebPMalloc(), and +// NOT owned by the 'mux' object. It MUST be deallocated by the caller by +// calling WebPDataClear(). It's always safe to call WebPDataClear() upon +// return, even in case of error. // Parameters: // mux - (in/out) object whose chunks are to be assembled // assembled_data - (out) assembled WebP data diff --git a/ios/Pods/libwebp/src/webp/mux_types.h b/ios/Pods/libwebp/src/webp/mux_types.h index ceea77dfc..2fe819583 100644 --- a/ios/Pods/libwebp/src/webp/mux_types.h +++ b/ios/Pods/libwebp/src/webp/mux_types.h @@ -14,7 +14,6 @@ #ifndef WEBP_WEBP_MUX_TYPES_H_ #define WEBP_WEBP_MUX_TYPES_H_ -#include // free() #include // memset() #include "./types.h" @@ -56,6 +55,7 @@ typedef enum WebPMuxAnimBlend { // Data type used to describe 'raw' data, e.g., chunk data // (ICC profile, metadata) and WebP compressed image data. +// 'bytes' memory must be allocated using WebPMalloc() and such. struct WebPData { const uint8_t* bytes; size_t size; @@ -68,11 +68,11 @@ static WEBP_INLINE void WebPDataInit(WebPData* webp_data) { } } -// Clears the contents of the 'webp_data' object by calling free(). Does not -// deallocate the object itself. +// Clears the contents of the 'webp_data' object by calling WebPFree(). +// Does not deallocate the object itself. static WEBP_INLINE void WebPDataClear(WebPData* webp_data) { if (webp_data != NULL) { - free((void*)webp_data->bytes); + WebPFree((void*)webp_data->bytes); WebPDataInit(webp_data); } } @@ -83,7 +83,7 @@ static WEBP_INLINE int WebPDataCopy(const WebPData* src, WebPData* dst) { if (src == NULL || dst == NULL) return 0; WebPDataInit(dst); if (src->bytes != NULL && src->size != 0) { - dst->bytes = (uint8_t*)malloc(src->size); + dst->bytes = (uint8_t*)WebPMalloc(src->size); if (dst->bytes == NULL) return 0; memcpy((void*)dst->bytes, src->bytes, src->size); dst->size = src->size; diff --git a/ios/Pods/libwebp/src/webp/types.h b/ios/Pods/libwebp/src/webp/types.h index 1eea2afec..cfb43cc04 100644 --- a/ios/Pods/libwebp/src/webp/types.h +++ b/ios/Pods/libwebp/src/webp/types.h @@ -7,7 +7,7 @@ // be found in the AUTHORS file in the root of the source tree. // ----------------------------------------------------------------------------- // -// Common types +// Common types + memory wrappers // // Author: Skal (pascal.massimino@gmail.com) @@ -49,4 +49,20 @@ typedef long long int int64_t; // Macro to check ABI compatibility (same major revision number) #define WEBP_ABI_IS_INCOMPATIBLE(a, b) (((a) >> 8) != ((b) >> 8)) +#ifdef __cplusplus +extern "C" { +#endif + +// Allocates 'size' bytes of memory. Returns NULL upon error. Memory +// must be deallocated by calling WebPFree(). This function is made available +// by the core 'libwebp' library. +WEBP_EXTERN void* WebPMalloc(size_t size); + +// Releases memory returned by the WebPDecode*() functions (from decode.h). +WEBP_EXTERN void WebPFree(void* ptr); + +#ifdef __cplusplus +} // extern "C" +#endif + #endif // WEBP_WEBP_TYPES_H_ diff --git a/ios/Pods/libwebp/src/webp/types.h.bak b/ios/Pods/libwebp/src/webp/types.h.bak index 0ce2622e4..47f7f2b00 100644 --- a/ios/Pods/libwebp/src/webp/types.h.bak +++ b/ios/Pods/libwebp/src/webp/types.h.bak @@ -7,7 +7,7 @@ // be found in the AUTHORS file in the root of the source tree. // ----------------------------------------------------------------------------- // -// Common types +// Common types + memory wrappers // // Author: Skal (pascal.massimino@gmail.com) @@ -49,4 +49,20 @@ typedef long long int int64_t; // Macro to check ABI compatibility (same major revision number) #define WEBP_ABI_IS_INCOMPATIBLE(a, b) (((a) >> 8) != ((b) >> 8)) +#ifdef __cplusplus +extern "C" { +#endif + +// Allocates 'size' bytes of memory. Returns NULL upon error. Memory +// must be deallocated by calling WebPFree(). This function is made available +// by the core 'libwebp' library. +WEBP_EXTERN void* WebPMalloc(size_t size); + +// Releases memory returned by the WebPDecode*() functions (from decode.h). +WEBP_EXTERN void WebPFree(void* ptr); + +#ifdef __cplusplus +} // extern "C" +#endif + #endif // WEBP_WEBP_TYPES_H_ diff --git a/package.json b/package.json index 50a50824e..0fa4aeed9 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ } }, "dependencies": { - "@nozbe/watermelondb": "0.15.0", + "@nozbe/watermelondb": "^0.16.0-9", "@react-native-community/art": "^1.0.4", "@react-native-community/cameraroll": "^1.3.0", "@react-native-community/datetimepicker": "^2.1.0", diff --git a/yarn.lock b/yarn.lock index 760a64cc9..eedb4bd28 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1423,13 +1423,13 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" -"@nozbe/watermelondb@0.15.0": - version "0.15.0" - resolved "https://registry.yarnpkg.com/@nozbe/watermelondb/-/watermelondb-0.15.0.tgz#b5f2f89b5a7a4edf62f7c678c0f93737e02db2f2" - integrity sha512-W16K+R/jF6AWiqkCoCy6jyK3chZ/3uQ7D3fFIhFB6y+o9hjrNxRDUpz3jECm4P8H+StfW2e4YBogl1LA3UtaqQ== +"@nozbe/watermelondb@^0.16.0-9": + version "0.16.0-9" + resolved "https://registry.yarnpkg.com/@nozbe/watermelondb/-/watermelondb-0.16.0-9.tgz#0a8cf62d846b9d0f77179e3b41412d1fab181b53" + integrity sha512-6I2lr6hGM2VPtpy3treOpeRTxdMEHJHscPEA3WpWxLtrFH3dNpQ27yH2eoXt1N9mfkuF6MWJlqytit+KwXAE7A== dependencies: lodash.clonedeep "^4.5.0" - lokijs "git+https://github.com/Nozbe/LokiJS.git#384b80f" + lokijs "git+https://github.com/Nozbe/LokiJS.git#d08f660" rambdax "2.15.0" rxjs "^6.2.2" rxjs-compat "^6.3.2" @@ -7409,9 +7409,9 @@ logkitty@^0.6.0: dayjs "^1.8.15" yargs "^12.0.5" -"lokijs@git+https://github.com/Nozbe/LokiJS.git#384b80f": +"lokijs@git+https://github.com/Nozbe/LokiJS.git#d08f660": version "1.5.7" - resolved "git+https://github.com/Nozbe/LokiJS.git#384b80f26edbf123c277a9cee02437a43467f9ac" + resolved "git+https://github.com/Nozbe/LokiJS.git#d08f660794be558529f5ba049fe2868d4f243ec4" loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0"