From ea3fa8705783e0f6005c01a1d5211624d1e9e5c7 Mon Sep 17 00:00:00 2001 From: Zhiyuan Zheng Date: Thu, 28 Jan 2021 00:41:53 +0100 Subject: [PATCH] iOS can run --- .envrc | 5 + .gitignore | 71 +- android/app/BUCK | 55 ++ android/app/build.gradle | 221 +++++ android/app/build_defs.bzl | 19 + android/app/debug.keystore | Bin 0 -> 2257 bytes android/app/google-services.json | 46 + android/app/proguard-rules.pro | 10 + android/app/src/debug/AndroidManifest.xml | 7 + .../java/com/tooot/ReactNativeFlipper.java | 69 ++ android/app/src/main/AndroidManifest.xml | 46 + .../com/xmflsct/app/tooot/MainActivity.java | 54 ++ .../xmflsct/app/tooot/MainApplication.java | 120 +++ .../src/main/res/drawable/splashscreen.xml | 7 + .../main/res/drawable/splashscreen_image.png | Bin 0 -> 70265 bytes .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2038 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 2038 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 2038 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1383 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 1383 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 1383 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2715 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 2715 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 2715 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 4202 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 4202 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 4202 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 5166 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 5166 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 5166 bytes android/app/src/main/res/values/colors.xml | 6 + android/app/src/main/res/values/strings.xml | 4 + android/app/src/main/res/values/styles.xml | 17 + android/build.gradle | 39 + android/gradle.properties | 29 + android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53639 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + android/gradlew | 183 ++++ android/gradlew.bat | 103 +++ android/settings.gradle | 9 + index.js | 8 + ios/Podfile | 24 + ios/Podfile.lock | 822 ++++++++++++++++++ ios/tooot.xcodeproj/project.pbxproj | 515 +++++++++++ .../xcshareddata/xcschemes/tooot.xcscheme | 88 ++ .../contents.xcworkspacedata | 10 + ios/tooot/AppDelegate.h | 10 + ios/tooot/AppDelegate.m | 131 +++ ios/tooot/Base.lproj/LaunchScreen.xib | 42 + ios/tooot/GoogleService-Info.plist | 34 + .../AppIcon.appiconset/App-Icon-20x20@1x.png | Bin 0 -> 498 bytes .../AppIcon.appiconset/App-Icon-20x20@2x.png | Bin 0 -> 1114 bytes .../AppIcon.appiconset/App-Icon-20x20@3x.png | Bin 0 -> 1622 bytes .../AppIcon.appiconset/App-Icon-29x29@1x.png | Bin 0 -> 789 bytes .../AppIcon.appiconset/App-Icon-29x29@2x.png | Bin 0 -> 1664 bytes .../AppIcon.appiconset/App-Icon-29x29@3x.png | Bin 0 -> 2458 bytes .../AppIcon.appiconset/App-Icon-40x40@1x.png | Bin 0 -> 1114 bytes .../AppIcon.appiconset/App-Icon-40x40@2x.png | Bin 0 -> 2323 bytes .../AppIcon.appiconset/App-Icon-40x40@3x.png | Bin 0 -> 3427 bytes .../AppIcon.appiconset/App-Icon-60x60@2x.png | Bin 0 -> 3427 bytes .../AppIcon.appiconset/App-Icon-60x60@3x.png | Bin 0 -> 5033 bytes .../AppIcon.appiconset/App-Icon-76x76@1x.png | Bin 0 -> 2166 bytes .../AppIcon.appiconset/App-Icon-76x76@2x.png | Bin 0 -> 4447 bytes .../App-Icon-83.5x83.5@2x.png | Bin 0 -> 4587 bytes .../AppIcon.appiconset/Contents.json | 122 +++ .../AppIcon.appiconset/ItunesArtwork@2x.png | Bin 0 -> 13738 bytes ios/tooot/Images.xcassets/Contents.json | 6 + .../SplashScreen.imageset/Contents.json | 21 + .../SplashScreen.imageset/splashscreen.png | Bin 0 -> 70265 bytes .../Contents.json | 21 + .../background.png | Bin 0 -> 82 bytes ios/tooot/Info.plist | 93 ++ ios/tooot/SplashScreen.storyboard | 91 ++ ios/tooot/Supporting/Expo.plist | 16 + .../Supporting/en.lproj/InfoPlist.strings | 2 + .../Supporting/zh.lproj/InfoPlist.strings | 2 + ios/tooot/main.m | 10 + ios/tooot/tooot.entitlements | 8 + metro.config.js | 5 + package.json | 22 +- src/components/Instance/Auth.tsx | 6 +- src/startup/dev.ts | 3 - src/utils/queryHooks/apps.ts | 5 +- yarn.lock | 167 +++- 86 files changed, 3384 insertions(+), 35 deletions(-) create mode 100644 .envrc create mode 100644 android/app/BUCK create mode 100644 android/app/build.gradle create mode 100644 android/app/build_defs.bzl create mode 100644 android/app/debug.keystore create mode 100644 android/app/google-services.json create mode 100644 android/app/proguard-rules.pro create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/debug/java/com/tooot/ReactNativeFlipper.java create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/java/com/xmflsct/app/tooot/MainActivity.java create mode 100644 android/app/src/main/java/com/xmflsct/app/tooot/MainApplication.java create mode 100644 android/app/src/main/res/drawable/splashscreen.xml create mode 100644 android/app/src/main/res/drawable/splashscreen_image.png create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 android/app/src/main/res/values/colors.xml create mode 100644 android/app/src/main/res/values/strings.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.jar create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100755 android/gradlew create mode 100644 android/gradlew.bat create mode 100644 android/settings.gradle create mode 100644 index.js create mode 100644 ios/Podfile create mode 100644 ios/Podfile.lock create mode 100644 ios/tooot.xcodeproj/project.pbxproj create mode 100644 ios/tooot.xcodeproj/xcshareddata/xcschemes/tooot.xcscheme create mode 100644 ios/tooot.xcworkspace/contents.xcworkspacedata create mode 100644 ios/tooot/AppDelegate.h create mode 100644 ios/tooot/AppDelegate.m create mode 100644 ios/tooot/Base.lproj/LaunchScreen.xib create mode 100644 ios/tooot/GoogleService-Info.plist create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/tooot/Images.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png create mode 100644 ios/tooot/Images.xcassets/Contents.json create mode 100644 ios/tooot/Images.xcassets/SplashScreen.imageset/Contents.json create mode 100644 ios/tooot/Images.xcassets/SplashScreen.imageset/splashscreen.png create mode 100644 ios/tooot/Images.xcassets/SplashScreenBackground.imageset/Contents.json create mode 100644 ios/tooot/Images.xcassets/SplashScreenBackground.imageset/background.png create mode 100644 ios/tooot/Info.plist create mode 100644 ios/tooot/SplashScreen.storyboard create mode 100644 ios/tooot/Supporting/Expo.plist create mode 100644 ios/tooot/Supporting/en.lproj/InfoPlist.strings create mode 100644 ios/tooot/Supporting/zh.lproj/InfoPlist.strings create mode 100644 ios/tooot/main.m create mode 100644 ios/tooot/tooot.entitlements create mode 100644 metro.config.js diff --git a/.envrc b/.envrc new file mode 100644 index 00000000..35af134c --- /dev/null +++ b/.envrc @@ -0,0 +1,5 @@ +export SENTRY_ORGANIZATION="xmflsct" +export SENTRY_PROJECT="tooot-app" +export SENTRY_DEPLOY_ENV="expo" +export SENTRY_AUTH_TOKEN="dbccffb69144454784f2171ee7e39211b54392e5b535439aa5b77f2681578f4c" +export SENTRY_DSN="https://835b42fb2b25463284edb5a7e18c377d@o389581.ingest.sentry.io/5571975" \ No newline at end of file diff --git a/.gitignore b/.gitignore index 3401c6fc..8297efc2 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,73 @@ web-build/ .env coverage/ -builds/ \ No newline at end of file +builds/ +# @generated expo-cli sync-28e2ab0e9ece60556eaf932abe52d017ec33db50 +# The following patterns were generated by expo-cli + +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml + +# node.js +# +node_modules/ +npm-debug.log +yarn-error.log + +# BUCK +buck-out/ +\.buckd/ +*.keystore +!debug.keystore + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/ + +*/fastlane/report.xml +*/fastlane/Preview.html +*/fastlane/screenshots + +# Bundle artifacts +*.jsbundle + +# CocoaPods +/ios/Pods/ + +# Expo +.expo/* +web-build/ + +# @end expo-cli \ No newline at end of file diff --git a/android/app/BUCK b/android/app/BUCK new file mode 100644 index 00000000..418189ca --- /dev/null +++ b/android/app/BUCK @@ -0,0 +1,55 @@ +# To learn about Buck see [Docs](https://buckbuild.com/). +# To run your application with Buck: +# - install Buck +# - `npm start` - to start the packager +# - `cd android` +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck +# - `buck install -r android/app` - compile, install and run application +# + +load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") + +lib_deps = [] + +create_aar_targets(glob(["libs/*.aar"])) + +create_jar_targets(glob(["libs/*.jar"])) + +android_library( + name = "all-libs", + exported_deps = lib_deps, +) + +android_library( + name = "app-code", + srcs = glob([ + "src/main/java/**/*.java", + ]), + deps = [ + ":all-libs", + ":build_config", + ":res", + ], +) + +android_build_config( + name = "build_config", + package = "com.xmflsct.app.tooot", +) + +android_resource( + name = "res", + package = "com.xmflsct.app.tooot", + res = "src/main/res", +) + +android_binary( + name = "app", + keystore = "//android/keystores:debug", + manifest = "src/main/AndroidManifest.xml", + package_type = "debug", + deps = [ + ":app-code", + ], +) diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 00000000..c409f52f --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,221 @@ +apply plugin: "com.android.application" + +import com.android.build.OutputFile + +/** + * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets + * and bundleReleaseJsAndAssets). + * These basically call `react-native bundle` with the correct arguments during the Android build + * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the + * bundle directly from the development server. Below you can see all the possible configurations + * and their defaults. If you decide to add a configuration block, make sure to add it before the + * `apply from: "../../node_modules/react-native/react.gradle"` line. + * + * project.ext.react = [ + * // the name of the generated asset file containing your JS bundle + * bundleAssetName: "index.android.bundle", + * + * // the entry file for bundle generation. If none specified and + * // "index.android.js" exists, it will be used. Otherwise "index.js" is + * // default. Can be overridden with ENTRY_FILE environment variable. + * entryFile: "index.android.js", + * + * // https://reactnative.dev/docs/performance#enable-the-ram-format + * bundleCommand: "ram-bundle", + * + * // whether to bundle JS and assets in debug mode + * bundleInDebug: false, + * + * // whether to bundle JS and assets in release mode + * bundleInRelease: true, + * + * // whether to bundle JS and assets in another build variant (if configured). + * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants + * // The configuration property can be in the following formats + * // 'bundleIn${productFlavor}${buildType}' + * // 'bundleIn${buildType}' + * // bundleInFreeDebug: true, + * // bundleInPaidRelease: true, + * // bundleInBeta: true, + * + * // whether to disable dev mode in custom build variants (by default only disabled in release) + * // for example: to disable dev mode in the staging build type (if configured) + * devDisabledInStaging: true, + * // The configuration property can be in the following formats + * // 'devDisabledIn${productFlavor}${buildType}' + * // 'devDisabledIn${buildType}' + * + * // the root of your project, i.e. where "package.json" lives + * root: "../../", + * + * // where to put the JS bundle asset in debug mode + * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", + * + * // where to put the JS bundle asset in release mode + * jsBundleDirRelease: "$buildDir/intermediates/assets/release", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in debug mode + * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in release mode + * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", + * + * // by default the gradle tasks are skipped if none of the JS files or assets change; this means + * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to + * // date; if you have any other folders that you want to ignore for performance reasons (gradle + * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ + * // for example, you might want to remove it from here. + * inputExcludes: ["android/**", "ios/**"], + * + * // override which node gets called and with what additional arguments + * nodeExecutableAndArgs: ["node"], + * + * // supply additional arguments to the packager + * extraPackagerArgs: [] + * ] + */ + +project.ext.react = [ + enableHermes: false +] + +apply from: '../../node_modules/react-native-unimodules/gradle.groovy' +apply from: "../../node_modules/react-native/react.gradle" +apply from: "../../node_modules/expo-constants/scripts/get-app-config-android.gradle" +apply from: "../../node_modules/expo-updates/scripts/create-manifest-android.gradle" + +/** + * Set this to true to create two separate APKs instead of one: + * - An APK that only works on ARM devices + * - An APK that only works on x86 devices + * The advantage is the size of the APK is reduced by about 4MB. + * Upload all the APKs to the Play Store and people will download + * the correct one based on the CPU architecture of their device. + */ +def enableSeparateBuildPerCPUArchitecture = false + +/** + * Run Proguard to shrink the Java bytecode in release builds. + */ +def enableProguardInReleaseBuilds = false + +/** + * The preferred build flavor of JavaScriptCore. + * + * For example, to use the international variant, you can use: + * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` + * + * The international variant includes ICU i18n library and necessary data + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that + * give correct results when using with locales other than en-US. Note that + * this variant is about 6MiB larger per architecture than default. + */ +def jscFlavor = 'org.webkit:android-jsc:+' + +/** + * Whether to enable the Hermes VM. + * + * This should be set on project.ext.react and mirrored here. If it is not set + * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode + * and the benefits of using Hermes will therefore be sharply reduced. + */ +def enableHermes = project.ext.react.get("enableHermes", false); + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + defaultConfig { + applicationId 'com.xmflsct.app.tooot' + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 4 + versionName "0.1.0" + } + splits { + abi { + reset() + enable enableSeparateBuildPerCPUArchitecture + universalApk false // If true, also generate a universal APK + include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" + } + } + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + } + buildTypes { + debug { + signingConfig signingConfigs.debug + } + release { + // Caution! In production, you need to generate your own keystore file. + // see https://reactnative.dev/docs/signed-apk-android. + signingConfig signingConfigs.debug + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + } + } + + // applicationVariants are e.g. debug, release + applicationVariants.all { variant -> + variant.outputs.each { output -> + // For each separate APK per architecture, set a unique version code as described here: + // https://developer.android.com/studio/build/configure-apk-splits.html + def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] + def abi = output.getFilter(OutputFile.ABI) + if (abi != null) { // null for the universal-debug, universal-release variants + output.versionCodeOverride = + versionCodes.get(abi) * 1048576 + defaultConfig.versionCode + } + + } + } +} + +dependencies { + implementation fileTree(dir: "libs", include: ["*.jar"]) + //noinspection GradleDynamicVersion + implementation "com.facebook.react:react-native:+" // From node_modules + implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" + debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { + exclude group:'com.facebook.fbjni' + } + debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { + exclude group:'com.facebook.flipper' + exclude group:'com.squareup.okhttp3', module:'okhttp' + } + debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { + exclude group:'com.facebook.flipper' + } + addUnimodulesDependencies() + + if (enableHermes) { + def hermesPath = "../../node_modules/hermes-engine/android/"; + debugImplementation files(hermesPath + "hermes-debug.aar") + releaseImplementation files(hermesPath + "hermes-release.aar") + } else { + implementation jscFlavor + } +} + +// Run this once to be able to run the application with BUCK +// puts all compile dependencies into folder libs for BUCK to use +task copyDownloadableDepsToLibs(type: Copy) { + from configurations.compile + into 'libs' +} + +apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) + +apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/android/app/build_defs.bzl b/android/app/build_defs.bzl new file mode 100644 index 00000000..fff270f8 --- /dev/null +++ b/android/app/build_defs.bzl @@ -0,0 +1,19 @@ +"""Helper definitions to glob .aar and .jar targets""" + +def create_aar_targets(aarfiles): + for aarfile in aarfiles: + name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] + lib_deps.append(":" + name) + android_prebuilt_aar( + name = name, + aar = aarfile, + ) + +def create_jar_targets(jarfiles): + for jarfile in jarfiles: + name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] + lib_deps.append(":" + name) + prebuilt_jar( + name = name, + binary_jar = jarfile, + ) diff --git a/android/app/debug.keystore b/android/app/debug.keystore new file mode 100644 index 0000000000000000000000000000000000000000..364e105ed39fbfd62001429a68140672b06ec0de GIT binary patch literal 2257 zcmchYXEfYt8;7T1^dLH$VOTZ%2NOdOH5j5LYLtZ0q7x-V8_6gU5)#7dkq{HTmsfNq zB3ZqcAxeY^G10@?efK?Q&)M(qInVv!xjx+IKEL}p*K@LYvIzo#AZG>st5|P)KF1_Z;y){W{<7K{nl!CPuE z_^(!C(Ol0n8 zK13*rzAtW>(wULKPRYLd7G18F8#1P`V*9`(Poj26eOXYyBVZPno~Cvvhx7vPjAuZo zF?VD!zB~QG(!zbw#qsxT8%BSpqMZ4f70ZPn-3y$L8{EVbbN9$H`B&Z1quk9tgp5FM zuxp3pJ0b8u|3+#5bkJ4SRnCF2l7#DyLYXYY8*?OuAwK4E6J{0N=O3QNVzQ$L#FKkR zi-c@&!nDvezOV$i$Lr}iF$XEcwnybQ6WZrMKuw8gCL^U#D;q3t&HpTbqyD%vG=TeDlzCT~MXUPC|Leb-Uk+ z=vnMd(|>ld?Fh>V8poP;q;;nc@en$|rnP0ytzD&fFkCeUE^kG9Kx4wUh!!rpjwKDP zyw_e|a^x_w3E zP}}@$g>*LLJ4i0`Gx)qltL}@;mDv}D*xR^oeWcWdPkW@Uu)B^X&4W1$p6}ze!zudJ zyiLg@uggoMIArBr*27EZV7djDg@W1MaL+rcZ-lrANJQ%%>u8)ZMWU@R2qtnmG(acP z0d_^!t>}5W zpT`*2NR+0+SpTHb+6Js4b;%LJB;B_-ChhnU5py}iJtku*hm5F0!iql8Hrpcy1aYbT z1*dKC5ua6pMX@@iONI?Hpr%h;&YaXp9n!ND7-=a%BD7v&g zOO41M6EbE24mJ#S$Ui0-brR5ML%@|ndz^)YLMMV1atna{Fw<;TF@>d&F|!Z>8eg>>hkFrV)W+uv=`^F9^e zzzM2*oOjT9%gLoub%(R57p-`TXFe#oh1_{&N-YN z<}artH|m=d8TQuKSWE)Z%puU|g|^^NFwC#N=@dPhasyYjoy(fdEVfKR@cXKHZV-`06HsP`|Ftx;8(YD$fFXumLWbGnu$GMqRncXYY9mwz9$ap zQtfZB^_BeNYITh^hA7+(XNFox5WMeG_LtJ%*Q}$8VKDI_p8^pqX)}NMb`0e|wgF7D zuQACY_Ua<1ri{;Jwt@_1sW9zzdgnyh_O#8y+C;LcZq6=4e^cs6KvmK@$vVpKFGbQ= z$)Eux5C|Fx;Gtmv9^#Y-g@7Rt7*eLp5n!gJmn7&B_L$G?NCN`AP>cXQEz}%F%K;vUs{+l4Q{}eWW;ATe2 zqvXzxoIDy(u;F2q1JH7Sf;{jy_j})F+cKlIOmNfjBGHoG^CN zM|Ho&&X|L-36f}Q-obEACz`sI%2f&k>z5c$2TyTSj~vmO)BW~+N^kt`Jt@R|s!){H ze1_eCrlNaPkJQhL$WG&iRvF*YG=gXd1IyYQ9ew|iYn7r~g!wOnw;@n42>enAxBv*A zEmV*N#sxdicyNM=A4|yaOC5MByts}s_Hpfj|y<6G=o=!3S@eIFKDdpR7|FY>L&Wat&oW&cm&X~ z5Bt>Fcq(fgnvlvLSYg&o6>&fY`ODg4`V^lWWD=%oJ#Kbad2u~! zLECFS*??>|vDsNR&pH=Ze0Eo`sC_G`OjoEKVHY|wmwlX&(XBE<@sx3Hd^gtd-fNwUHsylg06p`U2y_={u}Bc + + + + + diff --git a/android/app/src/debug/java/com/tooot/ReactNativeFlipper.java b/android/app/src/debug/java/com/tooot/ReactNativeFlipper.java new file mode 100644 index 00000000..b65a923d --- /dev/null +++ b/android/app/src/debug/java/com/tooot/ReactNativeFlipper.java @@ -0,0 +1,69 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + *

This source code is licensed under the MIT license found in the LICENSE file in the root + * directory of this source tree. + */ +package com.tooot; + +import android.content.Context; +import com.facebook.flipper.android.AndroidFlipperClient; +import com.facebook.flipper.android.utils.FlipperUtils; +import com.facebook.flipper.core.FlipperClient; +import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; +import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; +import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin; +import com.facebook.flipper.plugins.inspector.DescriptorMapping; +import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; +import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; +import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; +import com.facebook.flipper.plugins.react.ReactFlipperPlugin; +import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; +import com.facebook.react.ReactInstanceManager; +import com.facebook.react.bridge.ReactContext; +import com.facebook.react.modules.network.NetworkingModule; +import okhttp3.OkHttpClient; + +public class ReactNativeFlipper { + public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { + if (FlipperUtils.shouldEnableFlipper(context)) { + final FlipperClient client = AndroidFlipperClient.getInstance(context); + client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); + client.addPlugin(new ReactFlipperPlugin()); + client.addPlugin(new DatabasesFlipperPlugin(context)); + client.addPlugin(new SharedPreferencesFlipperPlugin(context)); + client.addPlugin(CrashReporterPlugin.getInstance()); + NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); + NetworkingModule.setCustomClientBuilder( + new NetworkingModule.CustomClientBuilder() { + @Override + public void apply(OkHttpClient.Builder builder) { + builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); + } + }); + client.addPlugin(networkFlipperPlugin); + client.start(); + // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized + // Hence we run if after all native modules have been initialized + ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); + if (reactContext == null) { + reactInstanceManager.addReactInstanceEventListener( + new ReactInstanceManager.ReactInstanceEventListener() { + @Override + public void onReactContextInitialized(ReactContext reactContext) { + reactInstanceManager.removeReactInstanceEventListener(this); + reactContext.runOnNativeModulesQueueThread( + new Runnable() { + @Override + public void run() { + client.addPlugin(new FrescoFlipperPlugin()); + } + }); + } + }); + } else { + client.addPlugin(new FrescoFlipperPlugin()); + } + } + } +} \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..25f1422e --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/java/com/xmflsct/app/tooot/MainActivity.java b/android/app/src/main/java/com/xmflsct/app/tooot/MainActivity.java new file mode 100644 index 00000000..b8f5c88a --- /dev/null +++ b/android/app/src/main/java/com/xmflsct/app/tooot/MainActivity.java @@ -0,0 +1,54 @@ +package com.xmflsct.app.tooot; +import android.content.res.Configuration; +import android.content.Intent; + +import android.os.Bundle; + +import com.facebook.react.ReactActivity; +import com.facebook.react.ReactActivityDelegate; +import com.facebook.react.ReactRootView; +import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView; + +import expo.modules.splashscreen.singletons.SplashScreen; +import expo.modules.splashscreen.SplashScreenImageResizeMode; + + +public class MainActivity extends ReactActivity { + + // Added automatically by Expo Config + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + Intent intent = new Intent("onConfigurationChanged"); + intent.putExtra("newConfig", newConfig); + sendBroadcast(intent); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // SplashScreen.show(...) has to be called after super.onCreate(...) + // Below line is handled by '@expo/configure-splash-screen' command and it's discouraged to modify it manually + SplashScreen.show(this, SplashScreenImageResizeMode.CONTAIN, ReactRootView.class, false); + } + + + /** + * Returns the name of the main component registered from JavaScript. + * This is used to schedule rendering of the component. + */ + @Override + protected String getMainComponentName() { + return "main"; + } + + @Override + protected ReactActivityDelegate createReactActivityDelegate() { + return new ReactActivityDelegate(this, getMainComponentName()) { + @Override + protected ReactRootView createRootView() { + return new RNGestureHandlerEnabledRootView(MainActivity.this); + } + }; + } +} diff --git a/android/app/src/main/java/com/xmflsct/app/tooot/MainApplication.java b/android/app/src/main/java/com/xmflsct/app/tooot/MainApplication.java new file mode 100644 index 00000000..7c5f1e8a --- /dev/null +++ b/android/app/src/main/java/com/xmflsct/app/tooot/MainApplication.java @@ -0,0 +1,120 @@ +package com.xmflsct.app.tooot; + +import android.app.Application; +import android.content.Context; +import android.net.Uri; + +import com.facebook.react.PackageList; +import com.facebook.react.ReactApplication; +import com.facebook.react.ReactInstanceManager; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.shell.MainReactPackage; +import com.facebook.soloader.SoLoader; +import com.xmflsct.app.tooot.generated.BasePackageList; + +import org.unimodules.adapters.react.ReactAdapterPackage; +import org.unimodules.adapters.react.ModuleRegistryAdapter; +import org.unimodules.adapters.react.ReactModuleRegistryProvider; +import org.unimodules.core.interfaces.Package; +import org.unimodules.core.interfaces.SingletonModule; +import expo.modules.constants.ConstantsPackage; +import expo.modules.permissions.PermissionsPackage; +import expo.modules.filesystem.FileSystemPackage; +import expo.modules.updates.UpdatesController; + +import java.lang.reflect.InvocationTargetException; +import java.util.Arrays; +import java.util.List; +import javax.annotation.Nullable; + +public class MainApplication extends Application implements ReactApplication { + private final ReactModuleRegistryProvider mModuleRegistryProvider = new ReactModuleRegistryProvider( + new BasePackageList().getPackageList() + ); + + private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + List packages = new PackageList(this).getPackages(); + packages.add(new ModuleRegistryAdapter(mModuleRegistryProvider)); + return packages; + } + + @Override + protected String getJSMainModuleName() { + return "index"; + } + + @Override + protected @Nullable String getJSBundleFile() { + if (BuildConfig.DEBUG) { + return super.getJSBundleFile(); + } else { + return UpdatesController.getInstance().getLaunchAssetFile(); + } + } + + @Override + protected @Nullable String getBundleAssetName() { + if (BuildConfig.DEBUG) { + return super.getBundleAssetName(); + } else { + return UpdatesController.getInstance().getBundleAssetName(); + } + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } + + @Override + public void onCreate() { + super.onCreate(); + SoLoader.init(this, /* native exopackage */ false); + + if (!BuildConfig.DEBUG) { + UpdatesController.initialize(this); + } + + initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); + } + + /** + * Loads Flipper in React Native templates. Call this in the onCreate method with something like + * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); + * + * @param context + * @param reactInstanceManager + */ + private static void initializeFlipper( + Context context, ReactInstanceManager reactInstanceManager) { + if (BuildConfig.DEBUG) { + try { + /* + We use reflection here to pick up the class that initializes Flipper, + since Flipper library is not available in release mode + */ + Class aClass = Class.forName("com.xmflsct.app.tooot.ReactNativeFlipper"); + aClass + .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) + .invoke(null, context, reactInstanceManager); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + } +} diff --git a/android/app/src/main/res/drawable/splashscreen.xml b/android/app/src/main/res/drawable/splashscreen.xml new file mode 100644 index 00000000..9f19c56e --- /dev/null +++ b/android/app/src/main/res/drawable/splashscreen.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/android/app/src/main/res/drawable/splashscreen_image.png b/android/app/src/main/res/drawable/splashscreen_image.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2004e819508d40980c7618286b1758d1f5c805 GIT binary patch literal 70265 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 EA8p(5U;qFB literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..3941bea9 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..3941bea9 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5a286698cec7ce1f9d4d801e071b9af2b4bd0365 GIT binary patch literal 2038 zcma)-X*d)L7srR}ld{gmNP`e+>_V2=WGPEy7ma1Cg)#}*C9-83TaigK$#Tb5_I=43 zLm3%cjU`K&lp-K^`}zHF&i}(XAI@{0-#PzeYfBS;J_$Ym0Kji%ibAv0^xxp& zVr9Fp^(HLgy=Cfz0|0l;szxN> z)l<;gauGgWSP>bfAXCVgDUB$_Dr1e$Uer*Iz_mw_Teij+(b1bxKiZxy?COQI3@}_i z7cq7pe`c;k{`qCmR<@;U885udp$oUn{7*s^26=dNobP!WYcX=KMEo4eKp2t zLqDngdi%ZLZMtzT($Gi%t3$2EsN^a;j6Hnr-kXT7_qLd648ou#n|U5<`elniT^uXy zDqo=NsvOle^xruZTmJXcAs zHI!lBY*k`NQt+ksC8KNH;G)EO*i?nxPd-IaCEJG}rE3j0+2PdfBTQ$s-@wgq?uP;e zY%2zx8c?XPf&sL*eW*sBaXXwgoU2T-euhYiiz@43Gm|sNXS%lDB`FND?~pF%V;KwW z!OMe!>+i}k@K9H03xPbJ(E{m#N2hX*ai19MzR&$LrCN5NkGjwqqmm(IkX>d~BHwnB z4W~t-7)BqQwR)yzKb~g_Nhla{4qEK6;Ay%Lv|uY~k|CA*44I_#$oaLu z*-*Be*M}PSV0s_#OlM3d{p0?(Pe?gEPY`hS<<;jz$660`>)ilF=T|Rp&eX{{?3m!V z@L>s@4T1A|-+zu3UmWRq09;{B#2ago2+{Q!lU)B$>nWm4dwoN}rpz+;#x&U&m7qRe zVw5kcY;QVEcGXIRysPuNEPnBBRgqzo^8kQKD>Y6PF)7vydH*%HAXrNl@e2TF<1%8cS*z%|u`@hG;72H%Uw`(#6Twfh1_0lFJ(8 zD~0N`W}kKmEq_#PHWh|_Ruy|`x;Xwp0 zw1sDpz=>5Ggqkk%OOzKDPh^yNmZ;6R&!sTO_In}o=ji7wM_r)4&s3^Q{W$ z5?W})E%z=D&H&o0iHJdWDUUZSvA)PV5> zP9O-iEpHS4{Tfe?s5rM^Y|mr?kl(Vz&{b=6wFa+sgZlEg_n3DfIQtf|D&aM2UtqzJ z7OXw3Az-%j5Y|(m=DGZHb6Nt|5VS~!i+Ln#u!u-Y={LG00Dj)(zt|DAEW>eE0yn`^ z>d5!lYpFNsqYP3iq|FxX8NpHt=#!nMZ07AV+T zzw@Mors>}ty77kmsqXxfnp=EqUuFj7YLJjTl;CA{LKX)zB)*5h1?yr@3=?> z(U5F0sug_@7G<^3Ukb2k40LUdIf_1mT#vPb>%p5Gs;}=$xe0VdR)u_D9!j|KzC9vz zp1U>^#-#VB5=TcRmoko1T0%B$SNFD;_Mhr_l0(-h(#?^->)t3*)xQS*u7OpPEAD9B#7M2jDM$e{*B1Qg&C(K{efmQKL3u>bqEB2M|4L4ZD;kCO8GY zGxxA!UOmsQVNm0w+r6E&XEP(zQb#Z7MT9CS|Gp#^!oJxn^EbhzE$lYJ;DXmM-bJTJ z@2o7`{?H@kO4_d(z!_`e1G3vV@oV(qzTaF|NRtq*Mgn%FKowpu0fw`Q1Y;p|KAgr0 z@f;HndwKR-{~_})CsSiZ2HlE=RJjxARQu`)9)5viC-9V4em2dwmo6n7;}p1zTp=Bn z`hrmBySXT;61{Chj`iMevkNtR{0V*S=l&3Qv8tc4WKERzRz~toI7^H3s~}qZHosI{ zTWrtgWyj%J|M=5dD9#T%n*EZdn~65?EaadYMEpWUG@=kod#I}C!oaIM_Syk7&D>+} znr<%%(JQm?Ia`&IPsCN-Vx{&~F~CQ@C(|YHOUWiC7nXA_gN_2>p1feWARco$>LQd+&Wb%N`hAlLpH9zO~?w2@>EJUgo2`2U=7nd9*EK4#rJ(et(3 RvK!0D0cOUQC^Et={vU_B)Pw*4 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..5a286698cec7ce1f9d4d801e071b9af2b4bd0365 GIT binary patch literal 2038 zcma)-X*d)L7srR}ld{gmNP`e+>_V2=WGPEy7ma1Cg)#}*C9-83TaigK$#Tb5_I=43 zLm3%cjU`K&lp-K^`}zHF&i}(XAI@{0-#PzeYfBS;J_$Ym0Kji%ibAv0^xxp& zVr9Fp^(HLgy=Cfz0|0l;szxN> z)l<;gauGgWSP>bfAXCVgDUB$_Dr1e$Uer*Iz_mw_Teij+(b1bxKiZxy?COQI3@}_i z7cq7pe`c;k{`qCmR<@;U885udp$oUn{7*s^26=dNobP!WYcX=KMEo4eKp2t zLqDngdi%ZLZMtzT($Gi%t3$2EsN^a;j6Hnr-kXT7_qLd648ou#n|U5<`elniT^uXy zDqo=NsvOle^xruZTmJXcAs zHI!lBY*k`NQt+ksC8KNH;G)EO*i?nxPd-IaCEJG}rE3j0+2PdfBTQ$s-@wgq?uP;e zY%2zx8c?XPf&sL*eW*sBaXXwgoU2T-euhYiiz@43Gm|sNXS%lDB`FND?~pF%V;KwW z!OMe!>+i}k@K9H03xPbJ(E{m#N2hX*ai19MzR&$LrCN5NkGjwqqmm(IkX>d~BHwnB z4W~t-7)BqQwR)yzKb~g_Nhla{4qEK6;Ay%Lv|uY~k|CA*44I_#$oaLu z*-*Be*M}PSV0s_#OlM3d{p0?(Pe?gEPY`hS<<;jz$660`>)ilF=T|Rp&eX{{?3m!V z@L>s@4T1A|-+zu3UmWRq09;{B#2ago2+{Q!lU)B$>nWm4dwoN}rpz+;#x&U&m7qRe zVw5kcY;QVEcGXIRysPuNEPnBBRgqzo^8kQKD>Y6PF)7vydH*%HAXrNl@e2TF<1%8cS*z%|u`@hG;72H%Uw`(#6Twfh1_0lFJ(8 zD~0N`W}kKmEq_#PHWh|_Ruy|`x;Xwp0 zw1sDpz=>5Ggqkk%OOzKDPh^yNmZ;6R&!sTO_In}o=ji7wM_r)4&s3^Q{W$ z5?W})E%z=D&H&o0iHJdWDUUZSvA)PV5> zP9O-iEpHS4{Tfe?s5rM^Y|mr?kl(Vz&{b=6wFa+sgZlEg_n3DfIQtf|D&aM2UtqzJ z7OXw3Az-%j5Y|(m=DGZHb6Nt|5VS~!i+Ln#u!u-Y={LG00Dj)(zt|DAEW>eE0yn`^ z>d5!lYpFNsqYP3iq|FxX8NpHt=#!nMZ07AV+T zzw@Mors>}ty77kmsqXxfnp=EqUuFj7YLJjTl;CA{LKX)zB)*5h1?yr@3=?> z(U5F0sug_@7G<^3Ukb2k40LUdIf_1mT#vPb>%p5Gs;}=$xe0VdR)u_D9!j|KzC9vz zp1U>^#-#VB5=TcRmoko1T0%B$SNFD;_Mhr_l0(-h(#?^->)t3*)xQS*u7OpPEAD9B#7M2jDM$e{*B1Qg&C(K{efmQKL3u>bqEB2M|4L4ZD;kCO8GY zGxxA!UOmsQVNm0w+r6E&XEP(zQb#Z7MT9CS|Gp#^!oJxn^EbhzE$lYJ;DXmM-bJTJ z@2o7`{?H@kO4_d(z!_`e1G3vV@oV(qzTaF|NRtq*Mgn%FKowpu0fw`Q1Y;p|KAgr0 z@f;HndwKR-{~_})CsSiZ2HlE=RJjxARQu`)9)5viC-9V4em2dwmo6n7;}p1zTp=Bn z`hrmBySXT;61{Chj`iMevkNtR{0V*S=l&3Qv8tc4WKERzRz~toI7^H3s~}qZHosI{ zTWrtgWyj%J|M=5dD9#T%n*EZdn~65?EaadYMEpWUG@=kod#I}C!oaIM_Syk7&D>+} znr<%%(JQm?Ia`&IPsCN-Vx{&~F~CQ@C(|YHOUWiC7nXA_gN_2>p1feWARco$>LQd+&Wb%N`hAlLpH9zO~?w2@>EJUgo2`2U=7nd9*EK4#rJ(et(3 RvK!0D0cOUQC^Et={vU_B)Pw*4 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..5a286698cec7ce1f9d4d801e071b9af2b4bd0365 GIT binary patch literal 2038 zcma)-X*d)L7srR}ld{gmNP`e+>_V2=WGPEy7ma1Cg)#}*C9-83TaigK$#Tb5_I=43 zLm3%cjU`K&lp-K^`}zHF&i}(XAI@{0-#PzeYfBS;J_$Ym0Kji%ibAv0^xxp& zVr9Fp^(HLgy=Cfz0|0l;szxN> z)l<;gauGgWSP>bfAXCVgDUB$_Dr1e$Uer*Iz_mw_Teij+(b1bxKiZxy?COQI3@}_i z7cq7pe`c;k{`qCmR<@;U885udp$oUn{7*s^26=dNobP!WYcX=KMEo4eKp2t zLqDngdi%ZLZMtzT($Gi%t3$2EsN^a;j6Hnr-kXT7_qLd648ou#n|U5<`elniT^uXy zDqo=NsvOle^xruZTmJXcAs zHI!lBY*k`NQt+ksC8KNH;G)EO*i?nxPd-IaCEJG}rE3j0+2PdfBTQ$s-@wgq?uP;e zY%2zx8c?XPf&sL*eW*sBaXXwgoU2T-euhYiiz@43Gm|sNXS%lDB`FND?~pF%V;KwW z!OMe!>+i}k@K9H03xPbJ(E{m#N2hX*ai19MzR&$LrCN5NkGjwqqmm(IkX>d~BHwnB z4W~t-7)BqQwR)yzKb~g_Nhla{4qEK6;Ay%Lv|uY~k|CA*44I_#$oaLu z*-*Be*M}PSV0s_#OlM3d{p0?(Pe?gEPY`hS<<;jz$660`>)ilF=T|Rp&eX{{?3m!V z@L>s@4T1A|-+zu3UmWRq09;{B#2ago2+{Q!lU)B$>nWm4dwoN}rpz+;#x&U&m7qRe zVw5kcY;QVEcGXIRysPuNEPnBBRgqzo^8kQKD>Y6PF)7vydH*%HAXrNl@e2TF<1%8cS*z%|u`@hG;72H%Uw`(#6Twfh1_0lFJ(8 zD~0N`W}kKmEq_#PHWh|_Ruy|`x;Xwp0 zw1sDpz=>5Ggqkk%OOzKDPh^yNmZ;6R&!sTO_In}o=ji7wM_r)4&s3^Q{W$ z5?W})E%z=D&H&o0iHJdWDUUZSvA)PV5> zP9O-iEpHS4{Tfe?s5rM^Y|mr?kl(Vz&{b=6wFa+sgZlEg_n3DfIQtf|D&aM2UtqzJ z7OXw3Az-%j5Y|(m=DGZHb6Nt|5VS~!i+Ln#u!u-Y={LG00Dj)(zt|DAEW>eE0yn`^ z>d5!lYpFNsqYP3iq|FxX8NpHt=#!nMZ07AV+T zzw@Mors>}ty77kmsqXxfnp=EqUuFj7YLJjTl;CA{LKX)zB)*5h1?yr@3=?> z(U5F0sug_@7G<^3Ukb2k40LUdIf_1mT#vPb>%p5Gs;}=$xe0VdR)u_D9!j|KzC9vz zp1U>^#-#VB5=TcRmoko1T0%B$SNFD;_Mhr_l0(-h(#?^->)t3*)xQS*u7OpPEAD9B#7M2jDM$e{*B1Qg&C(K{efmQKL3u>bqEB2M|4L4ZD;kCO8GY zGxxA!UOmsQVNm0w+r6E&XEP(zQb#Z7MT9CS|Gp#^!oJxn^EbhzE$lYJ;DXmM-bJTJ z@2o7`{?H@kO4_d(z!_`e1G3vV@oV(qzTaF|NRtq*Mgn%FKowpu0fw`Q1Y;p|KAgr0 z@f;HndwKR-{~_})CsSiZ2HlE=RJjxARQu`)9)5viC-9V4em2dwmo6n7;}p1zTp=Bn z`hrmBySXT;61{Chj`iMevkNtR{0V*S=l&3Qv8tc4WKERzRz~toI7^H3s~}qZHosI{ zTWrtgWyj%J|M=5dD9#T%n*EZdn~65?EaadYMEpWUG@=kod#I}C!oaIM_Syk7&D>+} znr<%%(JQm?Ia`&IPsCN-Vx{&~F~CQ@C(|YHOUWiC7nXA_gN_2>p1feWARco$>LQd+&Wb%N`hAlLpH9zO~?w2@>EJUgo2`2U=7nd9*EK4#rJ(et(3 RvK!0D0cOUQC^Et={vU_B)Pw*4 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..814816bd0e7b09e594a08559aec60f71309fe430 GIT binary patch literal 1383 zcmV-t1(^DYP)A@N z;=~4%p2UFo=P9|rzyIToYXb7~=g%koxV^nq@k3(Z^74{)cXw%fdz*H4c2ow|_V)Jv z6$TCt4rps@>wyo#kF&EgRR%x{WOH+qf`Wp`$H#|!eSM|*<;$1k?(R;hsi~|ds084P ziwmCRw2A>8{EnfCdd$Lx7?A4fYI^?sIiCw3F#P=d$lu?eyu7^V+qZA5hrKEQ*4Ea@ z&d!cZO-;$x)|Q8rl@*zro0E=?4uyq$n^y0+}b`&5Wot>Rz zU|_(&z#virdys|=4GpXVyV&FE>PjUgC6t_;ETzft@G$FSWo5As$ou8xWd@D_Xl$b* zFCm~?0Qm6X1Fxa-A$4_i>|9`AAa@GL$B!S$($bQn4EjO6uC6YnrKRzqkfNd@(%09g z=;&x#Utebi5#7edM*bb?8xs@5`||Vic`Z9TTLJ*PqK+QDi8TQb3gFwe0;o= z$75q-9Bnj!>FH^D^X3hwMO9UmM0-n13-1dL52vZADei6vL~n1eq?4YW&ilX`Bqt|_ zL8=4zEdwZ4Q3Iu=rMz~0e9UuKR~P5Li;D~O^z`t(k(rsvU=dYN43J0{urxkC&M6rc z6~$}s-@j)&5fKs02vP?%hqQsCU;yYlPLkTvO1Gjg93F2PrHp z*>>{PgGl5%eN%-+S=MEB_)MZ3Ec!~ zBmhFtk!oscC^0dSUcY|L#s2;Kcj+F1Al*+X#U^e87G@U4nyy zxmMr{X7~^p87Z~W2MoyX16)#wa%gBM7awvR7YRh3i#Sj`C*(J+Xn7doIUz4T`97hq z4sc^*gKG*k6cQ3b2?+_*-rlZaO9g=ZIVIRWx4#WE`S9pHpnMZ602BZU p00n>oKmnitPyi?Z6afEp`~n7U9POA@N z;=~4%p2UFo=P9|rzyIToYXb7~=g%koxV^nq@k3(Z^74{)cXw%fdz*H4c2ow|_V)Jv z6$TCt4rps@>wyo#kF&EgRR%x{WOH+qf`Wp`$H#|!eSM|*<;$1k?(R;hsi~|ds084P ziwmCRw2A>8{EnfCdd$Lx7?A4fYI^?sIiCw3F#P=d$lu?eyu7^V+qZA5hrKEQ*4Ea@ z&d!cZO-;$x)|Q8rl@*zro0E=?4uyq$n^y0+}b`&5Wot>Rz zU|_(&z#virdys|=4GpXVyV&FE>PjUgC6t_;ETzft@G$FSWo5As$ou8xWd@D_Xl$b* zFCm~?0Qm6X1Fxa-A$4_i>|9`AAa@GL$B!S$($bQn4EjO6uC6YnrKRzqkfNd@(%09g z=;&x#Utebi5#7edM*bb?8xs@5`||Vic`Z9TTLJ*PqK+QDi8TQb3gFwe0;o= z$75q-9Bnj!>FH^D^X3hwMO9UmM0-n13-1dL52vZADei6vL~n1eq?4YW&ilX`Bqt|_ zL8=4zEdwZ4Q3Iu=rMz~0e9UuKR~P5Li;D~O^z`t(k(rsvU=dYN43J0{urxkC&M6rc z6~$}s-@j)&5fKs02vP?%hqQsCU;yYlPLkTvO1Gjg93F2PrHp z*>>{PgGl5%eN%-+S=MEB_)MZ3Ec!~ zBmhFtk!oscC^0dSUcY|L#s2;Kcj+F1Al*+X#U^e87G@U4nyy zxmMr{X7~^p87Z~W2MoyX16)#wa%gBM7awvR7YRh3i#Sj`C*(J+Xn7doIUz4T`97hq z4sc^*gKG*k6cQ3b2?+_*-rlZaO9g=ZIVIRWx4#WE`S9pHpnMZ602BZU p00n>oKmnitPyi?Z6afEp`~n7U9POA@N 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 sfq9P^iU3WC$zU8?{{PL8j1d-lCFQKD=ASDor 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 T4t9k6ctD}8X#lCwcpUjJJ6agI literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..10bd382be91582ed90efba07715513021d20976c GIT binary patch literal 4202 zcmai2XH=8Twnjh=(m`p`g-BHiy@)`9gia_5(nNZZE)a?kP>L8j1d-lCFQKD=ASDor zgeFK6i4hQxW@y66_nmvrx<9_V?vL5?u4m2cdDrZ{p1q%mGcwSkzruBef`Wox8wxQd z&q;p`z$LOJ-d|}YPc+_83qJ}9T9&`Y1^mMEQwjZka(n>SBNnow0mKFZ|?1;GkHHI$%pnA9*wZ9O!J?RqhnpQ#F(Pqn%UK#^+ z&!ceiTGuJFhx&fQQd(TnPI_beQs<|8Xin#Bsm*uWofdpP3fI{Xx#W{%HXA2OIh`^K z&=D%EhAKYohb!^=`2tLU_>Nu{-Qx1nEHUx-505k9-``9?SoPBa$OkX7{3u7~4qeM} z%&-74$ygbUdNhn=0P{k3{Rf3nnQCC6PavE`YUx|gcA1T;hTjlAiZDI7SqImag@BE_ zh~7^&kum5V;HOVCjr(|ABCOyc&m-zAf4ufY&AY8ROUk={_9u`O5i3WsB0Rht(AzAQ4uQYtKl zkro=y&rZ-(j4F4cwqtmMUFQ5J^!F63?3Fw0bK&2$Pc~a@JBblg3>*%xIT%@-j!c1vtK_XpltEPyzpGrv%_!MQ3dlsKXMJ?ddVS>cz2PhHJ|!O={s*=gF28o1?KDDCwo1 zgGo$fZKsmBm4$zD?fpWG^pBvgFWK?rjLec-3f-GGpuN@lIOF3@=ILomuN<5F`0Wa?1y6=L=2kL097DTt69d9VJ{21U1|B0I79!7ma z4-J@3U}+^Ajie0>?;cFH36$nNKc*98=DyeeOcl0EFF*guJUPqPU8v*e`&&O>hAsm~ zSo11B>ukm4SE@&=sS}3x{!EUAR}PNf8Q#I`-ge}p5>BNm`r{&gmo@Jc=|~KmOQ}1q zZdr7L+N=w=bL9Xa#tIn|+I$~*doKCa#OUOEo>CHXhq>D z>wrN_k(b#c-e`fUwcL=cH`@r6`l>96sVF5_%e4pQ0v)HjxTq9>x0V06=IlLzX9Z== z`U&gZ2b1(q9`EQbIVeyck7fA1rbawztL;2?GpII^qc60I$p*`MOI|LF&hze}nK<64 z&6A|gfI3;McJDs!r=f0@i|!^gKrHGRCXq^@k-gKsv4?{d&Prqo0ex-dvvBO418PBT zh#;WsHbGx06oH@4ud55JV{o^=B%$ealQp-UV_{->epk$%@r(-fes-_zI6jywGcDw( z`8vn3C1$HJi&bL-;Z$hzCX<)mJUS%*L4z5qg`>V#`&wyLs0Avh3jhvr{mlJSY29xr zjC63Ly9{VlK1ohs71AUZ+~I5xQPr{-?243~b}0oXXHg?T(+@Mv0H2{CN9B%=j(ddSJ9o zNEoy|4U}loEWr*+t`1K7NJp%55P`uM244=#rNSK@b-rT3CdfaSBu>&d=%TcU-UP5 zNRo^%Ii?>mX}V7qggS|4w3DmR(VxO>*%_+_pV1rIFrbh?V9{wtzS4?ipCZtWZMz>j*o+3@rVnMgd`IcL6hyhpzKoiR6Oak_<0e;|+2B5gYl9>*SvV=Wb-^~N z)DxO!Y?Ljt%yWZ(Cu{Lq(5KrUcFnm}%DzHoTsU9tWi|8w^vXm?SXW7(T`Z3RrHGl( zX>t2NZb>g1=9DYbK&?riz>JQ>ccprxsjOl=r=JU;ZvDhK2yuR+wrjC*unfr5m71sy z7mY;ywe6YtNUS70ThaNHWoCAgG9ri2cwz_!Yf}s>z|%lEd=ak3b6?&l6x6}Q-+#(ZEE@_7DWzZ;3Z+EO8&WNJ0F|9M@6}6 z82(|}bT&x*Xl$b!I5Q;@q8)#$-NmyQA6ej`*uouJd-P}?mp#+6^!&@AWs|^b06ib@ z7+7(0v>F)BSvV&FaOfZ{hFn%*&D-7hHKn7A{+bAHNK`$>QonkoNT%dU7)J*(_JuW7 zR>uPat&SX-aP3#-?5E5;i7LC$XD+Z8ew$4*a-&Zb5yN#R@d+}fyk!2>-|vTjX!`M2 z;yfNHRg~~#ahM4;kKeye50w=;wRNvBzeS0T;&!Kbrx zIkySQLzcdS!h2zpR7PlDZ5O&)(RdIp3M97}^sRsVwh8@YPIdyc#v`!WMC7E3{vyE# zuYFUttvaR5-1Ir0EIi-f`ej+Y$H!~WhA2^S@>d6pFZV2+Ygd+-dFvb}f-vp^Fu#f;rKS}q-rWF;vUdqOh!e~+4!-*S8qb2XSfiP7aRrLsog9m<)2Us4wVr^SE9s? zU2xSRQXDwPehYUyw<{CFZBC0g8yzrC(C&gxs-)tJZmam+BMF=+VG=N+C^1W>Ez2C? zm?}Ew)tI1C-xawU{@A=7u8~u4u4MCPLB@|w2Wk#Y7RqJ~LA&FPR!x$5Y^kL;?(>^v zt|1;3N<7F+l2_^kwfS;4ahowG4gt5piQT;|l1*is(k2_TSiVS;zq=#sAa!}PwS-2SbkW-dJ|%ws=N#SG&-M0u zb@UfJI}WCQ@`_wDGWa^F1o1C+XKgJ3-zo%Y`)4k%Z9;VNeTiZk-*)lcpKagH6tLIb)?u*G?;f9J zU3rkUvyd|fL<1|?ecg(y@0z?doN~3eGoiG)JmlD&v(G%(mxL7l>4bwX9d1n|2=&an z>w8%Nmf}<>QsZY|AJKPtxCI^ahxLSVg0CHyDNa3ofmiavY)Q3pGE-_!4DMdcwh+9m z3G(?C{$dp76MW?($4OOijxditwHOsuw*9nu0b|F&<2zv@=xD==Y!f=q;IoWrt~hVC zIBvl9wP-OvI@nboZ<|s1@({sD5Vu^kq2L*i;)9{^6ylc4Ng3nQC#&)`c6Pj8NE1PS zNMT(Hq@t1Ai2DxIr=Qb#^ar_Do^==4`&Znf^^9i6?soQi^)VZD96Qtdo>3G?zPF!frwU)MW?O>Q524S)9d zFx>IKI`|)@@jpx5|3?CoH~rV^Uuyh%&m9CEEB4<;kN+bz=x_612til$;hdsT?{36s T4t9k6ctD}8X#lCwcpUjJJ6agI literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..10bd382be91582ed90efba07715513021d20976c GIT binary patch literal 4202 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 T4t9k6ctD}8X#lCwcpUjJJ6agI literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4ee74a902754f852c2d01c59f061a34d2172e49e GIT binary patch literal 5166 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 f>t*px>v2|HBRd0L~a0>YLN+ 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 f>t*px>v2|HBRd0L~a0>YLN+ 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 f>t*px> + + #FFFFFF + #FAFAFA + #023c69 + \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..94c07c32 --- /dev/null +++ b/android/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + + tooot + \ No newline at end of file diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..ed009e7d --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,17 @@ + + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 00000000..a59ac40c --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,39 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext { + buildToolsVersion = "29.0.2" + minSdkVersion = 21 + compileSdkVersion = 29 + targetSdkVersion = 29 + } + repositories { + google() + jcenter() + } + dependencies { + classpath 'com.google.gms:google-services:4.3.3' + classpath("com.android.tools.build:gradle:3.5.3") + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + mavenLocal() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url("$rootDir/../node_modules/react-native/android") + } + maven { + // Android JSC is installed from npm + url("$rootDir/../node_modules/jsc-android/dist") + } + + google() + jcenter() + maven { url 'https://www.jitpack.io' } + } +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 00000000..e75e6d33 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,29 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true + +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true + +# Version of flipper SDK to use with React Native +FLIPPER_VERSION=0.54.0 \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..2c6137b87896c8f70315ae454e00a969ef5f6019 GIT binary patch literal 53639 zcmafaW0a=B^559DjdyI@wr$%scWm3Xy<^+Pj_sKpY&N+!|K#4>Bz;ajPk*RBjZ;RV75EK*;qpZCo(BB5~-#>pF^k0$_Qx&3rs}{XFZ)$uJU-ZpbB>L3?|knJ{J+ge{%=bI`#Yn9v&Fxx>fd=_|H)(FY-DO{ z_Wxu>{a02GXCp^PGw1(fh-I*;dGTM?mA^##pNEJ#c-Y%I7@3kW(VN&Bxw!bn$iWOU zB8BZ)vT4(}GX%q~h3EYwbR?$d6|xnvg_e@4>dl5l+%FtPbGqa`;Uk##t$#g&CK4GO zz%my0ZR1Fv@~b2_>T0cBP)ECz-Uc^nW9e+`W4!=mSJPopgoe3A(NMzBd0mR?$&3XA zRL1}bJ2Q%R#bWHrC`j_)tPKMEyHuGSpdJMhT(Ob(e9H+#=Skp%#jzj=BVvc(-RSWB z{_T`UcEeWD{z`!3-y;_N|Ljr4%f;2qPSM%n?_s%GnYsM!d3p)CxmudpyIPqTxjH!i z;}A+!>>N;pko++K5n~I7m4>yco2%Zc$59RohB(l%KcJc9s^nw^?2JGy>O4#x5+CZH zqU~7kA>WE)ngvsdfKhLUX0Lc3r+In0Uyn}LZhm?n){&LHNJws546du%pia=j zyH8CD{^Qx%kFe@kX*$B!DxLa(Y?BO32sm8%#_ynjU-m>PJbabL`~0Ai zeJm<6okftSJUd2!X(>}i#KAh-NR2!Kg%c2JD=G|T%@Q0JQzqKB)Qc4E-{ZF=#PGZg zior4-caRB-Jj;l}Xb_!)TjB`jC}})6z~3AsRE&t~CO&)g{dqM0iK;lvav8?kE1< zmCrHxDZe?&rEK7M4tG-i!`Zk-*IzSk0M0&Ul8+J>*UD(A^;bAFDcz>d&lzAlw}b## zjfu@)rAou-86EN%8_Nv;%bNUmy*<6sbgB9)ZCihdSh_VT2iGFv+T8p&Z&wO02nKtdx?eZh^=*<>SZHSn(Pv)bgn{ zb15>YnVnJ^PO025c~^uK&W1C1XTs1az44L~-9Z-fU3{VvA?T& zdpi&S`mZ|$tMuN{{i|O}fAx#*KkroHe;6z^7c*x`2Rk!a2L~HB$A4@(Rz*hvM+og( zJW+4;S-A$#+Gec-rn8}at+q5gRrNy^iU?Z4Gz_|qzS~sG_EV#m%-VW!jQ>f3jc-Vq zW;~>OqI1Th&*fx#`c^=|A4GGoDp+ZH!n0_fDo-ks3d&GlT=(qzr(?Qw`PHvo3PoU6YJE zu{35)=P`LRm@+=ziAI)7jktM6KHx*v&WHVBYp<~UtR3c?Wv_{a0(k&NF!o#+@|Y6Y z>{||-i0v8N2ntXRrVx~#Z1JMA3C2ki}OkJ4W`WjZIuLByNUEL2HqqKrbi{9a8` zk-w0I$a<6;W6&X<&EbIqul`;nvc+D~{g5al{0oOSp~ zhg;6nG1Bh-XyOBM63jb_z`7apSsta``K{!Q{}mZ!m4rTmWi^<*BN2dh#PLZ)oXIJY zl#I3@$+8Fvi)m<}lK_}7q~VN%BvT^{q~ayRA7mwHO;*r0ePSK*OFv_{`3m+96HKgt z=nD-=Pv90Ae1p)+SPLT&g(Fdqbcc(Vnk5SFyc|Tq08qS;FJ1K4rBmtns%Su=GZchE zR(^9W-y!{QfeVPBeHpaBA{TZpQ*(d$H-*GI)Y}>X2Lk&27aFkqXE7D?G_iGav2r&P zx3V=8GBGi8agj5!H?lDMr`1nYmvKZj!~0{GMPb!tM=VIJXbTk9q8JRoSPD*CH@4I+ zfG-6{Z=Yb->)MIUmXq-#;=lNCyF1G*W+tW6gdD||kQfW$J_@=Y9KmMD!(t#9-fPcJ z>%&KQC-`%E`{y^i!1u=rJP_hhGErM$GYE3Y@ZzzA2a-PC>yaoDziZT#l+y)tfyR}U z5Epq`ACY|VUVISHESM5$BpWC0FpDRK&qi?G-q%Rd8UwIq&`d(Mqa<@(fH!OfNIgFICEG?j_Gj7FS()kY^P(I!zbl`%HB z7Rx=q2vZFjy^XypORT$^NJv_`Vm7-gkJWYsN5xg>snt5%oG?w1K#l_UH<>4@d0G@3 z)r?|yba6;ksyc+5+8YZ?)NZ+ER!4fIzK>>cs^(;ib7M}asT&)+J=J@U^~ffJ>65V# zt_lyUp52t`vT&gcQ%a6Ca)p8u6v}3iJzf?zsx#e9t)-1OtqD$Mky&Lpz6_v?p0|y4 zI{Nq9z89OxQbsqX)UYj z(BGu`28f8C^e9R2jf0Turq;v+fPCWD*z8!8-Q-_s`ILgwo@mtnjpC_D$J zCz7-()9@8rQ{4qy<5;*%bvX3k$grUQ{Bt;B#w))A+7ih631uN?!_~?i^g+zO^lGK$>O1T1$6VdF~%FKR6~Px%M`ibJG*~uQ>o^r9qLo*`@^ry@KX^$LH0>NGPL%MG8|;8 z@_)h2uvB1M!qjGtZgy~7-O=GUa`&;xEFvC zwIt?+O;Fjwgn3aE%`_XfZEw5ayP+JS8x?I|V3ARbQ5@{JAl1E*5a{Ytc(UkoDKtD# zu)K4XIYno7h3)0~5&93}pMJMDr*mcYM|#(FXS@Pj)(2!cl$)R-GwwrpOW!zZ2|wN) zE|B38xr4_NBv|%_Lpnm$We<_~S{F1x42tph3PAS`0saF^PisF6EDtce+9y6jdITmu zqI-CLeTn2%I3t3z_=e=YGzUX6i5SEujY`j|=aqv#(Q=iWPkKhau@g|%#xVC2$6<{2 zAoimy5vLq6rvBo3rv&^VqtaKt_@Vx^gWN{f4^@i6H??!ra^_KC-ShWC(GBNt3o~T^ zudX<0v!;s$rIflR?~Tu4-D=%~E=glv+1|pg*ea30re-2K@8EqQ{8#WY4X-br_!qpq zL;PRCi^e~EClLpGb1MrsXCqfD2m615mt;EyR3W6XKU=4(A^gFCMMWgn#5o1~EYOH* zOlolGlD;B!j%lRFaoc)q_bOH-O!r}g1Bhlhy*dRoTf-bI%`A`kU)Q=HA9HgCKqq&A z2$_rtL-uIA7`PiJfw380j@M4Fff-?(Xe(aR`4>BZyDN2$2E7QQ1}95@X819fnA(}= za=5VF-%;l}aHSRHCfs(#Qf%dPue~fGpy7qPs*eLX2Aa0+@mPxnS4Wm8@kP7KEL)8s z@tNmawLHST-FS4h%20%lVvd zkXpxWa43E`zX{6-{2c+L9C`l(ZRG8`kO9g7t&hx?>j~5_C;y5u*Bvl79)Bq?@T7bN z=G2?QDa0J3VwCfZG0BjOFP>xz4jtv3LS>jz#1x~b9u1*n9>Y6?u8W?I^~;N{GC<1y} zc&Wz{L`kJUSt=oA=5ZHtNj3PSB%w5^=0(U7GC^zUgcdkujo>ruzyBurtTjKuNf1-+ zzn~oZFXCbR&xq&W{ar~T`@fNef5M$u^-C92HMBo=*``D8Q^ktX z(qT{_R=*EI?-R9nNUFNR#{(Qb;27bM14bjI`c#4RiinHbnS445Jy^%krK%kpE zFw%RVQd6kqsNbiBtH*#jiPu3(%}P7Vhs0G9&Dwb4E-hXO!|whZ!O$J-PU@j#;GrzN zwP9o=l~Nv}4OPvv5rVNoFN>Oj0TC%P>ykicmFOx*dyCs@7XBH|w1k2hb`|3|i^GEL zyg7PRl9eV ztQ1z)v~NwH$ebcMSKc-4D=?G^3sKVG47ZWldhR@SHCr}SwWuj5t!W$&HAA*Wo_9tM zw5vs`2clw`z@~R-#W8d4B8!rFtO}+-$-{6f_`O-^-EhGraqg%$D618&<9KG``D|Rb zQJ&TSE3cfgf8i}I^DLu+-z{{;QM>K3I9~3R9!0~=Y`A1=6`CF#XVH@MWO?3@xa6ev zdw08_9L=>3%)iXA(_CE@ipRQ{Tb+@mxoN^3ktgmt^mJ(u#=_Plt?5qMZOA3&I1&NU zOG+0XTsIkbhGsp(ApF2MphRG^)>vqagn!-%pRnppa%`-l@DLS0KUm8*e9jGT0F%0J z*-6E@Z*YyeZ{eP7DGmxQedo}^+w zM~>&E$5&SW6MxP##J56Eo@0P34XG})MLCuhMyDFf**?tziO?_Ad&Jhd z`jok^B{3ff*7cydrxYjdxX`14`S+34kW^$fxDmNn2%fsQ6+Zou0%U{3Y>L}UIbQbw z*E#{Von}~UEAL?vvihW)4?Kr-R?_?JSN?B?QzhUWj==1VNEieTMuTJ#-nl*c@qP+` zGk@aE0oAD5!9_fO=tDQAt9g0rKTr{Z0t~S#oy5?F3&aWm+igqKi| zK9W3KRS|1so|~dx%90o9+FVuN7)O@by^mL=IX_m^M87i&kT1^#9TCpI@diZ_p$uW3 zbA+-ER9vJ{ii?QIZF=cfZT3#vJEKC|BQhNd zGmxBDLEMnuc*AET~k8g-P-K+S~_(+GE9q6jyIMka(dr}(H% z$*z;JDnyI@6BQ7KGcrv03Hn(abJ_-vqS>5~m*;ZJmH$W`@csQ8ejiC8S#sYTB;AoF zXsd!kDTG#3FOo-iJJpd$C~@8}GQJ$b1A85MXp?1#dHWQu@j~i4L*LG40J}+V=&-(g zh~Hzk(l1$_y}PX}Ypluyiib0%vwSqPaJdy9EZ;?+;lFF8%Kb7cwPD17C}@N z2OF;}QCM4;CDx~d;XnunQAx5mQbL#);}H57I+uB9^v|cmZwuXGkoH-cAJ%nIjSO$E z{BpYdC9poyO5pvdL+ZPWFuK}c8WGEq-#I3myONq^BL%uG`RIoSBTEK9sAeU4UBh7f zzM$s|&NtAGN&>`lp5Ruc%qO^oL;VGnzo9A8{fQn@YoORA>qw;^n2pydq>;Ji9(sPH zLGsEeTIH?_6C3uyWoW(gkmM(RhFkiDuQPXmL7Oes(+4)YIHt+B@i`*%0KcgL&A#ua zAjb8l_tO^Ag!ai3f54t?@{aoW%&Hdst}dglRzQlS=M{O!=?l z*xY2vJ?+#!70RO8<&N^R4p+f=z z*&_e}QT%6-R5Wt66moGfvorp$yE|3=-2_(y`FnL0-7A?h%4NMZ#F#Rcb^}971t5ib zw<20w|C?HVv%|)Q)Pef8tGjwQ+!+<{>IVjr@&SRVO*PyC?Efnsq;Eq{r;U2)1+tgp z)@pZ}gJmzf{m=K@7YA_8X#XK+)F465h%z38{V-K8k%&_GF+g^s&9o6^B-&|MDFI)H zj1ofQL>W(MJLOu3xkkJZV@$}GEG~XBz~WvRjxhT0$jKKZKjuKi$rmR-al}Hb3xDL) z^xGG2?5+vUAo4I;$(JgeVQe9+e)vvJ={pO~05f|J={%dsSLVcF>@F9p4|nYK&hMua zWjNvRod}l~WmGo|LX2j#w$r$y?v^H?Gu(_?(WR_%D@1I@$yMTKqD=Ca2) zWBQmx#A$gMrHe^A8kxAgB}c2R5)14G6%HfpDf$(Di|p8ntcN;Hnk)DR1;toC9zo77 zcWb?&&3h65(bLAte%hstI9o%hZ*{y=8t$^!y2E~tz^XUY2N2NChy;EIBmf(Kl zfU~&jf*}p(r;#MP4x5dI>i`vjo`w?`9^5(vfFjmWp`Ch!2Ig}rkpS|T%g@2h-%V~R zg!*o7OZSU-%)M8D>F^|z+2F|!u1mOt?5^zG%;{^CrV^J?diz9AmF!UsO?Pl79DKvD zo-2==yjbcF5oJY!oF?g)BKmC8-v|iL6VT|Gj!Gk5yaXfhs&GeR)OkZ}=q{exBPv)& zV!QTQBMNs>QQ))>(rZOn0PK+-`|7vKvrjky3-Kmuf8uJ`x6&wsA5S(tMf=m;79Hzv za%lZ(OhM&ZUCHtM~FRd#Uk3Iy%oXe^)!Jci39D(a$51WER+%gIZYP)!}nDtDw_FgPL3e>1ilFN=M(j~V` zjOtRhOB8bX8}*FD0oy}+s@r4XQT;OFH__cEn-G#aYHpJDI4&Zo4y2>uJdbPYe zOMGMvbA6#(p00i1{t~^;RaHmgZtE@we39mFaO0r|CJ0zUk$|1Pp60Q&$A;dm>MfP# zkfdw?=^9;jsLEXsccMOi<+0-z|NZb(#wwkcO)nVxJxkF3g(OvW4`m36ytfPx5e-ujFXf($)cVOn|qt9LL zNr!InmcuVkxEg8=_;E)+`>n2Y0eAIDrklnE=T9Pyct>^4h$VDDy>}JiA=W9JE79<6 zv%hpzeJC)TGX|(gP!MGWRhJV}!fa1mcvY%jC^(tbG3QIcQnTy&8UpPPvIekWM!R?R zKQanRv+YZn%s4bqv1LBgQ1PWcEa;-MVeCk`$^FLYR~v%9b-@&M%giqnFHV;5P5_et z@R`%W>@G<6GYa=JZ)JsNMN?47)5Y3@RY`EVOPzxj;z6bn#jZv|D?Fn#$b}F!a}D9{ ztB_roYj%34c-@~ehWM_z;B{G5;udhY`rBH0|+u#!&KLdnw z;!A%tG{%Ua;}OW$BG`B#^8#K$1wX2K$m`OwL-6;hmh{aiuyTz;U|EKES= z9UsxUpT^ZZyWk0;GO;Fe=hC`kPSL&1GWS7kGX0>+votm@V-lg&OR>0*!Iay>_|5OT zF0w~t01mupvy4&HYKnrG?sOsip%=<>nK}Bxth~}g)?=Ax94l_=mC{M@`bqiKtV5vf zIP!>8I;zHdxsaVt9K?{lXCc$%kKfIwh&WM__JhsA?o$!dzxP znoRU4ZdzeN3-W{6h~QQSos{-!W@sIMaM z4o?97?W5*cL~5%q+T@>q%L{Yvw(a2l&68hI0Ra*H=ZjU!-o@3(*7hIKo?I7$gfB(Vlr!62-_R-+T;I0eiE^><*1_t|scfB{r9+a%UxP~CBr zl1!X^l01w8o(|2da~Mca)>Mn}&rF!PhsP_RIU~7)B~VwKIruwlUIlOI5-yd4ci^m{ zBT(H*GvKNt=l7a~GUco)C*2t~7>2t?;V{gJm=WNtIhm4x%KY>Rm(EC^w3uA{0^_>p zM;Na<+I<&KwZOUKM-b0y6;HRov=GeEi&CqEG9^F_GR*0RSM3ukm2c2s{)0<%{+g78 zOyKO%^P(-(U09FO!75Pg@xA{p+1$*cD!3=CgW4NO*p}&H8&K`(HL&$TH2N-bf%?JL zVEWs;@_UDD7IoM&P^(k-U?Gs*sk=bLm+f1p$ggYKeR_7W>Zz|Dl{{o*iYiB1LHq`? ztT)b^6Pgk!Kn~ozynV`O(hsUI52|g{0{cwdQ+=&@$|!y8{pvUC_a5zCemee6?E{;P zVE9;@3w92Nu9m_|x24gtm23{ST8Bp;;iJlhaiH2DVcnYqot`tv>!xiUJXFEIMMP(ZV!_onqyQtB_&x}j9 z?LXw;&z%kyYjyP8CQ6X);-QW^?P1w}&HgM}irG~pOJ()IwwaDp!i2$|_{Ggvw$-%K zp=8N>0Fv-n%W6{A8g-tu7{73N#KzURZl;sb^L*d%leKXp2Ai(ZvO96T#6*!73GqCU z&U-NB*0p@?f;m~1MUN}mfdpBS5Q-dbhZ$$OWW=?t8bT+R5^vMUy$q$xY}ABi60bb_ z9;fj~2T2Ogtg8EDNr4j96{@+9bRP#Li7YDK1Jh8|Mo%NON|bYXi~D(W8oiC2SSE#p z=yQ0EP*}Z)$K$v?MJp8s=xroI@gSp&y!De;aik!U7?>3!sup&HY{6!eElc+?ZW*|3 zjJ;Nx>Kn@)3WP`{R821FpY6p1)yeJPi6yfq=EffesCZjO$#c;p!sc8{$>M-i#@fCt zw?GQV4MTSvDH(NlD2S*g-YnxCDp*%|z9^+|HQ(#XI0Pa8-Io=pz8C&Lp?23Y5JopL z!z_O3s+AY&`HT%KO}EB73{oTar{hg)6J7*KI;_Gy%V%-oO3t+vcyZ?;&%L z3t4A%Ltf=2+f8qITmoRfolL;I__Q8Z&K9*+_f#Sue$2C;xTS@%Z*z-lOAF-+gj1C$ zKEpt`_qg;q^41dggeNsJv#n=5i+6Wyf?4P_a=>s9n(ET_K|*zvh633Mv3Xm3OE!n` zFk^y65tStyk4aamG*+=5V^UePR2e0Fbt7g$({L1SjOel~1^9SmP2zGJ)RZX(>6u4^ zQ78wF_qtS~6b+t&mKM=w&Dt=k(oWMA^e&V#&Y5dFDc>oUn+OU0guB~h3};G1;X=v+ zs_8IR_~Y}&zD^=|P;U_xMA{Ekj+lHN@_n-4)_cHNj0gY4(Lx1*NJ^z9vO>+2_lm4N zo5^}vL2G%7EiPINrH-qX77{y2c*#;|bSa~fRN2)v=)>U@;YF}9H0XR@(+=C+kT5_1 zy?ZhA&_&mTY7O~ad|LX+%+F{GTgE0K8OKaC2@NlC1{j4Co8;2vcUbGpA}+hBiDGCS zl~yxngtG}PI$M*JZYOi{Ta<*0f{3dzV0R}yIV7V>M$aX=TNPo|kS;!!LP3-kbKWj` zR;R%bSf%+AA#LMkG$-o88&k4bF-uIO1_OrXb%uFp((Pkvl@nVyI&^-r5p}XQh`9wL zKWA0SMJ9X|rBICxLwhS6gCTVUGjH&)@nofEcSJ-t4LTj&#NETb#Z;1xu(_?NV@3WH z;c(@t$2zlY@$o5Gy1&pvja&AM`YXr3aFK|wc+u?%JGHLRM$J2vKN~}5@!jdKBlA>;10A(*-o2>n_hIQ7&>E>TKcQoWhx7um zx+JKx)mAsP3Kg{Prb(Z7b};vw&>Tl_WN)E^Ew#Ro{-Otsclp%Ud%bb`8?%r>kLpjh z@2<($JO9+%V+To>{K?m76vT>8qAxhypYw;Yl^JH@v9^QeU01$3lyvRt^C#(Kr#1&2 ziOa@LG9p6O=jO6YCVm-d1OB+_c858dtHm>!h6DUQ zj?dKJvwa2OUJ@qv4!>l1I?bS$Rj zdUU&mofGqgLqZ2jGREYM>;ubg@~XE>T~B)9tM*t-GmFJLO%^tMWh-iWD9tiYqN>eZ zuCTF%GahsUr#3r3I5D*SaA75=3lfE!SpchB~1Xk>a7Ik!R%vTAqhO z#H?Q}PPN8~@>ZQ^rAm^I=*z>a(M4Hxj+BKrRjJcRr42J@DkVoLhUeVWjEI~+)UCRs zja$08$Ff@s9!r47##j1A5^B6br{<%L5uW&8t%_te(t@c|4Fane;UzM{jKhXfC zQa|k^)d*t}!<)K)(nnDxQh+Q?e@YftzoGIIG?V?~$cDY_;kPF>N}C9u7YcZzjzc7t zx3Xi|M5m@PioC>dCO$ia&r=5ZLdGE8PXlgab`D}>z`dy(+;Q%tz^^s*@5D)gll+QL z6@O3@K6&zrhitg~{t*EQ>-YN zy&k{89XF*^mdeRJp{#;EAFi_U<7}|>dl^*QFg**9wzlA#N9!`Qnc68+XRbO-Za=t zy@wz`mi0MmgE?4b>L$q&!%B!6MC7JjyG#Qvwj{d8)bdF`hA`LWSv+lBIs(3~hKSQ^0Se!@QOt;z5`!;Wjy1l8w=(|6%GPeK)b)2&Ula zoJ#7UYiJf>EDwi%YFd4u5wo;2_gb`)QdsyTm-zIX954I&vLMw&_@qLHd?I~=2X}%1 zcd?XuDYM)(2^~9!3z)1@hrW`%-TcpKB1^;IEbz=d0hv4+jtH;wX~%=2q7YW^C67Fk zyxhyP=Au*oC7n_O>l)aQgISa=B$Be8x3eCv5vzC%fSCn|h2H#0`+P1D*PPuPJ!7Hs z{6WlvyS?!zF-KfiP31)E&xYs<)C03BT)N6YQYR*Be?;bPp>h?%RAeQ7@N?;|sEoQ% z4FbO`m}Ae_S79!jErpzDJ)d`-!A8BZ+ASx>I%lITl;$st<;keU6oXJgVi?CJUCotEY>)blbj&;Qh zN*IKSe7UpxWPOCl1!d0I*VjT?k6n3opl8el=lonT&1Xt8T{(7rpV(?%jE~nEAx_mK z2x=-+Sl-h<%IAsBz1ciQ_jr9+nX57O=bO_%VtCzheWyA}*Sw!kN-S9_+tM}G?KEqqx1H036ELVw3Ja0!*Kr-Qo>)t*?aj2$x;CajQ@t`vbVbNp1Oczu@ zIKB+{5l$S;n(ny4#$RSd#g$@+V+qpAU&pBORg2o@QMHYLxS;zGOPnTA`lURgS{%VA zujqnT8gx7vw18%wg2)A>Kn|F{yCToqC2%)srDX&HV#^`^CyAG4XBxu7QNb(Ngc)kN zPoAhkoqR;4KUlU%%|t2D8CYQ2tS2|N#4ya9zsd~cIR=9X1m~a zq1vs3Y@UjgzTk#$YOubL*)YvaAO`Tw+x8GwYPEqbiAH~JNB?Q@9k{nAuAbv)M=kKn zMgOOeEKdf8OTO|`sVCnx_UqR>pFDlXMXG*KdhoM9NRiwYgkFg7%1%0B2UWn_9{BBW zi(Ynp7L|1~Djhg=G&K=N`~Bgoz}Bu0TR6WsI&MC@&)~>7%@S4zHRZxEpO(sp7d)R- zTm)))1Z^NHOYIU?+b2HZL0u1k>{4VGqQJAQ(V6y6+O+>ftKzA`v~wyV{?_@hx>Wy# zE(L|zidSHTux00of7+wJ4YHnk%)G~x)Cq^7ADk{S-wSpBiR2u~n=gpqG~f=6Uc7^N zxd$7)6Cro%?=xyF>PL6z&$ik^I_QIRx<=gRAS8P$G0YnY@PvBt$7&%M`ao@XGWvuE zi5mkN_5kYHJCgC;f_Ho&!s%CF7`#|B`tbUp4>88a8m$kE_O+i@pmEOT*_r0PhCjRvYxN*d5+w5 z<+S)w+1pvfxU6u{0}0sknRj8t^$uf?FCLg<%7SQ-gR~Y6u|f!Abx5U{*KyZ8o(S{G znhQx#Zs_b8jEk`5jd9CUYo>05&e69Ys&-x_*|!PoX$msbdBEGgPSpIl93~>ndH;t5 z?g>S+H^$HtoWcj4>WYo*Gu;Y#8LcoaP!HO?SFS&F9TkZnX`WBhh2jea0Vy%vVx~36 z-!7X*!Tw{Zdsl3qOsK&lf!nnI(lud){Cp$j$@cKrIh@#?+cEyC*m$8tnZIbhG~Zb8 z95)0Fa=3ddJQjW)9W+G{80kq`gZT`XNM=8eTkr^fzdU%d5p>J}v#h&h$)O+oYYaiC z7~hr4Q0PtTg(Xne6E%E@0lhv-CW^o0@EI3>0ZbxAwd2Q zkaU2c{THdFUnut_q0l+0DpJ5KMWNTa^i@v%r`~}fxdmmVFzq6{%vbv?MJ+Q86h6qf zKiGz6Vrb>!7)}8~9}bEy^#HSP)Z^_vqKg2tAfO^GWSN3hV4YzUz)N3m`%I&UEux{a z>>tz9rJBg(&!@S9o5=M@E&|@v2N+w+??UBa3)CDVmgO9(CkCr+a1(#edYE( z7=AAYEV$R1hHyNrAbMnG^0>@S_nLgY&p9vv_XH7|y*X)!GnkY0Fc_(e)0~)Y5B0?S zO)wZqg+nr7PiYMe}!Rb@(l zV=3>ZI(0z_siWqdi(P_*0k&+_l5k``E8WC(s`@v6N3tCfOjJkZ3E2+js++(KEL|!7 z6JZg>9o=$0`A#$_E(Rn7Q78lD1>F}$MhL@|()$cYY`aSA3FK&;&tk3-Fn$m?|G11= z8+AqH86^TNcY64-<)aD>Edj$nbSh>V#yTIi)@m1b2n%j-NCQ51$9C^L6pt|!FCI>S z>LoMC0n<0)p?dWQRLwQC%6wI02x4wAos$QHQ-;4>dBqO9*-d+<429tbfq7d4!Bz~A zw@R_I;~C=vgM@4fK?a|@=Zkm=3H1<#sg`7IM7zB#6JKC*lUC)sA&P)nfwMko15q^^TlLnl5fY75&oPQ4IH{}dT3fc% z!h+Ty;cx9$M$}mW~k$k(($-MeP_DwDJ zXi|*ZdNa$(kiU?}x0*G^XK!i{P4vJzF|aR+T{)yA8LBH!cMjJGpt~YNM$%jK0HK@r z-Au8gN>$8)y;2q-NU&vH`htwS%|ypsMWjg@&jytzR(I|Tx_0(w74iE~aGx%A^s*&- zk#_zHpF8|67{l$Xc;OU^XI`QB5XTUxen~bSmAL6J;tvJSkCU0gM3d#(oWW$IfQXE{ zn3IEWgD|FFf_r2i$iY`bA~B0m zA9y069nq|>2M~U#o)a3V_J?v!I5Y|FZVrj|IbzwDCPTFEP<}#;MDK$4+z+?k5&t!TFS*)Iw)D3Ij}!|C2=Jft4F4=K74tMRar>_~W~mxphIne& zf8?4b?Aez>?UUN5sA$RU7H7n!cG5_tRB*;uY!|bNRwr&)wbrjfH#P{MU;qH>B0Lf_ zQL)-~p>v4Hz#@zh+}jWS`$15LyVn_6_U0`+_<*bI*WTCO+c&>4pO0TIhypN%y(kYy zbpG4O13DpqpSk|q=%UyN5QY2pTAgF@?ck2}gbs*@_?{L>=p77^(s)ltdP1s4hTvR# zbVEL-oMb~j$4?)op8XBJM1hEtuOdwkMwxzOf!Oc63_}v2ZyCOX3D-l+QxJ?adyrSiIJ$W&@WV>oH&K3-1w<073L3DpnPP)xVQVzJG{i)57QSd0e;Nk z4Nk0qcUDTVj@R-&%Z>&u6)a5x3E!|b;-$@ezGJ?J9L zJ#_Lt*u#&vpp2IxBL7fA$a~aJ*1&wKioHc#eC(TR9Q<>9ymdbA?RFnaPsa)iPg7Z; zid$y8`qji`WmJ5nDcKSVb}G$9yOPDUv?h1UiI_S=v%J8%S<83{;qMd0({c8>lc=7V zv$okC+*w{557!ohpAUMyBHhKLAwzs&D11ENhrvr_OtsnS!U{B+CmDH-C=+po+uSqt z+WVVXl8fKe5iCZoP;>}4OVen6_|uw8*ff-r;)O2W+6p7BPT7sT<|Qv=6lgV#3`Ch${(-Wy#6NA$YanDSFV_3aa=PAn%l@^l(XxVdh!TyFFE&->QRkk@GKyy( zC3N%PhyJf^y9iSI;o|)q9U-;Akk>;M>C8E6=3T!vc?1( zyKE(2vV5X_-HDSB2>a6LR9MvCfda}}+bZ>X z+S(fTl)S})HZM`YM`uzRw>!i~X71Kb^FnwAlOM;!g_+l~ri;+f44XrdZb4Lj% zLnTNWm+yi8c7CSidV%@Y+C$j{{Yom*(15277jE z9jJKoT4E%31A+HcljnWqvFsatET*zaYtpHAWtF|1s_}q8!<94D>pAzlt1KT6*zLQF z+QCva$ffV8NM}D4kPEFY+viR{G!wCcp_=a#|l?MwO^f4^EqV7OCWWFn3rmjW=&X+g|Pp(!m2b#9mg zf|*G(z#%g%U^ET)RCAU^ki|7_Do17Ada$cv$~( zHG#hw*H+aJSX`fwUs+fCgF0bc3Yz3eQqR@qIogSt10 znM-VrdE@vOy!0O4tT{+7Ds-+4yp}DT-60aRoqOe@?ZqeW1xR{Vf(S+~+JYGJ&R1-*anVaMt_zSKsob;XbReSb02#(OZ z#D3Aev@!944qL=76Ns-<0PJ;dXn&sw6vB9Wte1{(ah0OPDEDY9J!WVsm`axr_=>uc zQRIf|m;>km2Ivs`a<#Kq@8qn&IeDumS6!2y$8=YgK;QNDcTU}8B zepl6erp@*v{>?ixmx1RS_1rkQC<(hHfN%u_tsNcRo^O<2n71wFlb-^F2vLUoIfB|Hjxm#aY&*+um7eR@%00 zR;6vT(zb2ewr$(CwbHgKRf#X(?%wBgzk8qWw=d@1x>$40h?wIUG2;Jxys__b)vnPF z{VWvLyXGjG4LRo}MH@AP-GOti6rPu^F04vaIukReB|8<7&5cebX<)Zk(VysCOLBuL zW9pEvRa--4vwT?k6P??+#lGMUYE;EsaU~=i_|j!1qCVS_UjMVhKT%CuovR;6*~rP0)s5eX zxVhGZv+qtpZ{_FDf9p{m`ravh=h>mPMVR7J-U@%MaAOU2eY@`s-M3Oi>oRtT?Y&9o({nn~qU4FaEq|l^qnkXer)Cf0IZw;GaBt)}EIen=1lqeg zAHD~nbloktsjFh&*2iYVZ=l1yo%{RK#rgTg8a2WRS8>kl03$CS(p3}E-18`!UpyOg zcH=`UYwn0b@K1`E&aQ%*riO|F-hq;S;kE7UwYd~Ox(u)>VyaE7DA6h_V3_kW2vAR} zBZi_RC*l3!t;JPD;<*z1FiZt;=KK-xuZ`j>?c5oxC^E2R=d`f68!-X=Xw2ONC@;@V zu|Svg4StiAD$#wGarWU~exyzzchb#8=V6F<6*nAca@x}!zXN}k1t78xaOX1yloahl zC4{Ifib;g}#xqD)@Jej<+wsP+JlAn)&WO=qSu>9eKRnm6IOjwOiU=bzd;3R{^cl5* zc9kR~Gd9x`Q$_G^uwc4T9JQhvz3~XG+XpwCgz98Z>Pez=J{DD)((r(!ICFKrmR-;} zL^`7lPsSmZT?p&QpVY&Ps~!n($zaAM8X@%z!}!>;B|CbIl!Y={$prE7WS)cgB{?+| zFnW-KRB-9zM5!L+t{e~B$5lu-N8Yvbu<+|l;OcJH_P;}LdB~2?zAK67?L8YvX})BM zW1=g!&!aNylEkx#95zN~R=D=_+g^bvi(`m0Cxv2EiSJ>&ruObdT4&wfCLa2Vm*a{H z8w@~1h9cs&FqyLbv7}{R)aH=Bo80E3&u_CAxNMrTy_$&cgxR10Gj9c7F~{hm#j+lj z#){r0Qz?MaCV}f2TyRvb=Eh|GNa8M(rqpMPVxnYugYHqe!G`M@x(;>F%H46LGM_cU z{*0k6-F!7r3;j{KOaDxrV16WUIiFAfcx?^t*}ca4B8!-d?R|$UxwV8tyHdKL zhx;7%0Zn#qtx;S)REtEP-meAlV8*1qGFbRJ*eeX&+hsiLF*g9%r0Zl`L^Kn`4I)ul z32#3pg6Mu$LEI@hssUb?T$di_z zHgaB3zw;*0Lnzo$a~T_cFT&y%rdb*kR`|6opI#Pbq~F%t%*KnyUNu|G?-I#~C=i#L zEfu}ckXK+#bWo11e+-E$oobK=nX!q;YZhp}LSm6&Qe-w0XCN{-KL}l?AOUNppM-)A zyTRT@xvO=k&Zj|3XKebEPKZrJDrta?GFKYrlpnSt zA8VzCoU+3vT$%E;kH)pzIV7ZD6MIRB#w`0dViS6g^&rI_mEQjP!m=f>u=Hd04PU^cb>f|JhZ19Vl zkx66rj+G-*9z{b6?PBfYnZ4m6(y*&kN`VB?SiqFiJ#@hegDUqAh4f!+AXW*NgLQGs z>XrzVFqg&m>FT^*5DAgmMCMuFkN4y*!rK^eevG!HFvs7nC672ACBBu5h(+#G@{0J- zPLsJ{ohQEr2N|PmEHw9 znQ`qe-xyv93I;Ym=WnoVU8dau&S^(*Wp=}PSGw;&DtaKz-);y)zjD|@-RT`*6nowj z7B%)h3>Lro-}5THC@BLymuL&3~kh8M}ZrZGtYKAmrT^cym$^O!$eeK$q5X2JF1w5a}4Z6yJ<=8&J?(m6U?;+ z{+*B;P@yGffMz;OSfm7NDhkGR5|7&~FNvel8Yj{F!DWnHG>%?ReZ$1w5I$Bt_u|4v z-ow>!SF!pCGrD&K8=-<;Gp@oB<@9C&%>vPHrp4sQEJj2FdedjC=0FqD>EG?NCf=KQKVd^stDZP7KNCAP-uEO*!?vgwvdp&Dm3h5Cldn!cIOL@u>1!HSfK+~kn-9Ekr|MWNApAJCJ5&5#izmjm z$CI|Boo@;O?Z(Bo9ejP>bbH|jRKn7W3y0L1!O6v$RUtt;%5R#**`+39c$JuO`SMU+ zbzu$7Eu`JQ+ri_ap{w(R_juHcw0X8~e$48TzBX%Yd+HkSSYt2){)+rYm48G^^G#W* zFiC0%tJs0q3%fX_Mt8A=!ODeM?}KLDt@ot6_%aAdLgJ7jCqh_1O`#DT`IGhP2LIMhF* z=l?}r%Tl#)!CpcItYE2!^N8bo`z9X(%0NK9Dgg^cA|rsz?aR+dD6=;#tvNhT5W}1; zFG@_F2cO&7Pdp1;lJ8?TYlI(VI8nbx_FIGRX^Z(d zyWyJi58uPgr>8w$ugIGhX1kr*po@^F>fntO1j&ocjyK za8Z*GGvQt+q~@R@Y=LdQt&v=8-&4WOU^_-YOuT9Fx-H7c;7%(nzWD(B%>dgQ^ zU6~0sR24(ANJ?U>HZ#m8%EmD1X{uL{igUzdbi+JN=G9t`kZMGk!iLCQQiVMhOP&(*~gU(d+&V4$(z=>4zqh(GX+9C&;~g2 z9K2$`gyTRJpG_)fYq=9sG^1I{*I=s%0NX^}8!mJVc?y$OYM^n!x(2jw$$;}n&dh%D;St+FA;eW=+28j#G^YLi@Gdk*H#r-#6u?7sF7#_pv?WS^K7feY1F^;!;$rgU%J zS$lZ(hmo$F>zg$V^`25cS|=QKO1Qj((VZ;&RB*9tS;OXa7 zy(n<$4O;q>q5{{H>n}1-PoFt;=5Ap+$K8LoiaJV7w8Gb%y5icLxGD~6=6hgYQv`ZI z2Opn57nS-1{bJUr(syi^;dv+XcX8?rQRLbhfk1py8M(gkz{TH#=lTd;K=dr!mwk2s z#XnC){9$x)tjD0cUQ90|hE2BkJ9+_tIVobRGD6OQ-uKJ#4fQy!4P;tSC6Az)q?c>E zXt(59YUKD?U}Ssn(3hs&fD$i3I*L_Et-%lx%HDe%#|)*q+ZM-v%Ds3u1LPpPKe-q} zc!9Rt)FvptekA2s+NXxF7I;sH1CNPpN@RT+-*|6h*ZWL{jgu9vth{q)u=E<7D(F06 zN~UUfzhsK)`=W%Z-vr#IIVwmdb(q7k+FX-lciYO%NE!xl25SV53Hwdql-3>8y5X1U zWa3_Qfp2Z;jVX+N+1?`(dx-EJL)%oQsI0G3S=ad&v{dzNal~flHvq(0HjY!v;oE>n z4gQSa2FdJI52Weu$+lED4VYSW;D`5Zn`C#@7Hxa1Ls*#TLBjje(%NYFF+4uOc~dK! zlnyxE4NWVz0c8yx`=sP2t)fHW(PPKZPp{SCwT-on2sEM9tyGO4AW7|R;Iw5|n1KpV zR^S>`h}rxcNv2u+7H6rCvMLMV3p*H#WcN}}t0@Us{w}{20i<-v> zyos+Ev_>@CA**@JrZ6Jzm=pWd6ys`c!7-@jf<~3;!|A_`221MFp-IPg28ABf6kj-Y#eaRcQ!t!|0SRtkQK^pz;YiTC@@lJ4MDpI(++=}nTC zRb4Ak&K16t*d-P(s5zPs+vbqk1u>e5Y&a!;cO(x;E4A4}_Cgp_VoIFwhA z-o^7)=BRYu)zLT8>-5os4@Ss8R&I^?#p?bY1H-c;$NNdXK%RNCJHh)2LhC?B9yL2y z(P-1t9f~NV0_bQ{4zF|-e^9LG9qqevchug76wtFn95+@{PtD)XESnR2u}QuG0jYoh z0df4#&dz_FStgOPG0?LVGW&{znCUzHU%*b1f~F+)7aefg7_j76Vb|2WuG#1oYH_~4 zrzy#g1WMQ#gof`)Ar((3)4m3mARX~3(Ij=>-BC zR@&7dF70|)q>tI$wIr?&;>+!pE`i6CkomA1zEb&JOkmg9!>#z-nB{%!&T@S-2@Q)9 z)ekri>9QUuaHM{bWu&pZ+3|z@e2YjVG^?8F$0qad4oO9UI|R~2)ujGKZiX)9P2;pk z-kPg%FQ23x*$PhgM_1uIBbuz3YC z#9Rz(hzqTU{b28?PeO)PZWzB~VXM5)*}eUt_|uff_A8M4v&@iY{kshk{7dHX1vgHs zC%vd9vD^c;%!7NNz=JX9Q{?$~G@6h!`N>72MR*!Q{xE7IV*?trmw>3qWCP*?>qb01 zqe|3!Y0nv7sp|Md9c z4J5EJA%TD-;emh%|L2kLpA^g>)i56v6HIU8h7M+KSWYw~HHz3`ILj*{==jD(l33>r zmOdINZ8^Jo?ll^~q@{^5l#*3f`ETncJmo?iRLz*=W=o3MJ!K^xjVcw*H}p63#p4XX z1)|C%{Y&)IpRIk5oMVsUi6oyKAFy8MH$@|Zpjr^lxlMX3O{0AZTjc{gso{KRuo30V zUJxq2K=_CwV*Qx_D!hJCBTuQ}5oMNrWUBNVaa8zyMg5lrXgv8Zw@rm5NAcFplYa>P zmUNB>EB|r?#Z!Gq^`(HZl__UJ*K5 z=>`{UTlt0;Y+LmP1Wb19IWK(SIWDrqh=+K81c`t@BCS|2#@K0u5eEwQ7CG92=Axx4 zQ?CPaVE5!XY`2r!Ce@m(tRtB=&+c>a09WzP-Ys!~i;V0hEq}PU8n1a;bVbJ17rYW1 zjz|KkLZoO7-S6oQp_ocIzS43P@CJJxQ$k;$!fS3*V)m|VtBIEgCtU@W`AG9VMU_d znB-Zs3I)I(Wg=xj)Wcx03h}U3i5{D@*udPLg?Jx7dp&KEIwJiW=eh}Ps#FxbsS?F}7z<;<5RP6-UAD+_An$s3y-JAC zh{JlAX3e^CDJl1gJDbH`e=hD88ER_6+Mw8CwK&^|$BnzA|AvDV`#xF^z9b6iWb)0@ z+gir=oSUaVcJi%1k+9!pd`(3|h~4}!NM7NHPNV6rI(W4~Ie5 zl@(Xg2`OSq|HJRUg3qgr-c!}9@W?pEJXKtxP7f(aE2Es33gRSu#~XiCIpV-J;JLM{(@qK2wEvsi@6-9(cyXX!6YS0n7;TK0Ldf*JGmlvrF0 zGQ+Z509rmWa)O}r`z2W3!6u{^ZQrY`KR#VlTRmllG2v$R!7%B~IU@XnNi!E1qM$J8 z%{XFU4vy_*M0tKjDY3E*7N!d%&vnx5qr#=!IKWZfoRo8j=7ji1{xW?g^)A|7 zaaA5Rg6rwCF?y33Kz-90z!ze`@5N916S)(fHPa>{F`UEF8N5PTNjbo)PF5W_YLB*# z?o`qxQTIzokhSdBa1QGmn9b;O#g}y_4d*j*j`cx^bk(=%QwiFxlAhFSNhO0$g|ue> zDh=p|hUow5Knbclx8V;+^H6N_GHwOi!S>Qxv&}FeG-?F7bbOWud`NCE6Tv-~ud&PS6 z;F*l>WT4zvv39&RTmCZQLE67$bwxRykz(UkGzx}(C23?iLR}S-43{WT80c$J*Q`XT zVy-3mu&#j}wp^p0G%NAiIVP2_PN{*!R%t7*IJBVvWVD#wxNRyF9aXsIAl)YpxfQr$d%Rt20U@UE}@w?|8^FMT%k36 zcGi_Mw+vMvA@#}0SfIiy0KEKwQ|`iR++|PF2;LtiH7ea($I{z z32QPp-FlEQ**K_A@OC943z`Qy7wC~&v z*a`z;(`5(e#M|qb4bkN6sWR_|(7W~8<)GnX)cJAt``gu8gqP(AheO-SjJMYlQsGs0 z!;RBZwy>bfw)!(Abmna(pwAh^-;&+#$vChUEXs5QOQi8TZfgQHK$tspm+rc%ee0gy zjTq5y20IJ`i{ogd8l?~8Sbt^R_6Fx*!n6~Jl#rIt@w@qu2eHeyEKhrzqLtEPdFrzy z9*I^6dIZ z)8Gdw1V^@xGue9trS?=(#e5(O#tCJv9fRvP=`a{mnOTboq<-W$-ES7)!Xhi*#}R#6 zS&7hR(QeUetr=$Pt6uV%N&}tC;(iKI>U!y$j6RW&%@8W|29wXe@~{QlQ0OjzS;_>q z(B!=A71r|@CmR7eWdu9n0;OJ zP@VOOo#T+N$s{`3m`3Li+HA4owg&>YqCwsA5|E$b;J&v#6RbT$D!x$Yaflo92wU?A zvgD8g(aY`g7}Y2^2i31ocm&k9Km`NQipEsjU>MuRzD35*Jk7^Q(O;M32!gt1cEB@- zBOHd@@Qo{fQ^7o{FiNdS)_vTiP8toqZ`iNi^1-4(hp+s751}Tf34b z_UYQ1q0~*jIp9pRIpI8ue}$|~uu0#p>-y8t{yEwB(8yAjMXrJ{`{rp7*-wlh8&bso zHV`LnAF7Bw+w}Wm9ii3U@lEvcc-i$0&h+eUmlQuREzg!ao)ZjwThhqIKA})}akyX7 zcbuIw9K}9aUZ;hvAxk~rqpk?bYMWr-@b-pMTR8))ggQa$kBv=IinobKCR0?S&g*+Al2J`VR7he{}0Pu zae7LYa!OoTOk8?ma)M@Ta%NxQacV~KMw&)}fkmF7wvmagnTbWo))`Kofr)`-pNe99 zMnam7vRRs5LTXHWNqTzhfQo90dTdg<=@9teXaX2tyziuRI?UOxKZ5fmd%yNGf%Kis zEDdSxjSP&;Y#smYU$Dk>Sr0J42D)@hAo|7QaAGz(Qp*{d%{I-#UsBYP2*yY8d0&$4 zI^(l62Q-y4>!>S{ zn;iO%>={D42;(0h@P{>EZnIzpFV|^F%-OJADQz(1GpUqqg#t!*i zcK}eD_qV$RmK}-y_}f$Xy7B+hY~f4s{iCD7zq%C|SepGu`+>h6TI}dUGS3%oOYsZ0 z#rWTU&aeMhM%=(r(8kK@3rr|wW^MFE;dK5&^Z!>`JV{CWi^Gq?3jz~C-5hFFwLJ@e zSm3z9mnI+vIcF+RjyOL!VuZP3rJDjPSm4vYolnm)H;BIz!?dLyE0^5(pm)5*>2clW zaI^*Z;p6iGZW~Gr0(Eh+%8Jkz{S9{}=}Ewi6W0wF3|BbVb?CR2x>4xST?woP;Mz8L zDfs+0L9ga3jcM)zCC=`-ah9#oulxt9bZq9zH*fJK$bhT=%(2bPMY~}cPfTyE{_4p+ zc}3pPX`B04z+T>XwRQ4$(`U~037JrmN`)3F8vu_OcBE}M&B;1Vd%|I|1tni?f_b&$ z5wpdJ6F*oif)r=IzB$ytT72GuZi$y>H0p_#amQcJLZ^4KZySOUrRyXy3A2(i=$zB9 znZnGFLC34k?N@s@`)u8aZN({9Hfe}|^@Xk(TmCqNBR*Bter>opM!SGiDU8ShK6FNp zvod~z>Tj!GOXB^#R>6}_D@j67f5cNc#P;yMV}`S*A_OmXk_BIq3I$C}3M~aPU)agY zWC+0JA-)}O@e4XTtjzen&g=J0GIVNjG`_gS6ErXj3cGxeDN*4xEk0PNzfzO@6gb&N zB$S-WV-@efQWs%UX$AVjFN5M@8U>+?Mcqg?@=Z-R`~n~;mQGVJT_vBL|3^fHxZ?#T zE(Sd`8%2WHG)TcNaCHmv_Id%D+K}H3s&c`bxKs(_ScZzyCTpvU zHv~yhtKF9G{s+GC*7>_D@F+qEq@YmXiKTV(j#X7^?WpvIg!Yxi6uBAhh7<91{8vFL zfT?Y~vwmE;(WOL!V5Ag&#@U$mP~T=*#_ ze#QynX>tO#4IJqSj^UB>8ubSEn>Nk!Z?jZE01CJCYuY`1S3 zf%2eyXaWoAQUw)KYO;wi<&+R3_7E%h(7F?xq!8l>!^3Jqj_tNPrG= z+y2S-0j;(AilOo;>SCQu#;Cn?y4Eu za`??!yHz)qFH1Z(3KMqgn+B$&t+5s0zY|}<1kB^Q8FEAumh;^;Yr~amTx1K2%2JUk z@7uIE&0DVch|1R=ro5rjr)w!iU{_09PqfhnGqhAN^$^oz#wVNdTRQ!8^nF};4);Jz#=dTBTMMW7icnZ$dK1E0UEgP4&DNk9MFoKOhtAkVUR`d_vc!x zc|1mY&%{PBxepp^JPHmFDBQ8t@DD-3!C)-ZhGJt)?{)^0MvC%RzI;4}>XoOUF;6~j z{S20Ra%PaiGvM$pFbH;N6)b1J(N;{+Gp^^Qk34JAuPKH}Ap}fen!WlC5vrQ0$pnyq z5poi8VG>>PnGw2^-CY3XdG3<;|0xU}#WBPqn{mO=z0RwL=MXn3=;oA(1C@V^6F;ogwB4EBUpltu=)(MC@To2kSPbL zDdGz|C<@`&!MmQ*e>H>2Qkwa~K%;yZw;SnM<=qwNHu-Dh$r(}-d}T}u!=UOAkzvEOiZ6>{)t$$# zlAmjO$1)&1Zh^zdh8uhmZ>OBA1T4%s9Jex_y4|ifY_=XoX6UzpP;MuC5su(6%;)NI z4d#4aW<*)L6o7w?MY2+jRx6-3S4i zC(~)A`|)5(s?)pBvTfYjwvr@Z-Dx-F7uq}z#WJB6&}0TIi6sGXFWOxD!As%cUg)_A zI)sRCf-5kPBU|rVm0A{!s=W2){AJwvShr6Tsvbg|NrXi!7zoMde_n>-+XFX0fiQy~ zjRp|;6~pR()0a>ETtC7mZD|i$Emj!r-gq!yhAFdV1uR*M<4O?t83N1JRT~8Cy8Vha z+STlcw&CoCJt$k^#ar+~DBmvtC5tr{(>|W6wHq*NSE!^#8*rs>!oYj%fl9~Nu*d4t zdk!|mGJehKW8xJE5ZOcHRfp4plI+l1Pct;rK={=P`YH8&1hNW*YE)4yF2@wa7JFaL zLHJH6ZWc1j|nQ55Znh#>tV`!~N7lY_05Cq%|8I-yN}yf@EzDG zBL z(b0sjh+ui^*s(rg)=l8fU<%cPfba<7y?>}j3R83$2KHzWbVF*`!x^V8JY`D0itC?ZSTYH|w3lUD#$5G$@!v(Lphex2O1;%>w;Qh$t7YF3EjFuySPC$>~%EspW}@Ctn1Bghd5*HVJ=tZK~8oMiZ@9IxfFLSk~>p9cT9gOSPLyP!^bOah`U-6{}C_ zmyhS7S_-tYDm|9C6(Wu2Qe=*g5@{**z@#Ekz3Y{o7fw!^4z$yi z&=a^zmtOpsRO0lFr&c=khr)cL2v9LFKXRDdE}tWlOgpR%}oWHCeJ4;(9U_HeJYl! zwz$p|t6?#eCju@0{IF0gbk>So3C{Ror~JTpuOW!G@^?lBVrf zf?%rDK2E3x=xGC)J_lEk{(ESh-Uw*#k-n4l42f3oC3BJX0-2NMZo?P)-6y1v+?|+< zfFHX8(bw;H@;6K!?=!B#eZrkowcdn7)roPT=WM@MK?>T-cUa$oQdYp&3YRdWu~rhA z@rZKmqj8Ftz-*@`&iH|) zC(H;QiqYx4{Mz@rm`qs~*Ue~4EHM^J7i{QnL~t)O)tnwIQC;23p}TBoc=9rcuS!cQ zQgl)_F@t9{c)ESLtAcg1AbCXqVS%i1ZZRiy$*?Bu=r2ad13e|ZeWV=3pSL>YAk>X& zQZAY4kJD`CYrK-nNti&;uJ*e{cRILOFk@z?B@fNO(exjUhf!b=yuC`@(RS#ko1HA+ zOwsym7?F)}ufcD5&IV+qr+i7Mo3)6M2oI)*3?@-%ah^0rL#0PIn}XmOTP9Xsg5C;t zqkFe6yT##_ZG5KuhVQY)89LfWOeXpXVNWX2PmiRqq<$C!<^WlyO~Q=pk${$DsWY-7 zZ->4<+c@KPgKzKosGPF+&Q*>L>WaN6_FC~SP~3gH7bvg6>QgPzp`&QTpf3W>HjxDxj!y zZb`O;&XZzI2YJ4!^Mq5~Vz7lLv`StN|TSP@jdF}@9;ql?u*#Q+_E}~hak(3B%AQNq)t7PKgAWTYp>EJz^VIj67KcZ3^vvZ7{b;; zcOOArcAw2$T+$UwIib|pt3i#NAuP#3?Z@Oaz?Mt(H&u7HZu!03kV7`t5IRcf7hwck zf{Ujp*YsH;dvcW0q|=o$;z#Cg52;n5t1phY44To!sQ99h`iVzXd+v(L%?A$Ks|Ne; z7fby7IVUXqN8gzsnL-s?uIv>=Qh!qAxoe{fRaI&EcSGCTdggq-Qq?DU%SBOummO5cRa9NW}V>A0IH#pxch)!$2p8=^-XYjsB%$S$U5nI zlJEMBb!BZ_O4@87cEYUBH7}Y_MF$+(~gdf-!7)D-D)+O{*18TC{HGZFF+`%IPcmK{O{YxR> zSfJHSeQCChuPUAWe_x~gy*f!!wvt_tL-Dp=nUm+juu;4L6N1IIG4dsVMat#T^p7p1n*Tx2a!YaivBTqLsSJAF=kJej?@QWf)Y-8Ks>WkC456{B#hW-ML zI+f23(}F=MeSdbWQ>R98TOzv#Haw}ua+17H=P5|~#BDmoEPkzl#lBTvCoyj`XU|IS zHn?dXbq>rqUW8^kQN01zL~6!Vxn4!$Pu|F&#XbiF{{>T z)&khW&2Y?d8^jC|phWKQ4!CM9b66+l*HTdPm+)M|e5yT)I32Q~2ENVJ*ZH;JF^Y907{XNHLoQ+85J~!w@3h_5d04o=~|1 zCBAvjnXMn`S#qMkPZE}9#RX`%al{`J=oFKk(aJYT&Ss`4iBrXa_pQ=3lS1IUFA|Rr zgnh;c8nkGH)|*yyoUZ?tE1XKwkF$n6`sdkf^7)(wZ52xtm86N>o&&jG_@#ue(B`xPM|8oGz94>*kl17-|d^y0`D=&hScq6gGQ%Z6|LU zG@<~h-R{xW)y7k1x7XFw!TWW~HPC^bCO_;xG#A4he?=xkLjS=~U!uR+q>vqJxCN~J z+I}|P5RTv*qRT{k2N^Kz8OX*mz$hYR!aYq-f5bN4R4=omUVP19L|)EZq?O0#B9 z<3G&oAZ`UeIqZWlujz8UNNSK#{=_c`*(&TwlIr3ZpC0sfS5Jy?;t+&wb1g4Q91rRNiEt1|L zisgH;)V()S&(TSB|1yAxZLH%BY`nnhUw_6sz~zdKCCc!ZV*Ws6`U4u|CBpv4pYIX1 z5*)5C*N#D}gj<@pdZxtw!`5aFVQ^Jj?1W z+EsBx6>WV`%wnP@Fp{XlqFkbHf%LfCgIi_|w?uPPjHAgOF+lDnAb+WEB+i_53PFmu zj!=umx@ez9mVxC&jA_RtKRfQG>Cz`A77S2SpOt7%Rt*}fG|yO+2t7CMuK$^}D#i}k zZmO9yUwK6%!LbRsULVnxUxfxso5KFES=!WCm>y&YSR@0CS|iON0v59pkQ7dVA{j*+ zmcRtD@lxXuFq@#$DKKSal#ApSJLw58m_NIJ?z;eD3Z8u*-#}EaK zyG~L>-7laE`Y}{g#FPs9YA-wT4>X>xRNtTHp8_rhvWA|eJH(!o-G~C&tvHB9$UEJI{ngD>QjBz=wl~x-j1MB z4)L_#jZSvaQkbmVbN)4{#^r&ZmfhhV%?tet3`xJ;#jI}DsS94qc&s)#2kXv5pkt;K zaY6emqzF1JWMxI(7h}mk*MQ5C8WLAol60!DPj|u0jMrLTkU7G?ud**S@bYx-vp$+r zMVXWc4H}2=yF+YML9!k~LT(|<#By?F2bS~weMi9dD@DA&k#0e&MM1YT!qoQDeNLwB zA;{KvwSzP?-K(>@_b@4vTkIX7xwj}ckrusCw!k=#;Krt6;}3q4d*)?c{>I|C2I^4p zR(o48TqHbw?4Z`c`>?P{`cT;FpJoFW1wJ3IVO#5Q`wsB>o>zsRDDATmct`aaYQbTL zJVlHeok9_?w83#Z*J(_BMs-;N;mNeq{;f3S zSy{i5hNY5s`c#)~KhQZ{0_hNmrMD2b7CLC2+x#EmLcNa8V1Q=jz@e~VV)Yq!Z|$nv$TEG3j6K4opW+mH z3~z?*H$qobb652kQ}ZHFHUVj$%JAwS-Ie=Vh&Iivx3hjMCZ1k)4dRjdhxRb17P;Gz zZCsB4J=l1S8`O|(g!8c$aOMaYeUoCJj&n#kbDxe(^GQ)E)$Rq+i-wbPKeaQvL!`Y- zcL=QOLcWBdDq_`HLow9P5BG2EMY$v;w9cR$C{ zMv)5zrmYv!uzHFAxDI>aftAp&ad>GYoPt!d;A*$s)^6E5l5ct#&O7A0p^8J1ceXa) znIq{NgKbbOSC`6E_af2bCoI(gD@(krDr^mDVw>cRz3zJ^&9kbuf6)J@Cd#zbnko5m zdyD^j^!9J7`oH!u{~wlOl7jYM(OcdI^#*5Y>BjUumq_g&tx<#_pkzQL3{!g?50d=#eCov*uIw$N*glXJe1F{FuUF_wCElS)Z2X= z8&w0?WkCX%HfL)#n-m1tiLy!jDMqH$LikJF=#lu@k5%&vN zOEmQQ^n*t^76E;JhHPzQqbY0+m8GQ9;~dJLLZ@*sqVX0ui5yz%8Hyn87vqUisY_0- zDtUu5haWdOvDBOX9Y;=s;7ul^_xLxfU(?k(HStRfk0Ab!pY(scal?Nz{Qu?etFHNA ztD=60Y>dte)hUle1IUyYIFgMxgGpvx%Odv4q;WPV?Zj<0pph+zWMfSd=SIUcB_#7^ zgNlm4(v!WIBm4?kpvZnCvp?TXW7~Azs3LT8Gh<0Ew=&W*e+4X_xQ{(e+UCESTaWwz zd1ly>%|#A|W%fgeL_3gAwxjeb?Wi3rAR3U#9Rie*)dfz7YxUK;ex+a4F>@qyQAL0^ zZncndzG56R$F&?R4SOX>&%UDdBid6 zIn=GRfcto+s-%gMB)Wx7!_Z+SS)f3IG!&s%P2eNfHI6~E*=>e`^RpvJQY?T95IOKL zeX-_BCdRE#f06_QAoDyMH;#IIBnT#PWSOtks+PCo`04X-brsea32I~@X(Bwl*Q`$c z{Al@04k=Mmd0}}ts=u%dCO;qn-;qh>Hr7bB6!NOVxy@Yi#GK2vusj7iU9757HTqN~ zNMoKeZY}o)nA*{CqTTPKnWi*JgZFZj&EjD$V;O9zqHV#tB#r5Ur$V3To8iP-bO*Gl_d%qc2$SoU`Hu-6*hWbuWzAn(83_jZ%>P{PY3XVV!q$~ALE^GC( zdIGgR(HnV8Rn*P^7b8#AzONo*U_W}{Ne!=#*qNJIRZzapu_fOkvki(|8NDg>&D=OZ zL3G)1WS*8CFh`-sb*#8*hIN7WDjw6<$D&T|B>JPi`K!*5DF(O*^A+r*Jfnt))c8|M zQKtgEytAqpy@~XZGnVYMJmZSG0U~uvP?i*?DhgDOSYtx6s%6u*vL$SW87`&xJ9cmDLrPHI@G7Pb*cizPGf|!5th41a2ijel>Xfk3i?7Bd*{|)@>|ZBi zH6gO9a2Yd&_ZeKmNQC^e&S$cl!3D2oBCX)C;Ve{0qc|4+*fwK!x{=QYtb#3QD1|Yi z%r?t<$-Mjbli1fF(C?V&w#;Gq3-**PgsGPPsXN(0fb?pIDc{s6b<9{t%6D*47A9ZHlc4rEGU<}u;tiom3^lA-&)1i=j z|I#)cctK)AH-b2*a3Wm%Gt*;#GWjNF6q0q^Evid`6G2yhMg_4TaMUK&x*D*5+KtlF#!)86A7pn~&yvD-Rh%`@(o!Wc#9t=t;(9_y*(MWS;4cPU&cJcE+h} z6fZHrjH@7{6~n40#qgL(yA-oVrt;Kcu=fV1WQ0QY`_I8lVds$PYR7KDvhsTbkC8q6 zct`{-n;z2!($SBZ?;(ZMu1sY(VY)KJ@%p)!LEBL+M{ck-$kHEx=3N+%$#msc!LKD> z?(7`Owu6Iuf-Nb|5wFxCm}U)Du@JO|nHV?%8lk(y3x-=F_d}u8>#AU~iWtSD6|VuV&YM=#_v-HDjZ4mS|L2%K2K}Mhz zVb)f#Q>%4Du>|ea6cbNYrpi<6A!rSmbeh7+xGZ{-TPG);DG9qg=>9!44ScDdh49-_ z;|KUp*RQ-So$jyV%Ss5FnJa^|LYAl%8niBhd%(W!x$Rpq@pcp6(XF^fHFRF2KQP>$ zo@`Qi&QlkFxp%0@2)7RlN4+NzCWo{?_x}5$E?kh!!UM3Vg9R+=xPLWty|S}5Gt_qg z+-v~8k*0?Bf0^Q+IZS56Ny~Q$pap&c2NUt&f7P9P+zEz*>bOO!5J8(uhIJ#%lgMNl z3;y^@Yht z_Dko1D=J@nc@`zIXz6dWsr`Kdt!m8`gGlx59A(t5ZjDVmrsjl#0wT@It~$j=uGRM! z@XJK@Q})NA_sQpEZkNduP-h{cP|l+Qqwr{g--LeHY2&||4dJFD34ZCj7@+4ZH4}La zjfr1gHXr8j#ppOa+gkiuHYf$a+VGA${f!~LtdO!~|X+>{b zY8=`^(0d9`z1f!nNzD`;4&65cNlg)@h5m5oOj&gG%mslXlc+jou#n#`d_l6}hwB+CG5k*Sr36Yrz zP2B)Pq#G?*Iwb)FJiXU@lTvTrdR&WRpV8sUz(Sx3C%f;BHSLY@I$!TqSg!%IetroG zD$gu&K<>-imH@Bh&}f!zwO-`w8Dt>MMZ>8V@{X1g?!2BS0S;GtXTW(%@{L=6uC*fB znj>TvA9Cj80~Hn`A5GSVpyqA$*6rlEa`u=Z!{-DRtCo0{jnK|3KxpDEi3&^DwWNg4 z%|~wf=EtEq^ku$fbX{@*EYr&TP@j@?OyLdVKVk*&H23K=xzmgV8p0Y|jK+@cNaPE1 zovLSR73MssgV04G7S-h7L}ID!!8|-X7U6-7?t~caWg)yk6*s=m)9us~kZ7pC6I1+@ zd&wXWPx{8Z>47wN=yJJ;BgQ&`z)H7hxm}Jq_9GiAq)9R- z7(@1=H+oqdJ(YFEq(LiJW=s}h(Yx~}5%_cQ&3xV0VUT%{sXE!% zVMqItDE@pLL%E2I2<48s8InBVbnt|shpL|$wrvbdWe!LJMr$c+e86OWy77OJ6k_2&3KMqL9=QFd2QUVwwR8X*sgj}5OpiFWK zkiv)DX__mAlH9kRszqfgqLLvBrDbP&mL;Amd=_UXSF4&!?$+*0ZswW?9oH!-BQgjS z*IQf1yzUikvx`UPXLZi2UvHaGMOee-cPA0C5fni_Q zcj2Hhbit;RZ5t^!?2;o_*D4W$VcsfIc+m?Z?b!Uv2;-s&XYSCUiczc2-b0I0g-hNj z@xi1}g6j<*=Dr7UMa-%w&YN`cBbWT>BQ~p;QyS!^#eQ>q9dy!?Nrh+?bfo*_kEe;nyR%9=3OTAD90?RT8#Bk}X#Pkr(TqBF2&!V=` z^iWLr%Yk96POnG@bEb?cv#Uk)5}bP0=~;%g>Sm{t#hoNp#yeFj7UxuD?en)EXw2%= zTS`>YY)#O023TqIXj@8o2KAM29NQM4QH=;sYP$pcqtRoxg?ZK@CWy{=P7(uI7%TOp; zP-^!0wmMVv-f2E>6tEj7ZTG#-KaZMuUUgl1|nl&p%3Dc8tZ4 zW{0iAY38oin5YwiQlKRrH8RP-h95fX$>v!l2*6R~)3vTQ7V(gjstAxGVc>U<8Jwb) zPTqZIfoIV>X`vA2EuAW0Ghj||3;hwn0w`nHnL~5Xr-xuSDNmuyhoZWBBa|hf3)-7$ z6nhe93c?Vv(WT4=mKowy$9Fu8Y)h5yEW6z&zzB7;Yf(a|ei#jb>!ayFWo?MkgWxQK z47{-ws_k4#8xv#$x229MEUK#x*X1k=2QLLnaWhYREFj!ta9&)3I+w+wuB-hQ0SFLZ zlvuP9c*O0k+Bm_8bPyfY2o>Ts&0yRSIg4c@Rv71IVHGS{L3?%!54(HvY;tru5FCHC z9_ER%i7@?-Tq&gCLBVg_3g3?9Gu6P$T^70*)YqUQTN$IHtc4g5UG7WN_J&c!4-lZ& z0a=#~p%2D>Wvx?z(9bP0Z<&FgpEnI^CYsg{+)}t}Teb>kj&)7NNmPz4Zv@MJA2cA4 zE{uQ3IbdMxWrxK|%90Rdmx)yBJ3FI$YLuF4DF~35POQtBilKK{44PuvYIHjt?~mW& zzNwc$LazTnX6dO-hE|>Wu0KO)5xDdvCq>WTfkeI85j!LDvSNHy0&TTnCpr_Y@_=eYt;}dhqY5=4^QRl&pzt9Bed!EmviR=h>B6ynC7MGc`x^9c*)$$|imA)E z9KmcfaDlPY6j0i|;UW8=8oO5$aRyZaYTM*qBd?3;u=u(KdjqYJ_fLd`tRoym(-gX) zqoT2Ua$jR%Ibg0>jte$VWiyOhLaYcnGe^pQ(V0O%I}YnENL$+J%d>ulP(v~JZtnH_wYk$}A_OsQn5BbzOkG2(!baa2N({4d%BrLdzn_qpUhmGmod2kf3s)xrh|=VU=smdZ ze#hs3hAI5A(;4e45x>FbZjXU=hACbM{;p^HFvP31DFz6_lHCVuZC63Xv9`wzN@Y6rcuoPF<~3V<@&m2~m3D5&4GW7GA+XXs{sPo!wDK z85d-&4Og)(j6Q8x3f?Ooxm7VJf?Nw>3_s3fV9y_1xSDfCy31yBhkr2LI_&)xUpcLxXfuNl6z9z^w)MF}E8U)#3YWS4&8 z{-CVR?>0{F?ccm>oP#mMTY-&w90y~vwccFmV3Wd60@~aufc|xzwLI_AA^-goYhcMf z>+D@$bjnFLRX|X?6oMyaW_}(z!Ys&@5~HmlWUY|}!wJnBP8YPsWvf1%(iPjQZ2#s7 zd=-ANqy%pCwL5&H8Tzs{Ux(<1et1ny> z?C%$W*FgAI%!nl0a{QuH&7L*cr$DOVP-67{8fQkKPfPD$L+Lv zSnj#tSMG<%-tcmKzH8dSPFO)VC^+Dw0|si;bY^#=`Ilum3dEF5!JrA9J z^7-aQuXu7vwaQBlnT>)~G|scmodeOzMFBpiJ_`6WePZh+=vMX276uFz4Vd%}>sndc z95j(>Uq_*mC-r*$6iUb)5mCYRy8>n-Y?K==}9iFFRN zB_u(i5p)JpS@Is*ArpnM&nOOwsI6t6IAmTNaVm+)*gWI?2fN{+=&1n$oGYcUGS!0y znn-1azfTgI zyHQk7RQGW=l@WF&jO?B1KXJa9;4BdKcfcpq35}=O+x=GE;TGw}Ub3M+AbPW8_LG;zZ%{IenPEAQ0yCE`_ z5medk+}GQkcA+x*kGZgwAC&01r6-zspCxwld`4~iEZGot%8<4p%sS7d>FR_YB` z1Ifjyuvj`fc|U|FGJ>_SBP*e_IMD*V%9fftjgs&{b6*4#VT3Vun6n`CvL$#d*2ygL z)7eoDSMZ1NGifW#;&EW?%%%0BG5R6&cx8T(iz?c$ah{_eCRo%Dp%dN0c9w$xeo))f z!{R2?4ug`a98BH;1&H}cNC!iP7dTNKFKcpxcOl6#wP-SCOy% z!JYwOsHXEGr4S3cKrNjJ=%MF4T z@!bVaWe=0&6`nIQ;)FZc{l;u(ho}|4c%t0S8wEmM$g~?uCNTxxtk^R4o;IIHXg4Nb zZhIyY?230y#03^WP!{XWxKemhpfBjbwIDOpx8d|`8Pt~dI`s(SzLBSax8yVhRmu9{ zw$*00x8`h$)GaBWP=7&dA{3Isa5b890UcZ}9{lKpxjTOUjiBd@0mQR5q$sBg0u@Iy zwll8RkI|Pv!)|-}!4Q;*3w)M>CtQ|YfuY*dE7B89}m%)-8C#3~yUl6@M z@$xCS^_0V!62E%u6hMI}Baijc^H8CqqH=??%n$8DrN(@_lxx_H?j+3I+s>0uS4W-> zq0;-tBt+ZUCJDUZPCC#K`72}xS)J822;Tq5LaYD!CkRo6su~3oN zg&ag$fC3ZxSR5uvsAWN7eFh2^)f87O^;9TTDscs|OpfUC5ghp1K49VjDrt>4fKO=L zLxxhlumLD^ZNtMYZExK9PV1gvZsMjXa&<%d^2M4I|F-IW|5xsB0rGy*D60s$dYsg6 zMdyH$$qnp@ADG-=TiGN!GTMc$NnfrNngX>@GClAFT;EKG&5U1Bb*)IV83-ppR>OmP z;mE%>wS^m>hiH7_YYVSpTmR5U_95QXcNL(22X&|AmEtABFNSh^r+yF3YBOQc4!O80 zW_5fFeqSWTBALo%V#({BIC-%Lq^vp1z-V;gLfX5Rua>+TgW*Re+49!T|9sLVQu&ivPtDwn<# zB=%%^7~>Vd1WyRru7m;?SybRpuTdTkp!CqN?qy2_^y(`WSe9uYa9qE|o zcGg`Ff;qg;-$@F&9QY~YAiHAU+kZCb9ucTo{Gb6k#xmH@V2*O=2$V9hv3N!FG!${7 zTp-rnDN>xcgi;~=_Mxb*sFFSwD6?;CdR1Cbi8F3{DehvaW-t1+1l`nx@J2Uuss#I} z7YEQopO?lmS-vrY<18fFZQj;RUYHV1%R8M@0Tkd>SU5a}8CH-r{t1(N7NT#$sq)^w zmVCLx`_@z>k8uq?b|oJ{kgpSC_o3O$%4V2RH#rTN1lnS2uTuJCihJod=< zbK*bD&;BL?vnWrN{SD(*)sBR6Em-F63?LK}2oSl&aN^HYHdZan2q(BF z)D7uS5-tMDl2IECM|7gx%2> zc};Ho`i;kR%Dy)GUpF~6W1Ki*Wd%6#FMi5xBe)PX;SaussO4z3-v?U!u2?q%8AwgJaANO0!?)r6)*$^idCj}7^=gi;C5G{41QB@Q*c8MR zn@7|~dhs0<3%J0Tf=dI8%-XKKYj#sRI^D}q0b6V;M(o(HwO9@8wBzAG+cAYdGz_#F+444xshfBlAac=NZ;*fOTY9TtZ05z^pR5AEUigsEZVK|3P%EN69l9T#rt ztMj^w%zcjN9ADJ>WP_UYuZX&jZR@ji&u>=*IXGQau?w2zE-No+$nTgu_GgZsa&$M# zZYvI)dh>Bd=#L)dh+N*aEL{^5`qD^U_KpbEKUE%6$K7WS@R1G!nIcLmnv5J+Ack3a z2%04+f%{()h=i%kj`tsqCkKKoh%KE`ZGs_5p$zYHg~mcPi@d*l{hE-c6mFY*IgBX* zL6~^BD26Gh26+p)EPJ2IL;Sue$6HLwX#VB^s1h4Q+Hww|5(zlpA&M+;`=Svm=S+;v zJkHERRBWx#%q|GpK%F+Rc$V1Q(oO+`kKp_?Haa3}B9gaq1r)nI#4!25hPe^VDlLJ6 z5!=XtON&dC5`5o5js^}ccFq*%Q{E2ZcqcfHG;3~hzIV1Smr2JnUrzA}qvJS0pHByD zCj6^D|3`QKV-Mkn7l`7C+;{KiDa87OI_;q(s#HJaMS4T(P0Ely98^+ZR5*wy_!G56 z3+J?z-u?HtV2|%ah$ea4I0FGlLpsR$NLzoiQt?zYqY;)WuKzk zX&zj^7gwX#;?y|AsCmpgmqu;LL}sQV%xExYp;~&@;1uwbc*ZH@^yP4QVY8iniz)@m z`NT(X?G-$aA(h8Yb5{k|ODM1t4fD*k+EhMk&aPsfdgTiZ`crm;aE@iffH$0xl)xzk zP;cf1mo~EIT*L1pFr>c)6bMypnY#=C1chd$F z%xSI__^fdrclZD!Ywh;nrQKS)Gv4n`Ga?-lrHjRFhZVaU8$}1Fr&DC&0+5EHg+pD* z&pKO@6Taone5>3KFT+$B7Il<7`8grSj`|R;58(C6d48Z%;pV6 zj;G<~o22D(mZ@K0+17Z31aLV+Ib~<-!z5SSzQzTB0}{rh&2duz%ly zaG}^#dJ9k$#eoF^;`w!0|1(z1zu5!@L z@tL*vL%QefR>d1{NE>i|3C`dpl0@?KUi{TkiN6mGNRUDey67%i8-Y4@?C?4BK3S) zfr7HErec}l`_~GWBpfXk`;cTxqhQ@?lDsP1%O4g~b66sRNmD#`1VWS0+t5BO78E2& zICkZ`iPxc*m11BQxRt7dE1Ik0(P7<}s}!ezaiQ@+*Mlw==xGFmqi$4i>jy2&9mUsA z*j>?_P%uwoz{pMh_#KrelvNTR1Opo6mb0SRdK0M!Onk`Fp z=ys4!Z0vaFCTK~5b`EdIQS#2A*Qxqp3-@B7aA|=0WBE1wz(P~(nkuXl$tH%v&|#9R zeLm0olbua(?JgZv2G?R6yz3gVQMwP#Y?)mq-k6@gOK|{k8!R#T#dqf~3JgcyYV_!1 zp9v$!CMgIg^wGUhsG`m7QN0#1VZJ^W5m6TdZ-x>ULth(W{8-URkIild7h~&lW-x6# zkamVW=Fm$^>gUSsTS%jcc8$w;GJ85Mm6ERkFl=0h8YO#a*X7vZdhL(NZ^$yXf-l)ch{DbY`+M4q6{fN>WVq;uQz|Q)ZP2YT2wh+vZ+$wOqNyK`2r(RlH>uebaK2avbVcg z{@;W^5h;qUc)ExRI?u}9`&={vL4h#9%kfVg8oSDKpXrtx)=Dkv95RS`c6_Ya%CPQC zTS5MSS`B|Ys|SBOr^kwpi#7i^XAT5X7Z2tT*1m^K5{>uKVM+tlmjz}bI(8LGIh*ms zsMRF~)Z zhf64Z9SiFjJH1?Ww#3?_{~Ehqr&!d1@{PteLg{| z77qv)uM`QvK+3m{7!R~TPcnJ&7Vd@$JSpSW?&Q|)()t24_zF+GMe1DJe9u=JL((pz z4@A;xoiw;3?LGCEciG5$Z{N|`rA>OUUZZTmgJoTfSjMXtou~^{@2Gdt3#}aVPkp&$ z;<#mYqWv~IR4PWq6R@TK>G(xHnxscc2G>Kz zna3IzOUIMP6YyJPT55w=uM}j6{e%$j8MAVCg2K`y>GEQHGW+Q1C~P&o&OS8KcHC@N z=WVu!LBgQ8k675M3KmokUnj4A2`EwxIHITBFM{dT(;41?F>3Zo@~au76RvQJs*KoS z&L@-VLeWtdWPLNQgrr$_l(4LdjNv_DW?{dFzQj%)S2oXPWW_8#V2>5y%Hx-?Of->d(WT$~az&0U;asF!k=o??sn0dY zP~Sai?n7|WSX9ty2<<9(n`Ys=AX@RNRjzxYcMjsFZ?*klo(9`Xy0pz%+dO3^(+0== zbA1P2Ogj6>A;Xc#xtnp7B~iZ?OK=h>aDmEqi5QqA&V7UYaQwbvoMw%fid2k?v=$&W zU9LC1N7!8#Q-WfmkA|V1){F$W1nSN@5^O7TnxTnpys|30Y$U>gDEnU0u7`$EzCUgxKF=SKK zc(M!e{m6AkXWHEu3NF(2SA@7<23J^(Jg^;%h5KGp(c)gN$N7PNs6sUOs-M(%hY-0? z|B;LE-P5z_yS}s1J{j;76a!AP{;PNwe>?_)&boGne>lMWCEi7uGGMK$fW+GXaJzP@ zLeKG9htxxEMuTA+D1<>_B7;wzX8q{haH4_P(6W0v8!dhg{dEgbRwR;)&j-;kT{BT* zGF5alYiw*J#lFCK_w@1W)i+2V*HX%u9(Z`}>My23@3YcyD46nzA%%NuA6 z$lONl=$>A5cNf{XGkwN zKJmz+b(iE7?Za|mYx@aj!F+AgUP^!_!U^+IR_LR7^Wd6_?3V!V5M8Vknv-+Y*0=VB z3RDkWb~q(Xg>VWlaH=;l$s&6kowW8sh+In-9=`2&@$jt{s5oin8d<4-abf1&S1-yY z4Xll-Q5$CpVd1vYSL)4;BBv`+o2Uw73krO-6KUK|T~D`hx1+))!2)*!D_zF}$3nUF z@+Bco^6H5c!eU*o;#dsv6N7QlCIKiGMYk#s&zjCk;|@N&6P?8zHiT>2<9Z~6OW+dy z1;en?LH?maVakQZ=w<717oPTVD5{odQy#~CajBt5Rs?}0C1?oiNK3OWSt#y7$R%ayCbDQ7oAH<-&`Wp2>)fn@T+)hdW? zvE+)d2_$+7ALBDazH-i|WSMsT%KI8p;uxa*y6SzABt(4(r{>`#y^}+@uNBzb65Cdz zz%0=Yndh4^T4e5FymIOP2e;OLU$IhxNx)$Py!MR08zX)l`2XVJ z^~^~xQbAU_TL8%u;DbF~QB3)XgcU}tLY7)W0SyEOdbQ!8*+P<|dL`kJ9q|#!JE2iF z2P|F)Gcm)p=B!P3ckkv1x081a-vK`zC7nzWwj4fZ4YttY{*0j83 z`PT;>OuT#X3hZf2Y|#0OO*KdOdF<`w8GXTMqD!jidZDjP_B-7vFClC@%wCpeyiVBR z-jHXmyT>GNns9^GS}Ruz7(N+Gs|YythV2@4+Vsb`i=eGpP)ZXpdFz-;FN8{;cCt`v zc+QT8%U1bDX*pG@Uj@NNt;c*Ds=wF$3*_JHS9k(r_YmL_=>d2n_*Y@vV3A``LM;>6=Nn|z zre+N07A%UrbNF+fy2fh#6N|1jjqmfH-t*^9**oh)QB;1kEqHS}+ypo@-}EWd{rd6h z%$flx&-P89`bb8uk&YOaJsvhT3Wg!wx(1MRS$J~<4L!=WM+XbG8e#Rw9dqM9!@ z+#_6QHns5>W898fQL8nHugDl&2EBr0Q&x_YDt@cktT5=HQP5iCd`p4gHB$_A!2NZi zfd&6%=r+PKcF zcD>}A2!}ZrljP{g7lSURAIQNm87b5}hmrWXJFAsVr&+soJYUbIW<3f`8Rn&64AN|n zSdEEN^c|s2!F}}qI+8?SVwkqY15P7FqL;E!ycf$J%{gv!1HO@T*!_;91hNgu4&Yv_ zLVv=T^B%)U-s|Imj%(pjRp^!<7P~u*P@4{oI(<@|8!tD9aMICh#2eS4$eGG3v%|!D z3A9hb5HtqpqehMMa#N!Ts_sj&kZ`-;{^vSa$2KvUzQTu(^Rn+6Ub!urJ5;1XyfGF+ zPk&ug5Jz{R?Xt?FQ>0Rd;JiS)`RxM2aDHoU{Tt$KM~`fJ4=u@MHp~=H1h{{0>(l^Z z)`#oM8@Fg94%5>@ozPzIKn4u?Z9^Kdq zb>z6+;*Il{_Z$%8;%)VaMOgBcyqA`}UcP78_o$yfdftM9!cK-_c98twa zHqXs$;lCQr75r$Jq!!*D1TBMN$&{KKiwJy76aO*8aAD0)##01^2jiQZ=S6PyL9z`dPCX(PcIvRFR%Q%oq&J*9@-?yiy6KV#!b`ri50d zRQ+HHJA+XuO_7QOd(_ieE+CfY<*sY!`#?Q6B zy5398or>DtM&>Pt;fqQzX%#y7TO~D@!Q8N`jsznSaHVV@QII_GY`mUV{igy`NP(A}J%X}?5&&wsZWPQiBz zc?)>svRp9m2Q!__B)myK^VmyYTJ!dL1hE0?7sFX%XPzI+HQT~=qMN2?g-TJ)yv&^o zP-?RkV&wTaPG0K7dqAKQ@lbwGb9HunYmN}@dk%i*Y6CgtG26<8lS=_zY90qI7DfB}ire6El{#mc z;nEwoLQ&~Dc`v!lIOL$!8Cqc^q1h(sj5ncZeba?%Dy69??%`Jp?ZZZ>TN*R4Ep}sI zw{?js2HG>`K26%gY%2}$aMg~J`MfG&2;w$5vc%2GLM?tmm92FD7>Lt&#@luqnUb7n zMTH2f?x*aH%6_dW3+wKB{N5x-bY8Q7_w;nlC+dFhl!&BN&Ff1*S?}lyRicHzJ65=f zO#y?AA+n$PMh7kEH#NpfC>Lnwc{{Z)Vlk`VfVXgIAuJw^YU76nsxsw4)XG69SOl3M zXsToc7Sjz)_Km2o@OS4l8Pk|X#8Bcodlqp{eX(rt5%t!Csf6D|iO(IUR*jxn8u2KO zQ2ElC42(){N+?>x3X&7oo+mgooiaS zIvzb95Qu_Akw-&VCsEKR{6ZwE1sQ^Dq&q8pmb6%CggTRbctH9@U2Nq8LLNW}pd=Wl z)2ye3h=#^9CL^`Tj0Z|w$>T;#V)NRoh|No=l@&1z-e+UkRuibQ&9wG2&Ky}hRs@pk z&{u^6Votln-4}O_cY$AM;?jnlE9nfz_he1h*m+5^E44Gg@Gffy)%TbyGEpeMe`{2) z5*7nD8Bstj#>{{T1EU_vd5^`35WIP5gh(GPDeFoGC)=FJWY{fZomyNDEx}y7*y@Q+ zE!*X`kfss8HWb@hx{mGnzB$zNE*{{roGJ) z74vfpFx-*xmyL|>aP{5|H_RRB2nK&RUyU)Q5Nyxk0h)N4isUHfG~i4EXs`76b>R{p zaTE$B^0yjYa0Dz4T!#L-BNMU4i_Hbr=KTo*#^mn;q#H-@)7~#Sw!WzJVyR2QRWHPVe)!r_j!+mZ)-gCwne;e2sekE2s#u zBB@|AlL)>RmIfI%!jyQ9yJ=36Y=kjt3Ss$!7>SBfYIXZ3iz10mkjP@voHl-|)^tIh z#IY2OH0SyP1y$O`Gex+}Lv)?dR?e$O)x$1IK~cET zQ>(H{FhP9X=x~9~8;=t1n2V;CyWI65+}B__iGq-W+!Er~oYCPvy%Po`*xl&OqhjBD zAY4Ky{Ib^XLF8{~54CQ6@9!S7KA#DyA;cCC4>(OU)A_lDLI*%?VKI zVF7!a^&(NWCGBf}7T177CBQTaEqJ;4=I>8sWt6@0_tP^XfDa+y^Fs#!aMb<(TLYk) zx#~9>06Tw+{0|I*1`1Fvhk^oP1X%b0y#E*V9xyumxR8KO1iyck6;%?Xmy{C&9Mu1N zvW7l2DgnShC<8udfX|;-p6~a!#s5ntD<~%^CaS3PLRRdr2;|R*0khqY3km3(U>e}N zwVm0c5a{ypIj35H*oP5cau-UI%12Jj*Mk^K9u z))ybJ{`#KRAIyIO{HY7|XQcJ#IqF>voJ9l7^EQBze{cRjuUcPVz+e9f@cF6^u)cF~ z6?Akk0mQyF)&CjT`8ng>v6_7`fMyBsA^DRIaIf`s2IS#4jFNwr;g6Th=XhX6ZYx@V zyea@v)Bg=m7ho&?4W782u7QQ2G9diCgteuijJ377qs{N3@iw)WdI2E!fL{82L-^0D z))&xce+LbS`D@{54>(sQW@=$5sIPBmZ!fEBrEC1B(!%q+kHG7QeUG4h2e9Y;J?{hn zQPbb#UG)!X4uGk{$kf;o5I!3aO8)nGSMbC)-2qeyHX!eee`XwTul2o0`YrVH_LKmK zMOgf|jOV*DHmd+K4g{#3?<2;aSFJBS#&6MOtd0L`EsWV6g`ordOsoK9{(da#&#TtA z6CeWen_Bpr?A`B+&$(K^f(v-Wjsc?p(Vu{Td#x`v;OB2J0fzz|bS*4?kG9e&6WRl) z%y)o+>F@1i2j~~SK@+mJcK9y4VI!++Y6Y;l{uJAI-UTFP8_1>rZA1zv>UYV6Kd)L} zU(Vk`|L6juE{6J!{}(;|Icfk-UP(0oRS1Ae^Cu+WUhA7G{9DvN9*Q5>-!uLDig>QM z`zLg*ZvsF><~J4bqgwyl@bg^b@F$)FU_k#3-rt)3zbPI*uZ`#Wc|TdaRDa9z&m+!r z*_@wnvv2-y^87IX|8@fXYyQ4(ZatU1`3Y$J_P>kZJV*JS>iZ-4{rWB&^T+jl9<$W_ zTPeSXuz8;Nxrof4$!mSne@*(7j@&*7g7gZzZ2H25WNe}Vn+a>?{-Z~R_w z&m}m1qM{o93)FuQ46!nEyV!!gHSIhx~u?BuD(h^XuU8ua5jb=X`!t`zNPZ^#A7k{c!c% zr}ii2dCvdF{Edh0^GrW?VEjq2llLzO{yIwiz68(R$9@tF6#hc+=PdDW48PAy^4#6y zCy{UIFGRm|*MEB4o^PT5L=LX_1^L&`^au3sH`JdO;`!F)Pb#&ybLsOPyPvR& zHU9+rW5D=_{k!J{cy8DK$wbij3)A!WhriU_|0vLNTk}tv^QK>D{sQ}>K!4o+VeETu zbo_}g(fTj&|GNqDd3`;%qx>XV1sDeYcrynq2!C%?c_j@FcnkclF2e+b1PDE++xh+1 F{{tUq7iIte literal 0 HcmV?d00001 diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..6623300b --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/android/gradlew b/android/gradlew new file mode 100755 index 00000000..2fe81a7d --- /dev/null +++ b/android/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# 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 +# +# https://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. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat new file mode 100644 index 00000000..62bd9b9c --- /dev/null +++ b/android/gradlew.bat @@ -0,0 +1,103 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 00000000..bf1e0259 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,9 @@ +rootProject.name = 'tooot' + +apply from: '../node_modules/react-native-unimodules/gradle.groovy' +includeUnimodulesProjects() + +apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); +applyNativeModulesSettingsGradle(settings) + +include ':app' diff --git a/index.js b/index.js new file mode 100644 index 00000000..9d5d25a6 --- /dev/null +++ b/index.js @@ -0,0 +1,8 @@ +import { registerRootComponent } from 'expo'; + +import App from './App'; + +// registerRootComponent calls AppRegistry.registerComponent('main', () => App); +// It also ensures that whether you load the app in the Expo client or in a native build, +// the environment is set up appropriately +registerRootComponent(App); diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 00000000..6e73eeab --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,24 @@ +require_relative '../node_modules/react-native/scripts/react_native_pods' +require_relative '../node_modules/react-native-unimodules/cocoapods.rb' +require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' + +platform :ios, '11.0' + +target 'tooot' do + use_unimodules! + config = use_native_modules! + + use_react_native!(:path => config["reactNativePath"]) + + # Uncomment the code below to enable Flipper. + # + # You should not install Flipper in CI environments when creating release + # builds, this will lead to significantly slower build times. + # + # Note that if you have use_frameworks! enabled, Flipper will not work. + # + # use_flipper! + # post_install do |installer| + # flipper_post_install(installer) + # end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 00000000..0933bddc --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,822 @@ +PODS: + - boost-for-react-native (1.63.0) + - DoubleConversion (1.1.6) + - EXApplication (2.4.1): + - UMCore + - EXAV (8.7.0): + - UMCore + - UMFileSystemInterface + - UMPermissionsInterface + - EXBlur (8.2.2): + - UMCore + - EXConstants (10.0.1): + - UMConstantsInterface + - UMCore + - EXCrypto (8.4.0): + - UMCore + - EXDevice (2.4.0): + - UMCore + - EXErrorRecovery (1.4.0): + - UMCore + - EXFileSystem (9.3.0): + - UMCore + - UMFileSystemInterface + - EXFirebaseAnalytics (2.6.0): + - EXFirebaseCore + - Firebase/Core (= 6.14.0) + - UMCore + - EXFirebaseCore (1.3.0): + - Firebase/Core (= 6.14.0) + - UMCore + - EXFont (8.4.0): + - UMCore + - UMFontInterface + - EXGL (9.2.0): + - EXGL_CPP + - UMCameraInterface + - UMCore + - UMFileSystemInterface + - EXGL_CPP (9.2.0): + - React-jsi + - EXHaptics (8.4.0): + - UMCore + - EXImageLoader (1.3.0): + - React-Core + - UMCore + - UMImageLoaderInterface + - EXImagePicker (9.2.1): + - UMCore + - UMFileSystemInterface + - UMPermissionsInterface + - EXKeepAwake (8.4.0): + - UMCore + - EXLinearGradient (8.4.0): + - UMCore + - EXLocalization (9.1.0): + - UMCore + - EXLocation (10.0.0): + - UMCore + - UMPermissionsInterface + - UMTaskManagerInterface + - EXPermissions (10.0.0): + - UMCore + - UMPermissionsInterface + - EXRandom (10.0.0): + - React-Core + - EXSecureStore (9.3.0): + - UMCore + - EXSplashScreen (0.8.1): + - React-Core + - UMCore + - EXSQLite (8.5.0): + - UMCore + - UMFileSystemInterface + - EXStoreReview (2.3.0): + - UMCore + - EXUpdates (0.4.1): + - React-Core + - UMCore + - EXVideoThumbnails (4.4.0): + - UMCore + - UMFileSystemInterface + - EXWebBrowser (8.6.0): + - UMCore + - FBLazyVector (0.63.4) + - FBReactNativeSpec (0.63.4): + - Folly (= 2020.01.13.00) + - RCTRequired (= 0.63.4) + - RCTTypeSafety (= 0.63.4) + - React-Core (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - Firebase/Core (6.14.0): + - Firebase/CoreOnly + - FirebaseAnalytics (= 6.1.7) + - Firebase/CoreOnly (6.14.0): + - FirebaseCore (= 6.5.0) + - FirebaseAnalytics (6.1.7): + - FirebaseCore (~> 6.5) + - FirebaseInstanceID (~> 4.2) + - GoogleAppMeasurement (= 6.1.7) + - GoogleUtilities/AppDelegateSwizzler (~> 6.0) + - GoogleUtilities/MethodSwizzler (~> 6.0) + - GoogleUtilities/Network (~> 6.0) + - "GoogleUtilities/NSData+zlib (~> 6.0)" + - nanopb (= 0.3.9011) + - FirebaseCore (6.5.0): + - FirebaseCoreDiagnostics (~> 1.0) + - FirebaseCoreDiagnosticsInterop (~> 1.0) + - GoogleUtilities/Environment (~> 6.4) + - GoogleUtilities/Logger (~> 6.4) + - FirebaseCoreDiagnostics (1.2.4): + - FirebaseCoreDiagnosticsInterop (~> 1.2) + - GoogleDataTransportCCTSupport (~> 3.0) + - GoogleUtilities/Environment (~> 6.5) + - GoogleUtilities/Logger (~> 6.5) + - nanopb (~> 0.3.901) + - FirebaseCoreDiagnosticsInterop (1.2.0) + - FirebaseInstanceID (4.2.8): + - FirebaseCore (~> 6.5) + - GoogleUtilities/Environment (~> 6.4) + - GoogleUtilities/UserDefaults (~> 6.4) + - Folly (2020.01.13.00): + - boost-for-react-native + - DoubleConversion + - Folly/Default (= 2020.01.13.00) + - glog + - Folly/Default (2020.01.13.00): + - boost-for-react-native + - DoubleConversion + - glog + - glog (0.3.5) + - GoogleAppMeasurement (6.1.7): + - GoogleUtilities/AppDelegateSwizzler (~> 6.0) + - GoogleUtilities/MethodSwizzler (~> 6.0) + - GoogleUtilities/Network (~> 6.0) + - "GoogleUtilities/NSData+zlib (~> 6.0)" + - nanopb (= 0.3.9011) + - GoogleDataTransport (6.2.1) + - GoogleDataTransportCCTSupport (3.0.0): + - GoogleDataTransport (~> 6.0) + - nanopb (~> 0.3.901) + - GoogleUtilities/AppDelegateSwizzler (6.7.2): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Environment (6.7.2): + - PromisesObjC (~> 1.2) + - GoogleUtilities/Logger (6.7.2): + - GoogleUtilities/Environment + - GoogleUtilities/MethodSwizzler (6.7.2): + - GoogleUtilities/Logger + - GoogleUtilities/Network (6.7.2): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (6.7.2)" + - GoogleUtilities/Reachability (6.7.2): + - GoogleUtilities/Logger + - GoogleUtilities/UserDefaults (6.7.2): + - GoogleUtilities/Logger + - 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.12) + - RCTRequired (0.63.4) + - RCTTypeSafety (0.63.4): + - FBLazyVector (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTRequired (= 0.63.4) + - React-Core (= 0.63.4) + - React (0.63.4): + - React-Core (= 0.63.4) + - React-Core/DevSupport (= 0.63.4) + - React-Core/RCTWebSocket (= 0.63.4) + - React-RCTActionSheet (= 0.63.4) + - React-RCTAnimation (= 0.63.4) + - React-RCTBlob (= 0.63.4) + - React-RCTImage (= 0.63.4) + - React-RCTLinking (= 0.63.4) + - React-RCTNetwork (= 0.63.4) + - React-RCTSettings (= 0.63.4) + - React-RCTText (= 0.63.4) + - React-RCTVibration (= 0.63.4) + - React-callinvoker (0.63.4) + - React-Core (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/CoreModulesHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/Default (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/DevSupport (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default (= 0.63.4) + - React-Core/RCTWebSocket (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - React-jsinspector (= 0.63.4) + - Yoga + - React-Core/RCTActionSheetHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTAnimationHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTBlobHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTImageHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTLinkingHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTNetworkHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTSettingsHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTTextHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTVibrationHeaders (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-Core/RCTWebSocket (0.63.4): + - Folly (= 2020.01.13.00) + - glog + - React-Core/Default (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsiexecutor (= 0.63.4) + - Yoga + - React-CoreModules (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/CoreModulesHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - React-RCTImage (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-cxxreact (0.63.4): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-callinvoker (= 0.63.4) + - React-jsinspector (= 0.63.4) + - React-jsi (0.63.4): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-jsi/Default (= 0.63.4) + - React-jsi/Default (0.63.4): + - boost-for-react-native (= 1.63.0) + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-jsiexecutor (0.63.4): + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - React-jsinspector (0.63.4) + - react-native-netinfo (5.9.10): + - React-Core + - react-native-safe-area-context (3.1.9): + - React-Core + - react-native-segmented-control (2.2.1): + - React-Core + - react-native-viewpager (4.2.0): + - React-Core + - React-RCTActionSheet (0.63.4): + - React-Core/RCTActionSheetHeaders (= 0.63.4) + - React-RCTAnimation (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTAnimationHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTBlob (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - React-Core/RCTBlobHeaders (= 0.63.4) + - React-Core/RCTWebSocket (= 0.63.4) + - React-jsi (= 0.63.4) + - React-RCTNetwork (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTImage (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTImageHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - React-RCTNetwork (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTLinking (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - React-Core/RCTLinkingHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTNetwork (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTNetworkHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTSettings (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.63.4) + - React-Core/RCTSettingsHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - React-RCTText (0.63.4): + - React-Core/RCTTextHeaders (= 0.63.4) + - React-RCTVibration (0.63.4): + - FBReactNativeSpec (= 0.63.4) + - Folly (= 2020.01.13.00) + - React-Core/RCTVibrationHeaders (= 0.63.4) + - React-jsi (= 0.63.4) + - ReactCommon/turbomodule/core (= 0.63.4) + - ReactCommon/turbomodule/core (0.63.4): + - DoubleConversion + - Folly (= 2020.01.13.00) + - glog + - React-callinvoker (= 0.63.4) + - React-Core (= 0.63.4) + - React-cxxreact (= 0.63.4) + - React-jsi (= 0.63.4) + - RNCAsyncStorage (1.13.3): + - React-Core + - RNCMaskedView (0.1.10): + - React + - RNGestureHandler (1.8.0): + - React + - RNReanimated (2.0.0-rc.0): + - DoubleConversion + - FBLazyVector + - FBReactNativeSpec + - Folly + - glog + - RCTRequired + - RCTTypeSafety + - React + - React-callinvoker + - React-Core + - React-Core/DevSupport + - React-Core/RCTWebSocket + - React-CoreModules + - React-cxxreact + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-RCTActionSheet + - React-RCTAnimation + - React-RCTBlob + - React-RCTImage + - React-RCTLinking + - React-RCTNetwork + - React-RCTSettings + - React-RCTText + - React-RCTVibration + - ReactCommon/turbomodule/core + - Yoga + - RNScreens (2.15.2): + - React-Core + - RNSentry (2.1.1): + - React-Core + - Sentry (= 6.0.9) + - RNSVG (12.1.0): + - React + - Sentry (6.0.9): + - Sentry/Core (= 6.0.9) + - Sentry/Core (6.0.9) + - UMAppLoader (1.4.0) + - UMBarCodeScannerInterface (5.4.0) + - UMCameraInterface (5.4.0) + - UMConstantsInterface (5.4.0) + - UMCore (6.0.0) + - UMFaceDetectorInterface (5.4.0) + - UMFileSystemInterface (5.4.0) + - UMFontInterface (5.4.0) + - UMImageLoaderInterface (5.4.0) + - UMPermissionsInterface (5.4.0): + - UMCore + - UMReactNativeAdapter (5.7.0): + - React-Core + - UMCore + - UMFontInterface + - UMSensorsInterface (5.4.0) + - UMTaskManagerInterface (5.4.0) + - Yoga (1.14.0) + +DEPENDENCIES: + - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - EXApplication (from `../node_modules/expo-application/ios`) + - EXAV (from `../node_modules/expo-av/ios`) + - EXBlur (from `../node_modules/expo-blur/ios`) + - EXConstants (from `../node_modules/expo-constants/ios`) + - EXCrypto (from `../node_modules/expo-crypto/ios`) + - EXDevice (from `../node_modules/expo-device/ios`) + - EXErrorRecovery (from `../node_modules/expo-error-recovery/ios`) + - EXFileSystem (from `../node_modules/expo-file-system/ios`) + - EXFirebaseAnalytics (from `../node_modules/expo-firebase-analytics/ios`) + - EXFirebaseCore (from `../node_modules/expo-firebase-core/ios`) + - EXFont (from `../node_modules/expo-font/ios`) + - EXGL (from `../node_modules/expo-gl/ios`) + - EXGL_CPP (from `../node_modules/expo-gl-cpp/cpp`) + - EXHaptics (from `../node_modules/expo-haptics/ios`) + - EXImageLoader (from `../node_modules/expo-image-loader/ios`) + - EXImagePicker (from `../node_modules/expo-image-picker/ios`) + - EXKeepAwake (from `../node_modules/expo-keep-awake/ios`) + - EXLinearGradient (from `../node_modules/expo-linear-gradient/ios`) + - EXLocalization (from `../node_modules/expo-localization/ios`) + - EXLocation (from `../node_modules/expo-location/ios`) + - EXPermissions (from `../node_modules/expo-permissions/ios`) + - EXRandom (from `../node_modules/expo-random/ios`) + - EXSecureStore (from `../node_modules/expo-secure-store/ios`) + - EXSplashScreen (from `../node_modules/expo-splash-screen/ios`) + - EXSQLite (from `../node_modules/expo-sqlite/ios`) + - EXStoreReview (from `../node_modules/expo-store-review/ios`) + - EXUpdates (from `../node_modules/expo-updates/ios`) + - EXVideoThumbnails (from `../node_modules/expo-video-thumbnails/ios`) + - EXWebBrowser (from `../node_modules/expo-web-browser/ios`) + - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) + - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) + - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) + - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) + - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) + - React (from `../node_modules/react-native/`) + - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - React-Core (from `../node_modules/react-native/`) + - React-Core/DevSupport (from `../node_modules/react-native/`) + - React-Core/RCTWebSocket (from `../node_modules/react-native/`) + - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) + - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) + - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) + - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" + - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) + - "react-native-segmented-control (from `../node_modules/@react-native-community/segmented-control`)" + - "react-native-viewpager (from `../node_modules/@react-native-community/viewpager`)" + - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) + - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) + - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) + - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) + - React-RCTText (from `../node_modules/react-native/Libraries/Text`) + - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" + - "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)" + - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) + - RNReanimated (from `../node_modules/react-native-reanimated`) + - RNScreens (from `../node_modules/react-native-screens`) + - "RNSentry (from `../node_modules/@sentry/react-native`)" + - RNSVG (from `../node_modules/react-native-svg`) + - UMAppLoader (from `../node_modules/unimodules-app-loader/ios`) + - UMBarCodeScannerInterface (from `../node_modules/unimodules-barcode-scanner-interface/ios`) + - UMCameraInterface (from `../node_modules/unimodules-camera-interface/ios`) + - UMConstantsInterface (from `../node_modules/unimodules-constants-interface/ios`) + - "UMCore (from `../node_modules/@unimodules/core/ios`)" + - UMFaceDetectorInterface (from `../node_modules/unimodules-face-detector-interface/ios`) + - UMFileSystemInterface (from `../node_modules/unimodules-file-system-interface/ios`) + - UMFontInterface (from `../node_modules/unimodules-font-interface/ios`) + - UMImageLoaderInterface (from `../node_modules/unimodules-image-loader-interface/ios`) + - UMPermissionsInterface (from `../node_modules/unimodules-permissions-interface/ios`) + - "UMReactNativeAdapter (from `../node_modules/@unimodules/react-native-adapter/ios`)" + - UMSensorsInterface (from `../node_modules/unimodules-sensors-interface/ios`) + - UMTaskManagerInterface (from `../node_modules/unimodules-task-manager-interface/ios`) + - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) + +SPEC REPOS: + trunk: + - boost-for-react-native + - Firebase + - FirebaseAnalytics + - FirebaseCore + - FirebaseCoreDiagnostics + - FirebaseCoreDiagnosticsInterop + - FirebaseInstanceID + - GoogleAppMeasurement + - GoogleDataTransport + - GoogleDataTransportCCTSupport + - GoogleUtilities + - nanopb + - PromisesObjC + - Sentry + +EXTERNAL SOURCES: + DoubleConversion: + :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + EXApplication: + :path: "../node_modules/expo-application/ios" + EXAV: + :path: "../node_modules/expo-av/ios" + EXBlur: + :path: "../node_modules/expo-blur/ios" + EXConstants: + :path: "../node_modules/expo-constants/ios" + EXCrypto: + :path: "../node_modules/expo-crypto/ios" + EXDevice: + :path: "../node_modules/expo-device/ios" + EXErrorRecovery: + :path: "../node_modules/expo-error-recovery/ios" + EXFileSystem: + :path: "../node_modules/expo-file-system/ios" + EXFirebaseAnalytics: + :path: "../node_modules/expo-firebase-analytics/ios" + EXFirebaseCore: + :path: "../node_modules/expo-firebase-core/ios" + EXFont: + :path: "../node_modules/expo-font/ios" + EXGL: + :path: "../node_modules/expo-gl/ios" + EXGL_CPP: + :path: "../node_modules/expo-gl-cpp/cpp" + EXHaptics: + :path: "../node_modules/expo-haptics/ios" + EXImageLoader: + :path: "../node_modules/expo-image-loader/ios" + EXImagePicker: + :path: "../node_modules/expo-image-picker/ios" + EXKeepAwake: + :path: "../node_modules/expo-keep-awake/ios" + EXLinearGradient: + :path: "../node_modules/expo-linear-gradient/ios" + EXLocalization: + :path: "../node_modules/expo-localization/ios" + EXLocation: + :path: "../node_modules/expo-location/ios" + EXPermissions: + :path: "../node_modules/expo-permissions/ios" + EXRandom: + :path: "../node_modules/expo-random/ios" + EXSecureStore: + :path: "../node_modules/expo-secure-store/ios" + EXSplashScreen: + :path: "../node_modules/expo-splash-screen/ios" + EXSQLite: + :path: "../node_modules/expo-sqlite/ios" + EXStoreReview: + :path: "../node_modules/expo-store-review/ios" + EXUpdates: + :path: "../node_modules/expo-updates/ios" + EXVideoThumbnails: + :path: "../node_modules/expo-video-thumbnails/ios" + EXWebBrowser: + :path: "../node_modules/expo-web-browser/ios" + FBLazyVector: + :path: "../node_modules/react-native/Libraries/FBLazyVector" + FBReactNativeSpec: + :path: "../node_modules/react-native/Libraries/FBReactNativeSpec" + Folly: + :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" + glog: + :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + RCTRequired: + :path: "../node_modules/react-native/Libraries/RCTRequired" + RCTTypeSafety: + :path: "../node_modules/react-native/Libraries/TypeSafety" + React: + :path: "../node_modules/react-native/" + React-callinvoker: + :path: "../node_modules/react-native/ReactCommon/callinvoker" + React-Core: + :path: "../node_modules/react-native/" + React-CoreModules: + :path: "../node_modules/react-native/React/CoreModules" + React-cxxreact: + :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-jsi: + :path: "../node_modules/react-native/ReactCommon/jsi" + React-jsiexecutor: + :path: "../node_modules/react-native/ReactCommon/jsiexecutor" + React-jsinspector: + :path: "../node_modules/react-native/ReactCommon/jsinspector" + react-native-netinfo: + :path: "../node_modules/@react-native-community/netinfo" + react-native-safe-area-context: + :path: "../node_modules/react-native-safe-area-context" + react-native-segmented-control: + :path: "../node_modules/@react-native-community/segmented-control" + react-native-viewpager: + :path: "../node_modules/@react-native-community/viewpager" + React-RCTActionSheet: + :path: "../node_modules/react-native/Libraries/ActionSheetIOS" + React-RCTAnimation: + :path: "../node_modules/react-native/Libraries/NativeAnimation" + React-RCTBlob: + :path: "../node_modules/react-native/Libraries/Blob" + React-RCTImage: + :path: "../node_modules/react-native/Libraries/Image" + React-RCTLinking: + :path: "../node_modules/react-native/Libraries/LinkingIOS" + React-RCTNetwork: + :path: "../node_modules/react-native/Libraries/Network" + React-RCTSettings: + :path: "../node_modules/react-native/Libraries/Settings" + React-RCTText: + :path: "../node_modules/react-native/Libraries/Text" + React-RCTVibration: + :path: "../node_modules/react-native/Libraries/Vibration" + ReactCommon: + :path: "../node_modules/react-native/ReactCommon" + RNCAsyncStorage: + :path: "../node_modules/@react-native-async-storage/async-storage" + RNCMaskedView: + :path: "../node_modules/@react-native-community/masked-view" + RNGestureHandler: + :path: "../node_modules/react-native-gesture-handler" + RNReanimated: + :path: "../node_modules/react-native-reanimated" + RNScreens: + :path: "../node_modules/react-native-screens" + RNSentry: + :path: "../node_modules/@sentry/react-native" + RNSVG: + :path: "../node_modules/react-native-svg" + UMAppLoader: + :path: "../node_modules/unimodules-app-loader/ios" + UMBarCodeScannerInterface: + :path: "../node_modules/unimodules-barcode-scanner-interface/ios" + UMCameraInterface: + :path: "../node_modules/unimodules-camera-interface/ios" + UMConstantsInterface: + :path: "../node_modules/unimodules-constants-interface/ios" + UMCore: + :path: "../node_modules/@unimodules/core/ios" + UMFaceDetectorInterface: + :path: "../node_modules/unimodules-face-detector-interface/ios" + UMFileSystemInterface: + :path: "../node_modules/unimodules-file-system-interface/ios" + UMFontInterface: + :path: "../node_modules/unimodules-font-interface/ios" + UMImageLoaderInterface: + :path: "../node_modules/unimodules-image-loader-interface/ios" + UMPermissionsInterface: + :path: "../node_modules/unimodules-permissions-interface/ios" + UMReactNativeAdapter: + :path: "../node_modules/@unimodules/react-native-adapter/ios" + UMSensorsInterface: + :path: "../node_modules/unimodules-sensors-interface/ios" + UMTaskManagerInterface: + :path: "../node_modules/unimodules-task-manager-interface/ios" + Yoga: + :path: "../node_modules/react-native/ReactCommon/yoga" + +SPEC CHECKSUMS: + boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c + DoubleConversion: cde416483dac037923206447da6e1454df403714 + EXApplication: e3c201e7b913d081bbd37bd3c5d0e2cdc21733b4 + EXAV: e32adf44c10a82f723172d5b01d5693890888dd6 + EXBlur: 569d38c2b0b7b000866d928bc36acadfdc02ea8e + EXConstants: d9483a8fe0a963dd7ee3389f371303773e6ecd37 + EXCrypto: 81948191c3d2caf18fb32f18ee88d87d42532d62 + EXDevice: 01f54314f618aa4098893f66cd8f2a8a411f33ee + EXErrorRecovery: b46af4b91e2b4ec598ab1fa51d2cf088aaf5511f + EXFileSystem: 0e4974ab77bff04cda68d2886d070cbe64b93a6b + EXFirebaseAnalytics: d72f553dc0c0a8ee451714499fac21883c3f7369 + EXFirebaseCore: f986c71bdd1cb5941c9cfa686b2395fe588a53d0 + EXFont: 30c64ed8735a180e3f20046e4fdac4ea074d71d3 + EXGL: aee7cdf7dab9e94d46a3701ac557163f4e82e049 + EXGL_CPP: 0e622b8251cb739f8fcdfa9abb9944bea0452119 + EXHaptics: 6d2e09387f0eb4d3c8dc97ae905cbea8afe33651 + EXImageLoader: f96ec9992733a4224418bbd9382e5485c8948944 + EXImagePicker: 82fb929fb57b38de8d0a2d7fc3ca49726b9b8f78 + EXKeepAwake: 615c5a6fca5c2afedf611bb6f7f2ca323246de94 + EXLinearGradient: c803fbd1aa974be038177b1e45524bc35759fe9c + EXLocalization: 8b9463c81843da214476b541a27811dd885c9a76 + EXLocation: d55e2a37f61bcfb4eba9c813b3f4621d896c4c00 + EXPermissions: 17d4846ad1880f6891c74ae58ca1acb43e47ed47 + EXRandom: d7e0f3dd64810aabd27d59f8ecffee359177e2c3 + EXSecureStore: 1b571851e6068b30b8ec097be848a04603c03bae + EXSplashScreen: 8c7c1112ce7611a853486af4737fe2298eda7657 + EXSQLite: bda6a286dded0637bb312ee781239dcca163ff4b + EXStoreReview: 9b161bd86c172a9755c787982bfc32c7193cf803 + EXUpdates: 28368049118dbe4ceaf4422ec72e0ad5f770df1f + EXVideoThumbnails: 8ff241784f1d89fdd451bcdb7f733d06361d44a8 + EXWebBrowser: cb4811e6c883876d2e2ba1c10527de96963d410a + FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e + FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e + Firebase: 0219bb4782eb1406f1b9b0628a2e625484ce910d + FirebaseAnalytics: f68b9f3f1241385129ae0a83b63627fc420c05e5 + FirebaseCore: 632e05cc5e1199d9147122c16d92305eb04c34bd + FirebaseCoreDiagnostics: b59c024493a409f8aecba02c99928d0d8431d159 + FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850 + FirebaseInstanceID: ce993a3c3670a8f5d47ce371ac5d143c560608c5 + Folly: b73c3869541e86821df3c387eb0af5f65addfab4 + glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 + GoogleAppMeasurement: db118eb61a97dd8c4f7014e368d3c335cbbcf80a + GoogleDataTransport: 9a8a16f79feffc7f42096743de2a7c4815e84020 + GoogleDataTransportCCTSupport: 0f39025e8cf51f168711bd3fb773938d7e62ddb5 + GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3 + nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd + PromisesObjC: 3113f7f76903778cf4a0586bd1ab89329a0b7b97 + RCTRequired: 082f10cd3f905d6c124597fd1c14f6f2655ff65e + RCTTypeSafety: 8c9c544ecbf20337d069e4ae7fd9a377aadf504b + React: b0a957a2c44da4113b0c4c9853d8387f8e64e615 + React-callinvoker: c3f44dd3cb195b6aa46621fff95ded79d59043fe + React-Core: d3b2a1ac9a2c13c3bcde712d9281fc1c8a5b315b + React-CoreModules: 0581ff36cb797da0943d424f69e7098e43e9be60 + React-cxxreact: c1480d4fda5720086c90df537ee7d285d4c57ac3 + React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31 + React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949 + React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a + react-native-netinfo: 30fb89fa913c342be82a887b56e96be6d71201dd + react-native-safe-area-context: b6e0e284002381d2ff29fa4fff42b4d8282e3c94 + react-native-segmented-control: eb9e25fbfbce226ecf66d643428fbe97601e691a + react-native-viewpager: c1a686e7b5e164a52387f1522358623c4f52070f + React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336 + React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b + React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0 + React-RCTImage: c1b1f2d3f43a4a528c8946d6092384b5c880d2f0 + React-RCTLinking: 35ae4ab9dc0410d1fcbdce4d7623194a27214fb2 + React-RCTNetwork: 29ec2696f8d8cfff7331fac83d3e893c95ef43ae + React-RCTSettings: 60f0691bba2074ef394f95d4c2265ec284e0a46a + React-RCTText: 5c51df3f08cb9dedc6e790161195d12bac06101c + React-RCTVibration: ae4f914cfe8de7d4de95ae1ea6cc8f6315d73d9d + ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b + RNCAsyncStorage: da95b83e241a7f5efe3da1a949b3ec3175380be0 + RNCMaskedView: 5a8ec07677aa885546a0d98da336457e2bea557f + RNGestureHandler: 7a5833d0f788dbd107fbb913e09aa0c1ff333c39 + RNReanimated: b9c929bfff7dedc9c89ab1875f1c6151023358d9 + RNScreens: 3d682bcaba69a4f8e55543d90818704f34338db1 + RNSentry: 6b46b6fc1d715a378fbaa5d7d43bc9ce99b500e5 + RNSVG: ce9d996113475209013317e48b05c21ee988d42e + Sentry: 388c9dc093b2fd3a264466a5c5b21e25959610a9 + UMAppLoader: 92d044af52626af3d81a69796ad666fc7a9a7d78 + UMBarCodeScannerInterface: 3f6c1b09ef4b867ce752b8c0b3893bcf9cd85f32 + UMCameraInterface: d516032121192fee9a6c93bdfff0bb2cc7282796 + UMConstantsInterface: 6825ea3832d26ed392ca6eff2df84edd69968fd0 + UMCore: 97ba5041c9c92317ce61739f6d126a692c8ef4a8 + UMFaceDetectorInterface: 60b36b07faa539205efce30b20c192e058b31c23 + UMFileSystemInterface: ab01294ce58a3c773aefb4a5b131ce589c199559 + UMFontInterface: 85fe1b845fb7caab45e04d9ce47e1677a5ce90a5 + UMImageLoaderInterface: 18f37df089b7e6d301e3acac025a8264d26b66d6 + UMPermissionsInterface: 807e5733b4c6607f35757b1dd128f370718d2f94 + UMReactNativeAdapter: 172def7895b2cb44a7dd021336e316d5fa8ea958 + UMSensorsInterface: 4df9ec662134de5614ae61acc249d6912db87ca5 + UMTaskManagerInterface: 4c60b43eaf3cb05a164bc9113258a171c18b7bf7 + Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6 + +PODFILE CHECKSUM: cda6b7a1593395b311286b33b0036167ce6f0a15 + +COCOAPODS: 1.10.1 diff --git a/ios/tooot.xcodeproj/project.pbxproj b/ios/tooot.xcodeproj/project.pbxproj new file mode 100644 index 00000000..266106d6 --- /dev/null +++ b/ios/tooot.xcodeproj/project.pbxproj @@ -0,0 +1,515 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; + 6CB3B7B773184F6EB8040C3E /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4C2DAF0391E246238BE2A4B4 /* InfoPlist.strings */; }; + 8BA74ECC129842FEA0CC08AF /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F78D778B9BBC48D584012340 /* InfoPlist.strings */; }; + 96905EF65AED1B983A6B3ABC /* libPods-tooot.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-tooot.a */; }; + BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; + DA8B5B7F0DED488CAC0FF169 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = B96B72E5384D44A7B240B27E /* GoogleService-Info.plist */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* tooot.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = tooot.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = tooot/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = tooot/AppDelegate.m; sourceTree = ""; }; + 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = tooot/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = tooot/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = tooot/main.m; sourceTree = ""; }; + 4C2DAF0391E246238BE2A4B4 /* InfoPlist.strings */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = /Users/zhzhe/Documents/GitHub/tooot/app/ios/tooot/Supporting/en.lproj/InfoPlist.strings; sourceTree = ""; }; + 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-tooot.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-tooot.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6C2E3173556A471DD304B334 /* Pods-tooot.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tooot.debug.xcconfig"; path = "Target Support Files/Pods-tooot/Pods-tooot.debug.xcconfig"; sourceTree = ""; }; + 7A4D352CD337FB3A3BF06240 /* Pods-tooot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tooot.release.xcconfig"; path = "Target Support Files/Pods-tooot/Pods-tooot.release.xcconfig"; sourceTree = ""; }; + AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = tooot/SplashScreen.storyboard; sourceTree = ""; }; + B96B72E5384D44A7B240B27E /* GoogleService-Info.plist */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "tooot/GoogleService-Info.plist"; sourceTree = ""; }; + BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; + F78D778B9BBC48D584012340 /* InfoPlist.strings */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = /Users/zhzhe/Documents/GitHub/tooot/app/ios/tooot/Supporting/zh.lproj/InfoPlist.strings; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 96905EF65AED1B983A6B3ABC /* libPods-tooot.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0351DE0CE9C448D9B63B2FD1 /* en.lproj */ = { + isa = PBXGroup; + children = ( + 4C2DAF0391E246238BE2A4B4 /* InfoPlist.strings */, + ); + name = en.lproj; + sourceTree = ""; + }; + 13B07FAE1A68108700A75B9A /* tooot */ = { + isa = PBXGroup; + children = ( + BB2F792B24A3F905000567C9 /* Supporting */, + 008F07F21AC5B25A0029DE68 /* main.jsbundle */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.m */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, + 13B07FB71A68108700A75B9A /* main.m */, + AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, + B96B72E5384D44A7B240B27E /* GoogleService-Info.plist */, + ); + name = tooot; + sourceTree = ""; + }; + 24C1D590D0854BB1A4D480A6 /* zh.lproj */ = { + isa = PBXGroup; + children = ( + F78D778B9BBC48D584012340 /* InfoPlist.strings */, + ); + name = zh.lproj; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + ED2971642150620600B7C4FE /* JavaScriptCore.framework */, + 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-tooot.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* tooot */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + D65327D7A22EEC0BE12398D9 /* Pods */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* tooot.app */, + ); + name = Products; + sourceTree = ""; + }; + BB2F792B24A3F905000567C9 /* Supporting */ = { + isa = PBXGroup; + children = ( + BB2F792C24A3F905000567C9 /* Expo.plist */, + 0351DE0CE9C448D9B63B2FD1 /* en.lproj */, + 24C1D590D0854BB1A4D480A6 /* zh.lproj */, + ); + name = Supporting; + path = tooot/Supporting; + sourceTree = ""; + }; + D65327D7A22EEC0BE12398D9 /* Pods */ = { + isa = PBXGroup; + children = ( + 6C2E3173556A471DD304B334 /* Pods-tooot.debug.xcconfig */, + 7A4D352CD337FB3A3BF06240 /* Pods-tooot.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* tooot */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "tooot" */; + buildPhases = ( + 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */, + FD10A7F022414F080027D42C /* Start Packager */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = tooot; + productName = tooot; + productReference = 13B07F961A680F5B00A75B9A /* tooot.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1130; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1120; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "tooot" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* tooot */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, + 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, + 6CB3B7B773184F6EB8040C3E /* InfoPlist.strings in Resources */, + 8BA74ECC129842FEA0CC08AF /* InfoPlist.strings in Resources */, + DA8B5B7F0DED488CAC0FF169 /* GoogleService-Info.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n../node_modules/expo-constants/scripts/get-app-config-ios.sh\n../node_modules/expo-updates/scripts/create-manifest-ios.sh\n../node_modules/expo-constants/scripts/get-app-config-ios.sh\n"; + }; + 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-tooot-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-tooot/Pods-tooot-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-tooot/Pods-tooot-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + FD10A7F022414F080027D42C /* Start Packager */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Start Packager"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 13B07FB21A68108700A75B9A /* Base */, + ); + name = LaunchScreen.xib; + path = tooot; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-tooot.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = tooot/tooot.entitlements; + CURRENT_PROJECT_VERSION = 1; + ENABLE_BITCODE = NO; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "FB_SONARKIT_ENABLED=1", + ); + INFOPLIST_FILE = tooot/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.xmflsct.app.tooot; + PRODUCT_NAME = tooot; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-tooot.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = tooot/tooot.entitlements; + CURRENT_PROJECT_VERSION = 1; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; + INFOPLIST_FILE = tooot/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.xmflsct.app.tooot; + PRODUCT_NAME = tooot; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = tooot/tooot.entitlements; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LIBRARY_SEARCH_PATHS = ( + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_ENTITLEMENTS = tooot/tooot.entitlements; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LIBRARY_SEARCH_PATHS = ( + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "tooot" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "tooot" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/ios/tooot.xcodeproj/xcshareddata/xcschemes/tooot.xcscheme b/ios/tooot.xcodeproj/xcshareddata/xcschemes/tooot.xcscheme new file mode 100644 index 00000000..429cd009 --- /dev/null +++ b/ios/tooot.xcodeproj/xcshareddata/xcschemes/tooot.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/tooot.xcworkspace/contents.xcworkspacedata b/ios/tooot.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..8c8f6f76 --- /dev/null +++ b/ios/tooot.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ios/tooot/AppDelegate.h b/ios/tooot/AppDelegate.h new file mode 100644 index 00000000..1a1a48f6 --- /dev/null +++ b/ios/tooot/AppDelegate.h @@ -0,0 +1,10 @@ +#import +#import +#import +#import + +#import + +@interface AppDelegate : UMAppDelegateWrapper + +@end diff --git a/ios/tooot/AppDelegate.m b/ios/tooot/AppDelegate.m new file mode 100644 index 00000000..6b7d0734 --- /dev/null +++ b/ios/tooot/AppDelegate.m @@ -0,0 +1,131 @@ +#import "AppDelegate.h" + +#import +#import +#import +#import + +#import +#import +#import +#import +#import + +#if defined(FB_SONARKIT_ENABLED) && __has_include() +#import +#import +#import +#import +#import +#import + +#import + +// iOS 9.x or newer +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + options:(NSDictionary *)options +{ + return [RCTLinkingManager application:application openURL:url options:options]; +} + +// iOS 8.x or older +- (BOOL)application:(UIApplication *)application + openURL:(NSURL *)url + sourceApplication:(NSString *)sourceApplication + annotation:(id)annotation +{ + return [RCTLinkingManager application:application openURL:url + sourceApplication:sourceApplication annotation:annotation]; +} + +static void InitializeFlipper(UIApplication *application) { + FlipperClient *client = [FlipperClient sharedClient]; + SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults]; + [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]]; + [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]]; + [client addPlugin:[FlipperKitReactPlugin new]]; + [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]]; + [client start]; +} +#endif + +@interface AppDelegate () + +@property (nonatomic, strong) UMModuleRegistryAdapter *moduleRegistryAdapter; +@property (nonatomic, strong) NSDictionary *launchOptions; + +@end + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ +#if defined(FB_SONARKIT_ENABLED) && __has_include() + InitializeFlipper(application); +#endif + + self.moduleRegistryAdapter = [[UMModuleRegistryAdapter alloc] initWithModuleRegistryProvider:[[UMModuleRegistryProvider alloc] init]]; + self.launchOptions = launchOptions; + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + #ifdef DEBUG + [self initializeReactNativeApp]; + #else + EXUpdatesAppController *controller = [EXUpdatesAppController sharedInstance]; + controller.delegate = self; + [controller startAndShowLaunchScreen:self.window]; + #endif + + [super application:application didFinishLaunchingWithOptions:launchOptions]; + + return YES; +} + +- (RCTBridge *)initializeReactNativeApp +{ + RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:self.launchOptions]; + RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:@"main" initialProperties:nil]; + rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; + + UIViewController *rootViewController = [UIViewController new]; + rootViewController.view = rootView; + self.window.rootViewController = rootViewController; + [self.window makeKeyAndVisible]; + + return bridge; + } + +- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge +{ + NSArray> *extraModules = [_moduleRegistryAdapter extraModulesForBridge:bridge]; + // If you'd like to export some custom RCTBridgeModules that are not Expo modules, add them here! + return extraModules; +} + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge { + #ifdef DEBUG + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; + #else + return [[EXUpdatesAppController sharedInstance] launchAssetUrl]; + #endif +} + +- (void)appController:(EXUpdatesAppController *)appController didStartWithSuccess:(BOOL)success { + appController.bridge = [self initializeReactNativeApp]; + EXSplashScreenService *splashScreenService = (EXSplashScreenService *)[UMModuleRegistryProvider getSingletonModuleForClass:[EXSplashScreenService class]]; + [splashScreenService showSplashScreenFor:self.window.rootViewController]; +} + +// Linking API +- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options { + return [RCTLinkingManager application:application openURL:url options:options]; +} + +// Universal Links +- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler { + return [RCTLinkingManager application:application + continueUserActivity:userActivity + restorationHandler:restorationHandler]; +} + +@end diff --git a/ios/tooot/Base.lproj/LaunchScreen.xib b/ios/tooot/Base.lproj/LaunchScreen.xib new file mode 100644 index 00000000..9c290399 --- /dev/null +++ b/ios/tooot/Base.lproj/LaunchScreen.xib @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/tooot/GoogleService-Info.plist b/ios/tooot/GoogleService-Info.plist new file mode 100644 index 00000000..553df7ab --- /dev/null +++ b/ios/tooot/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 661638997772-65g8ce369ugck3ii4ulk6jhb3ijg51kl.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.661638997772-65g8ce369ugck3ii4ulk6jhb3ijg51kl + API_KEY + AIzaSyAOS1Yq_uNVctG89LB6Dl1PVhb_FAQRbRg + GCM_SENDER_ID + 661638997772 + PLIST_VERSION + 1 + BUNDLE_ID + com.xmflsct.app.tooot + PROJECT_ID + xmflsct-mastodon-app + STORAGE_BUCKET + xmflsct-mastodon-app.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:661638997772:ios:c8d2e09264a344b09f8b29 + + \ No newline at end of file diff --git a/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png b/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4ac174b36c3fe88f531831404ad5d1ded925e0f6 GIT binary patch literal 498 zcmV8*!T~2f}nz>1_bRDu~f7YK|!!E3brEY ze1MIDpp}(i;|JKNMXW^7La-Hlo3qTo&1SR9!h*#X4h-BobI!RlnIY2ccEc-OdJDcr z@O(bwbULwLE*DN*uUB>}!5sgICsERB1SBUA<;9)O6ccx=QI0EYHk&Ay%gE(&7>~yW zK-YDcAEfj1`84jeS`C#-g?ZEIlw%SBy4^19c01DPG?vRH=JPq~^*VOD9fSJ)K4a*C z{eBNsRWX~*&}cMZv)NE66qv(;1fo)1E*CUS!*;uc&*wuvpGPzrMYUQ*BoaX^7K5TF zh{xl|X0r$c0+>uDaJ${i5ub_$4~GLB4hIXaRx5Zs9&|b#1cO1OQYmCI8Ez|)NFWpn zq19@^@AsqKZo}zxVzb$N3W~|mi?S?ZFc@Gs95R{Oq6wBtB@~NA9FIpV77HYkN%VR> z?#%1;A{-7ghg+r~*?PU^_C}-8m&x7lcjNqcJibkqx}w2Q`z$Cb{L9)<)go^;%1dHN o&A{Il+nN(RW3k_VoBt>H0jKW0#rBssTL1t607*qoM6N<$g2buVQ2+n{ literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png b/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..df81d37eeb8c1779cb92bfb61d9f2240c0f12759 GIT binary patch literal 1114 zcmV-g1f~0lP)UzAc|5RBoC%U zDZ_)1#ES<*5-;8;Ql>JLlp!f1Mdo?tyRB9GbpGFeUAKF0_jWt0c6*<*rf;pi);dS^ z{QQi6d8rhD3P1&*0#E^{0Q}DZK0Q70f%eD8N8Yt9A@eKFG;Mvhgp5iYUSD7F_V%WA z{SI)NK)>ow%HZ|&HBL@WcpV=f^L~1IinFsb&a7tCKl7}OcX@d!`JzR>Xq}&*t7q{3 z{vJeib#<_`w1kh354^p-;o;!{2L}fP1O(vl@Q@?EySrnhhldAVazkW?0-;4`IZrN6 zHi!xe3Sez*4PReh_UG>I4qIDW#K*_u_VyMpFE8o<+uPd_6chw!XJ=ShSs^em5K&Q4 zNK8z`(a{mKk*HfTrb!f#04(VJ{ard&R8+7JJ3BiD8X6jk@bGZtxXntE(%_&CM}CKQ9HXR)g}QrTdSFh=75C0s8v-Sb_MI z!LYC}=;-JmI5-&g_V#@4=;&aX;^JbcR4RCSdUA=-IU^&3c|$`(FfuaYEQN%GKu=E( zUS3|<-QDHVadL8knVA`8XJ@5^d}xx-01|a|b+Oaj++2R1n3&))AkeF;tFW=Lfxo{$ zc6N5SsmO-0u`#Bnr;(bP%Akgahgr9*tc-0nH8tVl;sTD2jvoMicgzq#x?%#@+uJJv zY;0^~qqViQ{Cse5z*j>JG&MEF4q{_tCHb_pG|n28K|(?T^VinanAhFi&9`>p`n3g>AI;7 zD=RBmHa$HZJv}`f6qU#L_&ARhx?++iAEJ@8)}VM17Z=CQii(POTx@M^aoYR)`?+?g zfh;U6keQi@{r!D5y1cxMn3x!tn3!E8N&CN||WC%T)1XPbJD=WCU zxsiB6ZhLzhi;Ig4O2`wHmX>mcDQNOXJ9WL#|ByjK-qzNJ=;&x^7LJaNvVwfxi5Vz@ zqg@cmiFev&A@Rg$qc2!ZO%2aLx_%neb8~Ya0m^qVUg&cqG9ZEw#x->WV9hSnIR)$^ZZW literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png b/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e08216d40bb5856051f204d608dd7fee3749e0bb GIT binary patch literal 1622 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 KMNUMnLSTYV%P3#~ literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png b/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f18723c651eea9bb7bfd46780d3375bda5912d68 GIT binary patch literal 2458 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 literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png b/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..35a644f6cc0679df8bedcf6c583e7e1ae0277e25 GIT binary patch literal 2323 zcmai0`#;nFAAOIoHiR^v&25rvhS_9EHJT_}BF4~+A#!Quk}@{;itf1+sobw)L*_2` zRJyq4QZ6Y{`5+PB_4xPjx45o7T7t+btZIHD?vj zRNQlOG;?#^RiZSnp{^A)iTe?xpu&gr(Us4?-CFqtD`~3>oEw9OFa4Np8L2pknafoC z>RdTEj`5jj4BuVOqP|gx5)NWZz5-nh{>#Sr^8Z-u^E*K=_8DmSj}>zq1ifO8@V{Sx z?QphhQ-nmBYa?@g5fPAmBWg==z15#SW0hdkRqomp(`snLU9*K#9UGO8M(jgnbgwPX zy|f%QaGcDy&Yo_G7CSMxv9{Fv*y6U`nZkg`i6&Nx(S`A@hOo7J$+s_O9}Y_%5(44t znCqOk1vbaD$t9Xe`yKkL$%VG&Jt=y6q>KYe8rBaBI>bGS?8T!wUM~<@RDP{pF&XuU z$#1J~i{CZK%Rb6FCI0>6^8{O-AI0C1<8eZZT#_n_a>9P#60XZQStV(!#X{whN4UPd zpE_>~vn$c6F83=3LKkJYBy1kYg?m0}x+lr%WQuO7K`K#Q`BDaxfB(?s065nBv^(46 ziAycR6tYMAiNx|uZ@!`sB-I73Y5maTp3wzr_(N3-NiKN|=NIWRkKx6gJxpcHBFfK( z{%jgeMoUZ%Jhf6op-2!}&75~0nDsj!rav8ATAhERaRtf`TPsUM7@mxikXJtzFKKTi zg2d|48-SC=qCpGd=0g z@0El@rX$0Etj?uR9XAbp-|M8|F6Q>7VJvul!+Wi>k4VsBG zz;>wKWIS#%r zbzT{s?!IsD(=4KtzQVg z&Qpb>5iS~in3zJ>rp9sCnt-#D51T7-Rui*%0?+LF2v0T+TlH(0;QBg!!YxI@gfleXX|@4(2Xp8V73|0y1qw zdK|F6idAhIZ3wZtI4aj}>b~0<-;+nm5Mnns7wIhO|C-L?(_uK)7PDcZ*g=o$1ceqm zluMFrAYs9QEZNSm!LqYfJwo?~2e(zxuVNHTLK!qQ_UGZMd?%He{;Wd-g=aKGyvf*r zFcEyW&~_b*`1Yax@-t8czW3+rf<;uC{$i0sd0AxEi-QxWB)3+Ws@9u4(i^+z zIq;4|uNUcsLi4v@0sCx`FjWYoNfW)vC}@bT zy6Zx}mKJ+8EoqN0$G(KxaP{Z!m9I!?o_lup=0)qV9v3)+=V`WcOmzlr4n*xQHYkjX z1$8{u`zi(+<@)Ap9Gz0QXO9qZGYyeyPSw26!?$B*`?E626w8Q2uYlxpoY<*(=Mlq%4Q0CzI?zi9S$^jnzd@0YKnUL+OkRqYGt$`>;8* z4)cd{deqO3b1$<88D==Z+s{C8J>we5Z+q)ci}tyE7*kBt2b@0F-Z}sYJoo0iKrPR< zI0=sLpl)5npR3<>n3^=H7dNB@hehXHS@t4XNh+BX%wMbXUzqX_Rleyi@c3gor$Ly# zB7a0&f4@glU#`caHd%|~reHkCadoOK9<$Jf;WjgFn3-j&S;1njsku|c;}RSh8m8u! zI^7@Xe0Q|k>Vod;Ldc(v(UiD7Qo#_9J9L(u3QKL?YpSL9PVaP8P#-M2;MhAN9T|-j zPv}lX)8DFHQwt#%Z!Ds#&d8(wZq@odnVtBsM>yaQhRV`Sl5 z`4yj$@)z%j?4&G8#ng@oK1ieyu_u(cNmiKPR;ecI16x5A9{oLA)+^R5@N!egFBV-PM-UmP lf;8|qI28Zi_>jt3(Mv_`Ahz6an-`=U;Dq@pLYWyY>VK`-I~V`} literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png b/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..115abb9bfb22d0149e56e30df4d35eda66e1c211 GIT binary patch literal 3427 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 SE+VNWG9x{6-3o2j=zjvY$C;u4 literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png b/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..115abb9bfb22d0149e56e30df4d35eda66e1c211 GIT binary patch literal 3427 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 SE+VNWG9x{6-3o2j=zjvY$C;u4 literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png b/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..50e050a59f51488ab4108aebb003b8986c65b188 GIT binary patch literal 5033 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 literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png b/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..915b5ff70c240e9f7bf9751f9e457304908259e6 GIT binary patch literal 2166 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 literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png b/ios/tooot/Images.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d9d801e9909a5663910beb91747fa9bc636f3b6c GIT binary patch literal 4587 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 KH7nI0M*IuI3>PN= literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/tooot/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..f920cb0e --- /dev/null +++ b/ios/tooot/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images": [ + { + "idiom": "iphone", + "size": "20x20", + "scale": "2x", + "filename": "App-Icon-20x20@2x.png" + }, + { + "idiom": "iphone", + "size": "20x20", + "scale": "3x", + "filename": "App-Icon-20x20@3x.png" + }, + { + "idiom": "iphone", + "size": "29x29", + "scale": "1x", + "filename": "App-Icon-29x29@1x.png" + }, + { + "idiom": "iphone", + "size": "29x29", + "scale": "2x", + "filename": "App-Icon-29x29@2x.png" + }, + { + "idiom": "iphone", + "size": "29x29", + "scale": "3x", + "filename": "App-Icon-29x29@3x.png" + }, + { + "idiom": "iphone", + "size": "40x40", + "scale": "2x", + "filename": "App-Icon-40x40@2x.png" + }, + { + "idiom": "iphone", + "size": "40x40", + "scale": "3x", + "filename": "App-Icon-40x40@3x.png" + }, + { + "idiom": "iphone", + "size": "60x60", + "scale": "2x", + "filename": "App-Icon-60x60@2x.png" + }, + { + "idiom": "iphone", + "size": "60x60", + "scale": "3x", + "filename": "App-Icon-60x60@3x.png" + }, + { + "idiom": "ipad", + "size": "20x20", + "scale": "1x", + "filename": "App-Icon-20x20@1x.png" + }, + { + "idiom": "ipad", + "size": "20x20", + "scale": "2x", + "filename": "App-Icon-20x20@2x.png" + }, + { + "idiom": "ipad", + "size": "29x29", + "scale": "1x", + "filename": "App-Icon-29x29@1x.png" + }, + { + "idiom": "ipad", + "size": "29x29", + "scale": "2x", + "filename": "App-Icon-29x29@2x.png" + }, + { + "idiom": "ipad", + "size": "40x40", + "scale": "1x", + "filename": "App-Icon-40x40@1x.png" + }, + { + "idiom": "ipad", + "size": "40x40", + "scale": "2x", + "filename": "App-Icon-40x40@2x.png" + }, + { + "idiom": "ipad", + "size": "76x76", + "scale": "1x", + "filename": "App-Icon-76x76@1x.png" + }, + { + "idiom": "ipad", + "size": "76x76", + "scale": "2x", + "filename": "App-Icon-76x76@2x.png" + }, + { + "idiom": "ipad", + "size": "83.5x83.5", + "scale": "2x", + "filename": "App-Icon-83.5x83.5@2x.png" + }, + { + "idiom": "ios-marketing", + "size": "1024x1024", + "scale": "1x", + "filename": "ItunesArtwork@2x.png" + } + ], + "info": { + "version": 1, + "author": "expo" + } +} \ No newline at end of file diff --git a/ios/tooot/Images.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png b/ios/tooot/Images.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..47ade9589be96c87b886b64050d01206b0c55868 GIT binary patch literal 13738 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 literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/Contents.json b/ios/tooot/Images.xcassets/Contents.json new file mode 100644 index 00000000..2d92bd53 --- /dev/null +++ b/ios/tooot/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/tooot/Images.xcassets/SplashScreen.imageset/Contents.json b/ios/tooot/Images.xcassets/SplashScreen.imageset/Contents.json new file mode 100644 index 00000000..40eb421f --- /dev/null +++ b/ios/tooot/Images.xcassets/SplashScreen.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images": [ + { + "idiom": "universal", + "filename": "splashscreen.png", + "scale": "1x" + }, + { + "idiom": "universal", + "scale": "2x" + }, + { + "idiom": "universal", + "scale": "3x" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/ios/tooot/Images.xcassets/SplashScreen.imageset/splashscreen.png b/ios/tooot/Images.xcassets/SplashScreen.imageset/splashscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2004e819508d40980c7618286b1758d1f5c805 GIT binary patch literal 70265 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 EA8p(5U;qFB literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/Contents.json b/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/Contents.json new file mode 100644 index 00000000..c69ca4ab --- /dev/null +++ b/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images": [ + { + "idiom": "universal", + "filename": "background.png", + "scale": "1x" + }, + { + "idiom": "universal", + "scale": "2x" + }, + { + "idiom": "universal", + "scale": "3x" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/background.png b/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/background.png new file mode 100644 index 0000000000000000000000000000000000000000..8f04420e0437e4b0e1804c7a52824096259f88ba GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blCQlc~kP5~(QgxSrJZ=y#`N!AS b*XtQL&oRH-^)fshD9qsL>gTe~DWM4frM(p^ literal 0 HcmV?d00001 diff --git a/ios/tooot/Info.plist b/ios/tooot/Info.plist new file mode 100644 index 00000000..fee24a50 --- /dev/null +++ b/ios/tooot/Info.plist @@ -0,0 +1,93 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 0.1.0 + CFBundleSignature + ???? + CFBundleVersion + 4 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + NSLocationWhenInUseUsageDescription + + UILaunchStoryboardName + SplashScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + UIViewControllerBasedStatusBarAppearance + + CFBundleAllowMixedLocalizations + + ITSAppUsesNonExemptEncryption + + UIUserInterfaceStyle + Automatic + CFBundleURLTypes + + + CFBundleURLSchemes + + tooot + com.xmflsct.app.tooot + + + + UIRequiresFullScreen + + CFBundleDisplayName + tooot + NSMicrophoneUsageDescription + Allow $(PRODUCT_NAME) to access your microphone + NSPhotoLibraryUsageDescription + Give $(PRODUCT_NAME) permission to save photos + NSCameraUsageDescription + Give $(PRODUCT_NAME) permission to access your camera + NSMicrophoneUsageDescription + Give $(PRODUCT_NAME) permission to use your microphone + CFBundleURLTypes + + + CFBundleURLName + gizmos + CFBundleURLSchemes + + tooot + + + + + \ No newline at end of file diff --git a/ios/tooot/SplashScreen.storyboard b/ios/tooot/SplashScreen.storyboard new file mode 100644 index 00000000..24eec3df --- /dev/null +++ b/ios/tooot/SplashScreen.storyboard @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/tooot/Supporting/Expo.plist b/ios/tooot/Supporting/Expo.plist new file mode 100644 index 00000000..2644cb3b --- /dev/null +++ b/ios/tooot/Supporting/Expo.plist @@ -0,0 +1,16 @@ + + + + + EXUpdatesSDKVersion + 40.0.0 + EXUpdatesURL + https://exp.host/@xmflsct/tooot + EXUpdatesEnabled + + EXUpdatesCheckOnLaunch + ALWAYS + EXUpdatesLaunchWaitMs + 0 + + \ No newline at end of file diff --git a/ios/tooot/Supporting/en.lproj/InfoPlist.strings b/ios/tooot/Supporting/en.lproj/InfoPlist.strings new file mode 100644 index 00000000..6c473360 --- /dev/null +++ b/ios/tooot/Supporting/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +NSCameraUsageDescription = "Allow camera access to upload attachments"; +NSPhotoLibraryUsageDescription = "Allow photo library access to upload attachments"; \ No newline at end of file diff --git a/ios/tooot/Supporting/zh.lproj/InfoPlist.strings b/ios/tooot/Supporting/zh.lproj/InfoPlist.strings new file mode 100644 index 00000000..b08aca07 --- /dev/null +++ b/ios/tooot/Supporting/zh.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +NSCameraUsageDescription = "允许tooot使用相机拍摄上传附件"; +NSPhotoLibraryUsageDescription = "允许tooot读取相册上传附件"; \ No newline at end of file diff --git a/ios/tooot/main.m b/ios/tooot/main.m new file mode 100644 index 00000000..25181b6c --- /dev/null +++ b/ios/tooot/main.m @@ -0,0 +1,10 @@ +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} + diff --git a/ios/tooot/tooot.entitlements b/ios/tooot/tooot.entitlements new file mode 100644 index 00000000..018a6e20 --- /dev/null +++ b/ios/tooot/tooot.entitlements @@ -0,0 +1,8 @@ + + + + + aps-environment + development + + \ No newline at end of file diff --git a/metro.config.js b/metro.config.js new file mode 100644 index 00000000..ba972836 --- /dev/null +++ b/metro.config.js @@ -0,0 +1,5 @@ +module.exports = { + transformer: { + assetPlugins: ['expo-asset/tools/hashAssetFiles'], + }, +}; diff --git a/package.json b/package.json index 538e9835..3ffd62d4 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,8 @@ { - "main": "node_modules/expo/AppEntry.js", "scripts": { - "start": "expo start", - "android": "expo start --android", - "ios": "expo start --ios", + "start": "react-native start", + "android": "react-native run-android", + "ios": "react-native run-ios", "web": "expo start --web", "eject": "expo eject", "test": "jest --watchAll", @@ -20,6 +19,7 @@ "@react-navigation/bottom-tabs": "^5.11.2", "@react-navigation/native": "^5.8.10", "@reduxjs/toolkit": "^1.5.0", + "@sentry/react-native": "^2.1.1", "@sharcoux/slider": "^5.0.1", "axios": "^0.21.1", "buffer": "^6.0.3", @@ -27,7 +27,7 @@ "expo-auth-session": "~3.0.0", "expo-av": "~8.7.0", "expo-blur": "~8.2.2", - "expo-constants": "~9.3.3", + "expo-constants": "~10.0.1", "expo-crypto": "~8.4.0", "expo-firebase-analytics": "~2.6.0", "expo-firebase-core": "~1.3.0", @@ -42,6 +42,7 @@ "expo-splash-screen": "~0.8.1", "expo-status-bar": "~1.0.3", "expo-store-review": "~2.3.0", + "expo-updates": "~0.4.0", "expo-video-thumbnails": "~4.4.0", "expo-web-browser": "~8.6.0", "gl-react": "^4.0.1", @@ -53,7 +54,7 @@ "react": "16.13.1", "react-dom": "16.13.1", "react-i18next": "^11.8.5", - "react-native": "https://github.com/expo/react-native/archive/sdk-40.0.0.tar.gz", + "react-native": "~0.63.4", "react-native-animated-spinkit": "^1.4.2", "react-native-expo-image-cache": "^4.1.0", "react-native-feather": "^1.0.2", @@ -67,6 +68,8 @@ "react-native-tab-view": "^2.15.2", "react-native-tab-view-viewpager-adapter": "^1.1.0", "react-native-toast-message": "^1.4.2", + "react-native-unimodules": "~0.12.0", + "react-native-web": "~0.13.12", "react-navigation": "^4.4.3", "react-query": "^3.5.6", "react-redux": "^7.2.2", @@ -98,6 +101,7 @@ "@types/react-test-renderer": "^17.0.0", "@types/react-timeago": "^4.1.2", "@welldone-software/why-did-you-render": "^6.0.4", + "babel-jest": "~25.2.6", "babel-plugin-module-resolver": "^4.1.0", "chalk": "^4.1.0", "dotenv": "^8.2.0", @@ -107,5 +111,7 @@ "react-test-renderer": "^16.13.1", "typescript": "~4.1.3" }, - "private": true -} \ No newline at end of file + "private": true, + "name": "app", + "version": "1.0.0" +} diff --git a/src/components/Instance/Auth.tsx b/src/components/Instance/Auth.tsx index c3d800df..82c46961 100644 --- a/src/components/Instance/Auth.tsx +++ b/src/components/Instance/Auth.tsx @@ -15,8 +15,10 @@ export interface Props { const InstanceAuth = React.memo( ({ instanceDomain, instanceUri, appData, goBack }: Props) => { - - const redirectUri = AuthSession.makeRedirectUri({ useProxy: false }) + const redirectUri = AuthSession.makeRedirectUri({ + native: 'tooot://instance-auth', + useProxy: false + }) const navigation = useNavigation() const queryClient = useQueryClient() diff --git a/src/startup/dev.ts b/src/startup/dev.ts index 4470036b..c9d81e97 100644 --- a/src/startup/dev.ts +++ b/src/startup/dev.ts @@ -1,11 +1,8 @@ -import * as Analytics from 'expo-firebase-analytics' import React from 'react' import log from './log' const dev = () => { if (__DEV__) { - Analytics.setDebugModeEnabled(true) - log('log', 'devs', 'initializing wdyr') const whyDidYouRender = require('@welldone-software/why-did-you-render') whyDidYouRender(React, { diff --git a/src/utils/queryHooks/apps.ts b/src/utils/queryHooks/apps.ts index bceaa8cf..80c2e147 100644 --- a/src/utils/queryHooks/apps.ts +++ b/src/utils/queryHooks/apps.ts @@ -6,7 +6,10 @@ import { useQuery, UseQueryOptions } from 'react-query' export type QueryKey = ['Apps', { instanceDomain?: string }] const queryFunction = ({ queryKey }: { queryKey: QueryKey }) => { - const redirectUri = AuthSession.makeRedirectUri({ useProxy: false }) + const redirectUri = AuthSession.makeRedirectUri({ + native: 'tooot://instance-auth', + useProxy: false + }) const { instanceDomain } = queryKey[1] diff --git a/yarn.lock b/yarn.lock index 78636e09..9ff3b413 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1574,7 +1574,7 @@ jest-runner "^26.6.3" jest-runtime "^26.6.3" -"@jest/transform@^25.5.1": +"@jest/transform@^25.2.6", "@jest/transform@^25.5.1": version "25.5.1" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.1.tgz#0469ddc17699dd2bf985db55fa0fb9309f5c2db3" integrity sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg== @@ -1626,7 +1626,7 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" -"@jest/types@^25.5.0": +"@jest/types@^25.2.6", "@jest/types@^25.5.0": version "25.5.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== @@ -1968,7 +1968,7 @@ hermes-profile-transformer "^0.0.6" ip "^1.1.5" -"@react-native-community/cli-platform-android@^4.10.0", "@react-native-community/cli-platform-android@^4.13.0", "@react-native-community/cli-platform-android@^4.7.0": +"@react-native-community/cli-platform-android@^4.10.0", "@react-native-community/cli-platform-android@^4.13.0": version "4.13.0" resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-4.13.0.tgz#922681ec82ee1aadd993598b814df1152118be02" integrity sha512-3i8sX8GklEytUZwPnojuoFbCjIRzMugCdzDIdZ9UNmi/OhD4/8mLGO0dgXfT4sMWjZwu3qjy45sFfk2zOAgHbA== @@ -1984,7 +1984,7 @@ slash "^3.0.0" xmldoc "^1.1.2" -"@react-native-community/cli-platform-ios@^4.10.0", "@react-native-community/cli-platform-ios@^4.7.0": +"@react-native-community/cli-platform-ios@^4.10.0": version "4.13.0" resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-4.13.0.tgz#a738915c68cac86df54e578b59a1311ea62b1aef" integrity sha512-6THlTu8zp62efkzimfGr3VIuQJ2514o+vScZERJCV1xgEi8XtV7mb/ZKt9o6Y9WGxKKkc0E0b/aVAtgy+L27CA== @@ -2029,7 +2029,7 @@ resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-4.10.1.tgz#d68a2dcd1649d3b3774823c64e5e9ce55bfbe1c9" integrity sha512-ael2f1onoPF3vF7YqHGWy7NnafzGu+yp88BbFbP0ydoCP2xGSUzmZVw0zakPTC040Id+JQ9WeFczujMkDy6jYQ== -"@react-native-community/cli@^4.7.0": +"@react-native-community/cli@^4.10.0": version "4.13.1" resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-4.13.1.tgz#60148723e77cafe3ae260317d6bffe91853a2d20" integrity sha512-+/TeRVToADpQPSprsPkwi9KY8x64YcuJpjzMBVISwWP+aWzsIDuWJmyMXTADlCg2EBMJqJR7bn1W/IkfzVRCWA== @@ -2285,6 +2285,21 @@ "@sentry/utils" "5.28.0" "@sentry/wizard" "^1.1.4" +"@sentry/react-native@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@sentry/react-native/-/react-native-2.1.1.tgz#0b04d0fa5abb5f80476911b20c0b10b634b7a94e" + integrity sha512-8c5HCbB1rA8CZO/baw+AcLryViXSXxXPToRGRVfrAONdbp04k2Bw4zbl6Yc2HeVvoIuxvGILMkttZQ7KWM+E0Q== + dependencies: + "@sentry/browser" "5.28.0" + "@sentry/core" "5.28.0" + "@sentry/hub" "5.28.0" + "@sentry/integrations" "5.28.0" + "@sentry/react" "5.28.0" + "@sentry/tracing" "5.28.0" + "@sentry/types" "5.28.0" + "@sentry/utils" "5.28.0" + "@sentry/wizard" "^1.1.4" + "@sentry/react@5.28.0": version "5.28.0" resolved "https://registry.yarnpkg.com/@sentry/react/-/react-5.28.0.tgz#75c7ac3b9af1c34997ff9304c7bea46edc8f17f2" @@ -2396,7 +2411,7 @@ dependencies: pretty-format "^26.0.1" -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.0", "@types/babel__core@^7.1.7": version "7.1.12" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== @@ -2916,6 +2931,11 @@ array-filter@~0.0.0: resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= +array-find-index@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + array-map@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" @@ -3042,6 +3062,19 @@ babel-jest@^26.6.3: graceful-fs "^4.2.4" slash "^3.0.0" +babel-jest@~25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.2.6.tgz#fe67ff4d0db3626ca8082da8881dd5e84e07ae75" + integrity sha512-MDJOAlwtIeIQiGshyX0d2PxTbV73xZMpNji40ivVTPQOm59OdRR9nYCkffqI7ugtsK4JR98HgNKbDbuVf4k5QQ== + dependencies: + "@jest/transform" "^25.2.6" + "@jest/types" "^25.2.6" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^25.2.6" + chalk "^3.0.0" + slash "^3.0.0" + babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -3190,7 +3223,7 @@ babel-preset-fbjs@^3.2.0, babel-preset-fbjs@^3.3.0: "@babel/plugin-transform-template-literals" "^7.0.0" babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" -babel-preset-jest@^25.5.0: +babel-preset-jest@^25.2.6, babel-preset-jest@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49" integrity sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw== @@ -3812,6 +3845,14 @@ cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: js-yaml "^3.13.1" parse-json "^4.0.0" +create-react-class@^15.6.2: + version "15.7.0" + resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e" + integrity sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng== + dependencies: + loose-envify "^1.3.1" + object-assign "^4.1.1" + cross-fetch@^3.0.4: version "3.0.6" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" @@ -3858,6 +3899,14 @@ crypto-random-string@^1.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= +css-in-js-utils@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" + integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== + dependencies: + hyphenate-style-name "^1.0.2" + isobject "^3.0.1" + css-select@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" @@ -4491,7 +4540,7 @@ expo-blur@~8.2.2: resolved "https://registry.yarnpkg.com/expo-blur/-/expo-blur-8.2.2.tgz#a7643d893afb7aed5512b25d5df22ee6083832c1" integrity sha512-Xiklw60RUPIchHKzfvLTIuccVDTIQEAIPv02yJY2xFDujQKjE0NU0/Z5Z+zsEI9QOi82jX9NbR8gQ+8Mm3hDhA== -expo-constants@*: +expo-constants@*, expo-constants@~10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-10.0.1.tgz#a6cf6998c70ef6e1772a7c4096723482194c5828" integrity sha512-SnMIX1PnTz3AgGcFd+paCb8Ur0WfEiBjEZ7TxCdwpk7XVQO4etCzn6auNutCd4PBc4YVNvmKF9e0WFgLxy4NRQ== @@ -4499,7 +4548,7 @@ expo-constants@*: "@expo/config" "^3.3.18" uuid "^3.3.2" -expo-constants@^9.3.3, expo-constants@~9.3.3: +expo-constants@^9.3.3, expo-constants@~9.3.0, expo-constants@~9.3.3: version "9.3.5" resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-9.3.5.tgz#78085763e8ed100a5f2df7c682fd99631aa03d5e" integrity sha512-qIlv2ffSjQl3wrvJwXYoNfQNfH/sK46EXcgyEQnQ1SAQO4ukwTEpG9j3fdW6aTiVEVrv/DsA1IaVRqKrUwSd3A== @@ -4514,10 +4563,11 @@ expo-crypto@^8.4.0, expo-crypto@~8.4.0: integrity sha512-EHEFx5sHTDVIuQH8/juuecQWj1uQ7ClM98fKXPFcNYcBlYSCQvkik37hwfJC5WLcVnelFDpvZJmHxiTfB5GKCg== expo-device@*: - version "3.1.1" - resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-3.1.1.tgz#75dd1b4e61e9a2ed82afcefea4b458bd73aa596d" - integrity sha512-2Bg3a6zf680/bxxMfqMGyPMlrNOBjfKvuNJNIa80RsUauiJfhDix5zKRxEtrmwa/xoigoebmEV6QzE0vJ3Lseg== + version "2.4.0" + resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-2.4.0.tgz#277f830827c3b12710f1db5c0096d507e751689b" + integrity sha512-mxBiX6nvvtbKot3Kmmb2y8lo4Ki8jWGdUnpC2OX70Yiy75c8mOVbHUe2VMEnx3SysXycwvC5KzJSDy+PuDqovg== dependencies: + fbjs "1.0.0" ua-parser-js "^0.7.19" expo-error-recovery@~1.4.0: @@ -4578,6 +4628,11 @@ expo-haptics@~8.4.0: resolved "https://registry.yarnpkg.com/expo-haptics/-/expo-haptics-8.4.0.tgz#8482ebfe3caf4e13c3fe5c762214bcdcb8f24594" integrity sha512-WnB+uhrYhi0gg8lhkHTrlHZJX3v4ZTH8FXPVr8LewLPzFXQLhyllSfY0V9G/87zNdEk99f/pwC49PtH0b1DBQw== +expo-image-loader@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/expo-image-loader/-/expo-image-loader-1.3.0.tgz#06982a1a02f443ba6afa2cc7a4f0ccebc26a5415" + integrity sha512-kn+9hm42TtHi1wFEp/1nq63vp33/cIbypI2hYjGsL22PAC9yk1go1hs/ktKgVWVlgmi0ruwR09SrM6ndOs7s7w== + expo-image-picker@~9.2.0: version "9.2.1" resolved "https://registry.yarnpkg.com/expo-image-picker/-/expo-image-picker-9.2.1.tgz#113a46bfc8ef9bf675e8700b1bf7b8472f4de516" @@ -4669,6 +4724,15 @@ expo-updates@~0.3.5: fbemitter "^2.1.1" uuid "^3.4.0" +expo-updates@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/expo-updates/-/expo-updates-0.4.1.tgz#74288a9950d137df62577278879c2ce61f9d6be1" + integrity sha512-nRUJlGWaZ2o2shKpfYs9ZOMQjyozQYc+6i3baOpptTJCBDHL5cq7IzjEwfyI1Eii6MqP2pMmvT+kLJiux25tMw== + dependencies: + "@expo/metro-config" "^0.1.16" + fbemitter "^2.1.1" + uuid "^3.4.0" + expo-video-thumbnails@~4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/expo-video-thumbnails/-/expo-video-thumbnails-4.4.0.tgz#962763c31d7768823f3162574c7805ffe4e04240" @@ -5430,6 +5494,11 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + i18next@^19.8.4: version "19.8.4" resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.8.4.tgz#447718f2a26319b8debdbcc6fbc1a9761be7316b" @@ -5515,6 +5584,13 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, i resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +inline-style-prefixer@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-5.1.2.tgz#e5a5a3515e25600e016b71e39138971228486c33" + integrity sha512-PYUF+94gDfhy+LsQxM0g3d6Hge4l1pAqOSOiZuHWzMvQEGsbRQ/ck2WioLqrY2ZkHyPgVUXxn+hrkF7D6QUGbA== + dependencies: + css-in-js-utils "^2.0.0" + inquirer@^3.0.6: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" @@ -7241,7 +7317,7 @@ lolex@^5.0.0: dependencies: "@sinonjs/commons" "^1.7.0" -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -7930,6 +8006,11 @@ noop-fn@^1.0.0: resolved "https://registry.yarnpkg.com/noop-fn/-/noop-fn-1.0.0.tgz#5f33d47f13d2150df93e0cb036699e982f78ffbf" integrity sha1-XzPUfxPSFQ35PgywNmmemC94/78= +normalize-css-color@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/normalize-css-color/-/normalize-css-color-1.0.2.tgz#02991e97cccec6623fe573afbbf0de6a1f3e9f8d" + integrity sha1-Apkel8zOxmI/5XOvu/Deah8+n40= + normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -8570,7 +8651,7 @@ prompts@^2.0.1, prompts@^2.2.1: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -8810,14 +8891,55 @@ react-native-toast-message@^1.4.2: eslint-plugin-prettier "^3.2.0" prop-types "^15.7.2" -"react-native@https://github.com/expo/react-native/archive/sdk-40.0.0.tar.gz": - version "0.63.2" - resolved "https://github.com/expo/react-native/archive/sdk-40.0.0.tar.gz#b16b76e81617396a5c1e0f3e44a9553e8bead8cd" +react-native-unimodules@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/react-native-unimodules/-/react-native-unimodules-0.12.0.tgz#f1c92eae92212ca44078c0991c78fa4d13fda0f8" + integrity sha512-/c1d3hr+3C3yIwhSoX+KTzy0+C9cnjUvenXP2uV8X2V3ZflnPB/HQXwZPHHWITmD89HP2n3NcPBTu4UgOv/KzQ== + dependencies: + "@unimodules/core" "~6.0.0" + "@unimodules/react-native-adapter" "~5.7.0" + chalk "^2.4.2" + expo-asset "~8.2.1" + expo-constants "~9.3.0" + expo-file-system "~9.3.0" + expo-image-loader "~1.3.0" + expo-permissions "~10.0.0" + unimodules-app-loader "~1.4.0" + unimodules-barcode-scanner-interface "~5.4.0" + unimodules-camera-interface "~5.4.0" + unimodules-constants-interface "~5.4.0" + unimodules-face-detector-interface "~5.4.0" + unimodules-file-system-interface "~5.4.0" + unimodules-font-interface "~5.4.0" + unimodules-image-loader-interface "~5.4.0" + unimodules-permissions-interface "~5.4.0" + unimodules-sensors-interface "~5.4.0" + unimodules-task-manager-interface "~5.4.0" + +react-native-web@~0.13.12: + version "0.13.18" + resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.13.18.tgz#964f058a16521a3b9a31b091415edfef5b6ef305" + integrity sha512-WR/0ECAmwLQ2+2cL2Ur+0/swXFAtcSM0URoADJmG6D4MnY+wGc91JO8LoOTlgY0USBOY+qG/beRrjFa+RAuOiA== + dependencies: + array-find-index "^1.0.2" + create-react-class "^15.6.2" + deep-assign "^3.0.0" + fbjs "^1.0.0" + hyphenate-style-name "^1.0.3" + inline-style-prefixer "^5.1.0" + normalize-css-color "^1.0.2" + prop-types "^15.6.0" + react-timer-mixin "^0.13.4" + +react-native@~0.63.4: + version "0.63.4" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.63.4.tgz#2210fdd404c94a5fa6b423c6de86f8e48810ec36" + integrity sha512-I4kM8kYO2mWEYUFITMcpRulcy4/jd+j9T6PbIzR0FuMcz/xwd+JwHoLPa1HmCesvR1RDOw9o4D+OFLwuXXfmGw== dependencies: "@babel/runtime" "^7.0.0" - "@react-native-community/cli" "^4.7.0" - "@react-native-community/cli-platform-android" "^4.7.0" - "@react-native-community/cli-platform-ios" "^4.7.0" + "@react-native-community/cli" "^4.10.0" + "@react-native-community/cli-platform-android" "^4.10.0" + "@react-native-community/cli-platform-ios" "^4.10.0" abort-controller "^3.0.0" anser "^1.4.9" base64-js "^1.1.2" @@ -8899,6 +9021,11 @@ react-timeago@^5.2.0: resolved "https://registry.yarnpkg.com/react-timeago/-/react-timeago-5.2.0.tgz#d655d40aa55e4fe08a92234481a6aea7f656ab5d" integrity sha512-wCEEDGQHMdFh/PLp+Hj5vk9ZoC4KjQ5u0u6+KrrY9rny5LqJ2gZvNNEAS4mhSZDV1i7JLgQI5VQTAux7f+vj2w== +react-timer-mixin@^0.13.4: + version "0.13.4" + resolved "https://registry.yarnpkg.com/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz#75a00c3c94c13abe29b43d63b4c65a88fc8264d3" + integrity sha512-4+ow23tp/Tv7hBM5Az5/Be/eKKF7DIvJ09voz5LyHGQaqqz9WV8YMs31eFvcYQs7d451LSg7kDJV70XYN/Ug/Q== + react@16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e"