From 58600de4ce18ac12b17fac7027a9afef1eaf0b0d Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Thu, 23 Nov 2023 11:50:41 +0100 Subject: [PATCH 01/17] move packages/patrol/example to dev/e2e_app --- .../patrol/example => dev/e2e_app}/.gitignore | 0 .../patrol/example => dev/e2e_app}/.metadata | 0 .../patrol/example => dev/e2e_app}/README.md | 12 +- .../e2e_app}/analysis_options.yaml | 0 .../e2e_app}/android/.gitignore | 0 .../e2e_app}/android/app/build.gradle | 0 .../patrol/example/MainActivityTest.java | 0 .../android/app/src/main/AndroidManifest.xml | 0 .../leancode/patrol/example/MainActivity.kt | 0 .../res/drawable-v21/launch_background.xml | 0 .../main/res/drawable/launch_background.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../app/src/main/res/values-night/styles.xml | 0 .../app/src/main/res/values/styles.xml | 0 .../e2e_app}/android/build.gradle | 0 .../e2e_app}/android/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.properties | 0 .../e2e_app}/android/settings.gradle | 0 .../example => dev/e2e_app}/dart_test.yaml | 0 .../e2e_app}/devtools_options.yaml | 0 .../example => dev/e2e_app}/emulatorwtf.yaml | 0 .../integration_test/android_app_test.dart | 0 .../e2e_app}/integration_test/common.dart | 0 .../integration_test/example_test.dart | 0 .../e2e_app}/integration_test/internal/README | 0 .../integration_test/internal/group_test.dart | 0 .../internal/long_name_test.dart | 0 .../integration_test/open_app_test.dart | 0 .../open_quick_settings_test.dart | 0 .../permissions/notifications_test.dart | 0 .../permissions_location_test.dart | 0 .../permissions/permissions_many_test.dart | 0 .../service_airplane_mode_test.dart | 0 .../service_bluetooth_test.dart | 0 .../service_cellular_test.dart | 0 .../service_dark_mode_test.dart | 0 .../integration_test/service_wifi_test.dart | 0 .../e2e_app}/integration_test/swipe_test.dart | 0 .../webview_hackernews_test.dart | 0 .../webview_leancode_test.dart | 0 .../webview_stackoverflow_test.dart | 0 .../example => dev/e2e_app}/ios/.gitignore | 0 .../ios/Flutter/AppFrameworkInfo.plist | 0 .../e2e_app}/ios/Flutter/Debug.xcconfig | 0 .../e2e_app}/ios/Flutter/Release.xcconfig | 0 .../example => dev/e2e_app}/ios/Gemfile | 0 .../example => dev/e2e_app}/ios/Gemfile.lock | 0 .../example => dev/e2e_app}/ios/Matchfile | 0 .../example => dev/e2e_app}/ios/Podfile | 0 .../example => dev/e2e_app}/ios/Podfile.lock | 0 .../ios/Runner.xcodeproj/project.pbxproj | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../xcshareddata/xcschemes/Runner.xcscheme | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../e2e_app}/ios/Runner/AppDelegate.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../Icon-App-1024x1024@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin .../Icon-App-83.5x83.5@2x.png | Bin .../LaunchImage.imageset/Contents.json | 0 .../LaunchImage.imageset/LaunchImage.png | Bin .../LaunchImage.imageset/LaunchImage@2x.png | Bin .../LaunchImage.imageset/LaunchImage@3x.png | Bin .../LaunchImage.imageset/README.md | 0 .../Runner/Base.lproj/LaunchScreen.storyboard | 0 .../ios/Runner/Base.lproj/Main.storyboard | 0 .../e2e_app}/ios/Runner/Info.plist | 0 .../ios/Runner/Runner-Bridging-Header.h | 0 .../RunnerTests/RunnerTests-Bridging-Header.h | 0 .../ios/RunnerTests/RunnerTests.swift | 0 .../ios/RunnerUITests/RunnerUITests.m | 0 .../e2e_app}/ios/fastlane/Appfile | 0 .../e2e_app}/ios/fastlane/Fastfile | 0 .../example => dev/e2e_app}/lib/keys.dart | 0 .../e2e_app}/lib/loading_screen.dart | 0 .../e2e_app}/lib/location_screen.dart | 0 .../example => dev/e2e_app}/lib/main.dart | 0 .../e2e_app}/lib/notifications_screen.dart | 0 .../e2e_app}/lib/overlay_screen.dart | 0 .../e2e_app}/lib/permissions_screen.dart | 0 .../e2e_app}/lib/scrolling_screen.dart | 0 .../e2e_app}/lib/webview_screen.dart | 0 dev/e2e_app/pubspec.lock | 689 ++++++++++++++++++ .../example => dev/e2e_app}/pubspec.yaml | 4 +- .../e2e_app}/run_android_testlab | 0 .../example => dev/e2e_app}/run_ios_testlab | 0 .../patrol_devtools_extension/pubspec.lock | 14 +- packages/patrol_gen/pubspec.lock | 14 +- 108 files changed, 712 insertions(+), 21 deletions(-) rename {packages/patrol/example => dev/e2e_app}/.gitignore (100%) rename {packages/patrol/example => dev/e2e_app}/.metadata (100%) rename {packages/patrol/example => dev/e2e_app}/README.md (66%) rename {packages/patrol/example => dev/e2e_app}/analysis_options.yaml (100%) rename {packages/patrol/example => dev/e2e_app}/android/.gitignore (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/build.gradle (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/src/androidTest/java/pl/leancode/patrol/example/MainActivityTest.java (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/src/main/AndroidManifest.xml (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/src/main/kotlin/pl/leancode/patrol/example/MainActivity.kt (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/src/main/res/drawable-v21/launch_background.xml (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/src/main/res/drawable/launch_background.xml (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/src/main/res/values-night/styles.xml (100%) rename {packages/patrol/example => dev/e2e_app}/android/app/src/main/res/values/styles.xml (100%) rename {packages/patrol/example => dev/e2e_app}/android/build.gradle (100%) rename {packages/patrol/example => dev/e2e_app}/android/gradle.properties (100%) rename {packages/patrol/example => dev/e2e_app}/android/gradle/wrapper/gradle-wrapper.properties (100%) rename {packages/patrol/example => dev/e2e_app}/android/settings.gradle (100%) rename {packages/patrol/example => dev/e2e_app}/dart_test.yaml (100%) rename {packages/patrol/example => dev/e2e_app}/devtools_options.yaml (100%) rename {packages/patrol/example => dev/e2e_app}/emulatorwtf.yaml (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/android_app_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/common.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/example_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/internal/README (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/internal/group_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/internal/long_name_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/open_app_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/open_quick_settings_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/permissions/notifications_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/permissions/permissions_location_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/permissions/permissions_many_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/service_airplane_mode_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/service_bluetooth_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/service_cellular_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/service_dark_mode_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/service_wifi_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/swipe_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/webview_hackernews_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/webview_leancode_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/integration_test/webview_stackoverflow_test.dart (100%) rename {packages/patrol/example => dev/e2e_app}/ios/.gitignore (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Flutter/AppFrameworkInfo.plist (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Flutter/Debug.xcconfig (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Flutter/Release.xcconfig (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Gemfile (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Gemfile.lock (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Matchfile (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Podfile (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Podfile.lock (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner.xcodeproj/project.pbxproj (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner.xcworkspace/contents.xcworkspacedata (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/AppDelegate.swift (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Base.lproj/LaunchScreen.storyboard (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Base.lproj/Main.storyboard (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Info.plist (100%) rename {packages/patrol/example => dev/e2e_app}/ios/Runner/Runner-Bridging-Header.h (100%) rename {packages/patrol/example => dev/e2e_app}/ios/RunnerTests/RunnerTests-Bridging-Header.h (100%) rename {packages/patrol/example => dev/e2e_app}/ios/RunnerTests/RunnerTests.swift (100%) rename {packages/patrol/example => dev/e2e_app}/ios/RunnerUITests/RunnerUITests.m (100%) rename {packages/patrol/example => dev/e2e_app}/ios/fastlane/Appfile (100%) rename {packages/patrol/example => dev/e2e_app}/ios/fastlane/Fastfile (100%) rename {packages/patrol/example => dev/e2e_app}/lib/keys.dart (100%) rename {packages/patrol/example => dev/e2e_app}/lib/loading_screen.dart (100%) rename {packages/patrol/example => dev/e2e_app}/lib/location_screen.dart (100%) rename {packages/patrol/example => dev/e2e_app}/lib/main.dart (100%) rename {packages/patrol/example => dev/e2e_app}/lib/notifications_screen.dart (100%) rename {packages/patrol/example => dev/e2e_app}/lib/overlay_screen.dart (100%) rename {packages/patrol/example => dev/e2e_app}/lib/permissions_screen.dart (100%) rename {packages/patrol/example => dev/e2e_app}/lib/scrolling_screen.dart (100%) rename {packages/patrol/example => dev/e2e_app}/lib/webview_screen.dart (100%) create mode 100644 dev/e2e_app/pubspec.lock rename {packages/patrol/example => dev/e2e_app}/pubspec.yaml (93%) rename {packages/patrol/example => dev/e2e_app}/run_android_testlab (100%) rename {packages/patrol/example => dev/e2e_app}/run_ios_testlab (100%) diff --git a/packages/patrol/example/.gitignore b/dev/e2e_app/.gitignore similarity index 100% rename from packages/patrol/example/.gitignore rename to dev/e2e_app/.gitignore diff --git a/packages/patrol/example/.metadata b/dev/e2e_app/.metadata similarity index 100% rename from packages/patrol/example/.metadata rename to dev/e2e_app/.metadata diff --git a/packages/patrol/example/README.md b/dev/e2e_app/README.md similarity index 66% rename from packages/patrol/example/README.md rename to dev/e2e_app/README.md index 2efc4aa84..dee666b6a 100644 --- a/packages/patrol/example/README.md +++ b/dev/e2e_app/README.md @@ -1,6 +1,6 @@ -# patrol example app +# patrol e2e app -This application demonstrates most of Patrol's features. +This application is used to test Patrol itself. ## Building @@ -12,7 +12,8 @@ $ dart pub global activate --source path packages/patrol_cli && patrol from the repository root. -Once you have the right Patrol CLI version, building artifacts for testing is easy. +Once you have the right Patrol CLI version, building artifacts for testing is +easy. ### Android @@ -23,8 +24,9 @@ $ patrol build android ``` This builds 2 APKs: -- the app under test: `/build/app/outputs/apk/debug/app-debug.apk` -- the instrumentation app: `/build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk` + +- the app under test: `/build/app/outputs/apk/debug/app-debug.apk` +- the instrumentation app: `/build/app/outputs/apk/androidTest/debug/app-debug-androidTest.apk` ### iOS device diff --git a/packages/patrol/example/analysis_options.yaml b/dev/e2e_app/analysis_options.yaml similarity index 100% rename from packages/patrol/example/analysis_options.yaml rename to dev/e2e_app/analysis_options.yaml diff --git a/packages/patrol/example/android/.gitignore b/dev/e2e_app/android/.gitignore similarity index 100% rename from packages/patrol/example/android/.gitignore rename to dev/e2e_app/android/.gitignore diff --git a/packages/patrol/example/android/app/build.gradle b/dev/e2e_app/android/app/build.gradle similarity index 100% rename from packages/patrol/example/android/app/build.gradle rename to dev/e2e_app/android/app/build.gradle diff --git a/packages/patrol/example/android/app/src/androidTest/java/pl/leancode/patrol/example/MainActivityTest.java b/dev/e2e_app/android/app/src/androidTest/java/pl/leancode/patrol/example/MainActivityTest.java similarity index 100% rename from packages/patrol/example/android/app/src/androidTest/java/pl/leancode/patrol/example/MainActivityTest.java rename to dev/e2e_app/android/app/src/androidTest/java/pl/leancode/patrol/example/MainActivityTest.java diff --git a/packages/patrol/example/android/app/src/main/AndroidManifest.xml b/dev/e2e_app/android/app/src/main/AndroidManifest.xml similarity index 100% rename from packages/patrol/example/android/app/src/main/AndroidManifest.xml rename to dev/e2e_app/android/app/src/main/AndroidManifest.xml diff --git a/packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/example/MainActivity.kt b/dev/e2e_app/android/app/src/main/kotlin/pl/leancode/patrol/example/MainActivity.kt similarity index 100% rename from packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/example/MainActivity.kt rename to dev/e2e_app/android/app/src/main/kotlin/pl/leancode/patrol/example/MainActivity.kt diff --git a/packages/patrol/example/android/app/src/main/res/drawable-v21/launch_background.xml b/dev/e2e_app/android/app/src/main/res/drawable-v21/launch_background.xml similarity index 100% rename from packages/patrol/example/android/app/src/main/res/drawable-v21/launch_background.xml rename to dev/e2e_app/android/app/src/main/res/drawable-v21/launch_background.xml diff --git a/packages/patrol/example/android/app/src/main/res/drawable/launch_background.xml b/dev/e2e_app/android/app/src/main/res/drawable/launch_background.xml similarity index 100% rename from packages/patrol/example/android/app/src/main/res/drawable/launch_background.xml rename to dev/e2e_app/android/app/src/main/res/drawable/launch_background.xml diff --git a/packages/patrol/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/dev/e2e_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from packages/patrol/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to dev/e2e_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/packages/patrol/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/dev/e2e_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from packages/patrol/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to dev/e2e_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/packages/patrol/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/dev/e2e_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from packages/patrol/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to dev/e2e_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/packages/patrol/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/dev/e2e_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from packages/patrol/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to dev/e2e_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/packages/patrol/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/dev/e2e_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from packages/patrol/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to dev/e2e_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/packages/patrol/example/android/app/src/main/res/values-night/styles.xml b/dev/e2e_app/android/app/src/main/res/values-night/styles.xml similarity index 100% rename from packages/patrol/example/android/app/src/main/res/values-night/styles.xml rename to dev/e2e_app/android/app/src/main/res/values-night/styles.xml diff --git a/packages/patrol/example/android/app/src/main/res/values/styles.xml b/dev/e2e_app/android/app/src/main/res/values/styles.xml similarity index 100% rename from packages/patrol/example/android/app/src/main/res/values/styles.xml rename to dev/e2e_app/android/app/src/main/res/values/styles.xml diff --git a/packages/patrol/example/android/build.gradle b/dev/e2e_app/android/build.gradle similarity index 100% rename from packages/patrol/example/android/build.gradle rename to dev/e2e_app/android/build.gradle diff --git a/packages/patrol/example/android/gradle.properties b/dev/e2e_app/android/gradle.properties similarity index 100% rename from packages/patrol/example/android/gradle.properties rename to dev/e2e_app/android/gradle.properties diff --git a/packages/patrol/example/android/gradle/wrapper/gradle-wrapper.properties b/dev/e2e_app/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from packages/patrol/example/android/gradle/wrapper/gradle-wrapper.properties rename to dev/e2e_app/android/gradle/wrapper/gradle-wrapper.properties diff --git a/packages/patrol/example/android/settings.gradle b/dev/e2e_app/android/settings.gradle similarity index 100% rename from packages/patrol/example/android/settings.gradle rename to dev/e2e_app/android/settings.gradle diff --git a/packages/patrol/example/dart_test.yaml b/dev/e2e_app/dart_test.yaml similarity index 100% rename from packages/patrol/example/dart_test.yaml rename to dev/e2e_app/dart_test.yaml diff --git a/packages/patrol/example/devtools_options.yaml b/dev/e2e_app/devtools_options.yaml similarity index 100% rename from packages/patrol/example/devtools_options.yaml rename to dev/e2e_app/devtools_options.yaml diff --git a/packages/patrol/example/emulatorwtf.yaml b/dev/e2e_app/emulatorwtf.yaml similarity index 100% rename from packages/patrol/example/emulatorwtf.yaml rename to dev/e2e_app/emulatorwtf.yaml diff --git a/packages/patrol/example/integration_test/android_app_test.dart b/dev/e2e_app/integration_test/android_app_test.dart similarity index 100% rename from packages/patrol/example/integration_test/android_app_test.dart rename to dev/e2e_app/integration_test/android_app_test.dart diff --git a/packages/patrol/example/integration_test/common.dart b/dev/e2e_app/integration_test/common.dart similarity index 100% rename from packages/patrol/example/integration_test/common.dart rename to dev/e2e_app/integration_test/common.dart diff --git a/packages/patrol/example/integration_test/example_test.dart b/dev/e2e_app/integration_test/example_test.dart similarity index 100% rename from packages/patrol/example/integration_test/example_test.dart rename to dev/e2e_app/integration_test/example_test.dart diff --git a/packages/patrol/example/integration_test/internal/README b/dev/e2e_app/integration_test/internal/README similarity index 100% rename from packages/patrol/example/integration_test/internal/README rename to dev/e2e_app/integration_test/internal/README diff --git a/packages/patrol/example/integration_test/internal/group_test.dart b/dev/e2e_app/integration_test/internal/group_test.dart similarity index 100% rename from packages/patrol/example/integration_test/internal/group_test.dart rename to dev/e2e_app/integration_test/internal/group_test.dart diff --git a/packages/patrol/example/integration_test/internal/long_name_test.dart b/dev/e2e_app/integration_test/internal/long_name_test.dart similarity index 100% rename from packages/patrol/example/integration_test/internal/long_name_test.dart rename to dev/e2e_app/integration_test/internal/long_name_test.dart diff --git a/packages/patrol/example/integration_test/open_app_test.dart b/dev/e2e_app/integration_test/open_app_test.dart similarity index 100% rename from packages/patrol/example/integration_test/open_app_test.dart rename to dev/e2e_app/integration_test/open_app_test.dart diff --git a/packages/patrol/example/integration_test/open_quick_settings_test.dart b/dev/e2e_app/integration_test/open_quick_settings_test.dart similarity index 100% rename from packages/patrol/example/integration_test/open_quick_settings_test.dart rename to dev/e2e_app/integration_test/open_quick_settings_test.dart diff --git a/packages/patrol/example/integration_test/permissions/notifications_test.dart b/dev/e2e_app/integration_test/permissions/notifications_test.dart similarity index 100% rename from packages/patrol/example/integration_test/permissions/notifications_test.dart rename to dev/e2e_app/integration_test/permissions/notifications_test.dart diff --git a/packages/patrol/example/integration_test/permissions/permissions_location_test.dart b/dev/e2e_app/integration_test/permissions/permissions_location_test.dart similarity index 100% rename from packages/patrol/example/integration_test/permissions/permissions_location_test.dart rename to dev/e2e_app/integration_test/permissions/permissions_location_test.dart diff --git a/packages/patrol/example/integration_test/permissions/permissions_many_test.dart b/dev/e2e_app/integration_test/permissions/permissions_many_test.dart similarity index 100% rename from packages/patrol/example/integration_test/permissions/permissions_many_test.dart rename to dev/e2e_app/integration_test/permissions/permissions_many_test.dart diff --git a/packages/patrol/example/integration_test/service_airplane_mode_test.dart b/dev/e2e_app/integration_test/service_airplane_mode_test.dart similarity index 100% rename from packages/patrol/example/integration_test/service_airplane_mode_test.dart rename to dev/e2e_app/integration_test/service_airplane_mode_test.dart diff --git a/packages/patrol/example/integration_test/service_bluetooth_test.dart b/dev/e2e_app/integration_test/service_bluetooth_test.dart similarity index 100% rename from packages/patrol/example/integration_test/service_bluetooth_test.dart rename to dev/e2e_app/integration_test/service_bluetooth_test.dart diff --git a/packages/patrol/example/integration_test/service_cellular_test.dart b/dev/e2e_app/integration_test/service_cellular_test.dart similarity index 100% rename from packages/patrol/example/integration_test/service_cellular_test.dart rename to dev/e2e_app/integration_test/service_cellular_test.dart diff --git a/packages/patrol/example/integration_test/service_dark_mode_test.dart b/dev/e2e_app/integration_test/service_dark_mode_test.dart similarity index 100% rename from packages/patrol/example/integration_test/service_dark_mode_test.dart rename to dev/e2e_app/integration_test/service_dark_mode_test.dart diff --git a/packages/patrol/example/integration_test/service_wifi_test.dart b/dev/e2e_app/integration_test/service_wifi_test.dart similarity index 100% rename from packages/patrol/example/integration_test/service_wifi_test.dart rename to dev/e2e_app/integration_test/service_wifi_test.dart diff --git a/packages/patrol/example/integration_test/swipe_test.dart b/dev/e2e_app/integration_test/swipe_test.dart similarity index 100% rename from packages/patrol/example/integration_test/swipe_test.dart rename to dev/e2e_app/integration_test/swipe_test.dart diff --git a/packages/patrol/example/integration_test/webview_hackernews_test.dart b/dev/e2e_app/integration_test/webview_hackernews_test.dart similarity index 100% rename from packages/patrol/example/integration_test/webview_hackernews_test.dart rename to dev/e2e_app/integration_test/webview_hackernews_test.dart diff --git a/packages/patrol/example/integration_test/webview_leancode_test.dart b/dev/e2e_app/integration_test/webview_leancode_test.dart similarity index 100% rename from packages/patrol/example/integration_test/webview_leancode_test.dart rename to dev/e2e_app/integration_test/webview_leancode_test.dart diff --git a/packages/patrol/example/integration_test/webview_stackoverflow_test.dart b/dev/e2e_app/integration_test/webview_stackoverflow_test.dart similarity index 100% rename from packages/patrol/example/integration_test/webview_stackoverflow_test.dart rename to dev/e2e_app/integration_test/webview_stackoverflow_test.dart diff --git a/packages/patrol/example/ios/.gitignore b/dev/e2e_app/ios/.gitignore similarity index 100% rename from packages/patrol/example/ios/.gitignore rename to dev/e2e_app/ios/.gitignore diff --git a/packages/patrol/example/ios/Flutter/AppFrameworkInfo.plist b/dev/e2e_app/ios/Flutter/AppFrameworkInfo.plist similarity index 100% rename from packages/patrol/example/ios/Flutter/AppFrameworkInfo.plist rename to dev/e2e_app/ios/Flutter/AppFrameworkInfo.plist diff --git a/packages/patrol/example/ios/Flutter/Debug.xcconfig b/dev/e2e_app/ios/Flutter/Debug.xcconfig similarity index 100% rename from packages/patrol/example/ios/Flutter/Debug.xcconfig rename to dev/e2e_app/ios/Flutter/Debug.xcconfig diff --git a/packages/patrol/example/ios/Flutter/Release.xcconfig b/dev/e2e_app/ios/Flutter/Release.xcconfig similarity index 100% rename from packages/patrol/example/ios/Flutter/Release.xcconfig rename to dev/e2e_app/ios/Flutter/Release.xcconfig diff --git a/packages/patrol/example/ios/Gemfile b/dev/e2e_app/ios/Gemfile similarity index 100% rename from packages/patrol/example/ios/Gemfile rename to dev/e2e_app/ios/Gemfile diff --git a/packages/patrol/example/ios/Gemfile.lock b/dev/e2e_app/ios/Gemfile.lock similarity index 100% rename from packages/patrol/example/ios/Gemfile.lock rename to dev/e2e_app/ios/Gemfile.lock diff --git a/packages/patrol/example/ios/Matchfile b/dev/e2e_app/ios/Matchfile similarity index 100% rename from packages/patrol/example/ios/Matchfile rename to dev/e2e_app/ios/Matchfile diff --git a/packages/patrol/example/ios/Podfile b/dev/e2e_app/ios/Podfile similarity index 100% rename from packages/patrol/example/ios/Podfile rename to dev/e2e_app/ios/Podfile diff --git a/packages/patrol/example/ios/Podfile.lock b/dev/e2e_app/ios/Podfile.lock similarity index 100% rename from packages/patrol/example/ios/Podfile.lock rename to dev/e2e_app/ios/Podfile.lock diff --git a/packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj b/dev/e2e_app/ios/Runner.xcodeproj/project.pbxproj similarity index 100% rename from packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj rename to dev/e2e_app/ios/Runner.xcodeproj/project.pbxproj diff --git a/packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/dev/e2e_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to dev/e2e_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/dev/e2e_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to dev/e2e_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/dev/e2e_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to dev/e2e_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/dev/e2e_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to dev/e2e_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme diff --git a/packages/patrol/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/dev/e2e_app/ios/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from packages/patrol/example/ios/Runner.xcworkspace/contents.xcworkspacedata rename to dev/e2e_app/ios/Runner.xcworkspace/contents.xcworkspacedata diff --git a/packages/patrol/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/dev/e2e_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from packages/patrol/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to dev/e2e_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/packages/patrol/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/dev/e2e_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from packages/patrol/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to dev/e2e_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/packages/patrol/example/ios/Runner/AppDelegate.swift b/dev/e2e_app/ios/Runner/AppDelegate.swift similarity index 100% rename from packages/patrol/example/ios/Runner/AppDelegate.swift rename to dev/e2e_app/ios/Runner/AppDelegate.swift diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/dev/e2e_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json rename to dev/e2e_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/dev/e2e_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/dev/e2e_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png rename to dev/e2e_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/dev/e2e_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md similarity index 100% rename from packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md rename to dev/e2e_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md diff --git a/packages/patrol/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/dev/e2e_app/ios/Runner/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from packages/patrol/example/ios/Runner/Base.lproj/LaunchScreen.storyboard rename to dev/e2e_app/ios/Runner/Base.lproj/LaunchScreen.storyboard diff --git a/packages/patrol/example/ios/Runner/Base.lproj/Main.storyboard b/dev/e2e_app/ios/Runner/Base.lproj/Main.storyboard similarity index 100% rename from packages/patrol/example/ios/Runner/Base.lproj/Main.storyboard rename to dev/e2e_app/ios/Runner/Base.lproj/Main.storyboard diff --git a/packages/patrol/example/ios/Runner/Info.plist b/dev/e2e_app/ios/Runner/Info.plist similarity index 100% rename from packages/patrol/example/ios/Runner/Info.plist rename to dev/e2e_app/ios/Runner/Info.plist diff --git a/packages/patrol/example/ios/Runner/Runner-Bridging-Header.h b/dev/e2e_app/ios/Runner/Runner-Bridging-Header.h similarity index 100% rename from packages/patrol/example/ios/Runner/Runner-Bridging-Header.h rename to dev/e2e_app/ios/Runner/Runner-Bridging-Header.h diff --git a/packages/patrol/example/ios/RunnerTests/RunnerTests-Bridging-Header.h b/dev/e2e_app/ios/RunnerTests/RunnerTests-Bridging-Header.h similarity index 100% rename from packages/patrol/example/ios/RunnerTests/RunnerTests-Bridging-Header.h rename to dev/e2e_app/ios/RunnerTests/RunnerTests-Bridging-Header.h diff --git a/packages/patrol/example/ios/RunnerTests/RunnerTests.swift b/dev/e2e_app/ios/RunnerTests/RunnerTests.swift similarity index 100% rename from packages/patrol/example/ios/RunnerTests/RunnerTests.swift rename to dev/e2e_app/ios/RunnerTests/RunnerTests.swift diff --git a/packages/patrol/example/ios/RunnerUITests/RunnerUITests.m b/dev/e2e_app/ios/RunnerUITests/RunnerUITests.m similarity index 100% rename from packages/patrol/example/ios/RunnerUITests/RunnerUITests.m rename to dev/e2e_app/ios/RunnerUITests/RunnerUITests.m diff --git a/packages/patrol/example/ios/fastlane/Appfile b/dev/e2e_app/ios/fastlane/Appfile similarity index 100% rename from packages/patrol/example/ios/fastlane/Appfile rename to dev/e2e_app/ios/fastlane/Appfile diff --git a/packages/patrol/example/ios/fastlane/Fastfile b/dev/e2e_app/ios/fastlane/Fastfile similarity index 100% rename from packages/patrol/example/ios/fastlane/Fastfile rename to dev/e2e_app/ios/fastlane/Fastfile diff --git a/packages/patrol/example/lib/keys.dart b/dev/e2e_app/lib/keys.dart similarity index 100% rename from packages/patrol/example/lib/keys.dart rename to dev/e2e_app/lib/keys.dart diff --git a/packages/patrol/example/lib/loading_screen.dart b/dev/e2e_app/lib/loading_screen.dart similarity index 100% rename from packages/patrol/example/lib/loading_screen.dart rename to dev/e2e_app/lib/loading_screen.dart diff --git a/packages/patrol/example/lib/location_screen.dart b/dev/e2e_app/lib/location_screen.dart similarity index 100% rename from packages/patrol/example/lib/location_screen.dart rename to dev/e2e_app/lib/location_screen.dart diff --git a/packages/patrol/example/lib/main.dart b/dev/e2e_app/lib/main.dart similarity index 100% rename from packages/patrol/example/lib/main.dart rename to dev/e2e_app/lib/main.dart diff --git a/packages/patrol/example/lib/notifications_screen.dart b/dev/e2e_app/lib/notifications_screen.dart similarity index 100% rename from packages/patrol/example/lib/notifications_screen.dart rename to dev/e2e_app/lib/notifications_screen.dart diff --git a/packages/patrol/example/lib/overlay_screen.dart b/dev/e2e_app/lib/overlay_screen.dart similarity index 100% rename from packages/patrol/example/lib/overlay_screen.dart rename to dev/e2e_app/lib/overlay_screen.dart diff --git a/packages/patrol/example/lib/permissions_screen.dart b/dev/e2e_app/lib/permissions_screen.dart similarity index 100% rename from packages/patrol/example/lib/permissions_screen.dart rename to dev/e2e_app/lib/permissions_screen.dart diff --git a/packages/patrol/example/lib/scrolling_screen.dart b/dev/e2e_app/lib/scrolling_screen.dart similarity index 100% rename from packages/patrol/example/lib/scrolling_screen.dart rename to dev/e2e_app/lib/scrolling_screen.dart diff --git a/packages/patrol/example/lib/webview_screen.dart b/dev/e2e_app/lib/webview_screen.dart similarity index 100% rename from packages/patrol/example/lib/webview_screen.dart rename to dev/e2e_app/lib/webview_screen.dart diff --git a/dev/e2e_app/pubspec.lock b/dev/e2e_app/pubspec.lock new file mode 100644 index 000000000..1ad8eeeb6 --- /dev/null +++ b/dev/e2e_app/pubspec.lock @@ -0,0 +1,689 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 + url: "https://pub.dev" + source: hosted + version: "64.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" + url: "https://pub.dev" + source: hosted + version: "6.2.0" + analyzer_plugin: + dependency: transitive + description: + name: analyzer_plugin + sha256: "9661b30b13a685efaee9f02e5d01ed9f2b423bd889d28a304d02d704aee69161" + url: "https://pub.dev" + source: hosted + version: "0.11.3" + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + characters: + dependency: transitive + description: + name: characters + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" + source: hosted + version: "2.0.3" + ci: + dependency: transitive + description: + name: ci + sha256: "145d095ce05cddac4d797a158bc4cf3b6016d1fe63d8c3d2fbd7212590adca13" + url: "https://pub.dev" + source: hosted + version: "0.1.0" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 + url: "https://pub.dev" + source: hosted + version: "0.4.0" + clock: + dependency: transitive + description: + name: clock + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" + source: hosted + version: "1.1.1" + collection: + dependency: transitive + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + crypto: + dependency: transitive + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" + source: hosted + version: "3.0.3" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d + url: "https://pub.dev" + source: hosted + version: "1.0.6" + custom_lint: + dependency: transitive + description: + name: custom_lint + sha256: "198ec6b8e084d22f508a76556c9afcfb71706ad3f42b083fe0ee923351a96d90" + url: "https://pub.dev" + source: hosted + version: "0.5.7" + custom_lint_builder: + dependency: transitive + description: + name: custom_lint_builder + sha256: dfcfa987d2bd9d0ba751ef4bdef0f6c1aa0062f2a67fe716fd5f3f8b709d6418 + url: "https://pub.dev" + source: hosted + version: "0.5.7" + custom_lint_core: + dependency: transitive + description: + name: custom_lint_core + sha256: f84c3fe2f27ef3b8831953e477e59d4a29c2952623f9eac450d7b40d9cdd94cc + url: "https://pub.dev" + source: hosted + version: "0.5.7" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "40ae61a5d43feea6d24bd22c0537a6629db858963b99b4bc1c3db80676f32368" + url: "https://pub.dev" + source: hosted + version: "2.3.4" + dbus: + dependency: transitive + description: + name: dbus + sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" + url: "https://pub.dev" + source: hosted + version: "0.7.10" + equatable: + dependency: transitive + description: + name: equatable + sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 + url: "https://pub.dev" + source: hosted + version: "2.0.5" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + file: + dependency: transitive + description: + name: file + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_local_notifications: + dependency: "direct main" + description: + name: flutter_local_notifications + sha256: "6d11ea777496061e583623aaf31923f93a9409ef8fcaeeefdd6cd78bf4fe5bb3" + url: "https://pub.dev" + source: hosted + version: "16.1.0" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + sha256: "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03" + url: "https://pub.dev" + source: hosted + version: "4.0.0+1" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + sha256: "7cf643d6d5022f3baed0be777b0662cce5919c0a7b86e700299f22dc4ae660ef" + url: "https://pub.dev" + source: hosted + version: "7.0.0+1" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_timezone: + dependency: "direct main" + description: + name: flutter_timezone + sha256: "06b35132c98fa188db3c4b654b7e1af7ccd01dfe12a004d58be423357605fb24" + url: "https://pub.dev" + source: hosted + version: "1.0.8" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + freezed_annotation: + dependency: transitive + description: + name: freezed_annotation + sha256: c3fd9336eb55a38cc1bbd79ab17573113a8deccd0ecbbf926cca3c62803b5c2d + url: "https://pub.dev" + source: hosted + version: "2.4.1" + geolocator: + dependency: "direct main" + description: + name: geolocator + sha256: e946395fc608842bb2f6c914807e9183f86f3cb787f6b8f832753e5251036f02 + url: "https://pub.dev" + source: hosted + version: "10.1.0" + geolocator_android: + dependency: transitive + description: + name: geolocator_android + sha256: "741579fa6c9e412984d2bdb2fbaa54e3c3f7587c60aeacfe6e058358a11f40f8" + url: "https://pub.dev" + source: hosted + version: "4.4.0" + geolocator_apple: + dependency: transitive + description: + name: geolocator_apple + sha256: ab90ae811c42ec2f6021e01eca71df00dee6ff1e69d2c2dafd4daeb0b793f73d + url: "https://pub.dev" + source: hosted + version: "2.3.2" + geolocator_platform_interface: + dependency: transitive + description: + name: geolocator_platform_interface + sha256: "6c8d494d6948757c56720b778af742f6973f31fca1f702a7539b8917e4a2468a" + url: "https://pub.dev" + source: hosted + version: "4.2.0" + geolocator_web: + dependency: transitive + description: + name: geolocator_web + sha256: "59083f7e0871b78299918d92bf930a14377f711d2d1156c558cd5ebae6c20d58" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + geolocator_windows: + dependency: transitive + description: + name: geolocator_windows + sha256: a92fae29779d5c6dc60e8411302f5221ade464968fe80a36d330e80a71f087af + url: "https://pub.dev" + source: hosted + version: "0.2.2" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + hotreloader: + dependency: transitive + description: + name: hotreloader + sha256: "94ee21a60ea2836500799f3af035dc3212b1562027f1e0031c14e087f0231449" + url: "https://pub.dev" + source: hosted + version: "4.1.0" + http: + dependency: transitive + description: + name: http + sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + url: "https://pub.dev" + source: hosted + version: "4.8.1" + leancode_lint: + dependency: "direct dev" + description: + name: leancode_lint + sha256: "1e99cba16e084a18ce966a7df270d6da6a11ab236caac716aa1fb2359eb277eb" + url: "https://pub.dev" + source: hosted + version: "7.0.0+1" + logging: + dependency: transitive + description: + name: logging + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" + source: hosted + version: "0.12.16" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" + source: hosted + version: "0.5.0" + meta: + dependency: transitive + description: + name: meta + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + url: "https://pub.dev" + source: hosted + version: "1.10.0" + package_config: + dependency: transitive + description: + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + path: + dependency: transitive + description: + name: path + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" + source: hosted + version: "1.8.3" + patrol: + dependency: "direct dev" + description: + path: "../../packages/patrol" + relative: true + source: path + version: "3.0.3" + patrol_finders: + dependency: transitive + description: + name: patrol_finders + sha256: "909a5c28ba1730e5e1e06e06ec78f4ccc49f7e211f3a0919adac552841df19ee" + url: "https://pub.dev" + source: hosted + version: "2.0.1+1" + permission_handler: + dependency: "direct main" + description: + name: permission_handler + sha256: bc56bfe9d3f44c3c612d8d393bd9b174eb796d706759f9b495ac254e4294baa5 + url: "https://pub.dev" + source: hosted + version: "10.4.5" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: "59c6322171c29df93a22d150ad95f3aa19ed86542eaec409ab2691b8f35f9a47" + url: "https://pub.dev" + source: hosted + version: "10.3.6" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5" + url: "https://pub.dev" + source: hosted + version: "9.1.4" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4" + url: "https://pub.dev" + source: hosted + version: "3.12.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098 + url: "https://pub.dev" + source: hosted + version: "0.1.3" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: eeb2d1428ee7f4170e2bd498827296a18d4e7fc462b71727d111c0ac7707cfa6 + url: "https://pub.dev" + source: hosted + version: "6.0.1" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8 + url: "https://pub.dev" + source: hosted + version: "2.1.7" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 + url: "https://pub.dev" + source: hosted + version: "1.2.3" + rxdart: + dependency: transitive + description: + name: rxdart + sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" + url: "https://pub.dev" + source: hosted + version: "0.27.7" + shelf: + dependency: transitive + description: + name: shelf + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + url: "https://pub.dev" + source: hosted + version: "1.4.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + url: "https://pub.dev" + source: hosted + version: "0.6.1" + timezone: + dependency: "direct main" + description: + name: timezone + sha256: "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0" + url: "https://pub.dev" + source: hosted + version: "0.9.2" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + uuid: + dependency: transitive + description: + name: uuid + sha256: df5a4d8f22ee4ccd77f8839ac7cb274ebc11ef9adcce8b92be14b797fe889921 + url: "https://pub.dev" + source: hosted + version: "4.2.1" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + url: "https://pub.dev" + source: hosted + version: "13.0.0" + watcher: + dependency: transitive + description: + name: watcher + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + url: "https://pub.dev" + source: hosted + version: "0.3.0" + webview_flutter: + dependency: "direct main" + description: + name: webview_flutter + sha256: "42393b4492e629aa3a88618530a4a00de8bb46e50e7b3993fedbfdc5352f0dbf" + url: "https://pub.dev" + source: hosted + version: "4.4.2" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: "8326ee235f87605a2bfc444a4abc897f4abc78d83f054ba7d3d1074ce82b4fbf" + url: "https://pub.dev" + source: hosted + version: "3.12.1" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: adb8c03c2be231bea5a8ed0e9039e9d18dbb049603376beaefa15393ede468a5 + url: "https://pub.dev" + source: hosted + version: "2.7.0" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: accdaaa49a2aca2dc3c3230907988954cdd23fed0a19525d6c9789d380f4dc76 + url: "https://pub.dev" + source: hosted + version: "3.9.4" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + xml: + dependency: transitive + description: + name: xml + sha256: af5e77e9b83f2f4adc5d3f0a4ece1c7f45a2467b695c2540381bac793e34e556 + url: "https://pub.dev" + source: hosted + version: "6.4.2" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" +sdks: + dart: ">=3.2.0 <4.0.0" + flutter: ">=3.16.0" diff --git a/packages/patrol/example/pubspec.yaml b/dev/e2e_app/pubspec.yaml similarity index 93% rename from packages/patrol/example/pubspec.yaml rename to dev/e2e_app/pubspec.yaml index 47b5ef4bc..e1a6acf69 100644 --- a/packages/patrol/example/pubspec.yaml +++ b/dev/e2e_app/pubspec.yaml @@ -1,4 +1,4 @@ -name: patrol_example +name: example description: A new Flutter project. publish_to: none version: 1.0.0+1 @@ -23,7 +23,7 @@ dev_dependencies: sdk: flutter leancode_lint: ^7.0.0+1 patrol: - path: ../ + path: ../../packages/patrol flutter: uses-material-design: true diff --git a/packages/patrol/example/run_android_testlab b/dev/e2e_app/run_android_testlab similarity index 100% rename from packages/patrol/example/run_android_testlab rename to dev/e2e_app/run_android_testlab diff --git a/packages/patrol/example/run_ios_testlab b/dev/e2e_app/run_ios_testlab similarity index 100% rename from packages/patrol/example/run_ios_testlab rename to dev/e2e_app/run_ios_testlab diff --git a/packages/patrol_devtools_extension/pubspec.lock b/packages/patrol_devtools_extension/pubspec.lock index 902b482f0..0094da241 100644 --- a/packages/patrol_devtools_extension/pubspec.lock +++ b/packages/patrol_devtools_extension/pubspec.lock @@ -122,29 +122,29 @@ packages: source: hosted version: "1.0.6" custom_lint: - dependency: transitive + dependency: "direct dev" description: name: custom_lint - sha256: f9a828b696930cf8307f9a3617b2b65c9b370e484dc845d69100cadb77506778 + sha256: "198ec6b8e084d22f508a76556c9afcfb71706ad3f42b083fe0ee923351a96d90" url: "https://pub.dev" source: hosted - version: "0.5.6" + version: "0.5.7" custom_lint_builder: dependency: transitive description: name: custom_lint_builder - sha256: c6f656a4d83385fc0656ae60410ed06bb382898c45627bfb8bbaa323aea97883 + sha256: dfcfa987d2bd9d0ba751ef4bdef0f6c1aa0062f2a67fe716fd5f3f8b709d6418 url: "https://pub.dev" source: hosted - version: "0.5.6" + version: "0.5.7" custom_lint_core: dependency: transitive description: name: custom_lint_core - sha256: e20a67737adcf0cf2465e734dd624af535add11f9edd1f2d444909b5b0749650 + sha256: f84c3fe2f27ef3b8831953e477e59d4a29c2952623f9eac450d7b40d9cdd94cc url: "https://pub.dev" source: hosted - version: "0.5.6" + version: "0.5.7" dart_style: dependency: transitive description: diff --git a/packages/patrol_gen/pubspec.lock b/packages/patrol_gen/pubspec.lock index 8651b828f..befcafc6c 100644 --- a/packages/patrol_gen/pubspec.lock +++ b/packages/patrol_gen/pubspec.lock @@ -98,29 +98,29 @@ packages: source: hosted version: "3.0.3" custom_lint: - dependency: transitive + dependency: "direct dev" description: name: custom_lint - sha256: f9a828b696930cf8307f9a3617b2b65c9b370e484dc845d69100cadb77506778 + sha256: "198ec6b8e084d22f508a76556c9afcfb71706ad3f42b083fe0ee923351a96d90" url: "https://pub.dev" source: hosted - version: "0.5.6" + version: "0.5.7" custom_lint_builder: dependency: transitive description: name: custom_lint_builder - sha256: c6f656a4d83385fc0656ae60410ed06bb382898c45627bfb8bbaa323aea97883 + sha256: dfcfa987d2bd9d0ba751ef4bdef0f6c1aa0062f2a67fe716fd5f3f8b709d6418 url: "https://pub.dev" source: hosted - version: "0.5.6" + version: "0.5.7" custom_lint_core: dependency: transitive description: name: custom_lint_core - sha256: e20a67737adcf0cf2465e734dd624af535add11f9edd1f2d444909b5b0749650 + sha256: f84c3fe2f27ef3b8831953e477e59d4a29c2952623f9eac450d7b40d9cdd94cc url: "https://pub.dev" source: hosted - version: "0.5.6" + version: "0.5.7" dart_style: dependency: "direct main" description: From 83caf10146fc5704fedc9d65936bdb0fc486029e Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Thu, 23 Nov 2023 11:59:45 +0100 Subject: [PATCH 02/17] remove unused dart_test.yaml --- dev/e2e_app/dart_test.yaml | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 dev/e2e_app/dart_test.yaml diff --git a/dev/e2e_app/dart_test.yaml b/dev/e2e_app/dart_test.yaml deleted file mode 100644 index c3374e1cc..000000000 --- a/dev/e2e_app/dart_test.yaml +++ /dev/null @@ -1,3 +0,0 @@ -tags: - android: - ios: From e7a6c06b8b94c9ce01e20f2af0a00feeb7747d1a Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Thu, 23 Nov 2023 12:14:11 +0100 Subject: [PATCH 03/17] remove not used --coverage flag to `dart test` --- .github/workflows/patrol-prepare.yaml | 2 +- .github/workflows/patrol_cli-prepare.yaml | 4 +--- .github/workflows/patrol_devtools_extension-prepare.yaml | 2 +- .github/workflows/patrol_finders-prepare.yaml | 2 +- dev/e2e_app/devtools_options.yaml | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/patrol-prepare.yaml b/.github/workflows/patrol-prepare.yaml index 57b24706d..9148dd27e 100644 --- a/.github/workflows/patrol-prepare.yaml +++ b/.github/workflows/patrol-prepare.yaml @@ -224,7 +224,7 @@ jobs: - name: flutter test if: success() || failure() - run: flutter test --coverage + run: flutter test - name: Run analyzer if: success() || failure() diff --git a/.github/workflows/patrol_cli-prepare.yaml b/.github/workflows/patrol_cli-prepare.yaml index 322afdb3d..ee791f4b4 100644 --- a/.github/workflows/patrol_cli-prepare.yaml +++ b/.github/workflows/patrol_cli-prepare.yaml @@ -45,9 +45,7 @@ jobs: run: patrol - name: dart test - run: | - dart test --coverage coverage - dart run coverage:format_coverage --lcov --in coverage --out coverage/lcov.info --report-on lib + run: dart test - name: Run analyzer if: success() || failure() diff --git a/.github/workflows/patrol_devtools_extension-prepare.yaml b/.github/workflows/patrol_devtools_extension-prepare.yaml index 734a557fa..a75877987 100644 --- a/.github/workflows/patrol_devtools_extension-prepare.yaml +++ b/.github/workflows/patrol_devtools_extension-prepare.yaml @@ -36,7 +36,7 @@ jobs: - name: flutter test if: success() || failure() - run: flutter test --coverage + run: flutter test - name: Run analyzer if: success() || failure() diff --git a/.github/workflows/patrol_finders-prepare.yaml b/.github/workflows/patrol_finders-prepare.yaml index 780131fb8..928ca5fe3 100644 --- a/.github/workflows/patrol_finders-prepare.yaml +++ b/.github/workflows/patrol_finders-prepare.yaml @@ -36,7 +36,7 @@ jobs: - name: flutter test if: success() || failure() - run: flutter test --coverage + run: flutter test - name: Run analyzer if: success() || failure() diff --git a/dev/e2e_app/devtools_options.yaml b/dev/e2e_app/devtools_options.yaml index 7e9b8c7c0..59984d36c 100644 --- a/dev/e2e_app/devtools_options.yaml +++ b/dev/e2e_app/devtools_options.yaml @@ -1,2 +1,2 @@ extensions: - - patrol: true \ No newline at end of file + - patrol: true From 8ac1367aae37a0305307ebf4e746f085aca645d4 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Thu, 23 Nov 2023 12:21:14 +0100 Subject: [PATCH 04/17] temporary: run `test-*` workflows on pull_request --- .github/workflows/test-android-device.yaml | 1 + .github/workflows/test-android-emulator-webview.yaml | 1 + .github/workflows/test-android-emulator.yaml | 1 + .github/workflows/test-ios-device.yaml | 1 + .github/workflows/test-ios-simulator-webview.yaml | 1 + .github/workflows/test-ios-simulator.yaml | 1 + 6 files changed, 6 insertions(+) diff --git a/.github/workflows/test-android-device.yaml b/.github/workflows/test-android-device.yaml index e9398cde4..4a832e27a 100644 --- a/.github/workflows/test-android-device.yaml +++ b/.github/workflows/test-android-device.yaml @@ -4,6 +4,7 @@ on: workflow_dispatch: schedule: - cron: '30 21 * * *' + pull_request: jobs: run_tests: diff --git a/.github/workflows/test-android-emulator-webview.yaml b/.github/workflows/test-android-emulator-webview.yaml index 19b138dbe..06e769ad2 100644 --- a/.github/workflows/test-android-emulator-webview.yaml +++ b/.github/workflows/test-android-emulator-webview.yaml @@ -4,6 +4,7 @@ on: workflow_dispatch: schedule: - cron: '0 23 * * *' + pull_request: jobs: run_tests: diff --git a/.github/workflows/test-android-emulator.yaml b/.github/workflows/test-android-emulator.yaml index 71ab8f890..fd9f11e2c 100644 --- a/.github/workflows/test-android-emulator.yaml +++ b/.github/workflows/test-android-emulator.yaml @@ -4,6 +4,7 @@ on: workflow_dispatch: schedule: - cron: '0 */12 * * *' + pull_request: jobs: run_tests: diff --git a/.github/workflows/test-ios-device.yaml b/.github/workflows/test-ios-device.yaml index 53d2f67f6..dd51e528e 100644 --- a/.github/workflows/test-ios-device.yaml +++ b/.github/workflows/test-ios-device.yaml @@ -4,6 +4,7 @@ on: workflow_dispatch: schedule: - cron: '30 21 * * *' + pull_request: jobs: run_tests: diff --git a/.github/workflows/test-ios-simulator-webview.yaml b/.github/workflows/test-ios-simulator-webview.yaml index 6cf1c03b0..798e7932b 100644 --- a/.github/workflows/test-ios-simulator-webview.yaml +++ b/.github/workflows/test-ios-simulator-webview.yaml @@ -4,6 +4,7 @@ on: workflow_dispatch: schedule: - cron: '0 23 * * *' + pull_request: jobs: run_tests: diff --git a/.github/workflows/test-ios-simulator.yaml b/.github/workflows/test-ios-simulator.yaml index 9aab32421..25fc0be09 100644 --- a/.github/workflows/test-ios-simulator.yaml +++ b/.github/workflows/test-ios-simulator.yaml @@ -4,6 +4,7 @@ on: workflow_dispatch: schedule: - cron: '0 */12 * * *' + pull_request: jobs: run_tests: From 672bd394ae327be2cc546c1879b32804ee7ce92c Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Thu, 23 Nov 2023 12:33:55 +0100 Subject: [PATCH 05/17] change `working-directory` of workflows from `packages/patrol/example` to `dev/e2e_app` --- .github/workflows/test-android-device.yaml | 2 +- .github/workflows/test-android-emulator-webview.yaml | 2 +- .github/workflows/test-android-emulator.yaml | 2 +- .github/workflows/test-ios-device.yaml | 10 +++++----- .github/workflows/test-ios-simulator-webview.yaml | 6 +++--- .github/workflows/test-ios-simulator.yaml | 6 +++--- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/test-android-device.yaml b/.github/workflows/test-android-device.yaml index 4a832e27a..cd12f6e60 100644 --- a/.github/workflows/test-android-device.yaml +++ b/.github/workflows/test-android-device.yaml @@ -31,7 +31,7 @@ jobs: defaults: run: - working-directory: packages/patrol/example + working-directory: dev/e2e_app steps: - name: Clone repository diff --git a/.github/workflows/test-android-emulator-webview.yaml b/.github/workflows/test-android-emulator-webview.yaml index 06e769ad2..f28b9cce8 100644 --- a/.github/workflows/test-android-emulator-webview.yaml +++ b/.github/workflows/test-android-emulator-webview.yaml @@ -24,7 +24,7 @@ jobs: defaults: run: - working-directory: packages/patrol/example + working-directory: dev/e2e_app steps: - name: Clone repository diff --git a/.github/workflows/test-android-emulator.yaml b/.github/workflows/test-android-emulator.yaml index fd9f11e2c..067974611 100644 --- a/.github/workflows/test-android-emulator.yaml +++ b/.github/workflows/test-android-emulator.yaml @@ -25,7 +25,7 @@ jobs: defaults: run: - working-directory: packages/patrol/example + working-directory: dev/e2e_app steps: - name: Clone repository diff --git a/.github/workflows/test-ios-device.yaml b/.github/workflows/test-ios-device.yaml index dd51e528e..1744b85c5 100644 --- a/.github/workflows/test-ios-device.yaml +++ b/.github/workflows/test-ios-device.yaml @@ -28,14 +28,14 @@ jobs: defaults: run: - working-directory: packages/patrol/example + working-directory: dev/e2e_app steps: - name: Clone repository uses: actions/checkout@v4 - name: Add current platform to Gemfile - working-directory: packages/patrol/example/ios + working-directory: dev/e2e_app/ios run: bundle lock --add-platform ruby - name: Set up Ruby @@ -43,14 +43,14 @@ jobs: with: ruby-version: '3.2' bundler-cache: true - working-directory: packages/patrol/example/ios + working-directory: dev/e2e_app/ios - name: Set up fastlane - working-directory: packages/patrol/example/ios + working-directory: dev/e2e_app/ios run: bundle install - name: Run fastlane match - working-directory: packages/patrol/example/ios + working-directory: dev/e2e_app/ios env: MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} GIT_USERNAME: ${{ secrets.PATROL_FASTLANE_CERTS_REPO_TOKEN_USERNAME }} diff --git a/.github/workflows/test-ios-simulator-webview.yaml b/.github/workflows/test-ios-simulator-webview.yaml index 798e7932b..c45cd5160 100644 --- a/.github/workflows/test-ios-simulator-webview.yaml +++ b/.github/workflows/test-ios-simulator-webview.yaml @@ -28,7 +28,7 @@ jobs: defaults: run: - working-directory: packages/patrol/example + working-directory: dev/e2e_app steps: - name: Clone repository @@ -127,14 +127,14 @@ jobs: with: name: Logs from ${{ matrix.device_model }} path: | - ${{ github.workspace }}/packages/patrol/example/all_simulator_logs.txt + ${{ github.workspace }}/dev/e2e_app/all_simulator_logs.txt - name: Upload captured video to artifacts if: ${{ (failure() || success()) && contains(fromJson('["success", "failure"]'), steps.tests_step.conclusion) }} uses: actions/upload-artifact@v3 with: name: Captured video from ${{ matrix.device_model }}.mp4 - path: ${{ github.workspace }}/packages/patrol/example/${{ matrix.device_model }}.mp4 + path: ${{ github.workspace }}/dev/e2e_app/${{ matrix.device_model }}.mp4 call_send_slack_message: name: Notify on Slack diff --git a/.github/workflows/test-ios-simulator.yaml b/.github/workflows/test-ios-simulator.yaml index 25fc0be09..fef6e5437 100644 --- a/.github/workflows/test-ios-simulator.yaml +++ b/.github/workflows/test-ios-simulator.yaml @@ -29,7 +29,7 @@ jobs: defaults: run: - working-directory: packages/patrol/example + working-directory: dev/e2e_app steps: - name: Clone repository @@ -144,14 +144,14 @@ jobs: with: name: Logs from ${{ matrix.device_model }} path: | - ${{ github.workspace }}/packages/patrol/example/all_simulator_logs.txt + ${{ github.workspace }}/dev/e2e_app/all_simulator_logs.txt - name: Upload captured video to artifacts if: ${{ (failure() || success()) && contains(fromJson('["success", "failure"]'), steps.tests_step.conclusion) }} uses: actions/upload-artifact@v3 with: name: Captured video from ${{ matrix.device_model }}.mp4 - path: ${{ github.workspace }}/packages/patrol/example/${{ matrix.device_model }}.mp4 + path: ${{ github.workspace }}/dev/e2e_app/${{ matrix.device_model }}.mp4 call_send_slack_message: name: Notify on Slack From 64b2786998264775fd6abb1efa42cdc4f922cf60 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Thu, 23 Nov 2023 12:56:03 +0100 Subject: [PATCH 06/17] move patrol_challenge into this repo with credentials removed --- packages/patrol/example/.gitignore | 47 + packages/patrol/example/README.md | 26 + packages/patrol/example/analysis_options.yaml | 1 + packages/patrol/example/android/.gitignore | 13 + .../patrol/example/android/app/build.gradle | 92 ++ .../patrol_challenge/MainActivityTest.java | 31 + .../android/app/src/debug/AndroidManifest.xml | 7 + .../android/app/src/main/AndroidManifest.xml | 34 + .../leancode/patrol/challenge/MainActivity.kt | 5 + .../res/drawable-hdpi/android12splash.png | Bin 0 -> 7133 bytes .../app/src/main/res/drawable-hdpi/splash.png | Bin 0 -> 7133 bytes .../res/drawable-mdpi/android12splash.png | Bin 0 -> 2785 bytes .../app/src/main/res/drawable-mdpi/splash.png | Bin 0 -> 2785 bytes .../drawable-night-hdpi/android12splash.png | Bin 0 -> 7133 bytes .../drawable-night-mdpi/android12splash.png | Bin 0 -> 2785 bytes .../drawable-night-xhdpi/android12splash.png | Bin 0 -> 7954 bytes .../drawable-night-xxhdpi/android12splash.png | Bin 0 -> 20184 bytes .../android12splash.png | Bin 0 -> 21351 bytes .../src/main/res/drawable-v21/background.png | Bin 0 -> 69 bytes .../res/drawable-v21/launch_background.xml | 9 + .../res/drawable-xhdpi/android12splash.png | Bin 0 -> 7954 bytes .../src/main/res/drawable-xhdpi/splash.png | Bin 0 -> 7954 bytes .../res/drawable-xxhdpi/android12splash.png | Bin 0 -> 20184 bytes .../src/main/res/drawable-xxhdpi/splash.png | Bin 0 -> 20184 bytes .../res/drawable-xxxhdpi/android12splash.png | Bin 0 -> 21351 bytes .../src/main/res/drawable-xxxhdpi/splash.png | Bin 0 -> 21351 bytes .../app/src/main/res/drawable/app_icon.png | Bin 0 -> 2986 bytes .../app/src/main/res/drawable/background.png | Bin 0 -> 69 bytes .../main/res/drawable/launch_background.xml | 9 + .../main/res/drawable/notification_icon.png | Bin 0 -> 3731 bytes .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../main/res/mipmap-hdpi/launcher_icon.png | Bin 0 -> 1507 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../main/res/mipmap-mdpi/launcher_icon.png | Bin 0 -> 1081 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xhdpi/launcher_icon.png | Bin 0 -> 1945 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxhdpi/launcher_icon.png | Bin 0 -> 2495 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../main/res/mipmap-xxxhdpi/launcher_icon.png | Bin 0 -> 3139 bytes .../src/main/res/values-night-v31/styles.xml | 21 + .../app/src/main/res/values-night/styles.xml | 18 + .../app/src/main/res/values-v31/styles.xml | 21 + .../app/src/main/res/values/colors.xml | 3 + .../app/src/main/res/values/styles.xml | 22 + .../app/src/profile/AndroidManifest.xml | 7 + packages/patrol/example/android/build.gradle | 32 + .../patrol/example/android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + .../patrol/example/android/settings.gradle | 11 + .../example/assets/fonts/Inter-Medium.ttf | Bin 0 -> 314712 bytes .../example/assets/fonts/Inter-SemiBold.ttf | Bin 0 -> 315756 bytes .../patrol/example/assets/icon/app_icon.png | Bin 0 -> 2986 bytes .../patrol/example/assets/icon/circle_x.svg | 3 + .../example/assets/icon/notification_icon.png | Bin 0 -> 3731 bytes .../example/assets/icon/splash_icon.png | Bin 0 -> 16914 bytes .../patrol/example/assets/image/confetti.svg | 134 ++ .../example/assets/image/fluttercon_logo.svg | 20 + .../example/assets/image/leancode_logo.svg | 19 + .../example/assets/image/patrol_logo.svg | 29 + .../example/integration_test/done_test.dart | 71 + .../example/integration_test/empty_test.dart | 19 + packages/patrol/example/ios/.gitignore | 34 + .../ios/Flutter/AppFrameworkInfo.plist | 26 + .../patrol/example/ios/Flutter/Debug.xcconfig | 2 + .../example/ios/Flutter/Release.xcconfig | 2 + packages/patrol/example/ios/Podfile | 53 + packages/patrol/example/ios/Podfile.lock | 201 +++ .../ios/Runner.xcodeproj/project.pbxproj | 1362 +++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/dev.xcscheme | 89 ++ .../xcshareddata/xcschemes/prod.xcscheme | 97 ++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../example/ios/Runner/AppDelegate.swift | 14 + .../AppIcon.appiconset/Contents.json | 122 ++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 45438 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 492 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 929 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1338 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 745 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1243 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 1790 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 929 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 1609 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 2170 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 0 -> 1143 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 0 -> 1999 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 0 -> 1296 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 0 -> 2134 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 2170 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 3030 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 0 -> 1507 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 0 -> 2495 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 1613 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 2677 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 2880 bytes .../LaunchBackground.imageset/Contents.json | 21 + .../LaunchBackground.imageset/background.png | Bin 0 -> 69 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 2785 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 7954 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 20184 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 44 + .../ios/Runner/Base.lproj/Main.storyboard | 26 + packages/patrol/example/ios/Runner/Info.plist | 71 + .../ios/Runner/Runner-Bridging-Header.h | 1 + .../example/ios/Runner/Runner.entitlements | 8 + .../example/ios/RunnerUITests/RunnerUITests.m | 5 + .../patrol/example/lib/cubit/auth_cubit.dart | 77 + .../patrol/example/lib/firebase_options.dart | 70 + .../lib/handlers/notification_handler.dart | 123 ++ .../lib/handlers/permission_handler.dart | 13 + packages/patrol/example/lib/main.dart | 87 ++ .../pages/google_sign_in/profile_page.dart | 82 + .../patrol/example/lib/pages/home_page.dart | 87 ++ .../notification_success_page.dart | 87 ++ .../example/lib/pages/quiz/error_page.dart | 33 + .../example/lib/pages/quiz/form_page.dart | 390 +++++ .../example/lib/pages/quiz/question_page.dart | 279 ++++ .../example/lib/pages/quiz/success_page.dart | 48 + .../example/lib/pages/quiz/welcome_page.dart | 50 + .../ui/components/button/elevated_button.dart | 84 + .../lib/ui/components/button/text_button.dart | 34 + .../example/lib/ui/components/scaffold.dart | 54 + .../example/lib/ui/components/text_field.dart | 81 + packages/patrol/example/lib/ui/icons.dart | 6 + packages/patrol/example/lib/ui/images.dart | 17 + .../patrol/example/lib/ui/style/colors.dart | 15 + .../example/lib/ui/style/test_style.dart | 46 + .../example/lib/ui/widgets/logos_hero.dart | 20 + .../example/lib/ui/widgets/top_bar.dart | 26 + .../patrol/example/lib/ui/widgets/utils.dart | 8 + packages/patrol/example/pubspec.yaml | 67 + packages/patrol/example/test/widget_test.dart | 29 + 139 files changed, 4880 insertions(+) create mode 100644 packages/patrol/example/.gitignore create mode 100644 packages/patrol/example/README.md create mode 100644 packages/patrol/example/analysis_options.yaml create mode 100644 packages/patrol/example/android/.gitignore create mode 100644 packages/patrol/example/android/app/build.gradle create mode 100644 packages/patrol/example/android/app/src/androidTest/java/com/example/patrol_challenge/MainActivityTest.java create mode 100644 packages/patrol/example/android/app/src/debug/AndroidManifest.xml create mode 100644 packages/patrol/example/android/app/src/main/AndroidManifest.xml create mode 100644 packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/challenge/MainActivity.kt create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-hdpi/android12splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-hdpi/splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-mdpi/android12splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-mdpi/splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-night-hdpi/android12splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-night-mdpi/android12splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-night-xhdpi/android12splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-v21/background.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-xhdpi/android12splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-xhdpi/splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-xxhdpi/android12splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-xxhdpi/splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-xxxhdpi/android12splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable-xxxhdpi/splash.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable/app_icon.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable/background.png create mode 100644 packages/patrol/example/android/app/src/main/res/drawable/launch_background.xml create mode 100644 packages/patrol/example/android/app/src/main/res/drawable/notification_icon.png create mode 100644 packages/patrol/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 packages/patrol/example/android/app/src/main/res/mipmap-hdpi/launcher_icon.png create mode 100644 packages/patrol/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 packages/patrol/example/android/app/src/main/res/mipmap-mdpi/launcher_icon.png create mode 100644 packages/patrol/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 packages/patrol/example/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png create mode 100644 packages/patrol/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 packages/patrol/example/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png create mode 100644 packages/patrol/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 packages/patrol/example/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png create mode 100644 packages/patrol/example/android/app/src/main/res/values-night-v31/styles.xml create mode 100644 packages/patrol/example/android/app/src/main/res/values-night/styles.xml create mode 100644 packages/patrol/example/android/app/src/main/res/values-v31/styles.xml create mode 100644 packages/patrol/example/android/app/src/main/res/values/colors.xml create mode 100644 packages/patrol/example/android/app/src/main/res/values/styles.xml create mode 100644 packages/patrol/example/android/app/src/profile/AndroidManifest.xml create mode 100644 packages/patrol/example/android/build.gradle create mode 100644 packages/patrol/example/android/gradle.properties create mode 100644 packages/patrol/example/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 packages/patrol/example/android/settings.gradle create mode 100644 packages/patrol/example/assets/fonts/Inter-Medium.ttf create mode 100644 packages/patrol/example/assets/fonts/Inter-SemiBold.ttf create mode 100644 packages/patrol/example/assets/icon/app_icon.png create mode 100644 packages/patrol/example/assets/icon/circle_x.svg create mode 100644 packages/patrol/example/assets/icon/notification_icon.png create mode 100644 packages/patrol/example/assets/icon/splash_icon.png create mode 100644 packages/patrol/example/assets/image/confetti.svg create mode 100644 packages/patrol/example/assets/image/fluttercon_logo.svg create mode 100644 packages/patrol/example/assets/image/leancode_logo.svg create mode 100644 packages/patrol/example/assets/image/patrol_logo.svg create mode 100644 packages/patrol/example/integration_test/done_test.dart create mode 100644 packages/patrol/example/integration_test/empty_test.dart create mode 100644 packages/patrol/example/ios/.gitignore create mode 100644 packages/patrol/example/ios/Flutter/AppFrameworkInfo.plist create mode 100644 packages/patrol/example/ios/Flutter/Debug.xcconfig create mode 100644 packages/patrol/example/ios/Flutter/Release.xcconfig create mode 100644 packages/patrol/example/ios/Podfile create mode 100644 packages/patrol/example/ios/Podfile.lock create mode 100644 packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj create mode 100644 packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme create mode 100644 packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme create mode 100644 packages/patrol/example/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 packages/patrol/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 packages/patrol/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 packages/patrol/example/ios/Runner/AppDelegate.swift create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 packages/patrol/example/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 packages/patrol/example/ios/Runner/Base.lproj/Main.storyboard create mode 100644 packages/patrol/example/ios/Runner/Info.plist create mode 100644 packages/patrol/example/ios/Runner/Runner-Bridging-Header.h create mode 100644 packages/patrol/example/ios/Runner/Runner.entitlements create mode 100644 packages/patrol/example/ios/RunnerUITests/RunnerUITests.m create mode 100644 packages/patrol/example/lib/cubit/auth_cubit.dart create mode 100644 packages/patrol/example/lib/firebase_options.dart create mode 100644 packages/patrol/example/lib/handlers/notification_handler.dart create mode 100644 packages/patrol/example/lib/handlers/permission_handler.dart create mode 100644 packages/patrol/example/lib/main.dart create mode 100644 packages/patrol/example/lib/pages/google_sign_in/profile_page.dart create mode 100644 packages/patrol/example/lib/pages/home_page.dart create mode 100644 packages/patrol/example/lib/pages/push_notification/notification_success_page.dart create mode 100644 packages/patrol/example/lib/pages/quiz/error_page.dart create mode 100644 packages/patrol/example/lib/pages/quiz/form_page.dart create mode 100644 packages/patrol/example/lib/pages/quiz/question_page.dart create mode 100644 packages/patrol/example/lib/pages/quiz/success_page.dart create mode 100644 packages/patrol/example/lib/pages/quiz/welcome_page.dart create mode 100644 packages/patrol/example/lib/ui/components/button/elevated_button.dart create mode 100644 packages/patrol/example/lib/ui/components/button/text_button.dart create mode 100644 packages/patrol/example/lib/ui/components/scaffold.dart create mode 100644 packages/patrol/example/lib/ui/components/text_field.dart create mode 100644 packages/patrol/example/lib/ui/icons.dart create mode 100644 packages/patrol/example/lib/ui/images.dart create mode 100644 packages/patrol/example/lib/ui/style/colors.dart create mode 100644 packages/patrol/example/lib/ui/style/test_style.dart create mode 100644 packages/patrol/example/lib/ui/widgets/logos_hero.dart create mode 100644 packages/patrol/example/lib/ui/widgets/top_bar.dart create mode 100644 packages/patrol/example/lib/ui/widgets/utils.dart create mode 100644 packages/patrol/example/pubspec.yaml create mode 100644 packages/patrol/example/test/widget_test.dart diff --git a/packages/patrol/example/.gitignore b/packages/patrol/example/.gitignore new file mode 100644 index 000000000..0c8de0d80 --- /dev/null +++ b/packages/patrol/example/.gitignore @@ -0,0 +1,47 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release + +# Patrol related +integration_test/test_bundle.dart diff --git a/packages/patrol/example/README.md b/packages/patrol/example/README.md new file mode 100644 index 000000000..784357248 --- /dev/null +++ b/packages/patrol/example/README.md @@ -0,0 +1,26 @@ +# patrol_challenge + +App with the quiz for Fluttercon + +### Set up + +This project is a simple quiz Flutter app. It uses flavors. + +To run tests: + +``` +dart run patrol test +``` + +### Google credentials + +This app allows the user to sign in with Google. This requires some +configuration, but it's not needed if you don't plan on using this feature. + +**Android** + +Place `google-services.json` in `android/app`. + +**iOS** + +Place `GoogleService-Info.plist` in `ios/Runner`. diff --git a/packages/patrol/example/analysis_options.yaml b/packages/patrol/example/analysis_options.yaml new file mode 100644 index 000000000..4af9cbc42 --- /dev/null +++ b/packages/patrol/example/analysis_options.yaml @@ -0,0 +1 @@ +include: package:leancode_lint/analysis_options.yaml diff --git a/packages/patrol/example/android/.gitignore b/packages/patrol/example/android/.gitignore new file mode 100644 index 000000000..6f568019d --- /dev/null +++ b/packages/patrol/example/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/packages/patrol/example/android/app/build.gradle b/packages/patrol/example/android/app/build.gradle new file mode 100644 index 000000000..d670c8f32 --- /dev/null +++ b/packages/patrol/example/android/app/build.gradle @@ -0,0 +1,92 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion 33 + ndkVersion flutter.ndkVersion + + namespace "pl.leancode.patrol.challenge" + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + applicationId "pl.leancode.patrol.challenge" + minSdkVersion 21 + targetSdkVersion 33 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + multiDexEnabled true + testInstrumentationRunner "pl.leancode.patrol.PatrolJUnitRunner" + testInstrumentationRunnerArguments clearPackageData: "true" + } + + testOptions { + execution "ANDROIDX_TEST_ORCHESTRATOR" + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } + + flavorDimensions "default" + + productFlavors { + dev { + dimension "default" + resValue "string", "app_name", "DEV Challenge" + applicationIdSuffix ".dev" + } + + prod { + dimension "default" + resValue "string", "app_name", "Challenge" + } + } +} + +flutter { + source '../..' +} + +dependencies { + androidTestUtil 'androidx.test:orchestrator:1.4.2' +} diff --git a/packages/patrol/example/android/app/src/androidTest/java/com/example/patrol_challenge/MainActivityTest.java b/packages/patrol/example/android/app/src/androidTest/java/com/example/patrol_challenge/MainActivityTest.java new file mode 100644 index 000000000..9c59d44f4 --- /dev/null +++ b/packages/patrol/example/android/app/src/androidTest/java/com/example/patrol_challenge/MainActivityTest.java @@ -0,0 +1,31 @@ +package pl.leancode.patrol.challenge; + +import androidx.test.platform.app.InstrumentationRegistry; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; +import pl.leancode.patrol.PatrolJUnitRunner; + +@RunWith(Parameterized.class) +public class MainActivityTest { + @Parameters(name = "{0}") + public static Object[] testCases() { + PatrolJUnitRunner instrumentation = (PatrolJUnitRunner) InstrumentationRegistry.getInstrumentation(); + instrumentation.setUp(MainActivity.class); + instrumentation.waitForPatrolAppService(); + return instrumentation.listDartTests(); + } + + public MainActivityTest(String dartTestName) { + this.dartTestName = dartTestName; + } + + private final String dartTestName; + + @Test + public void runDartTest() { + PatrolJUnitRunner instrumentation = (PatrolJUnitRunner) InstrumentationRegistry.getInstrumentation(); + instrumentation.runDartTest(dartTestName); + } +} diff --git a/packages/patrol/example/android/app/src/debug/AndroidManifest.xml b/packages/patrol/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/packages/patrol/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/patrol/example/android/app/src/main/AndroidManifest.xml b/packages/patrol/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..4e9f6487f --- /dev/null +++ b/packages/patrol/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + diff --git a/packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/challenge/MainActivity.kt b/packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/challenge/MainActivity.kt new file mode 100644 index 000000000..c06cbd716 --- /dev/null +++ b/packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/challenge/MainActivity.kt @@ -0,0 +1,5 @@ +package pl.leancode.patrol.challenge + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() diff --git a/packages/patrol/example/android/app/src/main/res/drawable-hdpi/android12splash.png b/packages/patrol/example/android/app/src/main/res/drawable-hdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..e10a17b88748fcb4edb1b8479b673f5ca696c83a GIT binary patch literal 7133 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 G!v6uY4fx9d literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-hdpi/splash.png b/packages/patrol/example/android/app/src/main/res/drawable-hdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..e10a17b88748fcb4edb1b8479b673f5ca696c83a GIT binary patch literal 7133 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 G!v6uY4fx9d literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-mdpi/android12splash.png b/packages/patrol/example/android/app/src/main/res/drawable-mdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..e94aac8ee517950cabca052561cf9083a94e7432 GIT binary patch literal 2785 zcmeHJ`B&207DvPs%^}N|rUkv(%PEfSSXP0d0w?K)BB zkjo(j#~jN{Op_bFO3ERJ9MUua^AZ~Od*53A^4@yu{R8)hv({PX?7j9r`+WBPd@?-U zofPHw$%8;3MHgp#FAzw|`L89n12{3;Lox?}{iWE1t&%J`K|b3tO!q)Avs7Ib6a=sc$_cKFv=7w|_+pcfgG><`t$ z;Sf?_FjPgwIXM{zhCoyi2pUL=3Xzlh`|3Zd(MF&YaA}eJVCCGB^2SZi0IUZ0H*TzF z3GUWdTi7r3l&?{X=<{@m(^@5KL?HZFc47O$Bs}&k9?);L2wc-4*;-bJZ5VNtxxH47luywBcY`iOC@rC=eRqROrV?Uza zA`Ry?gz^-qnz^d5m71cioz;&n5{vK}#@CgSzZ#lN_*AM_Z3QmY5D<+M#dt<2fLV3fl&T!hnR^aAglSMrC;X zoF>B4(kIc{2TVymw(UpEw?;8C$@Unr!ljic5@=iTW=(%1RH5GX99@ zx>7IHS}w-L>A-O|_i1mwdSA3fSmy-i0N{IY!aDFyTz{bC=7EBE$_-+2?EC} z85A_-T(@OHzbzsp3%O?#OTCV)Z!A>?^Qf2bh7)U}5A(|-C$YS5iIwi%1$AxTCh>)# zOYH+#RwKLz$Q%CFRoOG;gA&D}b8}ie_hj{ps0+LKI+(jRQasOmvDUy*k|WBZszxm$ zwI<_c|LKboP@J6BVZiTL`BRbGLxdS!?eEplU|QB5Az?eLnztu^pRWuGeuYzHb6&k3 zplKUpWZU&=*{AyGnZ-r063V_lnRkWF?j=xSF9dKt>D4g8>eUe`k(io*8LJEoz#14+ z1Lr7`2kTs2Pc*emQ&5L0Y!i2Nm-iZtF16aY$?Dtv!Ve+{Bf}aUk^6_PNl=yV_F!uto6Rx(_RHipcyX zq`P#rE-l;t4L!5vO|E%GJK8vK>E3vmeUyc6yw62w@&;Z+lKE zs3r?82|DwwX5n9jg2dXhV~`m8x$K!CR0U`22mNAiWl_%A4oHk%MY~m1tZ>P<;Nb?Jd0#Y^L-wvFQ)U)ktR$+h8ero$j;38K6>1H6AT(L|NHyPJu@70) zCt~nVBvie*H>{}>e4bzf z=Fxoeyf^u;2O(zPoPn><0Q2%(7Ntft@kZ};Xo>?Sb$7~11Wv%`5fy6qp#P#2;pjF6 zh1(mE>UkwVtyS2L%V%6oL@Ddz<7Ar~U0yF}03zMBQeeGiuSj`jWdP z;$HE5mt>}rl7E<@;@rHxQ1x!)c%_NkMxyBDg;nv8f=Mkw=cFR=nig&H@lACY^*R_; zdoBfcxCd#o#cR3plX!v~8x;-a?I2;S&D#z4Ly7AUrWBGxU|H0?Kc9?ip1Q@A?or=n zPCqoMUVJ9ZVGF{H$@3Ntax=d}iJ$mVvoLwy&-sxj+!03es_+9&h^6@ZLeN1Uu*3OdDnGU8@u&hUOz>m%FfK5Qe}*A zy1dBOONZS?)|8cP?gSc9YwqC_zLUZn#v#lIeY|oHSHvLn0sA~}+>vcU_c^~4s9~e2 zTl$9bVgon!YXsQOfK=Z>-pWn+4c=bM#QMHZMRYKUqZ#U?<^dR!t~yQ5<^(G=^_ioU5ru#Ji-V;??_+Y zT%G1~?QRz1e4crMAKl*Wp1&2(_UQiK`tOIdtXkQ@nyS(tfOG}9IJn!_*%Ge(32BU5 A4*&oF literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-mdpi/splash.png b/packages/patrol/example/android/app/src/main/res/drawable-mdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..e94aac8ee517950cabca052561cf9083a94e7432 GIT binary patch literal 2785 zcmeHJ`B&207DvPs%^}N|rUkv(%PEfSSXP0d0w?K)BB zkjo(j#~jN{Op_bFO3ERJ9MUua^AZ~Od*53A^4@yu{R8)hv({PX?7j9r`+WBPd@?-U zofPHw$%8;3MHgp#FAzw|`L89n12{3;Lox?}{iWE1t&%J`K|b3tO!q)Avs7Ib6a=sc$_cKFv=7w|_+pcfgG><`t$ z;Sf?_FjPgwIXM{zhCoyi2pUL=3Xzlh`|3Zd(MF&YaA}eJVCCGB^2SZi0IUZ0H*TzF z3GUWdTi7r3l&?{X=<{@m(^@5KL?HZFc47O$Bs}&k9?);L2wc-4*;-bJZ5VNtxxH47luywBcY`iOC@rC=eRqROrV?Uza zA`Ry?gz^-qnz^d5m71cioz;&n5{vK}#@CgSzZ#lN_*AM_Z3QmY5D<+M#dt<2fLV3fl&T!hnR^aAglSMrC;X zoF>B4(kIc{2TVymw(UpEw?;8C$@Unr!ljic5@=iTW=(%1RH5GX99@ zx>7IHS}w-L>A-O|_i1mwdSA3fSmy-i0N{IY!aDFyTz{bC=7EBE$_-+2?EC} z85A_-T(@OHzbzsp3%O?#OTCV)Z!A>?^Qf2bh7)U}5A(|-C$YS5iIwi%1$AxTCh>)# zOYH+#RwKLz$Q%CFRoOG;gA&D}b8}ie_hj{ps0+LKI+(jRQasOmvDUy*k|WBZszxm$ zwI<_c|LKboP@J6BVZiTL`BRbGLxdS!?eEplU|QB5Az?eLnztu^pRWuGeuYzHb6&k3 zplKUpWZU&=*{AyGnZ-r063V_lnRkWF?j=xSF9dKt>D4g8>eUe`k(io*8LJEoz#14+ z1Lr7`2kTs2Pc*emQ&5L0Y!i2Nm-iZtF16aY$?Dtv!Ve+{Bf}aUk^6_PNl=yV_F!uto6Rx(_RHipcyX zq`P#rE-l;t4L!5vO|E%GJK8vK>E3vmeUyc6yw62w@&;Z+lKE zs3r?82|DwwX5n9jg2dXhV~`m8x$K!CR0U`22mNAiWl_%A4oHk%MY~m1tZ>P<;Nb?Jd0#Y^L-wvFQ)U)ktR$+h8ero$j;38K6>1H6AT(L|NHyPJu@70) zCt~nVBvie*H>{}>e4bzf z=Fxoeyf^u;2O(zPoPn><0Q2%(7Ntft@kZ};Xo>?Sb$7~11Wv%`5fy6qp#P#2;pjF6 zh1(mE>UkwVtyS2L%V%6oL@Ddz<7Ar~U0yF}03zMBQeeGiuSj`jWdP z;$HE5mt>}rl7E<@;@rHxQ1x!)c%_NkMxyBDg;nv8f=Mkw=cFR=nig&H@lACY^*R_; zdoBfcxCd#o#cR3plX!v~8x;-a?I2;S&D#z4Ly7AUrWBGxU|H0?Kc9?ip1Q@A?or=n zPCqoMUVJ9ZVGF{H$@3Ntax=d}iJ$mVvoLwy&-sxj+!03es_+9&h^6@ZLeN1Uu*3OdDnGU8@u&hUOz>m%FfK5Qe}*A zy1dBOONZS?)|8cP?gSc9YwqC_zLUZn#v#lIeY|oHSHvLn0sA~}+>vcU_c^~4s9~e2 zTl$9bVgon!YXsQOfK=Z>-pWn+4c=bM#QMHZMRYKUqZ#U?<^dR!t~yQ5<^(G=^_ioU5ru#Ji-V;??_+Y zT%G1~?QRz1e4crMAKl*Wp1&2(_UQiK`tOIdtXkQ@nyS(tfOG}9IJn!_*%Ge(32BU5 A4*&oF literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-night-hdpi/android12splash.png b/packages/patrol/example/android/app/src/main/res/drawable-night-hdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..e10a17b88748fcb4edb1b8479b673f5ca696c83a GIT binary patch literal 7133 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 G!v6uY4fx9d literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-night-mdpi/android12splash.png b/packages/patrol/example/android/app/src/main/res/drawable-night-mdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..e94aac8ee517950cabca052561cf9083a94e7432 GIT binary patch literal 2785 zcmeHJ`B&207DvPs%^}N|rUkv(%PEfSSXP0d0w?K)BB zkjo(j#~jN{Op_bFO3ERJ9MUua^AZ~Od*53A^4@yu{R8)hv({PX?7j9r`+WBPd@?-U zofPHw$%8;3MHgp#FAzw|`L89n12{3;Lox?}{iWE1t&%J`K|b3tO!q)Avs7Ib6a=sc$_cKFv=7w|_+pcfgG><`t$ z;Sf?_FjPgwIXM{zhCoyi2pUL=3Xzlh`|3Zd(MF&YaA}eJVCCGB^2SZi0IUZ0H*TzF z3GUWdTi7r3l&?{X=<{@m(^@5KL?HZFc47O$Bs}&k9?);L2wc-4*;-bJZ5VNtxxH47luywBcY`iOC@rC=eRqROrV?Uza zA`Ry?gz^-qnz^d5m71cioz;&n5{vK}#@CgSzZ#lN_*AM_Z3QmY5D<+M#dt<2fLV3fl&T!hnR^aAglSMrC;X zoF>B4(kIc{2TVymw(UpEw?;8C$@Unr!ljic5@=iTW=(%1RH5GX99@ zx>7IHS}w-L>A-O|_i1mwdSA3fSmy-i0N{IY!aDFyTz{bC=7EBE$_-+2?EC} z85A_-T(@OHzbzsp3%O?#OTCV)Z!A>?^Qf2bh7)U}5A(|-C$YS5iIwi%1$AxTCh>)# zOYH+#RwKLz$Q%CFRoOG;gA&D}b8}ie_hj{ps0+LKI+(jRQasOmvDUy*k|WBZszxm$ zwI<_c|LKboP@J6BVZiTL`BRbGLxdS!?eEplU|QB5Az?eLnztu^pRWuGeuYzHb6&k3 zplKUpWZU&=*{AyGnZ-r063V_lnRkWF?j=xSF9dKt>D4g8>eUe`k(io*8LJEoz#14+ z1Lr7`2kTs2Pc*emQ&5L0Y!i2Nm-iZtF16aY$?Dtv!Ve+{Bf}aUk^6_PNl=yV_F!uto6Rx(_RHipcyX zq`P#rE-l;t4L!5vO|E%GJK8vK>E3vmeUyc6yw62w@&;Z+lKE zs3r?82|DwwX5n9jg2dXhV~`m8x$K!CR0U`22mNAiWl_%A4oHk%MY~m1tZ>P<;Nb?Jd0#Y^L-wvFQ)U)ktR$+h8ero$j;38K6>1H6AT(L|NHyPJu@70) zCt~nVBvie*H>{}>e4bzf z=Fxoeyf^u;2O(zPoPn><0Q2%(7Ntft@kZ};Xo>?Sb$7~11Wv%`5fy6qp#P#2;pjF6 zh1(mE>UkwVtyS2L%V%6oL@Ddz<7Ar~U0yF}03zMBQeeGiuSj`jWdP z;$HE5mt>}rl7E<@;@rHxQ1x!)c%_NkMxyBDg;nv8f=Mkw=cFR=nig&H@lACY^*R_; zdoBfcxCd#o#cR3plX!v~8x;-a?I2;S&D#z4Ly7AUrWBGxU|H0?Kc9?ip1Q@A?or=n zPCqoMUVJ9ZVGF{H$@3Ntax=d}iJ$mVvoLwy&-sxj+!03es_+9&h^6@ZLeN1Uu*3OdDnGU8@u&hUOz>m%FfK5Qe}*A zy1dBOONZS?)|8cP?gSc9YwqC_zLUZn#v#lIeY|oHSHvLn0sA~}+>vcU_c^~4s9~e2 zTl$9bVgon!YXsQOfK=Z>-pWn+4c=bM#QMHZMRYKUqZ#U?<^dR!t~yQ5<^(G=^_ioU5ru#Ji-V;??_+Y zT%G1~?QRz1e4crMAKl*Wp1&2(_UQiK`tOIdtXkQ@nyS(tfOG}9IJn!_*%Ge(32BU5 A4*&oF literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-night-xhdpi/android12splash.png b/packages/patrol/example/android/app/src/main/res/drawable-night-xhdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..c8070949558b81fdc689bf56b7b6b24a06511c0b GIT binary patch literal 7954 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 SQt;IqK`hN|_m!D=T>dXx@NkX* literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png b/packages/patrol/example/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..4c9ae4459567f10332596d578b42268294500934 GIT binary patch literal 20184 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png b/packages/patrol/example/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e59828d56f87bfbb6ff87f48125dc1ce02e82c GIT binary patch literal 21351 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-v21/background.png b/packages/patrol/example/android/app/src/main/res/drawable-v21/background.png new file mode 100644 index 0000000000000000000000000000000000000000..89d9ab9c58f3140cc9f3b6dfcac7471782695c37 GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*|t6Q@sSXJ9zTkd*Qw RQXDAG;OXk;vd$@?2>`2W4$uGq literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/patrol/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000..3cc4948a1 --- /dev/null +++ b/packages/patrol/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/patrol/example/android/app/src/main/res/drawable-xhdpi/android12splash.png b/packages/patrol/example/android/app/src/main/res/drawable-xhdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..c8070949558b81fdc689bf56b7b6b24a06511c0b GIT binary patch literal 7954 zcmeHMc{r5s*MG*oWQj_$jpeJfAd<*1NS16xQHY|*R<_85DMcGbktBw1wrt5(lSEo% zsgW%)NU}F1Gls#;d!~Nx@BRPxUf282`~73C>zU_1&$;h&?$7->pYuG|?QP9PgfvF{Lqa1l5^0Y131rP|6KLFB(!?lX3bKv4(WZpn>b=$#8cQZuTd&TuyNyK%d& z&E|@8=+mpb`y3Us^s!#F%dHy@cM3QCExi}}K=}G@^ib~Ylgp}sUI%$)g)Mh{D#Q&J z`s8Mq2-%xS<#}QEZ@m}vmC{x9w?;uCIe2o*>FvS#@i^H}qH1$rv_l4$7FWNfKyBbierO@HshTohE}rDbuA5a@KiN!)MW}zFFU8pN zj&$WHaL z>K@DgqW7kh?&T+$W=x-%OZXKYl{H;7|B*vhPo2)1hmcKlt<$s|6)zMrN1CU|?3SaJ z8`V*Q+>UQYXns@i7cn1pmwx$sO?Iioj`(7jcuph+>t zb=70FpEInCK7pvZOn=VzlNB4wx_X?c+es*iZd+J9CKG3jH6dqiB|mnX570@-h%R+o zeSxW}w1^KObL~2SHA%8*sVdmo#LmEp#(74z5)-uKVA9%P7&XV5*kx|*lpF0?l|Auk z|KWXE#Y(|y3^Z1oM}=m;K8fKt7ZEk^i#2 zGbiL*^4+`s%y_bhJp*G7+{kBcSVpjpfq5 z6?6A?aYarsk4k7e?T6>^59NU)jz&!*2a~hfFaqM6(K#6l-{q09!*V>B<;L(0|A~z#K{i{_KFgM&2+Wq9#BT-mvC&fC6HdZ2$eH-^NR>U+A} z*6EaAH~S^i)_`F`?ay+e&qw(<=6aIG5%nZIk59Vlw>cAC>Og8DG2+oDa&H`cDr`GL zykV5%PCZ*X&YU$tO^A6n_GkgKlGiI_k*y37?o02uf4QVd+phkv0oGix?@{+>tl8t1 z#O21^xJNZB1>_$k0WOFQ_>dc+aMNDxSRTwgevx&fuZA%Z6SKVZ+0(A>!Fl(P^E1?d zo`_G@O?wP4i*jb{9;9Puq@T~+bniXrXK;MN^zgl!xo_+6s<2UrlLz^63Crl>*NNbV z#7`YJ9rQgbt*2YfB6l%l8)PI24QK=APfZQm$=j7K{FZUd>u-BP8$wWFC5f;_gv znzVih9Im_{F64YK=$Ey>4+bTO&9EldD70dDelmGfsvfv3YO37z!|DoH_>i>n4)ek| zT-L{u`0>2KFL>n8=$z4_y2(ovZKUBUJTSC}fo%WS{rQ27hGC4^%+8AYDQ5y4bG<{z zDA)V=D;qKf8skx<`7(#e#GweMhs1+b>;vEWi_&07lF)v#tU*4@oz*_1!;(&tiy_UC z?=}6f`k~C(R~sx>Rhw@8vPmQx7p_}DwUgD0V)^~L>+%7E{9dbbdPlF?`{DHHw->*W zq&m!F=;Ix_SuZPUsD`YrR<~>B+1#+ejEt>fy{7KV(KBmLyqeZLH`W zt7ULMG9oc>ngpz-Iq(^ zSdsM^Gvf-Mj0`hoM^x*iMm>Ej;H+oUFH#k2*4`9@$5M4_|Kir=nyJ6gIh@TRY%4!{k5{flc4_hOWb3QV(`{vM3_IHPH5h<8OTY~; z1yBQz_{nn@UWe`3>ab}qY`+Wm-mH6&?|@!*HMp>^{!Ag__wAyk|Jez* z+y0e17g_79>msGfXp~QBUP_=XNj3H+38g*CYe z=#-kS`|90xH;i%zc2WnX+=pp2BRw&!x&>jVIc&OVf%Ms8O==_fcGratEVH7sVg`cN z{~mp`aC;gE$@#`qeBgy8*FK7?FD)dI^-64v$=H1AnDqKH5A%cYda%IjU)J~bL_Rsk zUVd|6a&>lKpm#xRkZH9e!;%xQA{xaP7`fqB#QJ2Qp~K5HXM4j{qZS66Dg8&SCdVKq z9mvwY6PZ%dJ7x{iI5ZYX8-7|a#Om^yp+#8zs0y^U=6I_eAZa@m)v=n27d-&n0z*nbEp92Um>siG859m{C>~Z7J$_mH{OS zY=owgiPf`Ax5>~1yZ8%pOWQi)7wYz|{@M|fmdF~uXm_>weZoS{Ul0{Gy~BCmFUhBl zIZoa{b}<-M4eiaySsR5Hqvi?z3LE)Qg4A*&22%BUJ|^t#Qsq^f=OemhRzoW@!U@s) zO=Z1}4?ql;d>=o{!twPDCnmXfFM6lQz4Y-rl%IMqd3P`wWx5%ySjpLd^Ff2|thX5< zN$ux5w>?Q3mFJ4H#d5VvgXDR@qvFLeYkaQ$%zv~;`u%Gt$~lq*!qI9|*Mo#}UyeXG z0u#k@GG{7#)>v4;;(bY-~~-msC^fNwOv`em~9p`Z(g4kd#gxVa#Vnkz@b8JA>}p*)-d|#FN@@R1;=O zl_ZD#x~{g%r{;$#)?`1Igx1snOpjcWRNr#efYNQ^=(}Y?I{wP77GLvT`Zd=#l^JLI zYPZQ5%^iA3L^X`U>Yc`kmsW@5FM5vLG)K;McpgpR&4f@N`f5BgVyu~GE<81; zmG{`+O@YlV4uNv&Y>FT-bD@GhWNJkE3)-hnQB%{d{o{xgiwLcH7Tx z>=9b;Tv}&*U}Sh{|LV`jY|SXI8jaM)8sDy?d{uX0>r zI3lvr!p?wIL#hcI&|vLZZCs9a?er?usw2G9exe8nzu;W|_SBaruFRGtiPNoESQHwq z$W0fhc5cNWYf|x7*0lIGZB{}}Yz5nrad{-NA!wtQ5?V3V_wiFmAyV$fC9%Q(JnzDu z*>&w=8K;i9s~bqlY=9cnesr`a7&TazP zWKw-tSpc>7XujQ0*w%q_BkA|^ACmtEvKHW|{l^Bwy5p7f$y&S2m{(jj8o6`U{?2HW z;LTHY8@fuEdHMvfO2J>@J(Sdb4KU9E&USmyLf3e*r{S^(N_x9#Vynk1jyM0(p2i=w z(N6kxB*)eo!yqs1)v@HxYJXvTpd_IjUAe8i>E>cd1+#=v9}auEvbub?Gc8fQ;B55g zDCslA-#7$@ya~h|Kb6=-ycaiVgA30a*?ipBYq{Lb`>E(hnC2QRM{Pru?KDWHPZJBe zc02OU#!TBxK4)Ao)S>RIHD)JsFbeu9oj*}smo3fED0mq2GxnVkKi3i9J5wd}31iTj zHpI)@TjPv8#`=dMTTdDas1vt6IdKUlu+<=55^4A;VBt(q%Igm%BT>MRQ-v0rL8zFb z(I-%+pZ+}BY`{kwc=bKKw_F@b|I1z?Ja`3G=G?X8qQ`ro>02jGz#ZVb`?DR0^+^=@pOTh6Vh0p}VeE?-Mp2-z=f}`y?H5#fUQWtc7+5=SlYaW$dZR>l> z_f!Ih0o^h=9JaX_Dxe}TZ@E_969+=MX7qpu3Jl2~5>ONCQGz1VBb__XZzq1haB;f4 z;)hC^Z5VzUum>MU)IBdGZ`(i{9f%iWQz7sgZ`ZoSQ(34;n2t=j@c9vKiTuOgf4S4b zt)8Cxu0~AfUKZU5gw2FDxNZp&Cb}>8igh|ETr`iITRI(Gmqd(sl1w#mV?Oie>D!Mr ziET+a65=YsTyz*Z;J(rr9Qk!3v9E^Yx#Su-MRqR=z#*X^>Q2kG(O=cmn?KAy?#wWw zKR;O(;1>0vSjUD}c=(86yC%$4v~ZF?m|X5jDml(2j%NZRa{#Bg55!o)4VwRqUiM>% z+UvZq0y^opP>cf;i^Of^mv;Pjx~#BV)v(HK9U$FLl?Av)QNM(~)>w_Qk=$v|$)X|D zO@db59KqH&n%+8V4QGcw*su~OL(b)|Usyf%RImZM*InM4y4tLZ>l4}4Lhqkr=4q*u zf27rnk!3F-amZsBY;yZ>R5IqZQpzb`75SKx^IeCSNyJTg8#1)&W-K`2dG}U6EV+ zNB#})sC4;5zOv;4i;r_j_^P6FPM0;rE!_LlDzxhYm<>6ynKRk_RJDXmfG-&yB7eA< zgOMd0gHG-$>2rZVxqsgOpO8QWZUP)bNPIs#MODdf;*LQri40K7%YarGt_zc07O~4I zF5YOdaX|4ttVu$VT=$L3S9*?uuA?R3uSCkVVH*CXzFg?0B|LUd$E}ILBu;0ahDAD3 z^F+UAo%l5K!cQB+{JD42>aE5Zh3vzy6u)!c=(O;x1D{vFC3QY!fBTRS_0F@&JDGrKlyCsUW}=Ifhx6M5v>SqP`&ORJ#YyU>Iu}^5CU|*4B>w0ADc( z!Q(t{jn0wwz<-GpCKk)3Dey<6beUjHM1-b`v*|6R+5~uMfr;di+i0w`B+_Ru>~HLHcM>d zN=fnM#KP#KVt>Tkb6afVgD&OJ8!{|Y5wLhbaAPTZYL?QIGcL%FGUD2y_$9BE{ z)?4b51kHF~^QynmIUyXq^+!}?!)pwGVwj^`@aqI4t0cpfM2cs-MCIsaE{Ph5boZmC zz@;Cv0lVZ0AULW&Q6094A$UCji{AW-KGgO1Gh2$-&I&Agy^Z^7aLC%F-nm(wngIOn zwS@AhtV;tsi7#==bsa)vlLNvNw+H4wK6dQw*kWo}ehBi^0;XJkLdDg3C0-GUaqag*u71?Zgll})dI|NY{y z9r1vo?N0`xY*_hsxzG0FQQ-mZ_oS|)y{4IL0yIFG59+ZowrjilP{2Y!f*_tNpX1cS z*$5T1VqwYoJxUUIMM;AA(<~g4y*rVgvlO1gxQtbjH-ZNR%>xw1sau7er_+1Vgu$Z# zO0Xe2)ur_i41&uoC25xj)t=7qa$33ezkpeC<~Vzj-oD+I9Bd z3f>LW=U6RZdehD*r4M&V@%S=vg1CKdXh|ealOcrOyb)^?M5$O#=$Em zRJZNv=SQYuyZa?c-YDPsObRy^+MjF7ol{{Ik)>mD+=Z{LlA{e7YucglyL{SPk+IIj zd&iLwGPl3`(N(MQEYx!gz{#ze4JI>>On%wZo8q;SxZgxIrJMH}q69+$rwQU++% zhnSZlx zPBdHc#?a`{Xa^H zbcJ{E=VLR92nWTnhx2KvCRnb1C*Zc=wS+Z2g%;+zEuro+dicO&R+A4&-gsA-G932& zbQWqNE0|>A-i+b-u7sAZN>!qM*%Bqf`^GWm%*w?XY4m1P^Vihz`VY2u;H}qy{c7fu z0_K4cXz6~B9Nv35VXCxuOK14)$CZ~3WR$F%bOSg-YBjZ2^>G#SQwy&^A{H}(dM@F2 z?>V{}buQF9d4`M;r~-HjTi3Ui8ED~9h!phv|9rXnkM{nby!~fq=KpElSVoj=uK5?^ SQt;IqK`hN|_m!D=T>dXx@NkX* literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-xhdpi/splash.png b/packages/patrol/example/android/app/src/main/res/drawable-xhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..c8070949558b81fdc689bf56b7b6b24a06511c0b GIT binary patch literal 7954 zcmeHMc{r5s*MG*oWQj_$jpeJfAd<*1NS16xQHY|*R<_85DMcGbktBw1wrt5(lSEo% zsgW%)NU}F1Gls#;d!~Nx@BRPxUf282`~73C>zU_1&$;h&?$7->pYuG|?QP9PgfvF{Lqa1l5^0Y131rP|6KLFB(!?lX3bKv4(WZpn>b=$#8cQZuTd&TuyNyK%d& z&E|@8=+mpb`y3Us^s!#F%dHy@cM3QCExi}}K=}G@^ib~Ylgp}sUI%$)g)Mh{D#Q&J z`s8Mq2-%xS<#}QEZ@m}vmC{x9w?;uCIe2o*>FvS#@i^H}qH1$rv_l4$7FWNfKyBbierO@HshTohE}rDbuA5a@KiN!)MW}zFFU8pN zj&$WHaL z>K@DgqW7kh?&T+$W=x-%OZXKYl{H;7|B*vhPo2)1hmcKlt<$s|6)zMrN1CU|?3SaJ z8`V*Q+>UQYXns@i7cn1pmwx$sO?Iioj`(7jcuph+>t zb=70FpEInCK7pvZOn=VzlNB4wx_X?c+es*iZd+J9CKG3jH6dqiB|mnX570@-h%R+o zeSxW}w1^KObL~2SHA%8*sVdmo#LmEp#(74z5)-uKVA9%P7&XV5*kx|*lpF0?l|Auk z|KWXE#Y(|y3^Z1oM}=m;K8fKt7ZEk^i#2 zGbiL*^4+`s%y_bhJp*G7+{kBcSVpjpfq5 z6?6A?aYarsk4k7e?T6>^59NU)jz&!*2a~hfFaqM6(K#6l-{q09!*V>B<;L(0|A~z#K{i{_KFgM&2+Wq9#BT-mvC&fC6HdZ2$eH-^NR>U+A} z*6EaAH~S^i)_`F`?ay+e&qw(<=6aIG5%nZIk59Vlw>cAC>Og8DG2+oDa&H`cDr`GL zykV5%PCZ*X&YU$tO^A6n_GkgKlGiI_k*y37?o02uf4QVd+phkv0oGix?@{+>tl8t1 z#O21^xJNZB1>_$k0WOFQ_>dc+aMNDxSRTwgevx&fuZA%Z6SKVZ+0(A>!Fl(P^E1?d zo`_G@O?wP4i*jb{9;9Puq@T~+bniXrXK;MN^zgl!xo_+6s<2UrlLz^63Crl>*NNbV z#7`YJ9rQgbt*2YfB6l%l8)PI24QK=APfZQm$=j7K{FZUd>u-BP8$wWFC5f;_gv znzVih9Im_{F64YK=$Ey>4+bTO&9EldD70dDelmGfsvfv3YO37z!|DoH_>i>n4)ek| zT-L{u`0>2KFL>n8=$z4_y2(ovZKUBUJTSC}fo%WS{rQ27hGC4^%+8AYDQ5y4bG<{z zDA)V=D;qKf8skx<`7(#e#GweMhs1+b>;vEWi_&07lF)v#tU*4@oz*_1!;(&tiy_UC z?=}6f`k~C(R~sx>Rhw@8vPmQx7p_}DwUgD0V)^~L>+%7E{9dbbdPlF?`{DHHw->*W zq&m!F=;Ix_SuZPUsD`YrR<~>B+1#+ejEt>fy{7KV(KBmLyqeZLH`W zt7ULMG9oc>ngpz-Iq(^ zSdsM^Gvf-Mj0`hoM^x*iMm>Ej;H+oUFH#k2*4`9@$5M4_|Kir=nyJ6gIh@TRY%4!{k5{flc4_hOWb3QV(`{vM3_IHPH5h<8OTY~; z1yBQz_{nn@UWe`3>ab}qY`+Wm-mH6&?|@!*HMp>^{!Ag__wAyk|Jez* z+y0e17g_79>msGfXp~QBUP_=XNj3H+38g*CYe z=#-kS`|90xH;i%zc2WnX+=pp2BRw&!x&>jVIc&OVf%Ms8O==_fcGratEVH7sVg`cN z{~mp`aC;gE$@#`qeBgy8*FK7?FD)dI^-64v$=H1AnDqKH5A%cYda%IjU)J~bL_Rsk zUVd|6a&>lKpm#xRkZH9e!;%xQA{xaP7`fqB#QJ2Qp~K5HXM4j{qZS66Dg8&SCdVKq z9mvwY6PZ%dJ7x{iI5ZYX8-7|a#Om^yp+#8zs0y^U=6I_eAZa@m)v=n27d-&n0z*nbEp92Um>siG859m{C>~Z7J$_mH{OS zY=owgiPf`Ax5>~1yZ8%pOWQi)7wYz|{@M|fmdF~uXm_>weZoS{Ul0{Gy~BCmFUhBl zIZoa{b}<-M4eiaySsR5Hqvi?z3LE)Qg4A*&22%BUJ|^t#Qsq^f=OemhRzoW@!U@s) zO=Z1}4?ql;d>=o{!twPDCnmXfFM6lQz4Y-rl%IMqd3P`wWx5%ySjpLd^Ff2|thX5< zN$ux5w>?Q3mFJ4H#d5VvgXDR@qvFLeYkaQ$%zv~;`u%Gt$~lq*!qI9|*Mo#}UyeXG z0u#k@GG{7#)>v4;;(bY-~~-msC^fNwOv`em~9p`Z(g4kd#gxVa#Vnkz@b8JA>}p*)-d|#FN@@R1;=O zl_ZD#x~{g%r{;$#)?`1Igx1snOpjcWRNr#efYNQ^=(}Y?I{wP77GLvT`Zd=#l^JLI zYPZQ5%^iA3L^X`U>Yc`kmsW@5FM5vLG)K;McpgpR&4f@N`f5BgVyu~GE<81; zmG{`+O@YlV4uNv&Y>FT-bD@GhWNJkE3)-hnQB%{d{o{xgiwLcH7Tx z>=9b;Tv}&*U}Sh{|LV`jY|SXI8jaM)8sDy?d{uX0>r zI3lvr!p?wIL#hcI&|vLZZCs9a?er?usw2G9exe8nzu;W|_SBaruFRGtiPNoESQHwq z$W0fhc5cNWYf|x7*0lIGZB{}}Yz5nrad{-NA!wtQ5?V3V_wiFmAyV$fC9%Q(JnzDu z*>&w=8K;i9s~bqlY=9cnesr`a7&TazP zWKw-tSpc>7XujQ0*w%q_BkA|^ACmtEvKHW|{l^Bwy5p7f$y&S2m{(jj8o6`U{?2HW z;LTHY8@fuEdHMvfO2J>@J(Sdb4KU9E&USmyLf3e*r{S^(N_x9#Vynk1jyM0(p2i=w z(N6kxB*)eo!yqs1)v@HxYJXvTpd_IjUAe8i>E>cd1+#=v9}auEvbub?Gc8fQ;B55g zDCslA-#7$@ya~h|Kb6=-ycaiVgA30a*?ipBYq{Lb`>E(hnC2QRM{Pru?KDWHPZJBe zc02OU#!TBxK4)Ao)S>RIHD)JsFbeu9oj*}smo3fED0mq2GxnVkKi3i9J5wd}31iTj zHpI)@TjPv8#`=dMTTdDas1vt6IdKUlu+<=55^4A;VBt(q%Igm%BT>MRQ-v0rL8zFb z(I-%+pZ+}BY`{kwc=bKKw_F@b|I1z?Ja`3G=G?X8qQ`ro>02jGz#ZVb`?DR0^+^=@pOTh6Vh0p}VeE?-Mp2-z=f}`y?H5#fUQWtc7+5=SlYaW$dZR>l> z_f!Ih0o^h=9JaX_Dxe}TZ@E_969+=MX7qpu3Jl2~5>ONCQGz1VBb__XZzq1haB;f4 z;)hC^Z5VzUum>MU)IBdGZ`(i{9f%iWQz7sgZ`ZoSQ(34;n2t=j@c9vKiTuOgf4S4b zt)8Cxu0~AfUKZU5gw2FDxNZp&Cb}>8igh|ETr`iITRI(Gmqd(sl1w#mV?Oie>D!Mr ziET+a65=YsTyz*Z;J(rr9Qk!3v9E^Yx#Su-MRqR=z#*X^>Q2kG(O=cmn?KAy?#wWw zKR;O(;1>0vSjUD}c=(86yC%$4v~ZF?m|X5jDml(2j%NZRa{#Bg55!o)4VwRqUiM>% z+UvZq0y^opP>cf;i^Of^mv;Pjx~#BV)v(HK9U$FLl?Av)QNM(~)>w_Qk=$v|$)X|D zO@db59KqH&n%+8V4QGcw*su~OL(b)|Usyf%RImZM*InM4y4tLZ>l4}4Lhqkr=4q*u zf27rnk!3F-amZsBY;yZ>R5IqZQpzb`75SKx^IeCSNyJTg8#1)&W-K`2dG}U6EV+ zNB#})sC4;5zOv;4i;r_j_^P6FPM0;rE!_LlDzxhYm<>6ynKRk_RJDXmfG-&yB7eA< zgOMd0gHG-$>2rZVxqsgOpO8QWZUP)bNPIs#MODdf;*LQri40K7%YarGt_zc07O~4I zF5YOdaX|4ttVu$VT=$L3S9*?uuA?R3uSCkVVH*CXzFg?0B|LUd$E}ILBu;0ahDAD3 z^F+UAo%l5K!cQB+{JD42>aE5Zh3vzy6u)!c=(O;x1D{vFC3QY!fBTRS_0F@&JDGrKlyCsUW}=Ifhx6M5v>SqP`&ORJ#YyU>Iu}^5CU|*4B>w0ADc( z!Q(t{jn0wwz<-GpCKk)3Dey<6beUjHM1-b`v*|6R+5~uMfr;di+i0w`B+_Ru>~HLHcM>d zN=fnM#KP#KVt>Tkb6afVgD&OJ8!{|Y5wLhbaAPTZYL?QIGcL%FGUD2y_$9BE{ z)?4b51kHF~^QynmIUyXq^+!}?!)pwGVwj^`@aqI4t0cpfM2cs-MCIsaE{Ph5boZmC zz@;Cv0lVZ0AULW&Q6094A$UCji{AW-KGgO1Gh2$-&I&Agy^Z^7aLC%F-nm(wngIOn zwS@AhtV;tsi7#==bsa)vlLNvNw+H4wK6dQw*kWo}ehBi^0;XJkLdDg3C0-GUaqag*u71?Zgll})dI|NY{y z9r1vo?N0`xY*_hsxzG0FQQ-mZ_oS|)y{4IL0yIFG59+ZowrjilP{2Y!f*_tNpX1cS z*$5T1VqwYoJxUUIMM;AA(<~g4y*rVgvlO1gxQtbjH-ZNR%>xw1sau7er_+1Vgu$Z# zO0Xe2)ur_i41&uoC25xj)t=7qa$33ezkpeC<~Vzj-oD+I9Bd z3f>LW=U6RZdehD*r4M&V@%S=vg1CKdXh|ealOcrOyb)^?M5$O#=$Em zRJZNv=SQYuyZa?c-YDPsObRy^+MjF7ol{{Ik)>mD+=Z{LlA{e7YucglyL{SPk+IIj zd&iLwGPl3`(N(MQEYx!gz{#ze4JI>>On%wZo8q;SxZgxIrJMH}q69+$rwQU++% zhnSZlx zPBdHc#?a`{Xa^H zbcJ{E=VLR92nWTnhx2KvCRnb1C*Zc=wS+Z2g%;+zEuro+dicO&R+A4&-gsA-G932& zbQWqNE0|>A-i+b-u7sAZN>!qM*%Bqf`^GWm%*w?XY4m1P^Vihz`VY2u;H}qy{c7fu z0_K4cXz6~B9Nv35VXCxuOK14)$CZ~3WR$F%bOSg-YBjZ2^>G#SQwy&^A{H}(dM@F2 z?>V{}buQF9d4`M;r~-HjTi3Ui8ED~9h!phv|9rXnkM{nby!~fq=KpElSVoj=uK5?^ SQt;IqK`hN|_m!D=T>dXx@NkX* literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-xxhdpi/android12splash.png b/packages/patrol/example/android/app/src/main/res/drawable-xxhdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..4c9ae4459567f10332596d578b42268294500934 GIT binary patch literal 20184 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-xxhdpi/splash.png b/packages/patrol/example/android/app/src/main/res/drawable-xxhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..4c9ae4459567f10332596d578b42268294500934 GIT binary patch literal 20184 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-xxxhdpi/android12splash.png b/packages/patrol/example/android/app/src/main/res/drawable-xxxhdpi/android12splash.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e59828d56f87bfbb6ff87f48125dc1ce02e82c GIT binary patch literal 21351 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable-xxxhdpi/splash.png b/packages/patrol/example/android/app/src/main/res/drawable-xxxhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e59828d56f87bfbb6ff87f48125dc1ce02e82c GIT binary patch literal 21351 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable/app_icon.png b/packages/patrol/example/android/app/src/main/res/drawable/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bb944ec7c0fb30b340c04e367bee9341b09515af GIT binary patch literal 2986 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable/background.png b/packages/patrol/example/android/app/src/main/res/drawable/background.png new file mode 100644 index 0000000000000000000000000000000000000000..89d9ab9c58f3140cc9f3b6dfcac7471782695c37 GIT binary patch literal 69 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1SBVv2j2ryJf1F&Ar*|t6Q@sSXJ9zTkd*Qw RQXDAG;OXk;vd$@?2>`2W4$uGq literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/drawable/launch_background.xml b/packages/patrol/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000..3cc4948a1 --- /dev/null +++ b/packages/patrol/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/patrol/example/android/app/src/main/res/drawable/notification_icon.png b/packages/patrol/example/android/app/src/main/res/drawable/notification_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..169527113b855e21705e6968742f4320c9c078dc GIT binary patch literal 3731 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/patrol/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/packages/patrol/example/android/app/src/main/res/mipmap-hdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7145e4227d6e382802b1dd29a88b3c5cec7ca62b GIT binary patch literal 1507 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/patrol/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..09d4391482be68e9e4a07fab769b5de337d16eb1 GIT binary patch literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy!iOI#yLg7ec#$`gxH85~pclTsBt za}(23gHjVyDhp4h+5i=O3-AeX1=1l$e`s#|#^}+&7(N@w0CIr{$Oe+Uk^K-ZP~83C zcc@hG6rikF&NPT(23>y!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/packages/patrol/example/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b0a7e485fc51eaa45ae189b567abbcb58fe5c63c GIT binary patch literal 1945 zcmai#`#;l*1I9lyYiwy^n0Dq8Lgg|}Yl9I=tPm0Ole zTegvu+gvLR(w!a8$iNQ3005A&v$b;FP2&G0 zwP)9b^e8+4K#6u%r`@7Ki$&fc$nz+^SfJPHdLd)VI<8(!_?L)ZO@dXj%<20$n|AkSAvqQs>Ku?n` zE!(dk<4|2i%X){)Y~<-5Co?Og(M{tkfqZGa@q!=C-RoPzb`!42*rp{N5U5yAr`9)S`CUn00AtgwKKx$0Z*)P9DK`XCmvD2N zUBbk!fIIi?IAnx)@}BR9dKa2$OM0Y8HEabQJ#^gAC1ugyHs+bMH)ky89JY*F<*zQ0 zykZFq13Ek>X53&LD1G6_BXs~tPPc%HOW%Mc`M)o-8t8Wq8$ zJH`ii1HwcydLFNw#qsMW#J5F};Ta51-eY)pGH>|Dv*4{y!%}U_x7v<~nk3xZ{o}Z| zjA2or%8}B8leqDTzsX;N%0IsNn5kV#89R14GyLZCCN+CXpkSyz`9j$`1*n*9nvEzJ z$|cOlJbfB`Gnxx0Kt*bZlj-S+H_jJn&A&I&wF&&=L`;r#347)+@L6m(6Pd5)8HsVM zN-8FWC7L~S_eibrD{It!S(+t7Q7I%$r+}V|{AhFHm{=riW_nY%hU7{5ezxogyJ&~P zFT10{g_Smx1i||_Cv%6K&BqOr3q|&bX%Sbj)?6lCQTsr&POSx43)y@@u_8ZHb4%t$ z-%5#m+{aYLA#`GttfGFxKA4WXmI{fQOvTnoAQdmkImN0QB?XM&*`JVzOL33}by}5~ zUiZCa#0OfQ+00LOWhOMh2{>W6RI&49;Nn{c?Id}II9echT62q1;_@EaG$#5^eE>u{ z2hZTe@p*f;Y8`6apwVE`dL&eZGMuQ(*~{HCS=q;vChWu;ZRwp1ScC?D*cREg-GXjt z`S&mNpKhxq+beRVOUaJQac{QOeZU7)hlzh-%sqM?51gvyiW*zuf=uZ}jGHy||{>mRwYN~x@e*R*K??yj{M z@$Ko1Q_;<8zJj;<9;IKnjUVZ)<2lvuLI&bS|iaM4|DWay>=`Ee_(U@XLecXIhgVe8-;e}Jl zjqs7Iu6|cCYW6)1d?(+h(Umob^E&C{5`MP_I?P&zMWxy?bW0kut6n_0+I#glFJNn@2?AgyAqsCgUg+g!NBrHdc>DyywL*? z&*`*)pkZLl1e}%?^;6;O<|G>LVSt)rm7CT9gCXVI;q=8={aGO-tl4B`r$>(9t3(V< z<^lKZ_Qq=D9}9cQ5(y(EN}iz8kIW48EZtvjhx6Ps*qTX3LXzvz+xe@zMLsuEh} zr^Sb3A}_A$=2x)C$4t$7-GJ4S&Bl-t4H26`95VcJgm4|B*5|B~|CwX+0DyGmgdZta zc0PJ(!v|~(>iIQk9dG2tX5bE!!+m|vWnNV}PB$~_eFwqDqLypMT8pXQQuB>RyisTS zf0!yG;fH0I!RXrsfZ$K(_Q#<&rnrBR3~J}VsB3}8wL4t_U(P`r@WQ)C2LvZjDgOET zX~B?Q`Bm~5QebqUuaZOT$3h1lB24%(3;dE5z6I@{%7!;TjW?hK z4&jVJf2#7)tc8X9P@m*?8N(*LdQd=KL1UAbQ`MT-nO)ko#l$ z^IDzXW)MbMO*hyDtLTT7FoN#Ym~T$j=8;7;SDtAlHxLID)#k&1PN_;vRgHvm7dNMG zqYzb1p>~9?MunJve|Qs8StGH#<5O(w&n%!k8%r?UEo2Ll)PTs|MgBLenM;Ib56?7Y R5_T^au(Niws{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/packages/patrol/example/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..02476e92e236c9697b41d4c675783fb2c228f70e GIT binary patch literal 2495 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/packages/patrol/example/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..24bb63b04c62db11073ba07a11f132afe354dc9f GIT binary patch literal 3139 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 + + + + + + diff --git a/packages/patrol/example/android/app/src/main/res/values-night/styles.xml b/packages/patrol/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000..06952be74 --- /dev/null +++ b/packages/patrol/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/patrol/example/android/app/src/main/res/values-v31/styles.xml b/packages/patrol/example/android/app/src/main/res/values-v31/styles.xml new file mode 100644 index 000000000..b069f9409 --- /dev/null +++ b/packages/patrol/example/android/app/src/main/res/values-v31/styles.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/patrol/example/android/app/src/main/res/values/colors.xml b/packages/patrol/example/android/app/src/main/res/values/colors.xml new file mode 100644 index 000000000..508febfcb --- /dev/null +++ b/packages/patrol/example/android/app/src/main/res/values/colors.xml @@ -0,0 +1,3 @@ + + #1F1F1F + \ No newline at end of file diff --git a/packages/patrol/example/android/app/src/main/res/values/styles.xml b/packages/patrol/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..0d1fa8fce --- /dev/null +++ b/packages/patrol/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/packages/patrol/example/android/app/src/profile/AndroidManifest.xml b/packages/patrol/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000..399f6981d --- /dev/null +++ b/packages/patrol/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/patrol/example/android/build.gradle b/packages/patrol/example/android/build.gradle new file mode 100644 index 000000000..39bf9d5d3 --- /dev/null +++ b/packages/patrol/example/android/build.gradle @@ -0,0 +1,32 @@ +buildscript { + ext.kotlin_version = '1.7.20' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:8.1.2' + classpath 'com.google.gms:google-services:4.4.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/packages/patrol/example/android/gradle.properties b/packages/patrol/example/android/gradle.properties new file mode 100644 index 000000000..94adc3a3f --- /dev/null +++ b/packages/patrol/example/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/packages/patrol/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/patrol/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..5e6b54271 --- /dev/null +++ b/packages/patrol/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip diff --git a/packages/patrol/example/android/settings.gradle b/packages/patrol/example/android/settings.gradle new file mode 100644 index 000000000..44e62bcf0 --- /dev/null +++ b/packages/patrol/example/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/packages/patrol/example/assets/fonts/Inter-Medium.ttf b/packages/patrol/example/assets/fonts/Inter-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b53fb1c4acbe100c7a91f07564b7f1fa2d5bab12 GIT binary patch literal 314712 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/assets/fonts/Inter-SemiBold.ttf b/packages/patrol/example/assets/fonts/Inter-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c6aeeb16a6d7f754258bc7f3f2101d287976e6e6 GIT binary patch literal 315756 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

qEIEEraMLk+K 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 z zSjzUZ#{oKx~uvx{>olytppGikHs2jaM51-{T#Pp0yMblH4|6F>G z)?P}#LTk?vwWbly0;C^GlcF>RsA33_e=Ae=P&0t^`sZ@V&R4I<;D0I`KK~(}ELXY< zt3Qq_HZnHCT6dIT&1C0%OGhoao-O<`Yya$`9DjH*ADA^Q%Woxpdh|MdxP*+9N6s8D zB+D&dvz)AO3mGtY{MM=5Q~tB)tU&K!v&Uj0EqOX=SaSDn0kTo_H@MwwY|kK_vDCs}NV8Gfr&j3opKaIfaZwE9Vsz&+chA z+ntum`;%_x>DDXTF43)DV@=wYv99b&%C_{Yv$?~3f9^1fI}P4gj?O-y!GOF%Ma7Ph zk%AK`$A5G>bC7$Q`~BR;`x&JEU4&O;f@P<$(AYsLJJJntyu0tdJ?Hl|ciz!EKMt8S z|t?%1va4l5%(ZSFib%;xl+h?VNcR)&G%LzPq#R z^}^elox&6R*Ia-d!v|vU2P&6nN5H&^NPFjG{0;Eamt;vL^wv2NdO7_n2|HIt8@Fe! z1?-cac6km21x`aTQLlk5U?{K!lBpA$y5tcU1ziM2L9)b$F$y$A)R>+Y_yfuH&)yC~ zE1X0tWT7KlF^Z5E>Y)|eOawl#LaG$MYxy#e-pFJ6sCPk1r@;f;wC>f$+11Q5YWtKe zXXwMIh`|XxRQ3(QvI_-O0Sa9irE+CoKANqgXCClAT z43lWp;@a%wh=}f8zq_H1?%vj+ja$4cF{4v{XwYd!1L9=!w zaLheztrk9s#58oMDf4>`jgAH30_hz2GMvlPdLoL^u~yU`4q%E{ z_8{aBB~fr1Dd8qx(d-jjU12A*$8kI#_M?gHDYxU}XYfTMg%kq&J2t=xH0R8bovD0~ z#*Q0Cjld_{Bt1zpKsT!+wz6sTHdh-4n@OyUB+MkgPwYWtqKQZs6NQNq@H)UE zOe04;${)5MYe@c0(xZ~BqW3O-_poF!S+tB6)!rw=NG7g5{>tYdA;&Tg-r;_J?7ws^ zsoi#KN!@oa1WAM;h(Z#*t8nU}l>I4@!v@pv!ua%{vnO<9!w9P=Pw593YXx6g!Lp}Ao8Y#^4l`|<%eS0drDinQZjFz=03H^Fw=$YuU@J9}`x9pW{GJ}>wTbY6oEH&1HUIphKwSl>r z0~&#lysIGVjNSfwCCOeg6p(A9y^VuyO?F4hmaQUk>L`B1u0c! z;vw;XI5w5OQDySGIqy zcNL?6;!!$-HLEZ393XOlk_>W(xhQThbv9d~WzKXx{ha7NExM4CavqVEr#*j40gqYs3R5>B-KgCYz{c-5Gj&eM%IFW=~bWHEwQp6kP~4 zn-?3Q5IXrTI6TDCEhJXst~-W7=vDXbvBXMw<7QpY|4Q767?7cG<(UrDu$C;MW4;yu z(H)AVv_yx^01?1PzJG@k(*li~Zd_PsV&c#c;NK)MEG#Y|BrH*xTUSRqd&b4|^Nx!0 z>Mtsz1(5hBfW*~*oApOPF|u~GOaVGPGAuNOTb3L;BsC=@G+B8GIotXqCi)B*ndI%4 zkl+Wfn7N=*{U*`*Q*&&hn@KF1#PyTrs9&e}iB1Jp{h{rkhd0ug0VrQhjQK?ASE_zw z106xP)zx7^ze00l<&7a&*TytncpC!k_cdw(>H>%R5opHLkuKJ_Q`U5nhp-kI58+n^ zX^|bJ*d}7=ERwynJa1u)Sp3B`(8IInHdRqUqvZ7R$N40~Bh9mLrMD)lIG^%o*VO^{ z>zm?Pw5mS|RP1>t;r7U`&;v(uiT)E7oMmEZpK(WWW!LC|LlcSq_u5Nik6?yOC6lDi zToS7-Fay)6+c#JfA zr?#9kc(H^lu3M?WdZa!ucvc*DLk@n(<+fF4su zVk@)|nwm*oOxgC4a0{fNm4zriihCkK3fPfJJN6x6MzS52-z@*0URt?=IJ_viUD<=q z?Go2-+N_?QWiYCm3zuVCiJoZ(@)Q4MP`*FgDXkxq z!_(}h!Bb{ydaH`QUX%Vs#$M>6Ur?xfCZ2yk?FjMyxtN*i75_|+9GUhWtJy>n^Mclw ze;%CiMfw`jtO`AH5C(;{=wnFV*keRV>m$nqTw(T3*!7r5XwDrZ(M72f7myLtv(rmR z%nJIdHnMW6jep&oE%5iq`A83He3q@NT*cm3Rf_Lt=`VA7MD$BanoVGsF3D+(RCH40 z3$ySOn>RytJ`v%61En#HAlQkqi5}UJlkR)<>Q%`DdT7@!GT^}jGGG@WyXc_@GpYv- zs-A(rgbb=yS#JZ?%ZfRXnQC;cWx+2tN z9-iJE(KXsa+v+J;x_xA?#%P+%I0xORZslZ2VCAM1&k5|hF^f%(qiriE132$zn~h)# zN7w<;hWW`>elV4jKdL3Is+Q4)>P63H64G&U+K3`T7HZa|E+AxTR9Zg6er7#ivXN?* z5;&=A#i_DwZGZ6@$qjdKnRt5r>^>eLiT(s!9*RNMr zt=vqy*HjWUyr`m&9EM1hRSqRkKE8-B@8X3p`DNo#92j zMlP$@s2;%!dBKevP%r7LrZ@J{StmpWGtgOw&E$qs(nz3Lfp7<$O289LFk+Y}kJZ7f z{)T$|{m0nsONf27_@K>o5*xxU5qdOF~d>>2VCAxptBy{6n${4Gi=prK94y@ z%%615+neL!lCw9j^Ta(9++1__)<^1geqATQ_(!Gnl+4^gkU}}VUzE?@wNXAp`#wdL z2P&V*ELC~um<*an`UpEgUtDigK2xYwd6L<9E;WvoGl-LLyqrZVk=0bJz~NZOn9UQ= z2Vn~~1?LMU#^N%JaUzTzLni|ZQ#`(bu&(`Kg~gT{PAB|rH<+Nu4^8SmCvVIQ(qh6d zyS|`rfkEZSr;zxJ9Bw{+`^BzbCKA1w>7m)~-IAa~ctdno(f2=2ctYzhogn?_ojQ7O z$3BukWH(6B=FK$!2FQe!`*skYI@nPkJ#i`b-pUC-5+(MHZzPq_wDv)*nKTEHT#22U zTheffE948LefUIf^(}G7&QMvh9a~nxc4o~25K~?>5mVI8YE%Bj)2t9FX{OSrzr`$v z?_|jug^jdCr>!>YCKtHg>p7ow8~HCcaGr`@__LNj!1-?E52EdN$(?19%m!XH6AT=s zY9@y_%>GKbGv|X5q|0VMmP5gGzmjwg?!Cz`$6F=2lzlv6OrNb^4#%PRrX*K6Tk%3D z)DU_(E5Sc?Q{jS`Cz_;)7A_*|K+AL&fS8YYiQM!$na{(A4F~IF1L|8cECh&1LVN}{ zhm4JjA3r`mZY=rmiJOs$1mol5GfAfhvi=Vm4hw(CzM!0`DR!@`BhiPI`s-zLacuZj9aU-TJ?cm_#*qNc+ieDe=H zu!iey3QM;nx4wyerbR^-qAecsnTmL|_+>t*!urpE*=-F~3g#qN1j-u}f8;1IQ zw4RbC%oN*+D9Xqm)0V~JTahlyWIC^|E=)3+P43R zq@6!PKfh;rnx5TDx{leCW;x~Jq}&TrEmQY^S=IP0*)8>zB{Tk}x70$|2pE}75D)M) z=0=@;2DP$o!311eML-88SN*QDt2bT~@Ue79>CN<2U96O&e5=KY=Sq zfTL3&32<@@#E4Cozab@npBUgGk{*n33dBZEN^)vyavTN>aFD-QJaNkEmA+2Bz*3f^ zlb=Y5%s`=3l}aQHu$+@bB8yxxi%>_=8re~(VWho}k3Djczgaq$ujOBo1a|b?+@7-92Lvm@u&bRQy^wE{Fh7;_HWPn7X?JJk)Lvx@Lkvrm~ocYXH!^HdR^G* z!M77DPf1QQuPMm?zm2kRpKkC+=`L&2;rhqh4Xb|(*FV)C^=9=KpHJ8R!|%Axo=<$9 z|2Fc{u@UMGF%-X}9F_lv^3fiweAXTcbg6iM^SeU6tUd5MYY+CjZe`Q`a;!{E&#Aqi zljJsjFWsr~gy4szP1qvjB0CYJOksPl5_Q4GO#RB_XxfIIe52{5z9@ znm%T_y=Hn^-QF8%V#7{Mg*<+f@)%H==73L7uTTq_1V-v|eGWJbTxRQVQXICz$uVva z2`i(U!_Lx;{2S@shGR=*9^@w6+WF<%| zLNyt`6NYA=E=Sz2Pl^AIUG%F9_vqbnBFoeK+Pg4)=;R>FnC+7$AL)10cI^}HKV-X+ zdQeb%bt_w&Q7%*G`8% zX#Uk7pK0?I2M(+V9X2df`_3#fp|Q;qG`30Y*|7Hn4K7#UF0tlPYx!16k#B|HA@`_^ z#osZ{a9w^A>BxIUV;)4!t{7?(Z(>Fo>vwLG2dlci4O4A{AUd?slU`B?3}P?*N-t?f z+?1|W6u&#D^ud5RL!FcpCC8Y6GQkvs8vkIBDhnev?}LufMPv*d`g0AFcpv^!;{p^R z2r@vqjqDv8CUHaQ$oo*e`1AY7!f(Doc9ZzW@`Kn5t=I$<^~x4D(hv0352R$)%gn=o z5zfleB_VO1E_7$=;RT`W)P8^%SAmzTm^WkUY{%$zDP(Z|ijXB|`NzcExpxoe<|8`C zu6VjB^eYl@h5_7V+b5nJ7g}7M&@oQEt|Fr%z6bEmEO@GT-8c=)vtj*e4SR$TK7zm3 zSkv?fuySMQ(D(27TrP)?;DY#Fd!IZ(x0jK#w>eIMZ zrqp>@|C5F}?ns6iLN$aqOVKMY92Y1W8*qIPR`Dx>0)HpEO(x0ak15Rnrb=-(un=g# zXmlttg_EeDXkt4qJNkUWwPFM#34UoJT+0qN9DGSK2S(V94%hE_A#>yYfwEv)+C&KR zP>(IZw;Xz>!7&M}Fwd?Tlflx5mY0mJFHZ7r(Mn36=vhs;RZiU$!#*O4g}y%lZdeml z3|+b%)@SpfbGJvA8h$`xm`+x7X26cgA3+MDjz_6r_=r2FC~OfrA=XYqr{0#QEBG#m)W2>4IqE1QAKd}1cA=PNL=NNm}R?j z)9F!QkD+zBmvr9X(tRUcqtyoXZTh74Bf6U9XwGmyb9ZCg9KXp2Q{@NmOy4oe25!sb zO0(fXr&!zhHq@s0s-*Nk`UX*F)}nFtV_loAbYKX%7m+J1q-MmzSuVWn@m*Gm_*~1A zX)6DUxYG0lQbF3%v^27uNPb1|^@>rl;Z*hwd4CA=p3`_J4oP4mt!2(K4U1?6B3K}ZcIwPXm~Z>nA*d@v&h#PquJcwd zR^i?{yH69sOxDTQ0%@Alv{3D6{7v9|Ge$NbLZU6i8L%8AL#2p>eBgUexUsv?BPM8& zjdMS8h3qc$jq&rdbLgjKecQ=59q;DYorHSmY(7l7Id&Ti=y->s5U6x0rh=)!^3%$j z5Qt5LvILav<5PphM|@^}3A0xVOo-^)wKu6KNOn(2>Z9(%w~q}COG+F%Bwm27LlWYK zh9)YHTa8?5XXo3?I)0UnZGY0mJ349rOsTy3gU8)(1k5n&=P7p6wOZCTh**C|5jTP5 z4I}^o17enRO|4#Eo*FVFb!6Dkkqp*m^ykpz<#k~TqP*jRLwoo1yB{(yvUhZNl%u`B zj)#D7Cyw;?jgJShJML)9ne9Y2hr@)bh@M2*?|a8#Fm^-8=VoR_@%37j0{K=+jm-$d&)>xb>9~n zSF~o*GCRA0c0z0RBdZ=iMyB)8fa`U>5J-#2RNzNxn~BXxVFwp-Jpn&-3!?hR28X%y z^m{;F~<%@%FiU5(Ea#xVTqA_$H! zk^}Dr3`ZxyvRI^OS_o6oSr{gaP{OUHdqzv&@_p1c>ql(;ZF(Vn_FeAx2gZ^yvSpLz zOottNVNy;U?7|BSr5^Mf`g7YJ9GCmu+J#SxoyKpUU^FbcASEf^S!yjjnoKgf@jr^6 zAiT?=Wa%n6GpLS(&ke zblzG+AMMJmO89JpbZ}^O{?tm)qx`E1@~XocZjn*br%(hK=HuSg@~`YidhexGK(=V* z0q>E$IIo2d@}@l~D|=it^^v?>bAj4WI||u`7%28|Cj`Gcj7=vc2GJz+x?&HxP1P6@ zxsc9=fw0wF2(pNMh;8WFuxfIK2$-8UktUgoMoczA29k-4E;P7EmjteqJvb=)Sh-!F1}^&|m3Zzb+w=UK(+2 zmyM-|lS!}pr;EOwKK*&cxU%%&{Q_-TyIeao>qIK))myeiOZ5texEU;nlRLHIrXAj~ zz3Au((mS>vd8ZHC53UQ_4<~5_0|=}d+F5{Af=2+%rGTCbQ zJxZWAMz1R)=gE-AB%K(?ln$krXfU4uCV634fqR@oVd}P24EL-2F-0T96e)HR;qYhJ z%E{c|Bd=S6|0U*i3xTgBTnL?dv7ThTnq-@@d2-pQiERUas(wo*T|Z8jQn^a<`k1cg zTaGyQ{stUXzuLgUo6AE}cIR+v-(hEI7QOBFj{4ITjqE(Lli#E$MZs-_4Ge_}7zg@S zfqvF<5`|b>&TLWQBr*mI68Ozs;=g}8-A)b2y0nU?1!w3I zM8mo9ACg*MltPY@PW}tmoye=+SOJi9veRJjjJ%jT!F}r6_`pf2Lw1V>6Y)P*k zMF%wNE1A!b?ffQr3FL7THnB&tf^qs|bpvr1b?c1L$H|;w`v5hTyp_4|Gx2#zdMzHG z5jfV3(7DS<+vB7Sad=JD2glrd%HQW7fu`+Rn*0;d>%aDN?$`{6n0_nnPkjIQC_VCy zU)TQi6}pdx#S!D6O*cyOD^ZDk{3)S@n25$EhA@F;%2wjc7F;xIb$BNxhP%G@d+7m`Yc`lxZ`8G_S|VG znPnY!Uca%UdroWn2(>uUOKPST@rN;V8Xpl_u>BeEQ!)|+IREjzD{3U zyS6KPN7DG1Y9e2Hf!5r#x=yPvEFtphm@!G8kC$C9qQ6|fMISC)NIKuVK@5uM?|W;i z_wC!faSzyUGqdt$n1M-A*s%Xb!?SBcu6n}h z>>K_o3WHZoKxnNcU(+pDZ(O3=&J#DmNgS3F6j*?^7O116Rci6Z^|V&?1}8=XWth#mj6 zp{ppp*=U7R+(Fd#TS2$;g|Mx%?`MSXUt<%MvEP-qP@c$81orNQxj>i=h&^)}%yf0i zTMhGMahkTzrO%$usdwH5>j=TFQ2JZ__b=qeOn~Cxoei0&B!$S{3o@!43Z0ga@7qZ_ z17%=vjG?`fS?!yc!5gMvzmHF9Sn>bGRdV3OZu5%^yA(95{a)&pN0i@hO+VLs$=NR7 z{mpfG9yk13evj0g-+CE;YPnF&J>d&C=+-+87xoRm3tvCKjz2rOVBxoISGXXC7=@F| zT)6TUDl5oLnD&-xM^V-!uB82e{T9Avt*wl_0|}a8<;jOiotIL1$O!Zl#BrIKtWFd# zSgWzNl9}-l<&en52HMxq840irBB|b=lIro(7h^0aSp$;WLQ*36hCe8K(df@wb3l_d zFlTV-5`18!J*A`eUAWMk=8+lAk?VPdlWepqQCk76gd-cRiIuL^#HteO>gc}jzC*fC z8E}9I>MhM1XD4Zz+Re;;B zYVI)|NWS1Z!U^dYwCi+!&jPwxQ|K`p<$Q7rJajqAi6cC8NlWN;8o)iqJ$p$H+SPTz z9-b!bo9$7Ed+zc#xw^(Jf}N}+^dqL0vw%m5lj-i#v1!Yfr;S~@*wfC+)6>e%lO9Vd zE>21-EK0R?cem})w=d&^lfkks@KL5zfDc|@jIqB)9wIxcY=U4)J7#upWI37v zD-?3X59a(mmfxp|m_HnN)-vK0@Awm(`-fyw$u@qethjNpkXJLz1q>(VDH>{qR?;>6 zS044!JMi#!_bxc=9HH!myf5?9WGPJ*Xu3s~!kc;2(Ssw3Ao61#Z+3Xs%pCT6OTUI z-*@BOtluf7a-I1);(h-qOhPgfqM_D?K0Awj zjvc4dvlWUr$58cXk+d<9eIRoG(P@E$Qc`%Afb_H==&*5kS_!-R?K<|@H62qPP$D&sDeyCMsKyHp-PyY`Wd-^wBwD(iKXdW^%sH3{0n|<@(8H4R? zT}hr^NKsHn%MQIAbO+BI(zB-<;+J;kRaDc+*xyb5<3w{PGvW*fqG~7>OyFQgNhfQ% zkqH;*y}V5q=)&pJ&F4twG^%%wbelm7H*TcGL>=%gUFHK0d}aVf@_iqPv>}bx2_T?CSbiHQ+B_116QO2-kmAwSRwgLqx8C0%or80A(SB@vUsljy22;Dc1%wVGgO zK!aLMFdsB!D~hsA&2-$-2JamWGcS9}~y=GBIYn@&R)nT)Dd9`!Q{{Z}mbWP*zn4*6@@_trV~$MWo53i(8cK>6_1`ezprHU);)N?e z)Zb=T>L>EeB>uRfR{ik)8atn>o@>sqUo`FHZ+K@FmRnU>!*M~hC{y&}?39PFxR%N$ zsv?1qCG&0hJB=&ww1|?eb~aJlOPx)WCQ7xkVf*sBZVy|QwD`8`0kU2GB<`F~e9fm|;G+t14mO2QMoG>?} z4)2$%B#dhe3`rt&pmiu0QqCJlEU1Z6cJRY|66caB=8!2-%A{{US0>U2oZ%k6H|at) z9-swPRdhDV8blDs81QXFh$5Nl=}bVa1v;{bCW&}CW5b)6Sz1EQ6G;*5q$mz)oDc2! zPR=fleJ<@OFWITr@|s>t6K;l|zl&WrKWmH6CXULQySEnJlzkjsth&jPOW~UGT<>As z&7z6#r2bas-A!$cM%yRnr)9u@VM7ogQ$3w*LFi}tD&!6*+}H?P3sf)+W56+v4G@M{ zYc5XO78$W_OwCTdk}MxEFvO3Lq)3nGPO0XL6>*81QrhP3NVrlnq*%{AI6tXvYZ*f_lcse<|6XNdT=&6&=q97c$?dxvS!`&Ut zXUyo7U-|M0 z^Dp=99p$I&#(DE95+_@Gxx9vaO&tP#LAhxdtcc?qQNvDnIBg@M4O#!8{X|L-Ye9QG zPIGYb+TcC=R&3!;k$zsiz1p|;>h0nuJ4J?_|wGEo$ zi(%%iNTkhmcM0|E!Ws}YRf03ah5|FVH`3$K67VX(%461vyz8}n4;F4%UmjQB)2x|K zfvtaNbKRl-fdK=RhSI8r6RqxUY`N{5nCf(=)D5vUBL?tDnq)ruW7kn9N=G7cN^7)3U%LxZq} zH5Yr_UYm~+`3Q~>-Q^$wLd=glr)oBQ`0DEz3?+)u{4iZ>?So_dJO7uV9Uo46<=!w=x9+TC;GxbO zOLVd;EBEsQY z@zfd)hj|R21l;6-o0z<4;%qN9G*c_h45gZ|DFx3TK6^H+_}Q}uI^!Qape1w)q`H}8 zB4kDil_l6S+HDE~CObAMyc_N%(mYuuy+9nKBF3gY+T)}x0C(|P;7*|wrV+qQrdfrD zn^Mo@-kbi;#9L&1-=1%C)Bhf}&B zV6%4xJnCs$&~wt~bb<8w`%2{v=BSIktl8;Sh$bhKfD5ExKH{515#hkhZg2W0YfYC+ zC)H=k%jiwbS^5q0T#mbO$m2b@)pTP_TL8_C;Y#OeO8lt2>eAXQ2ng4&;)LP4I z^ieYbeiqkY!Mmxzw{PMbenPxpOA7NV!4;6W&|&c;F+4Q>*xwij&&sKg!*ARc1o`-V zV0`>Q--JZo`2vZ)ZT&5YzPOOS-B+-=>~@xQ_P29OCa$k9!vOoE1#ECC`d3D|1r}yu zIa0P(fL$)@H+gt*iLGtPten+yx?Z}OwB7uIIIUPkFFZR)pReX7z)gDM(6D$CN8UM& z@zWN*Y$JlnmtUakQ8Bvy;@n?u33c@u7>_RAMODhq!jRDs_Yn*gM!k}%2`oMlH$X8K zsxV6*;>U%NTl~%oB!CB9TpTzJjZ~jZAse`B?<7?9gtU`Zz$jW$#@|!!K)W+TF((Wl zfJERvbKrV1P76aZL}LQ%GR$EHoMj7(pcn=MlZPvyXJr#%ndU+a#p`OHU*_*F|rk>t$ASZM~$q-!? zX)TkD922+o;$n}bhxnQFmaN&w#<8g4QhR3q1dKyiqkX7{$-kI|yrJ{X{EJnH4BsUu3|C^xzrk)URUVy@;tx`#K!Tdgs^JXzW zXfKHKs+IKIa~k=8+fUj~I6KLD)Ymgex6^dzCF{#{=P8(Pw4lEO+&F=?FOD%OSp;|n zE<)+$$-aXN$=0$O^z#Zlq5|k2lld_w&4?*O5!iFV{&WlJ!>?+95Y{^iw$FJammHCK zGka&|p^UxPGfwyp7;m@3Z~>qjD*AR{dNd(Km5Av!MXzB^xPug#oZMY~Ieysr&o^Cd zOQ#xKC(#cOMsnhri*!1D{g~FC=c>*gT0%NqI(C_KTC(xlZQ{7$2O2`}9;UZx=!scIum0#e)|4aW6SRA#vli86$pe{elgxXyso-voS>2Z`$KWE#j>Dz6A)V>d9| z2S`FC@se?9&QGX*%}mglOovCFPk;;o-C&`^hPMnBwv$X>b=W z$ymH-yi@pawAeZRENBwH2*QgVrgj@B16X(z3BoDbONrXq!UW(Ycu|Npf;dd}h_HzL zR>=TOBSWb(QEGZbW`+nb=+L81Tq;*Ma&TUgk+%YbY zoEkxsW&o)N?#^OGfWLG>m_%&gaYEFP&)5J%)R1FBtOUoBYld-=lO%ZmX! zO(-gy0NXRJnP#UnSejZ+te@@`Y!Julj=Ii)qRME#}M}+p&dppAKG__yZey7{f2pWGO!)d zZI8M6kUr`jCi*R!wPBk%WoGB!_DbcOD`LatoCB8c&;8t0>FI@I3 z37lOzSxDC_R@I%RQCQXz5CEnr31PA78jjI*WcC=&nMHazU58wB6ssCreaMBFsvC5; zH^hKm+M|qrNTbdmmwm`(k2VPbAzWF%j~H@4@XvO!TpqF{{g8_tlCV<<3UW3D7fRU> z16McEQ;W&Dll0Z58kYF>Z5s9H5pF2O4U@Dt7_u8sva-JPI5}TbM51A*GJEHyk8a>J za=tk{v<$~$VSqAlh_ko&__SrL`Gy_046WJ(h5OCQGw4EB(eYe=oVRqsM^s%UAUxxl zB}Rb#011Rbj%Biz7*jwEAbFBEW4N9i9P@nEO_xN-iBDvioM7VpHw zQe*B27#40<&}P%Fd1&U!JW1pz+z5?~VpT+V9lLSo12nIbVz_J)Sk@3DLkW~ISiDF- zxE*+@$K&hkEeg1ed|$u!ALxCb+P+ zWiz|H&)kPz4iyGoFw7+iz7%!l&k^xdP zLpggf;CyG!-5gGD;yuJdB}o;`-$fn!vu4d2RG~i~(wGSC4i>fn_9AjELNbDcDvW=% z#^8RDYm~X;@Gu+oK>g2EZsUg!nwjU>XS~<4aJsik+aA`oeVhi(3~_MiYS|BY$`t0* zNhLDHM20s^XP9*l>jwcy05i+P2u}P(mp8`7{2+6yp6;HLgQt&6&FE}s)5+3`kltNK z!|ra*$mGm+#ZABW+Sd7-0CsfNuTT zn|Fy-Zt^V4Os$Ii{`~6ObHm!K>kzZIa!yggu*BdNE%Hn{04pv8%(hvX14*g_Mk>Pi z;0Y}q#V|e=_QD|xUxiXNJ!3xVzJ*+yPY+!__RZp@}yehpdL&p)((LU`{4vsBBK%HMLG znn1r%o&wtEZIkMe#=t&mk+3OM0O+bi7(h2IzHQuSOS|!o!vGQwQ^Yl@w2$G$EQbE? z4}zy{%>cP3M2fxuh_4YLl95yt-|1X}PzwM|G zPf$BvKlAg%k)LPi*W9jgN$}8*&jXkjI|V&45Z$~Kk01kui)mXJ_@dUH*0d*69OeE2 zRMq_aRUJM0`F!Wzj;`e5?(&jdgtTaRtwl={GQ$@=(B044yv@YXnREBlDhtVvy!>-A z;6rQwEyT(-43=97=wM5c4vF#2W*LJn!DDj%7rby(xvHD*^n8W7hn>TyzsC;8c2)KC z@Q=u9)2XeIeAwRriKL;UB9(U0-6F_zjK_wGh_gXNeX+TU!&g)qvonu|^qX886Fm!xJp;AqSKbfN~gRpM~|q8ORJ0+ILSw5>6<<@aOB)f zmzn#)#Q3O8Mql{fO0|%y;bZ@wN+#Q=jSIQ)uN4T?3?evEHMqzJ(N;QB!OZF+0YQ>& z8=|XV$5ssI!%w;C*Nk6f6Hb= z!a_rW8QH8(*8*ZtRx$n&{w>!(#H{^(}pXey+uUfnh@l35gjH*lG>QF#ST2 zdSKDEMF-|gbFq$$nLi}au;u8*bYHh2Y{vnz=%#xZJC4?G7F^#DrP|qZ z#~!!2XS+U|OZ;^YH|&@BAqv&Z{gvCE1Lls+qZUwzcmY>65D;Oko~_I@URSR&)E8a5 z2fsYg*`yVZm^K=60RMz0^tr5TS5w24X)Z_|Ff~u08rewKbe?5Xlks9u8$j8bmEUfo z=T^~kwRTsyx@*d4E`Z(l#|tGDA_ohE#L*)4kTwjJqUhNKA8Uqwg4Ao_;xz(NPaVkx zhSW2c5ZHG(_FVzOe<$+JJh5S zEq+}m11h7osJ*y-vPt}hNP?as@$e}|q%`pzSK5@wdBTG@9s zH|=iFF)cN%U{Fq9w;pgyrE$eGozXojKzh(Iuo-9~MEX(~@y)KT&FkRMv6)^cLtBhP zsZUXrU+6BeX-1vvWp57l&(K1yHU zhmqG0LKFwh4S*^v%#M(UwH{pY#%kQTaWP$!K6^iZFSwIbS! zgx)0U3feieQ?=}1(9?q{cmNXn%$W1Xpj(7|wxgGfz{X<@2Q@ltHPrGWQzxUpyh^Zo z^8QI-UOj!i)a@)ua+tT;f1pJ>%RgOetERtPy{a?1qgQ;Vjy4_J_f6^C$!1?ikAzO0 zdUn91>)4?O=Y}O%T7OHPDClpcIEHmbbqr0UK;kW-3uMox70I;C$Rx7*ThFVXlg^nN zBMCXZt@hOEZQ+6b!@~mx%8!wZSX#~}K*ZX5`_2~q&9`bM#_PvSEr`{Rfqd04R&Gh1 zb#jCyxC=_cK(J@AkhH^wjZzbImAG-S5;b1enG$l{B0&l1%ao8Ubi@4v{RgT}YvN_@ z|Dc4-mv<66OYqU|^{Lv+Em`a>-_2e7UMIsZ31I?jM zXW=$_NcyAlAHgsmV?2hU{M&RK`Dao=L!Os|i@UpvlLr~+>FneQmAt3Dv$J!b3%eJV z>~5xit+{?1uGr7d*|xiH4|9{rqsGtOU8~zwtElf`Qz@yK39ambD>kJG(#A3&3|dt%#sLstKZzvb+Eb z=0$#+^k8F=$ancuh{A*P7xVlteqXiv_dWS)`fIQ1HzfGZEfVy06Ti)3_+ao{hM7lf zniU*eyoqttcqh8O@u0|2`wQ--@Kpc6Q43!X(Zo>;nHTkeqXwd4H(Wgboj6ogL z9s2ZY9t=X7U2pnB%OQmzt##;QuNzbx(z9nDJgkmlc%xc35}~=S)H_OTC9?PK;7(m^ zT!)262WNO@qU#LSqnvSK@d7&*;d4#sgmF&@q2uA|HIj^=8~AGJJ~9}A`?v?$e7i<6 zi7(MVJ;yq)qt)D#8k)mRq_Y~K=>hQu`fV1T0{Jr4_(yRuOf0ZVa5LeI)w01M)mrsg zKeLPiLV9X)72!P5)oaFrTx5*)`HkVg7oms_S4GPdGH)T89n|xxG{N~r8%N;9qzwY2 zGu6&)K+vZ?sJ#Wo5F@6te~MG@Pjj>AV(BHiL>c<(RV~wZvlmo3HORiR@_WIq56&@Zq&zmh zG$6P{W=UE*eodd&T&CYvP5PFYZVLI4%p<){nbFJb^3T({;}!GHqy;TXo3H~cJ%q{q zUSSLe7*J7pu_}nx4j)wkdiFonVadxm8|byG@R_zRZu;*e^7iDiw?{^y263hSL4VZX z3jMZHtiekb@=i0DK6gJv8|mK5Sqsml1uYvrX$O=2S)|w}Xb(0LJ`?0rK+aMzbUa%n zw5M1m5NqAiVOwTKL9&*dGg+gV7))n!LH%#=UCF}5uNN+SwPe-rW#z9I_l|a+5Z))o zDOc(vI|vu7C*^$`d^X5q-hMy-*Yfh;7cTjIUimKzh-c4OpR_T;AN1r17>qrEl8ynO zOk^g8I-F?F!wLm>X2|wok&_G?@D1sBj(ogmAsMN#`i1!u3$?^{<5M=No^L`Uuz4 zab2NP^@OQK1gDSes#K{>eM(4u0J$F#QkQ72;~nWQ!G1_3Twg6-mk!1I|IKSLlHcKn zb3u*MgrfljL#(j^GGUK>fZQCt;3qRnLsK0SSAO`U*>Ku*&#t?yLZ$nEFJ`GSQMO$5 zGj>y)sn|9o7&$X(Unv^klgxVuioN0o2if-aCb!7`nFA9B`uB45Rwn+*>>eXyo}xsy zPA5*-o*^QBOvnFZa~6a|!NlgHSg!MuM?@qiM?|G?3sWN_Qd1)$Q%6@6j&u$g;Mb#@ zOBLd|4h{^qQoAX8`6VU!`6eXzvKK7Txm@eSC5Qw$z|JauRR_!V-dNslD%!~W;Urov z7-kxo5l2%<*5Ywd?I`mvqDRqgEBj`LjB)Nm6oIYDp7t4o=jB?5c`Qm`=9mu@MzS!K z{L>7YAaF-nSP?w}e}*dvav1C4su=jE4BjgAW&JT_#TtOFZbZPW5NqJ<$Q7(%&ep2? zj`7QKw<8Lh_GDjs>QAoaht7lZYWtEQITDU=$ODd!{w|L>RsWucWV)h_bdydebTK<* z{AJ6tdI{%fM`?>yg~`q#{e5k^yR4d;Y#SU9WYx_rYt*nTCo`Q+wuwtRSak5|WtCXb zLEXMTJ)IW2-Zs)I(+!>mCB-PG_J1zN;FEG}1~-+H?PUH>Gd=Fg=@EOkVfu z)704=9gj}S&ly(K3&sD2`(ys{en1Z#oWWWN_s=4)NiWyG%Al#6b%bsf%f*9}zwB^w z@UEHDgwRnW^pkGTcDHh1T8dkyRiw>2&iTK({G)#U-wHZ&qt*F66zV1BCIW(OJu6Bv?z}f z6Z)KfjpajFN=SmRp7u<$=5kvvi8bG|4@7YjAU3&1;!mnW}CYuj#_qh>0L@^hTxL%Xoq0cS5r z%Z9f$EyOLB_}AC1?Yd@;n(=AculZB5_wdDlXABj@yRT(7bdIcsbbI?s@f|w$0`->L za3>W?d96fJe-dNL7e@4Tswk}0Y>oPFGkOB2#3&9CnLCRCnPuhlrC?XTwhX>r20z9L z$S78{t4B~`BeIk98d@4dU(m&m5v|jyY~5&LO)B|MP40Ey!|uM&A}c1lV>B zqf+@{NUmzstCS5nyw9s=I`CzUVe+nm4ER&y zttPF>uBH}R^a!xGW7)biSP)jN5nIF~Z&=}&ZHbWYGzcXO_BYFHHU0Hx%8nq#1vWD6j|~YLdq;K^jJ#POhj^7DkDEB z!|~7pTbcYsA1T8dw#(plUa|(^G^)9dLVz3*s$`yQ8FcXh&1}+)vhmF2Zf%%T`two* z8BFVo-!TI~hRd+N8H*VK78=;t%4gnh25J7;piQ7Y+-hM7j(yb@PhHEEv)y zV(9RQ0bR(D?mdkOdGS?TxnIzXo`c+6&FSH`&g#kESJpfj8*zl*x0MgPzoCo& zA9?QqUB#^~Y`>bBy=S%!ruSkSV?*dAnBF^t-g_tXP(p780+?oc4Wakmd+&izL$9V2 zNa&%s?EOEpZE`p{=jNPq@BO~D{`GmS$C}Y-q*t$AX-gW7MlEs=KyU2r=(Jl~o#hnv zq?>Ipf8Nwf$J1Ffs;K^z>Q%6PrqW4s_pCU3TXi-i`PEMH6Hed&OOS*8ERtM|_J-J+{HuA;QA>U_R_|dZ-HYi%p~ghPuzIJVV^K6FJwa>RYeO{r=i^W|uZ@zdmR7waxBL zRLWbP2fh);IhL48gCzDg-SG;yf42VO%>EoGrsu7j_ICRAb{U_}<7Zg@IJd9gT5`Ex z-W+*yWzEy~;!^uKd*0mH^7gy5WXa|Jd2-~+V;?Vm?f&*zmF)``ZezEkU)I(= zS(U8|7j3Wl)ZOdt8~f_E1&g-FT}`jDRUWysM};O$D)iVnva)?#zUkkND>P|Z-u8E2 zKE(btVQ2gIKN}Y1o^|N2&S+Fw)~jW{E;kK@y*mUGXiUwq3_B^Cp0a$IWADmk=9>)VZ9xJu zvrF@rN!bd=wr;0A4V5%y{y=9v_hi*_>&GzFE-j#&3`WY6fIR3r7}bd~dQo8u~Io+|X*UBi8&#Y0~0_l${~kozDn z)gG0%#ZA@5J=%RD+vKgmrK94B{BLAyQi zKAqt?KcAnqN5*+F#(ZKcW$*Yzif=6xg#Tzv-QLW7OyU6rYgA&`>j{ zdzYcg#AWQLd#P%ol9Dk>W4ZeqHo4puuJyAsHhlDqXDZ|H7ctLN1;f2>uiI@a!k*N1 zzi_wsW#k9Sr)GTEVc|2Lx+DK{9XRv5@6B4%&= z?jGfS`>T7+VQtF3W6M<5Lq|@k;Q8nG98*QNKXcc0-#p~L>8|t3CKXDee|rJv-+2Az zfBZoQO7C9-NccVKQGpIpZsQKv`Wf;tSC!}>&O!j+gIn(^S*QqDz?|v3D&|v3J z<2l>7JQ<*;F;>MKV%~g?QRJhq^Y`cjFq!igL-g8rJFV0{o6^mpL)&iS_|&q z=fgy|-RV`17W4a->2PoaFT3^Lrjma@&HeOQ|Ew(Z#I%Rk+;E9ceCs_KJD z4^_?WCx3I-aYv44=Y~4JsdC4%wOKp7&xT_)PfT{-yw&r9``#3l`*@nNrRue+dVKG; zdh52*>%J{%K2K#otr@n%N+3pe@m(-zRrh+dpGO2bAFIJfRN7hNY&~^VQ_<5r zubv{^vGIl`;J#X* z(yA%$Zl~P8PMD?AA60|Osb0S<3*XnK<(@GIHs`PZWzGi0=D6JZM%`Q1bdE~8O%?fA zcW(a*9gmDv>L2xd$6e=Ft=HeF)P4S+sNKEiS4=i=JfD79_uI)G?hOwn-FI)y+oxoFRHZH-J{=!y2Hi%xR8g(TfNVvO?Dwn!ZW@!-gg2i z2%X2%?9ULCg{^1IAf4%O6==UEZ$IqEFyp^WLYbtB3e{@HZkT@dtp3}5_wkOY-Sh8X zOVcssPwu%YI={PP=qa^!)1!F@m^Ub0`w?G?wu0uWhu(+GX{xHZ?v@qVHes^+8|}mF z*o6asm^pI&z=8G46l}$_?SrgRIl(F+d*GMFyCV@#$?SDs_UzLiJ(quY^*Ond>Xjm9 zmiu7Av)YMOhZ`>GS$A@y1A6Hq#mlG5P`*gE+ykzOu@G6 zT;P7rw|tWwaSuN1?0(ce;;^Hj`?r`XDv9xwvm;x!m;qbtJwLrfembMvI%yM}&5db) zddSL_0vR=DbNAa+6~0+HV92U2Wm37{h78&fy<}c42r1_ocwqeBOP!RqAQ(TI~z>*gvj1 zX^XRHzoUbi;mjUoq=Htv-HVkHYP1<);7K##zME z-Mq%`1lK%Uty%Q3#M#D~&{FtZr)NEjrB>^lZ#^^3%M>1>1QzHRo65X=?;b1ampb3Z zOo_WtnhP;gVw3&tif6#zZW$GoJ?=tu;n?+_qn_~iY}o@O-Vrs5y50TV4|nBLiLy?) z&X;dTU8xzqvSDz;TCDySiCu4ukGrKjEB^TcU;+CJfb6%QDBmvLF&N-Jpt9YX+^^xv z@S0b?tkn>~*2OOJ?Dmwl`{`v<1bf%nFiCH3IhZn4`PhqXmsAel+&9;T{43uqY`3Y2 z`|a&QKCS}wzie1{dh>*qH_21Zgr1J}V6#>M=IiVyq$RY1sTk(ajIqdV!pD|9kGA-F zMvvN=*5_aKc2TJ*6N~3waonBqcGA>7J_!N}ln-uHZ+a7_kLgH~oJ}Ccy6bv+dO}g^ zMbC}*Em3?+ciot3UY|>z-SIy4J)xe0gt?4QYs6T^xOX~lOcvt@%{v@mH+5cKVQ^+Y zpR`|Yv43vkwlegN7DD(q;-`0B_^Q^telzL>1mw;WkgeOv1^y+o=Pr@E>dl$)ef`ir?MgC$ye!xChT2DO^_IT&+y$-7Wo@{- zO!W09Pc(nFcwvkC*aMCoy!7NW%6L2XpUy+H>j1Wilr}m6wbv2!Y_*73%+h#NF(aS&qaF z`cmFGjzHbCXKB2fTiT;K!=baQX z@u(L6_-C(9r;9ZU6yXXk&S1vRp185!3kd>v%;y;|$%mDuyxr5Xt^6vcI{TIqvgW zrAadx@KT*E9^ddoBnlkqQv9QI&f`(+PCvt_M;Um9RA2HGAznx$D8`{CBIDdR8P_7? zT79*9f?mb_t4gkIi+kDDE3x~fd&gf(Y)A_l<+hGzScbhI+n#*z)&`~1$3;j7QtL(B z3s|O5k$zHk_YdEx6k0X+lb8Zp8~1B{Q%rTov#1pMCarK(3aw{!beGsDjf!aRjAuPT z6LzQB{z8d&M{s-FLuS{Al6q_}R^p7QKTgc8JE#T9LSXsR188xJPNu*eIvO9*ZfW`bOI((=ImLQJKMdh_TOWGQH)!*JRo;$gk`* zCEK4@EzjA8#7vwkllM#4bjLBUZW>kc4}ZQZV#N7(P#d{!x7n^YGL39>r&u}r?9cJX zc~g9CW^w~+R9`@8Xaqd~fi#|gYAlA(Nl?g~z}zrJf3MLq(vF^u90= zmcwzl1MksqBFF-SGa5iw7y+{Z@r@s;Dn)@s6?~~moXGFwwJm2};2!5p;CYX8FI<9$ zXoS|w3ixNQwy}DXT#{ARj5oN6NK8 zK2qL--x*MS$HYh=kOpd!H1r+P$36-oj6 zOm__^&-4n2JU#kPPg$jJ1^r<%tOVjtPuTRYL^2RILm-rfRxk_}!a=wzl2HM1Wh?;L zY{uoVACN60viT#MKeG83hFZ`OhQdr(569sSycY>b1cVL94agPH2ztO6AkBcCa2|dU z2_)S>(hbZDgbi#3{eiH7gbln2uSGKXKmcH?nQB4@2!mO$0Zu?9eBcA8=qm_)1);B? zhR_|tf$|L61sC8~k<7GpnKMEtREPF31ZKc8paBXd-@)W1m@)~j2n_%m3&zHRv9aJA z@J1xW7qIJ)wy+J3!9$4U^F1jbCzOYFfX!sVX0i|_%Wc4>vKE2b&1JQvCC1oD_Y6zW5J=mQZVIgmNW35XQQ*;OQ$ z12OFMDp2P65kPpfLI?LZ0dcs)1{=TdPEukMo ziWDH<1;}>+$~KfXBQy+1FO>8`PXJ*;KZq1e3|WEu3vz!!+K)m_;DShDbXJ(O3oirg zqVQ!vzeSvYev5=cb?649Q#1%R!*zHqQp^W3K@q48oq%#Kc0i;!qMWmzx>Q2eLP#IbQb*JQHSP2K=8oUxI<$^#c47H#m z41?LQ5q_i_5e#*q3($U*J`0b*BT^<6P@l_C2gZ#{8fm*3h`HYE>hJ1(y2;1RjUBDS9O5MSM7mv|7r%TgCiovd{zwR}GE_$k$6^@G3 z{~Cq@I;p=FY(L_wAI&2w;%kr&xYhuDH6-muDPgflmiwdzv6a z6XI!di|*G&k!IAxX6Hnj(|)$FfV$ZN9kw_IwEr!TuO;%eM81~D*Rm#bfG{9zOYU!Z z0wRHW+$uHXflAO4`oSbv0hDDc;%xP+NNWv}LN*}Jt?!Gp;l4KHw+(q}L!R0k7irs- zZIXzq9dWfIu6D%Lj=0(#fUEFQq`ecc-}as1gvi$%e|=4)!vv9z$kVX{5VlhfI0KKs zEz%i%bg{`3aCF_uz@bvK$n9+{9Rs&bag=>aJ}n9ATM3H zzbiJ<^@T_`6a1kG^nx+)GmzhIl*u=g$v0mEe&0M3>8=Ci+C4iIg*t%!_Mi-UPzF6H zgC4YDJvzZ~z>a!65$Ty6azGhCM?IsNEAIy!_d;L2(0#AV@Lc3uKL~*mFbGZo@_frZ zy^*i?Lf8ps;W2nb`jCe{1)&DCfD3%6t}py1(yu#&!vfeL(%*srm@hJb`vzPR8CVl2 z!-2>&5Sa!pgFS!^4#XY?QMU)BhcAJ623LhPa93mqc^wi4vtS)izlUH)L*9xEMK43Q z0(lrp9)^;Kuw;P#!pcGu=mq0oG3*9(9rjFQm=5V6KU4Mh zV2#LV!iJ}TrhwgqV>e?+XAJj@LBC^j0{4t1|6|GjSn@xX{EsF7;}Sq-pxnnbhIu06 z(?UKV{qgqs7B~s_AWCFHQpg6C09hxz6p2_bGLf>G7y(OQ4_tt!B9k;A&Pl{MsS0$0 z0V0#p-{jFEQvv`TPkARY6+KQpEHaIFrrj2qUJU9&7x)h50`g4%2_8U<$c(Dc3aCRf z9x)^=3bO&3W*!I1VCEZIm@?5vIOBVaGHK8nmv0$)IBXaqfA3@n75 za2Bv_``a;dQb7gi3FvGNWj5!T$oJ&$d&=|s4iE&Y;@XN91 z<=FG`nIbDlXT`Tb8LlAh6^Gy^Alu56fb1)geI>H2oCe$ADnyB_N(zfaR;K`TvAQDc z6V#o@oMeOgCtg8p;X?;SN4ft;$tqniG4UvuHf8%#BS7ehD(9b4p zh^)(IY;yBjkuB(LOAB}|vb7=H71`zh^1N*r5byR(@IYh-I@w7)I|smSkzKjqqR8$x z@KS^Yl(L6%+CyIVkk>sOAPi=~1~>tcB4kbW5^irPXbEAk01iMTd=S}(T>FTBUj=9n zLtviBer$OE2$2Jn!GTNgo5(?AJh)QiP$hUOav0eT{|wmU5$y3uIw1TJ>dX;jJ#tUv zXkMrct)M?l2I4q+5U#;1kz+0hgp$w<1_Egvqb!b*_OUl2$CChMcDy_g_i@4;C(Map zXbJrw0+zu(xD3xlengKyW`t0v4&?Di^7!KnSO>@8HoOx#*+b-12IvE%`I9dMK~dN# za+-Xf#->iAw=;f#ou4TNb%8eI3^s5E8#uECDE~8*<(U|fv&jK_KU)T{v9s9b*|8$$ zQUUUwN51pOaUMC&BgX~ez7PT>pgweiQ7{j-!DS%a&nY1k>O&ux0o&j*JQul0JQs=Q zVg*2^OUQZYDA2ZCP6LI3^0@q~$Q1)PzH%7ui(EwySI5C(;QBSfUK`rx5#hda8BeoW%B%{$ct}9UZw}?(yPuueqTQqc{2pi&D*lj1m21K z?gu}xV|N`m2CqckbM1XEkq@b%DO?x%NZL^;fHI9n)@b66DG1*HamEJ0Vi7kwa(@Zr z%UvJZ13Gh$f*G(3w!tyD3{L=i^jJW8o~-av6a#9-ngk_dV4*0*q7TKxKh++hL}_zG z>4jl9oPsx^jBLPiQzKlIBPskK%E{7HXC%B9wjGC*kQIsmUs^X8iL$!GB;Z@Z)>Zf* z%9R{4Ln&wq{eXB~2Sxd$fdargybP1c}iFXdO`#&12!>BNSK7tqWtmz57GS4gC9EaBcF)~ zpQtfxg`;o@9s+SDX4W_{@+T(k#LZy}tb#+p^(3U1q!Zwm4;Z`O8%SPKwIS{ki)KpPz;ta79#J$}jH{K-PRdfPV7T zhweb0^R0y4qL?32`MD=Q<&nQ8a9{p!VHC`QRj>!pcYgH!WjP?8FFU{hcqgiW1?af| z`6kNZD3Ie-)32szm-Oq4P?s;jyU7=&o{gXbBTwE!+U?uL|i` zL0?r?!7mUks%lm!0$%}XS4AIH=K(hNl@p2qHv83dxC?JYRdYbS{{^0ks*e3sPYc-q zIjU2x)h~#uVL&KQPBk`zTU1T*UK1H>M!+>uwK4;8)cOv#!UIvYDeKzgvG#3Ib+EHK zeS!Qk&!g%#fy3~-sCp)(f$TsVRIe*6fK6}&F2fT*=k*gnMj*cW#9bd7txufwDeL;! z8FN9ZL4H8C2H}AG4arYK;%SH+jVz$N8r>1qxDI>^r@$?$3GGzVv7(w)1mbF55IAl= z93F~lkq{`)7T8ToWNDQN8jEV}0&Ju8Kv8Xy0Cl@9^`k9uw>>AS9rCuT3{!x#+G|h( zXjj^!&-U2d*IxkPzupJj^EK&r*e0rDIw$}&fU@s60)Bw)a2}qC>Vyq+@`u7eo;snw zPNRYRblMG0c^Aj<3Igs=?PV z48Di0a29?M#hj4po&gF%E$9p*VLt4HpW!!AJxmCMqEHXMfibWc_QDl-C90<{1Vc$^ z1ifGaEQf<|1AZ6PD-nDFWuY1Lg~_lQj=~-IDC*l}kP|9GD;NmVVLki^_aRnP?^J+H zy+;GG_udX?fq4342kKGZAVB`U`1O4+svmjk$9?@K0`m1IfBg#s`Wb*s19}7L3^*=o z;9z(vYS0?M_6OY*HJJMc`$IiZLpUD7eM2+DE>U57MGb2R)bU}*L=8tL!^1?4NCDr& zW>Mdj0>XUP9nJ&g@f~>{nFI#F@1jN}1mYj{M$~BPNjT|*(}spm17rzDmT+VlL!BJc z6$mrt5L|>u@J`fNC!~ZB2!#sJ9Qpw5&Dh^WjYF<+Jz*uFpK+As_^d#<@y|p}&|#gZ zh!LVDBKJhfc4B8ylgJlyHfj=jnoL4cm9Lez}3P#OBdR5$?SZ6@u{%!1G!hQeD>v+_beSPqBbp{Uv9 zd-g3Lt~oV;ynLSy!r_sqx#(o>eE1;hhjKt%KTwW8&~D80ff>L(^GJ7oNoW8^MJ;Fv zuSG4yUKUbzi(HTfkYN$BFRlXUZwY!{g1eORUW!dDMZTqzV1cM*$iJ*2w1D1lU(|Ar zmtThGqE-<1iv6Ni2EZ_QDQcAl$sq)017TNlz8d>mT?g7gf0zvDVf7t&FKP{Cu*M&j z0lHXAIjyCP*6xHS5G86I`CMNH(DQox_yk;sUqx;B0&tkb=(Q9 zVK^Ymi3)ID)Q_~0Ka!u5NudXffYb0s6mui$RAs=%PAvrdf2s+uMV(Fz2jMP!6m=#L zu*ox%M4ffPGEwKq=Q+yre05P5Qi=N6Pt--OT||!;k@XUBT*?ZCpc2d!bs6_EGG1N_ zgt>ywt`N_amVlnFkngL=dX;j!8VZEJItw(s*=*yN4pqHb1!@8a1m>K1X|Dhu`CYZwNkduu7&6Lot6Y=L8TY@9zI&9%J#7EpDN*;ar~9-g_et~qPIw^dK|bgY`$auW4dJ35r3LKoF>yX7 z4^IjJdHf{>P#(XGgz0co)YDqf5s>vMI(&Lv)UOF(7n}s-{`G^X-_ZAOS)mj(gtMZa z=Yh$hUSx!-K%IDDpOeQIS46$E0KL7$PG4??m!e)}f-XSbUVRkx`Wv_}>J9O}HGwpL zZv*J}9r}LvMAUoke}7xlhae~p?O-|3rhE*B^`fGDVFc^}m< za%ThTiJNPldazYA=`Wf}21{U@@WD@*42yxyne7e0#S zOafVe^{dVX@D0oZK3{J-pf21N&GLtqKzh~_(OflQ2b>elClOSK2skU6Zy{I+J4H*7 z8rX*-p9JLee=b^p34wra16aBnumB=OV{MNXSQhF5 z`YX;H6VR2197RR zBBC3&>aSn3szst=ze_q_JeZAqy*r)l-l|vg^83h`LFqdsuuq-XjeUpsHdM^ju{!RZ zl>a|Ox&J&~_a*b4Cp(0g@7z(imtn`hAJ1Rk@0(l7e~wvHPW~N_q=M@!>Hf*j$|WmU#Kb??1-9%J#FW$N(!;>Rb7w zuTMki<8n(+A0O%O^QH7l0P&@7(*GJjr!;TlOd$Ku!DVu!P$vWR%veoy# zZ1&YT4wQ91O=Oc#c6sTIW2?0KtFU$$-D%^Q3Cmy+9DvjD{)3F?(uecKuo1s6VH3xL zbf^0^?%KF;vQf_}yS&G5#0USG#$s7(d?%Zot9W=;Q`R|~%2wwn+3Z**>l}w=U0i&g z#fDop8E52WTs)qcj$rBj-^26#^ZT6lrMq(1R|C&)-gxFo!@r9!{$8JVv_r|!|0i$B>_t&kYlzRlS;{Kn+PUFv5RXx9d{yXEFObY&2 zn6sqDKjnawuv$qK6ZcZW)BUce(%5z0^TKonr+nOzfo77pG|fjc#Ju~@(@&6827V%8V;SgkK0e$? z(y$p9?|wS}UvWJV-njoFE+dZ$=JR=l3{%Q{I_AB{LQe9*8x})s_b=Ip9=&+RIS;{B z&VkR$+y2|knNr_8DD|EDxVF#JE)MxV{+_TnH!cqCw#QAI~;in@{Iny?gbK4xPtj zm$eS}k!RVbGWjdlHHEMnu))u{_^0#Ful`ERD-bCSAtfw=5CzEci( zUHkZN3^Y4q-_2#9^-5+Klv^C0Nw}fLPZFx%lwLZ0%)eceY8*E=nt2Z3PK@`ThdUC# z2qTO*yb#A9$J`SpEsQYFA>2>?^Ee)bUxd>~`glng?|wS}*KQ9pEx)tr7U+d{TxBdQv=c#ieI*G>|Cx?BHMcyAhZI-lXJ zFQq=m#b=cM70x`gC!e#O^H1@7Aima8@sIOQ{{Mk%hVnZek2juNvdn1{EGwMz;dcD_ zC;!h}v#+dY9C^sug7RUEZTHulC#Z{M@Hx$KjX))rcL z7FlB$2X~hmHk9=;b0RV>gsJc$PF7?-Y3JQljDG4g`phAW6^ba+O9k7ND8`W8eRC=C z?V!ZPIKs7B&X~>QOoAfPIYCqIpCvPVd*cq2X=Y8vZuMoOIYDN)%E}&B8TvB2q@S6A z_`jg6zhsOuin_WB+Y6*l{$Iekgm&7tlVh@ga_#4(G5ZhO$DQckG-h1csC->m9_Y-i9-tDXFxK}FXDcIy8`AwcNhSDoO7hQ zGoLInPsnU%H^!rX;2F+amJ_hqHIBf1QhN;~IjY|Q?hD+@ck_O{D;in^JBmlx5>~d8n%mBiK!}Iv#_P8Sb4w)hG{@n>XgkxM+75YE{95=*o ziZr(laC}q>+xRq>Q9drteWaf&sWf+fMfybup98<5$Z%TrTL~qMG|JfZ#CcFk+2b&8 zU$lT^HH*t`J+$<|S6Lz9)xgbjz^VRmvDoxE=ve!GlIU~2M z=91q#kCThKXOoO^A>%Z^r_#ptt?Y0ek;_&I*^^)=ag>l_&K{mcpXS8O`ZB{&1>3nS zt8BdOM;)0=e|fj_y0oI+PIvZ}-uxy_<#>)ad>UNjH|=nHWg$#7TgvxlOSKXA1stN? zn2h@rw!*Kl4Yq?FZdd&AY~1JY$gCm*_4abbd0MX6uB)|Nal}Yh-w(VL(ptK5Jjy<| zU864F2CvKSZ(S7{2QM?#_0r6CnOB?{!-P{hp7zqu_HhZ zdkJG6wIy?^5{ILY(&H(FJD7In1l;C0*%Dy%kKrfZF*oE9z>wT805Xaa*}x-n47 zL20g+(XPu}Rx-{-A9G#9W$x$a+BR8atdm80Nm;JvV^Q^OHmJ7buzmao_O<+k$>;Sy ztmldg>%E>+));xb%yUkWHO^VI+3l72C(?2b;=%RB{SfEc;p8S<{Zn}R{(pH7_J73@ z;&D4y$UNGsHjb(gB|q6iYcsrwPm>HH2hm+3z9`JE{tk>)wsW>r&}^sSy<)PqIT(~-`u(#a@+o|o}* zOa-ZoTMhkJ)~-obV-d#@($kJpee_%~igWyqxR*;$I}Kw1;pfS>P)$$Ed1|S^ec6oR z99QAx+q@ED@4`f{aJ9)XM|e_WvtcM@n5ii!?OyNh|W#*ytyrPZ??Gn?gGJ z1~7+HNq+UcF2DM9!5u5*d{0Sb-$T$|$}w+O&e2cHXdI9hj(+NUeYZ;LOvwUPa2%5x zjxgEppq+M{R0i%5IHl{dL4POn;Itja87e#UUD$At44@fmE)u&;B&sd^3Zr1Rq==d) ziKC9dNl6`jTYREeZym+j@~F#_mh%+R9mFSgilmFK%JmcYFZG6(m=uyBdb6aC(h1X! z`x4?mU)wEWqfYY(ssQ7KJR%9IvvULOq1_hhYq)-Z>lfqNN7@u`Sb4-n{+I_jnb233 z_zsXIW>5Nw@%?0ezpnU%sg!;PRLTsvpN?@`;@1+tmY(BTu zmMMS70eS0dQ%cVLK^XmNo9puE6F&P@KI?!=8i$PcEyZ;pKczmAkl)9IE%BrO?h2C~ zz6n&ycv63IUCUHz->%#X%;`L`NmPl=3n~fr5>pYz#h=@L|1Z$i&inrhnE9~_#$KPs za*22zVt$~1S4Ljb$6M}m&pzjwa8bsmv^o4f9`;@jXRbbu0rnV@zUNt(JAPwp${E_K5q`Bfrl0NFEqi?&GQ)>4A!C9WKDQ*whk9?1 zgUwRnwjum<>#{7eO35C3d`Q3RncX+Fv06x=-z{YNG`}7yv#jD0;d&|8X>)@ZTWm^L zPku&@8a|Qyj@x5f_%zlvy3yz)i%u-Q(NRWLjrU_Dtt5>(W{=TH=au(4iJfOVJ?8km zV|Tk+OHMh$yD_)%Kjg?GN5wDdDe>&F+gZmhnd8VR-8r9w{~SpeH3s*4aYWs56_Gmj zIKUoLc*!XR8J8Au7C_%+ReC*y-vc1-w;~>wc1wQIv&k9!w&HgTcZ;NrQOK~1{?thN zCAs;nXrkwl2yKI`q|SGspLCKrilyQk#k)Q+KFD$E4>^)XZQytceg|ww_b~1b*vg#J zWxp3}w2(m-x%})6i=rO!TVRi$`#Ew-XUe9X^RTQ(Po0@JSZMdxz2gCUOwfcf;y!17 z8E+nyL5{`D!v%5QDV4z)B1M=Nm}g{DcZsLBJ^##jZh}3wv-993zqfzrJ*KaBl>BYN zJz`%&4;SovDdQ33?XWmvj*8Hy*dYt_U^!^J_E_)}k}f8TlQEVpGxmQO8(eI=-f<$& zX^AsJn<}%>=dX@Mk^{S#!L!mYwE&sU@8V3!7}FlwqT6Ifc3I)r%X5Iya+2^YYJxv> zXt%LZi;(FY?gduP+|jqnP;7M<`kO}?R7bv>@WdX`4E;Uce1wDt#Xylj2^b?CyPlnoMW{=4!=Sj@_ zFEAd_x12}2&_pij#bhZqdq>aYxvKY)@hVcf#M2nJG57H9Tug=}K2qLi9`%Ihyxy^; zy#^wdxPbW+)Z3Fem`;0dkzxhkKCn4=dFwfHiq^VU%201@_HesESaO%S- zyN=RFC}r)EP)YXDiT%~H$D{O3`eQHs(P=M98C@H9IQlEF2VJBCbi{tV@@iL&l&_sgsk(#Q81^9VdQ zaAac(vV>8I?7GQV{XA)Iq+YBe&28AtD9$5%7?;@~Z*Q(`qrDny&;8qT6!yFVn)@Nzg}V*Pz&PY~5RP{ku|0_nh3?P_ z%7FpoD{44=4Go|&esa)RjwDoZ39Wc_P5KZ z4A|}WRPMWi%P&~;V2+OiHteeQT*PO)Xy_frmZwtRkd-SX-o0pvOi1~(Bjzes3Pv;b*z#jFxk>5o@#t67Hm5>pUQ(v|VhDz`3>qd(S5e znA4nzJ@qjU$zazR!G=Hb-s<~Gxc=znWP;9ei|23lbGz)$1+0OJWUlSD+^2m!$eWl` zv8gS#9nu$g!K%hB`0wFO%d7e}!A?FdB#whTvz?C~JBc&81oeZzkCd7H7qgDzrCyxT zh2#7_;%EQGP=7wQw84f~*=?^q?`&fQNNtC%ifH_X&_>L+>jq=7$rkg3w*Jw>3g4>C zwH=Zcu5`2w%wO8rvD)*Q_OGodcB@+v+fXD!*!#%0Z_{_OeLnwly%xjF#T*j$Y=$_o z5PC^oSHDjC!MP?59bZk1NYOk=Wub>NZ!ERzRI4KgB*5c|OT%Y{wt`FZ?f9Ky*-ikv z4YGM3*l}czJ5D}@GdqUNxIQAB8_BzIXInf?MjAudr}D7&Li6Yu^_qGMy_Mce@2d~h z$Lizth5B9N2gBpY?N>5G*$kC4RLf8^L+uO=Gc?K2F2mdm3o`7^@VkE^{}lci{ImF% z^e^vU&A)+vBmXA;&HM-ZkM>{hzs3KE|Ihw6{9pLL^>+vO24o3n5zr%`f56ayF#!<) za|8AV+zxmW@G?-b$FVce#h%Bh0)qlW0<#C^3d|Q+G_YD=jlepA0|UbYX9und+!(ku zaChLjzzcyF1MdVr4165;G?SLenJH1Gq?yuY%9ts8rb?MwW@;Ct2RVXL2W1J$9uyWd zI%r(b*~~$iJ7hka`DyT?;8nq!gSQ9o4L%rrJor@b+2BXPFG3{58B#2yRY<##1zD11 zNtLC3mbO{Kv%JU>mED;=S@!ff2IUx<(~~RpviZwBD|1Ckq;F*Q$SRRFBAZ6GjO-ZM zDKac_M&#zmy^#+iAKguVH{0EUcZ=U`ez)y&$GgMsoNhjIhxP+xfvTd8YAKaKo!*LCX%WmQx01 zM9bO!PRor02L(qeYdQE2EuTTlEi-RJ%L~x* zrr>SCyMhk{9|=DBhn5}xpye>M{5x7s`cJg1MJ9;M5m_~|W@NL-R%p3%~{;@EpfNSbA^@z;a)(-WwzGfM44Ov>b7N5BBl?|Ma-y zhrE0LFyhmdCqF;=>0#@K)X0Z(9#^n^@9lXw;9>tejUNnrnDhxRyO9>ZBoC86tj7N$ z4{kiT{oujF%n#E)G#+aA50EauG56QpUwnVg{aW|)-_LRX+5M;YFX4CUe)s#G?{`3s zarX}2t9`G~-6D7BOZ@HcuIo zC=csK4~F+Jp2yF z{n*(sJYCPwAZFwAB97P?)9BUoZ z90MJ-9D^Ly9Da^Oj>L|nj%1GHj+Bm6j?|7cj-ig>jtIvT$3#Z~2P@sBGxXCZ2c8mDHfrRpdjW;v@asoxyM9W@;#9cvsbo$b{Jt)x~# ztF5)wMrvcVY1(q_uy#uOS$nCy*G;{sURp1&x1s$Sp)b)_=o|HI`e{dLM|DRT#~kMr zM}Fgl@yhX)@zPPlalqNZvB9y+G2XGlQQNWJ+10VrG0XAL@yOX$AMM!Z813xsc;MLW znBc7ItnI8v-^RhunaQu1&W~DgsVXh`CPZs#!x-w6{3OTBaeV);ysDrosxqpyV}>fL zma7$NrCP-+JJPTCy zleE)1OM9)0e64kr4q7+*KoexL79mr#i8582#QgVsS;<)LG-HZ0+9o-xZI*M|RynV& zFsEpTl#g~yCDKk?Ra6@72H(%RsnTh;%-Py?6`);IIW;%mJM*aA{CJ0IQL2)jNLAJo zt15aD)mtyDhU(Q+m|k5C(`%^ldV5}b{8~lm9n?gnEu#RkTXd zRO*={wff#Cn=6=m8f(0kiF&j)N3O^Tl~VgjyJXd}+Nc6rtm>)C>AvPXtBV?-7dJPl znR*X%td(Bxtrl84)grY_AEm!HH>%6}4)wc!#vE@(SV2~1M-oR0>y(wx^~f4z4Yr1` z;Ouox*5O*KNVrMBra)ONl;H%afL=IVp3 zOU#um(H2-&vzaD2pJiiTAL*?1;5lU~RZCB;YU^oK9X+kOuJ6&VY0-LLZI5-` zx*@rwmR3;(s>OOc{hW2vy2ZAXM|eiqU*kERwofmomsMl+iYijysiihAnwPaQRxhox zR#&TMrM8w>%Z-XgC8LT_S=+0PvvQh~jIHKX?R#yOHd|X~bTOxDm$j?f6|1rKT6?3t z(qgoa=3G70{K4vK4b&@H3-!u+BfWuMRj*<$F_-FXt+ZA}D}$9z@2~gK!(F#s5A~(` zD*c4HML(}!wF0b6RvxR6^`+_IQ{9n91#_}>S39a*Fz4uHth`o!t%cTFYh|6Ww(I@0 zF;=j3&$@4gXmhn69OtZJjth?K)*>s5xy*6Lao5q`F~E#*bT*@`3D!8PfK|{uXI?OW zHqSacIeS@ktgO~bE4%A~)ygVj9x#75-&zsYc-I{(nH6TWb#`-hclL1hadvjLv&L8> ztQ?MujvJ0hE7Uq>ov=BfRz0h(bD;UaIn<0b-#Y^8$JP<6k5$+_XbrGx zSf*9p`e>!HqO52u#)`Gvmd7P7WuCVVn0KrWR!3Fb73BKGmDv^S3UQ2437lU$zm-gm za2dqB;x%dzdqVDRE>Y{#^ zm2=nCeIu(;-l%JIGsYNMjM7FKqpVTRsBP3SIvZWAO2!bYo%OXbRL^0A8N-Z`#wcU7 z5pK-Uw;FR91AJqQ)pHu-jCrms<_&9y{z3n!M;YH+LtR;2U%0ZFtE>&?cUEF^y7iU0 z+*)i^w!*cV+6mRomED!YmD81ruf}}g%58k-%Hzt*Z1pG^ZDcloG%~6g@>rgzghnbO zwUNX;sS25=3`_FpF|3w4tb16`Cx*uE|Ah_RaH?#wTXi>&m`BZH=5fPi_?RaQUn8NB z)JSF|H&PfWjWkADBb}DU*k)`ub{M<0p~fC#pRwO6YaBF=89y4Q^n%7Yy_8nVIIkZz zF6di~OU4!Bx^cs}W!yGy8uyI{bjQN9VcJY9xA8>pt{u=0YCjrxjeFV*tEwx%e#E$J z&bPXmKN*qcC@Y1z-Sw-v!}XiF)%Dce=6Yt%v}&4*tzm|#7chd1-^^)N1#_KV#9Ux~ zV=lD1n~SV(%^6lTYnOG@>Sr0&aMzcv0w@`tGV74X>M@cRTqqlMgrrh z;b&Ym5*gQw#M&|=z<6d3HGi}Eo4Z}F42N;Z9BmwD9DIhg1!v7+<_nd@IH|pmyjohx zr=??L@6V`yxDjYAHCI~8%ssBx<}TL@Ba`u~Dq@vWMXfTbhh9kavO1}6t5Kju@xI zX*pf4-mX5bzKo`mYbjY#QC7-o8|yWajepq!EDJ=ZJ{jF7RhpLu`JT2%L;9Y{HU#wPRbS7b z8t55SU%iCtr9y5Jy^dlAMvd0%smXe0HAU~Drs`eQG`*Xeu79I`(1)mb`cO4r z4^sOG+O2=D_ULofF@2djt}j<7^)>30zE=IDuT-b?b?S`1UY*l7 zsq^|~bwl5)Ug?+AYyGl%qhHaM>cjO7`aUhGHd-6y>aS+G21p9cS5j(zl8SdxQ)`B# z(HxRibFwm9XUq0zwqlQEyLGqtD~|-I80n$)m7ZEZ>816TZ?yr^TN@~Sv_aBW8!Y{_ zA#zFEDVMcfs-f<$8tDP5F&|`TqGwV~^&r(u&#ap3!K#HGqFVA5;a1Ejwbs8-ZS-tv zul|GDr_WRS_4&MlzCaz+7pg=0B6V0_tZwT2)h+#ix~(5ncl1N9fv!QW!LA{$p{_9F z3nQD6-N<3&G;$fajXV;>+(od2@S&!x{~u@P9WF(&Mfy1{zE-N8Mgby2+UUCI`sfDxvHip@vY*<|?C16i`(;!~kBxRpkBjz8kB<&XPq4N0 z#OQ+br0B-<Lan-6QB3^a^@M{i6ZVz-Ul3I2sZSjfMp?f=7Z!gU5oI!Q;WK z;ECv_=;r8_=+@}A==SK2=uZ2!{lBq_Cxz~dR2OL zvRTpxF`IXZcZ+vVKTPJtBjW?&@yUttn0RbFE;%8-CB8M@Bi=h1A0HJTnQZRPcl){i z@q~C{JSjdXJ~%$ae;l6{pPrl)SL0sER7R8opfY~wc3pRtSniGGdK=#SWk zL!zIe-{UBb)B6#$Jc#~^{*J@+f%L)Xm+0r{hjdz;L_fw^yi__peaJiS-5@v6T^-+J zPBo{*_r>?e_og4X-Q8YpAGf#L)9sO5l1xpmOz`Gya#?a|a&B^Qa(QxIa#eDEa#3<& zaz!#Bc_n!`Sua^Pxiz^ZSs@voJdmuE%yu`qhurP%VfTQW;qGzwVy=9@`_uj7{)nHk z@5WCcrq6fo7x%0C-TmfXaj&~q-J3bH-D_@+dn0GQTNpp<-gY;;JKTfrHg~t19^M|_ z7d{+57Cvbkc3Zo<-7}sMKN5cve;fZ4{~Z4k{}%u5BA2h94 zk@=F-{C7!~wDX_(dHzxVUh=5_-Y-m&WZ7iDq;2xJ|G~fSe@k9U9`U_=Z@-b>IDXrI z8y_2F=F4zJ`(nN(8SMBgXSewGC9)Ql$IRmL~}IZv*rVIkC*%*8%Hd^#`l>=q+-vRvVzz<-`|2Hz4uh&<#nv6SND7kAQY1 zF;;5=xknXgwu80+tPkPtaG9@8oa7R-jec6vLA`X##m_* z;@hBNBY=OW5d;H?8x9>r@Lpknm4_UOzJoQ0oKWmKl!Pc-z6&r6i}v!JTo1w%p(99m z8gzdWitmji;f>G(NcaSF6bWB|9!SF1prc9nEp!YCe}RrA)0PN}RL>@kN0B)*!fsMBhNKCDC_K$rFghAFn5o*yIKh!~X)YDTrr6CEvh_?WK-E zd>8Z-`lMo^PbmrXX=M}WGs-s5XMy&mZ`F zD)dicPk{bKtoY8~Bw8E#55ZbzAjKEtMNxwf0@gnR6B2oP8~8-d@6d<@u&0R$)=BZR zy(E85czgy}JH=1*lKh#0^2oC#+!l&_3-Syxa&Le&R{WeU$)6>14}f*o{5h0Ai+0E7 zr3v;?@l&|O9}ks$0IbjA=WmJh(+2e?ga<%ZAkt@>6-hV>x)PDT8!IU};epUqi1g)V zRT7Sdu12I^H>;Cy3>5w$1m{586RZmdrbL2sp-lv9#er!i!FkXQ1nb9v=}3a}p=%PX zDFOk6O-bQCb zHzZiM4onv!ZQ67tSj)!G;u2}!rb6<4=_)=0yu**5xFz8%Xibs&??%F>q1_d!+a4s8 zJohB{-4y&Rts?c%n}qK|H&UcdHYVXbDEh1%sh>>=-p9kw!V-T8baR4#uMtSUlOuJ~ zmxR(!^;5(itt3QylKv}4Y||k4#V7nEtRi;Wl2}xYkunHU)@?}mJ5<_(Am?sJtk_|D zWh>|o#4ZEfQIWKEB6eBm&dOxyF2st>c2$ms?nbQKN7|Bb4A_HMxu>)%;aIR2v2y>t zl{29G5IY>YuW}}IKVqf5^jFS;4j@+A%RuF9=pbT8LI*3CLWdB0I8@rOa2Xgz>=978 zH}K-maz9`XgUUSw`Cifm_C)9b%5Bh5#7bEXRBnfkCRWNaM!5qzmRKpvIOR_0cw(h2 z6O_B46NxKlZcL#2*^%oEIU1pj6(FvpXy5A+1$#Xe$3fZZYd)F;Wu_b1~s z$mb8I;4{G9QD9CbG8Q+d5gG5x96<1rp40&d#TUiy0J}~22~Q$pOe6LM{wAo{6nMGM zxg?OZrLO_lpTf^}l0dGzfY?8v7ZU7V1!fA7v4**b$hgK_tgHmRgoILFxdw!9KrbVB z7Z^XqNfPndE0k`~D@phl^eSZnbgI${y_(oI&})d7>#ilqfzay|vBUMmZUVi5_@?{8%1_V-hDqP`Y?%?h0Y-HiqJ<$@&fcx zg5TG|PhXPs6X;AZ3+WsIeS%<@F`sAVbItzv{4@y%LZ2aCd_jCd=m?|@gYbE%;>8!_ z-oj=;d<9qseTf9^pi)i{qM4Z4M8?AA6@q^!h@Y%fwt>pufL#tMZCeoAN_z(OT<9Ch zJy5YVu;)SNDpC(`5qm!LZAI$j9bzwlzN<+6%p>+f=z9eFtATl+1WQBblQ4xYAi*-w zg(PeX{eZ|ihxw3%?V%r$K?8>!KZ{5xW&Bi;^gkn^*z$8_Tj&?WE)V@u z*$(;@u`58oCjLz5Hzer*{g#AM=id?R6XT~PiL4)(9|-o2@iUVo5c~W@u%C>dnBO>b%*cl*Wq3~BBH~=cw3*$gSg4dwPYYy6Lm=T%Fg>4kHTdDiJ z{o*j;xAz*VrN6wCV`Zxvm&-!hsZimxUMoDx*m~nUnunrEXo#cKx7OU zZb+<@wF{B)VAz#dDR-I3*f6XRD>kSS=?}sdVrM{W3i^z&n*u)#yAyjbw1*<+_XNFA zc1fo<2_!EYkwEgfv9bkp6C(4Ta8n}BJy~lL>@eu&#J&RU1NtKUdC-1D);qCFm}8!V z$}zzE6G7M@!J$yOpD-M3N%A@8R`@JD3brOz(%Xhuxexl6e9n3rbUR`tE%9$)7C?6( zb~;q*NszjbG6OGdMCt?hH=$Ao0?HHaN|K4t-4w~w?m&D>{=O$kB+b1@avgMUlH3U0 z2keXSkK}DX5=oi*lStAWpgaN{sGJTRL=y3%!Ni{f9YUh}p+kv(3o3OZTn5CZBf!OA zf8`G7ND>_gJ%IT0p`#SBgZxd9G)F6Qp<_rQBK~sd zWMai<4Sm1au`XjhRWZ76&oHwtklDi#7aFKMXdPF(Zq`V zj{(P`-le{dBUWsAJV{oAo%{5-Z<{kAhVEU+NX4 zA4AU|_Il`<#NGlui`ZwOXA^%PRO%ksInZ;7l{z|)B+XE%OOSMgUO7dB5gwIMi>mlM#3N<`2+a3P=T!13(14fn}`+Pxml5V5SxOe6ZBSa8$N#k zy`A89FN09p#+^XQbQg(Vf!egrqa{0pcaUl0Oj7 zhfX80*ljv^2;YnUJWTwb&>18i1$~70-=U9^MEvD3l88^uBuO{u<0R<;okhHq7=U66qTjkYod>)E|f?U*b<7mb5=4 zv79Tm0Qh%BLHIFA#NM9}{F}KTTtx8i7K89pl8C)OBZ<_>=in=(BWZk1k{J38N%n+( z3;w}5xXuQ|9R@YTpNpQzQBjS#LB3&Ul80v^S3hIeF0h$nZBs3)s_O}^v zCqmm02j8}Bi8~Iu6iIf2wj;@|(4~nx9J&ngu$`=<3GQgV}yMcoVjXXpyV{{dZ* z_+Owakz^z2%EZrtt^!s?8SjCvMm&7hu1?%Z&^1VMHncrS?t_*{g1*6a03DIeCeSsB zI~}?f=!86<30<2w_^|Cv+$qp?h&vg&E=hKWu1EZbP_!$-zYK-X34RfDL(m23p9<|t zJp9d;i8}{cA^5GPz*dQqva}HV22x;aBzXebjd-*Zc{U3k?Z);X$?eddB)JXRiy-=6 zV0#n)0aR=ak~^UrljJ6-*a)PO|4m8qBy=;990c8*B$9R?;va|hC5iZRKa%VKZ6%3^ z)=47TAoz{)K*ohaBK5x|z;*bIxqLn&a~eMfpLYTSkhc&zkR&sqgNUCG6+2GEIm<#P zfyqc`f2iae$hx+SzlBtMLGlVxX^)44Bk@`MLfR6DrS8P1f$Xu!{*d5CK&AZvC-)Iw z1VKmW$s|4nssz$zB`px#1wD-fQg>$%GaPyrku?BW8_oF$D)k4V(a>{A&;fcL3B+dS zgA2er;6f5enWhk#XUn`!2&CRGR^~x3A;DYFONs2~*vp8#hhZ-#vNvL{AVz%TO65K1 zRm2Q~PF3EAUQJ}})n2PeeO*Untxm>Rf~h`3Kpy}P;`7eXX<#}&kAgl# z60!foB!b__JWxo)4v&yTeCAOSiBCPIYyh1J9!HwTKxcuc@cBgO(m=9!NQ&RfUZEKY|)A&fbT^sDNl#G%PNViDco-^n0cISu33P-HJPBPBh%Ln)orp(0${u`< z*ru~0_E-m?4dvzA5Q=)s^Cjg6vUU|!Knp-Sj%teJp&OBTXVhJp0hO|ejUNS4Hjwm# z_Ew~=ZlpX7-B^)&-$apm*_6ohIoeEl1-d!0qJ4<0cSL=aIZ(MDuuni+6|_a^%kuv0 zK4?RE11j|@%mrJ5tpM6#v^CfUpuI(CS2^>b+kqXxhhRs5`-jIscP29LjL2hp)`U)0BtHice*yGh zg5T;1qC<$k19~Wtv0ii-@l&CPlSJ}$1o2lxk0gi?9msP_@Yg`4J%B{=at!fOcam?A zi0>Rn@cSk~bUaC(f}TJU$=8V_iJ(#+Ad%}%2B)GgtwB#CM%vKn%1r1PB<%q`Q<)Dv zi^v{tbT*MOY;+EhemXi=nGQXVcscicg5TW;BC(^e2Dni91S;he43N4M9sw5{lpHLZ=dWrzW~u5xa@qL2xTnd_{N>Tt|Z2q1P)fL2ppn zLvK_TL2pu;pf@X@L2n@*c8}y9AXyc98}XuY50Kms6@LQ$PN3%`AbOm5NpBWOzk^Es2{Dj56XfqwPr!@+KCL_hRRXc`v&zfR=SU#7 zeO{RjeS!F6p)V5u4OHqCn9fkSUXbhL8X#*4(JLgVK<5zIlZnLcAgDrLBjM^$sRIyf z4t;~jo=o&62~L5|C9=*MNgW6sfY==*;&<;5FFy4yNyPs1h?jbJkKh+Og6MtXrOxJ) zRPw(-=?E3S5xxW;5Yrp_AxT=H9}%+=^kb6rg?>WJc<3S`bKmGwVx&(MzX!wO^BbY%O^O`B?m0dJEJjLjn{Cy;S>^aGJ`dh{dl$3TA~ zUef*<{DON)8Gj{S+RASvmAwB>?BCEo6tUr-#7N!#rO0PF?;oVOG3KjXiTGf<%}Crf z2-^1}G5oRp79>Vl+HVQA!Zq;0_S=zoHgpFPBmMR}k{G_zerFQHU)t|ZV)#n?J;0tw z2fomL9}=Vf+Ycr&@{VY9IWC3{1;a3RPN0{Q7&dG_mBjG-_79U7e$oCh06V6eLM1IJ z@8lpT1teGjYDl;eG$aB1q-0458e?kBolu{ylR;7#t zD0it1k^Q9-Y%K(^MQJG#?hS260y$@C62eZUWk?|BEK9`$46gAUF`Z zB9Z-^l9U+)qoFGk+1DwpLV_{SRf+8LlvX3bSm^3R_IyffkYF6NJ(2yN5)3T_r$d{F z?4^{NNiYS9{z8zwjZ#MvTn}B7$X-HeEfS#LD0L#Tw@_M}1UEuE6WM1dtwRDiXI&!u zB&GF8a1(TWBKr`f4M+e#FKtLOo{}y3~^xv1Kn3&WH9UM(nx~2^T;&CPr+$36b^d(x$|S{Wc@v zkI>DD5nJ{l;ZIQUdtk(_;_D#%87lq_jFh!bWWBl6AV$i)1(9{<(w4-C4bV>rvJPF^ zni#RiHbmB=OWP8&D-`{SAnUcI?TOh9x&x85+tQB2><-DG+_OJ1 zCqoAiEB7Br%(>7(#EyavCh}fgX$Y~>W``1a&#p9#SZTAviMaqef>>#@`xA2^bR@CT zW)C3d3aH!<$a-Z-?g7k|P)Qfa+GR=70_G~HTo3FqP-*ADOofgo_E_iyVx~bS5?L=S zO(JGGbTW~(!_q-S-Z?8t-2hofEFD7R9kkM+MAj5bhY>RadN`5w#nKVPJPkdP$XZ}Y z$_C6cP$>_Pb-|L90hs5Zl5Zeuf2HGyyjxZ}p2#|2N&Enq7ok%3K-LpWQr|${J1d<` zWWBI-3NbH3PbIQ$SUQau=@U*TvR+s^gP1wcGl{(ydKNM7LeD0$E?7E;$oo?z@gX2< zY$fpZfWL7yP< z{zd6Y5=b7NBH@wHr%51rc!tP(8Kq}Q@CNibBKzSbX>TBS6Dn;C$R2q~+7&Q+LZvMM zE4F%>n7yF0i4|MDLd@RKIYjpBO0N>L5A-!+J3?P4W?!h}3D`BEk`G|^gU%&(E$Cas z^oPDpY$xbD#0-GGOJonQG>@2p(D#V#41J%NLD2a`_6AD}h#3rBNMxU|^Z_wLpdS+1 zGc0{XjMVMNMD|ijpAaMUyokuYO6gN#q|QGhvd2>ToS2!=FNmEA{gN2*g|CS0y_CKt zW)}1tVy}UIOXS_&(sxAmXG-4_Blh@#$bLoXM`FY_KM^Z=_?Z~7(=SB!GfKY_BR2bu z$o@v@ckmDT5cq0S06gX}uv=3Cmc|!rLYDz6;`?o&tAO_S{zzyuK%K}MWE1M3sVlxm z+ifa?9{7G7v?tgM-=l7uHV1Y1Nf+prU_1E92mIl-WQn)V|G z_0u$fm_^Wm0BJ;5LH7q^k-nTS_Xe`w+%%q~$3oH01zBTlLfaP7)Fie8_-%%u=@*GPIk6n#e1TzoHfdJDXZG(UvCM^dpTd|F7S zKOhUy$|DCh?m^_$=pt3eZ-KDB7uDfa&S0nLw=;|ba z-!`uSN;qc>w236}^JZkOxdXnx1=^9sdqCGD@!rt2NFr%=BJokswMh(LZ|+Qz&7ob1 zL%lbbK?P;s4~jO>T*JL4K)Zn+_52LeW2Tu^g8GcBsm$nBiJ22c|BC@4q_?Go}fRzzYRKoxC@}; zNGv`e^#S5J&`ID>d|m`S48Y&x@1RmQsH+%$+k7;M--I3mPDQ=6gNm)sz-RH1Gr?K- zEIxG(iGPHiOX6Rl=Mfh|rH+Ave>Y41KzbkaLK35`G*1DSAP;{-FD1@GF9Vn3S_hp< zk`nZ45*z3>B$o5Vz95!+i5)@oCsb?)VoB!)BI|U`HxgO@YrcuZDfDI{YktkQkk~_S zCE*aL*d554V)N}p)(e~O0C(bE5%eyS-VeQ-$ogXQJtPjG_X5}>`U@)OfmrPJ0C*6# z5}ih5y|Q^ak@d^whls3qHa|>KId=w$6X+vE)1&6xnuslijg04i| z)zFnm4BK=-9Si1EXcIA~K$}4aNjUxzhG`T=xpV&(ICV13*de$b%{aj5eS z=p%#xKHXs>62s0Nwj*u;6m3vQVZRQ$5GT4fal1qJAx_G&FLCnSe#FVS{fXNXD(M1; zHrzq%0uWOm=pgn2$yDfIl3WQLLXs)ap#(8BgAT(8VoC-bhLhw{=m?UaEq2(SBo{+R zlH_ve0VFvOI*KG$K@TL!`OwiMxd=LjBo{)*lH>{~`WYda03A<~SD%aIsm?zkF>pN5u5{5W)d583a0>!-q_cQbu;=YBR zOx*X-(~0{5`Z969L*WO4`z;98LZ2WYW_7R@^0*e-gO~46$7|snpFm+l!FLRTPE)}( zxb__=>RE`Z%jc5!|cL2Z?(Vinn@+&NKRP`_+(PK{Bz_k90&#Cc<$hw5x1gVp zcu(jz#798@^XIsaps1_09nSw0x-oGdLI)A|F?1MlNN;V}O>lFAp!4#?y#!sEIMh$) z-HBTO9ZK9H=rQ0F)=OvPM@W(P&OZ@{HrM%Q;!uyB;U9u~5c(@|cm{VyeG3k4vNQZZ zaMLm6K{*76I$nP{fc&}lplcA1vTkq$iT{EgO$_d_A=Ne(Eh|qdIN|>JuDbVEPP-A>U6nBR`k)8$ zzX7x-*aV-!!c9Sce3ttT0E6+l7jy`T--Zq){@Wn<8g(Yb$3o#3LIAsc4c`#Vmr(eH z5W?PH!!HE;Vi5fN1aSuk!QZgS-y6cOUV;8Y5W~)V*EJ`I?}nDaR>)63DB`(*Af5&t zl@r7d2Ikita{_k@bmyGF-HD&_GXI=-S9B&a7p!F-2=GJh@+N427NDO^um+C!eHgS0 zZqv^;Ky*0$94&E99CQ!9)bAaB$+e??_Q9@ZQ~it|Y&3bq7u+kwue)BV-?zc%BF(l- zd|t{ln|Jh_c8H<&yMA6K$gs}Hye%6nV|(gnL^UhEM-{AOx8(N*WwHJBa~Slthv{b< zH0*u)ISN*@n!bsH<)RhzdlxJdt*xK&`|DA6{hS0F;Qh}$4<<#7-bwm7L(JZb^>dq` zOZ2>cZX2wDxhT(HDp)5j(r<^?BR1CWmk!!u&4uTnjPY>&yz;;HH>>C6?H7#2+XIJU zXJceABG?~07R{)aa!zxwE4~?qZ??i436tvzYoOI&=IiA4!C~X|F3KQt?&Q(*1t9xio4O9CI+qeJP|n_jdIAhlks^HK8gQHTN;9I zCZM##aF&!_+QC?Sk`~4qXvTNL@@w};8f;_#uT=lFl%ybaJ~6lB#Jmp0GY><0l71h2 z&o(_K&y`qN@-=LU`W>FOh%FCU;&@D+>tV3xSk#fEydg>@o-65zxBOdklkmON zgp~Z>Z~wJ{T${|aF>TFKh;OsBS;j1D zmNUzn70ileC9^Uj-mGd?Gpn05OnXx@O?cLIFdfaBW-ZgntZh0YUc$O&J;cP>z-(x` zn69R5DyC{$OwDvN-4S!3r|D&Sn~luIW)rii+01Ni`XK5|KhvraXtp$4A*$ClW?QqJ z+1~76b~HPgoy{(0SF@Yh-RxoZG<%u7%|2#dv!Cg22AF|nkQr=-AokiYGu(_Y`$7nra8-;ZO$?0n)A&0<^pq}nPM(77bC{crRFkoxw*nzX|6I;&DDs) zaxEf5TyJhz95?4ybDO!{++prCcbU7*J?36>pSj;WU>-En%yjdRdDzS_kC;czV`ip# z+{`jhm?sf8=xOr|Vh25Eo;NR;7tKrNWyBGB#mq6Un%B(hh$!@?nQPuce3^I5yJntw z&%AHun+0Z}`M`W=J~AJhPt2mlzgPaH`O184zA@jL@67k+2lJ!($^2}7F~6GM%jxK6lkxL&w^xIwsK*d^>5mcvR|4O_xm z*e&cH_6U21y~5t%M&ZWcCgG-tiL`mxC+r&{EyeYgW6 zUhIUZNxMjFmT>oQk8sa$uW;{hpK#w0QD+brWnefc92^coT%}>*@Q{&-4hTnu2Zp1= zG2z&7TsS_Q5Kasyg_FaB!h^#@!b8Ku!o$NO!Xv|@!lU!36vu_fhbJH|(@FTn|5L(K z5ufSw@Qm=x@T~Cc@SO16@VxMRL~Ob+oDyD?$AGyMv0xB;CA>1cDx4Z#9bOY&8(tS) zAKrkdPB(=&hqr{chPUCD#qZDvN%w^J;#bD+4<86045x+D!-w#T<1-Lj=286a_)J8? zn1xtSPa@vS)8RAWv*B~$^N0-fV)#<{ayUDDC7ct!ia1fPhi@S2%v{8sc{_Y3d^emI zBI08>KU@$l3_l1z3_l7#4nGMOg`b9>g`bCCgkOeVg{vU_j<*vKe{qtXjMzH|+d~k8=P-M?J;EMok3vkwW9+er_i#L7Rh@`PN+;V>G{0z1`kn??fbtyX`&pUVERtA2GciwA1W#`;dLu&ajWzN9|*FrhVMbvQOA2 z5#{4)`;2`S@jjkMtdAG%OZH_u+rEMbL9g1^?CbUo`=*_1-$Fz#M5(d!?0fcoJKrvl zSTu-5@X>!GFd#y~f8r$ApY1P2FCDa}y_L@!x0S}W=lt&J!+>-;y?L{y2YQA<>d zx<%ci9#PMzSJXS&DB3vMB-&IWH!O~uQ;!;X+@-A$d1;$y+i1IJ`)G$~$7rWKqRy_- zZqe@19?_oBUeVssKGD9>e*cXd@o&5biN6z#MqHk;|BYl39m3cT68RxIDmpqkCOS4c zE;>FsAv!T)e4bOI(-4*CjOfhhtmy3Moao%>yy*Ps0!D_Am=MvW(Ph!)h~RVOf1_YT zH~u$PMRZqmcXW?Ljfn2o_&L*~hoXlOLFW;Pp%cwS44qksLi1$w6k_Q-6FrM~I?qQh zL@y!|&CAj3=#^+r^lJ1PV$Zx0y@{wgZz1xGMAn&?$JUu2Er=FIA4DHUA4MM{uFaz8 z)95qAsQDuLGWsg|8d2lEjlPS%kA8@LL?nlw5w+ph=(p(i=#S`6iRFMeqygeSgoykQ z#c}LnA185&cn)piw((LL6>nLMi?`z9$at&8tH*1^?c-A16gS5m;*Rl}@mg`GcZR z9yj7G;w|H?;;rLt;%yO?Z+k?$+Yu4^c1CoKT_wH-;%Mv{?-lPYkuc)@;{Ne~cwjsz z9vlyehsML=;qi!g|2+Q2D8%?1%?KRvc#X9&nb9^RJ{IEs9T6XicpOK^$Hd3R$Hm9T zC&VYlC&eenr^Kg9G!8`9I}_3W&W_KC&qWNt^ARiX!gxx25hCqf5?>l$7GEA;5nmZ! z6;F+?j<1QYjjxNZk8g-?L`=S$^N1g}A->=p@tug&cXxbGd~Y5L3;&&%=b_!Y$RcomU-UPo-7H{-d8 z@AG#24kB{RLzJKQ5$|gOB7S{@Nv8@LT!7uVI5UBy*hi>tYAuDk2udb(b& zx7)~V>^58^59-PP_Icdfh5UGHviHzH2S&F&U=E24|s zjwmB{y1Ni%d=~F?qy2>K=15-Q#YSd%`{Go^nsSXWX;yIrqGK z!M*5Saxc5th-ESdaZFxAM3XlV(PXZB3-L?daqqf$?mhRuo9`C5h3*6Qq5H^v>^^ae z+^6m{_qqGRed)e(U%PMIw}^}Kz5Bua=zelP=MhqVLyVL^5If~B_qY4U2j2M5TOavY z;azpvlV_xA(* zKtIS2_Cx$oKMc`QNBI5yNPmDIS_zV3Mf04h~ zU*a$Im-);675++pm7nUb_Sg7pCC;C}!Qbd_@;Cci{H^{rf4jfK-|6r2cl&$%z5YIb zzkk3#=%@MV{vrRcpWz=t?3c$7f$woY%Rf=XU-QrU=lt{j1^=Rd36bz-BX-}MJbK^j z{tf@8pX=Z9ZzCGsyNDd~9-_p|_Y3?&|AGI|f8;;*pZGD{zpXm``Q2EfAzol-w}=PPekSW+y5hrn@N~h#7v75he&z|H;dRbZ4ifMsiYku z*DQmmG|M42;0no#h{Llo;v=q#XojmNYapIsDQQCN!VZXDh=`MjO1O5?8PNsTMf9Ha zlMRv$lP*bD#5JrW)ubh_5a#+C1r#^iBFDt%%{*K$OHS z5$A5}WSeALM0497vHf;LB+Q)=wQyI&6Wl%7BiS?AE7=?IclJfBoc@TyGZ1kM2PZ?4 zp@_9NJQ*R;{*nWdQOSXb#W*Gzn~Y1wBc{;AWD+7P9h4l5=x~Q3X5ir(74vAsJUliz z4si}oNKQ;nN={BrLDa+35I6A*L{B^mQ3}sNjH2@po#+BYCz^s7MHeH2(WQu8bU9)b zU5U6wQ}naSgb4DSMzE6HgeoTH! zeolT#enq6j|HMg5!_=lx8mBJxX_BUCmbOXTrc0&m(xua7(q+@-(&f_?(iPK{(v{Oy z(pA&d($&*7()MX7ZAzQd4r#{}fsRweR!loHc3}~rFzw3NglP-o@ufW^qMbyrlc;s+ zrs-zs=4qd_Z`vM-7Vcc-6P#I z-7DQY-6!2Q-7oE*4oC;4gVMq2kaTD|EFGSXNcT@irU#^>(gV}c>6mnEIxZcbPDm%F zlZse)>7nUiOU6b^k4=wDk55lXPfSlrPyRQ07$Sw8g;-(dq~{{G)A@)Fb|K<}U6fvo zI8T={78v3^U6oEvuSOK8Yt!rgH!9cv#^g%xP47$Zm$+H!G>MdzKAg@-A4wlgA4_MZ zkEgTJC(XVPcW=hElX7t$Bgm(rKh+373kob=W7we}rmQ*Zkaf(~%+|^}Wou`hvvsm{v-Ps|vkkHh zvo2ZJtejP{YSxm~vTj-TtVh-}>y`D+Hp({6Hpw>4Hp@28`ec2xepzc)&l=el*_PQ> z+1A-M*|yns+4k8E*^b#x+0NN6*{<1c+3wjM*`C>6+1}Yc*}mC+S^sQ6HZU8M4bFyS zL$hJo@N7i3e>O5ZARCn(n2pZHWMi{&+4yWiHZhx&P0kL=4$cnA4$ThB4$qFrj?9kA zj?RwBj?IqCj?YfWPRvfqPR>rrPR&lsPS4KB&dkor&d$!s&dtut&d)B$F3hH67iAY` zmt>b_mt~h{S7cXaS7lSPtFvpeYqRUJ>$4lO8?&3To3mT8TeI7;+p{~eJF~m8yR&<; zd$aqp`?CkK2eWC}^z5PR;cQ0sNcL#>}7Jg=(fSM~gAwY&ViQs?)TdY}9}Xr4YaPY6#2({GgX@>CjS z-ltJ+@b7)~`o4O7-~9S=wMEnEo2LVFv;4KzLYcotPrbgUUf)x%>#6tesrT=x_wT9q z?^)bG|2xXX`;_~!oRzxPPlJE2wQ4=r)Go9??5_4H^SWw{eo*O2JJl*or==IQy!h`u zr2OS_KWas3tg& z^(Vc5qoV$#`Dj$spJey)@lk znr^Qm-Tdz`FUwKx$M5UBf4RbPzz%v|ze4l$(5~|IV9z`s(869kuTrGbqV>-7(T;e2 zwP@$+k9BRIm0pD%nXeY@A6m5kZ?tH+TeRFozsr86(rC%=57lzFXt`Uo+^u?jt6tx# zc57ApYCEqj_OCoW_*0%9G*1tjr&mYECH*2aZ#Pi&--`M#`w4un{>%OX$Lhaqzc|kG z1I_aT&GQ4*`?KD0toN_z{fl-})%(+*@wnFe)30%?_oqMOSntpJ!?E6<^@wBIqg>N^ zZP9ka_Ec`^k>9^u)A}secz&gY^;fCW&UMy*rOy5W%5-Xc?!)~wefl%{Hy)#b<$zMho+DbXb>0W*75B-n!?9kc1aPuuCac~ML*uke!fiqhnulomRp%_xt0BPS;q~P!v0#`N;hrC zMY-#m|2pkmdY@R z_akUteyG}2+jG4&&lkSe>p32+)EAGFn9mmWhvk-H+@Qn8<^5XHPe%MXR)s6L9)8~FgpEE6ea=)uI)b8bO z^uw~IQ{naKZnPbCqu*C`JX&S{1Usv}y5;%6vD&L!ZkK9>{R@r}U-(|_Qdhe)w0?B_U8bKPT|KV{?Nsij`7G|=Grtbqy4GV)&6m!r>Ku=vzBGS2 zuc@b=x%oKL~8>CaUihgSM({y6Tb_S5HTxx2ROx;|%kKg@rbzj|M7Cwa+{`@8Z7N?poO{svIxidd-jKt6cP}eQ1xW+NGlDRM@Uj z?%aMDK570Mg&oz87T;IX(dSJ~$B#9A?$nCsRMD^2d48oqzp1gEVf>Q&Gc^Amn)?kj zFAu6OuNP=u9%$}Q&^$e8o-b&gUufRGpt;?lxqm=&`$6;aL0PUc$00b@`?KG{vEHBK z4ot`O{v3bcSntpFiDSJ##}7Ex`|~-4W4*tQAIe2P$@W^V^epU|E9U=&sy}d?i)odf zSB#&uJy*4VEZ4O^(DN&tZ(;bW{;umKb^X3Y=jF9x-AViH3dhM9j`I0bE&3VlC#oFB zB3<=!U6-jZPG7%gI+%|#-x%=c&!wvRVWpTqYx}RVzsIzL`7L*+AC}pk%T*n>mG${t zX1j;K(r+upeRRHD;rJcHer@+0ucQ4i-KyHDs`I`&uS0&d-RgY3uJiP|&g<&Bu2knb z656x2*S=cre!0J3T%`5Lbq^e~erohrxDEUHnvM@@i=R8KZ3m1SG+|Pg;R6N_nm8;s zTDf=_>!h)+lgK&;0p%(?2{;LFQq_lirD)8|JdBZN5_2H!BsdAdoJF0dp-!iNFY{rF zNhXb0V`q%a=Z&#kWxk+#y)J%KweqUPLtP)<6?Rg%zg7bCgY?x{{2s@7deGb%&^gf= zYr1$>?yi-}&H+xK#%Je&^z*;tdTrb~`KjvQpj-^j>iOSsJs+wSom5p8U#EkIB3)f9 ztZE~w7S7Mb22`?kE*yN~p{Vu2hZdYT&lfrc-mg{+B8x`G&JFdbos~`!s$3+%B#U;# zs%P#OE!wDRI*67=Wo4~MFzTkTG} zRrS28P8uuhG;u#|ltpJ%Oy-ym+*j*I7X|7?C(K4s*FiH>JADpnajcy_J3Sn0r%(Ig zSUY_V9&oI7q~GG0^;y%!j&f0s9&8WQ?ra}b4ib@1^(%Igm<;9iLjAD*$_>4)2fwcr zepcAC7-XtlE5)K}v1q50b*u(SeIk8rf9&jVTzs$fSuFBsKFhkORc5=znnzxK45pc{ zvUc)i^^-COW95qaXGQ(1qMcAhC!6Tia{t2YEZ3?|cB}04%T;YBRkjlxtKAB}Dkkwv zzfx!V(A-XFCwaP1wJ!$`xSjr;g9IFFKcI_2bq>byy$lp2?XRYjlv>em>ZGftgUqr{GHTou zKz(Sv(r;l0w#S;bmvZ5MI_a+#epCz^=tuBht&gIA(fd_(P+Qf(X_b=%oUi>_F^MYr z86DJP_Q?9>!xQ;Zf73yCo%h4{xjm7d)-wms^>Q(p56$1*2Zs6V!cYBA{2MYO73SM90&Yw;Y^!CIww4i40p zx;R}{KP&5GtWrGhxS58vbLP9Mn=IvG(?%D=${f67@~iDw`?-qt8x{4pO3`l>i%Pl} zRVfysbdp`s$#qo+SJh&W#OslNwQmn?uk=fNpWh$tQvc5Of@AeF_A@wEdlb)c?N`e> z$*k()PraD56_c>yemx6&uzggD{BY9@lVbG)))S8P{<^4HE+*}|$yev*9`?YPZi^1y z%0>Iu{-wgrOgz`=pJkooRG2ULZE@fH?-gtN+-7^mao&F*--Ul_ zd5UqKZr+x4Q@KSqms)fZ-LiPmnEg7C+O8V9$kfpG)nL28UU_~WDC?n7Y+4kH4!U{W&`EfM<5!%|`fC*J zk&}AN9XSqe(MfMh(T=qIHSJ$(YTw%8#p=92#N1NHwZ-^WCoMHDo?-4-j8}5I<9xQ~ znvN@K`aG`bIKHNf7PVqiO#QQ_#|f7X9ZUrMNHzgyFn63Xh=<%arE zVgI7O^kszx7b!42&g%tAe{JZddP5gG8r(#}-`VaOI^JvOB3eWHjfO6!HMIX|=%QMK z{SEdI^7?~nI{LChLl=D-`qD!~7k?W1@|zzM+%whAt{M^f}+q&GCj#dK>CbEyYV2MZOCE=Oz|5McEHD zbW^sW^R|X=&Ng)Z*3eDbhR)*}x=7j3#kPj_Ck|b!K_SMbKhHk<) zbaLI$&G-fv6R-)J*8}XS{Rt=QSOe1elFmb0icMSH>}cq?wV{ic4ehrZoY!FOg8g(u zH?H~@u}KX7mFJ@Z*M6UV_9yT z$9|wiUlMB3mnvFxT+pJMOD#ISZs?{(L&x6@&Zn@5s_jBIGa5QBZRlcigX6?XLl?0d zx`^1&adtx&EgQP1-OzDxi!SQ4=wf<{ZtAt@ytG9(iyFG=(9m&OLpL89I$mq&CPYKW zZ4F)jXz2K@p^M=SK2Oj;tNrvPr3Rlb_+I@<$KMToX{n)$s|`LUFl?ItP1hT0^b@QF>i7B_tm$*BR&1i`II*VVx|+_zYh0Wx*ErrlI@%9wz1H;Qp_cts%d{&n)x~;URL46!eC||=bv5;8U0lcCX}5|#r*)AX z-?N|9MRpwL<;6TMAD=+;d_i-2K=XV-^L*5Gehkga4bAfb&GQY-?F7y556$fb&F>4% z?GM%avY*1S-oKcS7W33%KFoOo-hJcq01Z2z|6;dN6ni7|*Twareyp1URbAYN^7*26 z#dWNAeaQ^(Na^2o998D?8rP{G@;QxTy}!=i%gircf+)AmU*@a!>@oz4zcM-;v7m~J4#)ZLkb+L zi*ks7k%_uGr!;uYG`}y3uCB|bUhUSWkCyV^93!!o#RZc)EqPE|;-I?3UvR@E{!&{q zf$EY6wSG&Uw!}@5ll(9A2yT<(=DDZgt((Fe+5)tg`Wg_<(;k4^@;KI(%9aLC(c<$7 zf!zr0LDwE>Q8TvuTL?@8bN5Cw)#kzB7Pf-4 znXy~NvASb1{L^KP7B(MbPP;XITrJ+KS=@c7akxB&SBcr(725$tGby$w^c^N_DX|+W z>oBRTkKLkMtrpF#N1Z;>@^9UtQ1yQ+5_eqkpxfdDoVG+2BLhqPrTTA!k*qB7m)0Ij z95j|Z=v!I*7wi--*-CpbJ8We7a)Yj$p_cM~2dWjK<92M|sPq3@Yj{yIuVQE~H@Si# zJf8u&v4xDX;pvN;IA$M)7qRlwyQ^?yQ7%@F_~gI}QvQ8ipD56x>Wk*enP%~X)7LSp z$a>x`bmb7o%$2SP!+!L4-DblCB|omT>I!SCu57pJPF5?c7JtuOtJ10?y4GTalljJO z9W7SX8C9!}2&y_FZRJQ8=jHjq+Z=g5p?P`m7BIWJs*Y%?I)ZK0k#4KL7SUSFth5PK zbw#z++BE3Anl~&ppe=qKvr-$$JE&!U_0q4_S%0(B%`mGmDU7yT&3zgnn<_sLiYFEy{ zajbUb3>?R5SFX_FSnbM@CXUsv^dH=>NRR$n=13gpshv1d!+Dx-&Wv%K-v^r81*� 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 z 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/assets/icon/app_icon.png b/packages/patrol/example/assets/icon/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bb944ec7c0fb30b340c04e367bee9341b09515af GIT binary patch literal 2986 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/assets/icon/circle_x.svg b/packages/patrol/example/assets/icon/circle_x.svg new file mode 100644 index 000000000..6f59a047a --- /dev/null +++ b/packages/patrol/example/assets/icon/circle_x.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/patrol/example/assets/icon/notification_icon.png b/packages/patrol/example/assets/icon/notification_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..169527113b855e21705e6968742f4320c9c078dc GIT binary patch literal 3731 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/assets/icon/splash_icon.png b/packages/patrol/example/assets/icon/splash_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..73db17034e3f947a02405e473c5997d3e3664051 GIT binary patch literal 16914 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/assets/image/confetti.svg b/packages/patrol/example/assets/image/confetti.svg new file mode 100644 index 000000000..fe41e6c5e --- /dev/null +++ b/packages/patrol/example/assets/image/confetti.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/patrol/example/assets/image/fluttercon_logo.svg b/packages/patrol/example/assets/image/fluttercon_logo.svg new file mode 100644 index 000000000..27b730c74 --- /dev/null +++ b/packages/patrol/example/assets/image/fluttercon_logo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/patrol/example/assets/image/leancode_logo.svg b/packages/patrol/example/assets/image/leancode_logo.svg new file mode 100644 index 000000000..17973bd9d --- /dev/null +++ b/packages/patrol/example/assets/image/leancode_logo.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/packages/patrol/example/assets/image/patrol_logo.svg b/packages/patrol/example/assets/image/patrol_logo.svg new file mode 100644 index 000000000..5da6793c5 --- /dev/null +++ b/packages/patrol/example/assets/image/patrol_logo.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/patrol/example/integration_test/done_test.dart b/packages/patrol/example/integration_test/done_test.dart new file mode 100644 index 000000000..df7d644a2 --- /dev/null +++ b/packages/patrol/example/integration_test/done_test.dart @@ -0,0 +1,71 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:patrol/patrol.dart'; +import 'package:patrol_challenge/main.dart'; +import 'package:patrol_challenge/pages/quiz/form_page.dart'; +import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; + +void main() { + patrolTest( + 'test', + nativeAutomation: true, + ($) async { + setUpTheme(); + await initFirebase(); + await $.pumpWidgetAndSettle(const MyApp()); + + await $('Go to the quiz').tap(); + + await $('Start').tap(); + + await $(TextField).enterText('text'); + + final colors = [PTColors.lcYellow, PTColors.lcBlack, PTColors.lcWhite]; + + for (final color in colors) { + await $(SelectableBox) + .which((box) => box.color == color) + .scrollTo() + .tap(); + } + + await $('Ready!').tap(); + + // Why doesn't it work? + // await $(ElevatedButton).$(Center).$('Fluttercon').tap(); + + await $(PTElevatedButton) + .which((widget) => widget.caption == 'Fluttercon') + .tap(); + + await $(ListTile).containing($(Icons.flutter_dash)).$('click').tap(); + + await $(ElevatedButton) + .which( + (widget) => widget.enabled, + ) + .at(2) + .scrollTo() + .tap(); + + if (await $.native.isPermissionDialogVisible()) { + await $.native.grantPermissionWhenInUse(); + } + + await $.native.pressHome(); + await $.native.openNotifications(); + + // wait for notification to show up + await Future.delayed(const Duration(seconds: 5)); + + await $.native.openNotifications(); + + await $.native.tapOnNotificationByIndex(0); + + await $.pumpAndSettle(); + + expect($('Congratulations!'), findsOneWidget); + }, + ); +} diff --git a/packages/patrol/example/integration_test/empty_test.dart b/packages/patrol/example/integration_test/empty_test.dart new file mode 100644 index 000000000..57fac0979 --- /dev/null +++ b/packages/patrol/example/integration_test/empty_test.dart @@ -0,0 +1,19 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:patrol/patrol.dart'; +import 'package:patrol_challenge/main.dart'; + +void main() { + patrolTest( + 'test', + ($) async { + await initApp(); + await $.pumpWidgetAndSettle(const MyApp()); + + // write your code here + + await $.pumpAndSettle(); + + expect($('Congratulations!'), findsOneWidget); + }, + ); +} diff --git a/packages/patrol/example/ios/.gitignore b/packages/patrol/example/ios/.gitignore new file mode 100644 index 000000000..7a7f9873a --- /dev/null +++ b/packages/patrol/example/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/packages/patrol/example/ios/Flutter/AppFrameworkInfo.plist b/packages/patrol/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 000000000..9625e105d --- /dev/null +++ b/packages/patrol/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 + + diff --git a/packages/patrol/example/ios/Flutter/Debug.xcconfig b/packages/patrol/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 000000000..ec97fc6f3 --- /dev/null +++ b/packages/patrol/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/packages/patrol/example/ios/Flutter/Release.xcconfig b/packages/patrol/example/ios/Flutter/Release.xcconfig new file mode 100644 index 000000000..c4855bfe2 --- /dev/null +++ b/packages/patrol/example/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/packages/patrol/example/ios/Podfile b/packages/patrol/example/ios/Podfile new file mode 100644 index 000000000..7fcb5e2a7 --- /dev/null +++ b/packages/patrol/example/ios/Podfile @@ -0,0 +1,53 @@ +platform :ios, '11.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + target 'RunnerUITests' do + inherit! :complete + end + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + # Start of the permission_handler configuration + target.build_configurations.each do |config| + + config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ + '$(inherited)', + + 'PERMISSION_NOTIFICATIONS=1', + ] + end + end +end diff --git a/packages/patrol/example/ios/Podfile.lock b/packages/patrol/example/ios/Podfile.lock new file mode 100644 index 000000000..3593aafbb --- /dev/null +++ b/packages/patrol/example/ios/Podfile.lock @@ -0,0 +1,201 @@ +PODS: + - AppAuth (1.6.2): + - AppAuth/Core (= 1.6.2) + - AppAuth/ExternalUserAgent (= 1.6.2) + - AppAuth/Core (1.6.2) + - AppAuth/ExternalUserAgent (1.6.2): + - AppAuth/Core + - CocoaAsyncSocket (7.6.5) + - Firebase/Auth (10.16.0): + - Firebase/CoreOnly + - FirebaseAuth (~> 10.16.0) + - Firebase/CoreOnly (10.16.0): + - FirebaseCore (= 10.16.0) + - Firebase/Messaging (10.16.0): + - Firebase/CoreOnly + - FirebaseMessaging (~> 10.16.0) + - firebase_auth (4.12.0): + - Firebase/Auth (= 10.16.0) + - firebase_core + - Flutter + - firebase_core (2.20.0): + - Firebase/CoreOnly (= 10.16.0) + - Flutter + - firebase_messaging (14.7.2): + - Firebase/Messaging (= 10.16.0) + - firebase_core + - Flutter + - FirebaseAppCheckInterop (10.16.0) + - FirebaseAuth (10.16.0): + - FirebaseAppCheckInterop (~> 10.0) + - FirebaseCore (~> 10.0) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/Environment (~> 7.8) + - GTMSessionFetcher/Core (< 4.0, >= 2.1) + - RecaptchaInterop (~> 100.0) + - FirebaseCore (10.16.0): + - FirebaseCoreInternal (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Logger (~> 7.8) + - FirebaseCoreInternal (10.16.0): + - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseInstallations (10.16.0): + - FirebaseCore (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) + - PromisesObjC (~> 2.1) + - FirebaseMessaging (10.16.0): + - FirebaseCore (~> 10.0) + - FirebaseInstallations (~> 10.0) + - GoogleDataTransport (~> 9.2) + - GoogleUtilities/AppDelegateSwizzler (~> 7.8) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Reachability (~> 7.8) + - GoogleUtilities/UserDefaults (~> 7.8) + - nanopb (< 2.30910.0, >= 2.30908.0) + - Flutter (1.0.0) + - flutter_local_notifications (0.0.1): + - Flutter + - flutter_native_splash (0.0.1): + - Flutter + - google_sign_in_ios (0.0.1): + - Flutter + - GoogleSignIn (~> 6.2) + - GoogleDataTransport (9.2.5): + - GoogleUtilities/Environment (~> 7.7) + - nanopb (< 2.30910.0, >= 2.30908.0) + - PromisesObjC (< 3.0, >= 1.2) + - GoogleSignIn (6.2.4): + - AppAuth (~> 1.5) + - GTMAppAuth (~> 1.3) + - GTMSessionFetcher/Core (< 3.0, >= 1.1) + - GoogleUtilities/AppDelegateSwizzler (7.11.5): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Environment (7.11.5): + - PromisesObjC (< 3.0, >= 1.2) + - GoogleUtilities/Logger (7.11.5): + - GoogleUtilities/Environment + - GoogleUtilities/Network (7.11.5): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (7.11.5)" + - GoogleUtilities/Reachability (7.11.5): + - GoogleUtilities/Logger + - GoogleUtilities/UserDefaults (7.11.5): + - GoogleUtilities/Logger + - GTMAppAuth (1.3.1): + - AppAuth/Core (~> 1.6) + - GTMSessionFetcher/Core (< 3.0, >= 1.5) + - GTMSessionFetcher/Core (2.3.0) + - HTTPParserC (2.9.4) + - integration_test (0.0.1): + - Flutter + - nanopb (2.30909.0): + - nanopb/decode (= 2.30909.0) + - nanopb/encode (= 2.30909.0) + - nanopb/decode (2.30909.0) + - nanopb/encode (2.30909.0) + - patrol (0.0.1): + - Flutter + - Telegraph (~> 0.30.0) + - permission_handler_apple (9.1.1): + - Flutter + - PromisesObjC (2.3.1) + - RecaptchaInterop (100.0.0) + - Telegraph (0.30.0): + - CocoaAsyncSocket (~> 7.6) + - HTTPParserC (~> 2.9) + +DEPENDENCIES: + - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`) + - firebase_core (from `.symlinks/plugins/firebase_core/ios`) + - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) + - Flutter (from `Flutter`) + - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) + - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) + - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/ios`) + - integration_test (from `.symlinks/plugins/integration_test/ios`) + - patrol (from `.symlinks/plugins/patrol/ios`) + - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) + +SPEC REPOS: + trunk: + - AppAuth + - CocoaAsyncSocket + - Firebase + - FirebaseAppCheckInterop + - FirebaseAuth + - FirebaseCore + - FirebaseCoreInternal + - FirebaseInstallations + - FirebaseMessaging + - GoogleDataTransport + - GoogleSignIn + - GoogleUtilities + - GTMAppAuth + - GTMSessionFetcher + - HTTPParserC + - nanopb + - PromisesObjC + - RecaptchaInterop + - Telegraph + +EXTERNAL SOURCES: + firebase_auth: + :path: ".symlinks/plugins/firebase_auth/ios" + firebase_core: + :path: ".symlinks/plugins/firebase_core/ios" + firebase_messaging: + :path: ".symlinks/plugins/firebase_messaging/ios" + Flutter: + :path: Flutter + flutter_local_notifications: + :path: ".symlinks/plugins/flutter_local_notifications/ios" + flutter_native_splash: + :path: ".symlinks/plugins/flutter_native_splash/ios" + google_sign_in_ios: + :path: ".symlinks/plugins/google_sign_in_ios/ios" + integration_test: + :path: ".symlinks/plugins/integration_test/ios" + patrol: + :path: ".symlinks/plugins/patrol/ios" + permission_handler_apple: + :path: ".symlinks/plugins/permission_handler_apple/ios" + +SPEC CHECKSUMS: + AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570 + CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 + Firebase: 25899099b77d255a636e3579c3d9dce10ec150d5 + firebase_auth: 015dab4ffe9e4d97f7d84a3373ad4c8a7712c5c7 + firebase_core: 2e0e89436a00b664a23bebb08859e5fede7215e9 + firebase_messaging: 2b2ed8f43ca8289caebfa324ada472e527bebcdf + FirebaseAppCheckInterop: 82358cff9f33452dd44259e88eea5e562500b1cb + FirebaseAuth: 3862d87d4d58deff08f705d471896a2f66e8bbf0 + FirebaseCore: 65a801af84cca84361ef9eac3fd868656968a53b + FirebaseCoreInternal: 26233f705cc4531236818a07ac84d20c333e505a + FirebaseInstallations: b822f91a61f7d1ba763e5ccc9d4f2e6f2ed3b3ee + FirebaseMessaging: 80b4a086d20ed4fd385a702f4bfa920e14f5064d + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 + flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef + google_sign_in_ios: 1256ff9d941db546373826966720b0c24804bcdd + GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2 + GoogleSignIn: 5651ce3a61e56ca864160e79b484cd9ed3f49b7a + GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084 + GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd + GTMSessionFetcher: 3a63d75eecd6aa32c2fc79f578064e1214dfdec2 + HTTPParserC: aea14c3d2d4ac5beb3988781daa36dfa62e0d9ef + integration_test: 13825b8a9334a850581300559b8839134b124670 + nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 + patrol: 792c0bb6cc4d552fc8b37f49266341c39e659b4d + permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6 + PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4 + RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21 + Telegraph: 12576b119324138e4929792af9e5a1085c2ecbc1 + +PODFILE CHECKSUM: a2f999e8fe2642046eaa22133617aca7cd25a681 + +COCOAPODS: 1.14.2 diff --git a/packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj b/packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..b10eee35c --- /dev/null +++ b/packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,1362 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 1E78C839FE2BE0BF82D354A0 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5A4E6FEAE8203E3593674CFC /* GoogleService-Info.plist */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 6A40764D89464B1109ECAF08 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D978CC248F4B0FE33F0F963 /* Pods_Runner.framework */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + 9835C3BA2AEBE2B200AD4576 /* RunnerUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9835C3B92AEBE2B200AD4576 /* RunnerUITests.m */; }; + C4CD80A2806BBA53CC4676D4 /* Pods_Runner_RunnerUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77B0713DC63135B5488A774E /* Pods_Runner_RunnerUITests.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9835C3BD2AEBE2B200AD4576 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0A5055EBC979578B00780A25 /* Pods-Runner-RunnerUITests.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.release-dev.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.release-dev.xcconfig"; sourceTree = ""; }; + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 157D5E1918F928220379E184 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 1B77ED38F3CFB577B226C787 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 1FF748E00695D5F39485C84C /* Pods-Runner.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-prod.xcconfig"; sourceTree = ""; }; + 2F50FCC5E7FFD7D98D9E37C0 /* Pods-Runner.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig"; sourceTree = ""; }; + 35B0BC3EA00F65C7F5C2A2DC /* Pods-Runner.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-prod.xcconfig"; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 5A4E6FEAE8203E3593674CFC /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; }; + 5E424AFEDD5F54FB9C5FE6A0 /* Pods-Runner-RunnerUITests.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.debug-dev.xcconfig"; sourceTree = ""; }; + 68BCEFDE4A146CA3EAEBE287 /* Pods-Runner.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-prod.xcconfig"; sourceTree = ""; }; + 6D978CC248F4B0FE33F0F963 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 77B0713DC63135B5488A774E /* Pods_Runner_RunnerUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner_RunnerUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 78A9D202DA29B01CE316DDD8 /* Pods-Runner-RunnerUITests.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.debug-prod.xcconfig"; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 8320DBCBECD26EFBD206E3F7 /* Pods-Runner.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-dev.xcconfig"; sourceTree = ""; }; + 89F42EDB7AA949A94DDF3483 /* Pods-Runner-RunnerUITests.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.release-prod.xcconfig"; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9835C3B72AEBE2B200AD4576 /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9835C3B92AEBE2B200AD4576 /* RunnerUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RunnerUITests.m; sourceTree = ""; }; + AA67FAE78E5508E1099965A5 /* Pods-Runner.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-dev.xcconfig"; sourceTree = ""; }; + B25051AE2A914DEB002AB245 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; + B49FBE2F1B8BD809F01F6970 /* Pods-Runner-RunnerUITests.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.profile-prod.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.profile-prod.xcconfig"; sourceTree = ""; }; + CFBBF813CD43D6EB929AB2B6 /* Pods-Runner-RunnerUITests.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.profile-dev.xcconfig"; sourceTree = ""; }; + EDCD1D890C833F4AC9A7EB0C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6A40764D89464B1109ECAF08 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9835C3B42AEBE2B200AD4576 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C4CD80A2806BBA53CC4676D4 /* Pods_Runner_RunnerUITests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4BFB9CE428BED72E658E9FCC /* Pods */ = { + isa = PBXGroup; + children = ( + EDCD1D890C833F4AC9A7EB0C /* Pods-Runner.debug.xcconfig */, + 1B77ED38F3CFB577B226C787 /* Pods-Runner.release.xcconfig */, + 157D5E1918F928220379E184 /* Pods-Runner.profile.xcconfig */, + 68BCEFDE4A146CA3EAEBE287 /* Pods-Runner.debug-prod.xcconfig */, + 2F50FCC5E7FFD7D98D9E37C0 /* Pods-Runner.debug-dev.xcconfig */, + 35B0BC3EA00F65C7F5C2A2DC /* Pods-Runner.release-prod.xcconfig */, + 8320DBCBECD26EFBD206E3F7 /* Pods-Runner.release-dev.xcconfig */, + 1FF748E00695D5F39485C84C /* Pods-Runner.profile-prod.xcconfig */, + AA67FAE78E5508E1099965A5 /* Pods-Runner.profile-dev.xcconfig */, + 78A9D202DA29B01CE316DDD8 /* Pods-Runner-RunnerUITests.debug-prod.xcconfig */, + 5E424AFEDD5F54FB9C5FE6A0 /* Pods-Runner-RunnerUITests.debug-dev.xcconfig */, + 89F42EDB7AA949A94DDF3483 /* Pods-Runner-RunnerUITests.release-prod.xcconfig */, + 0A5055EBC979578B00780A25 /* Pods-Runner-RunnerUITests.release-dev.xcconfig */, + B49FBE2F1B8BD809F01F6970 /* Pods-Runner-RunnerUITests.profile-prod.xcconfig */, + CFBBF813CD43D6EB929AB2B6 /* Pods-Runner-RunnerUITests.profile-dev.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 9835C3B82AEBE2B200AD4576 /* RunnerUITests */, + 97C146EF1CF9000F007C117D /* Products */, + 4BFB9CE428BED72E658E9FCC /* Pods */, + DC071F6FA63E917403D662C6 /* Frameworks */, + 5A4E6FEAE8203E3593674CFC /* GoogleService-Info.plist */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 9835C3B72AEBE2B200AD4576 /* RunnerUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + B25051AE2A914DEB002AB245 /* Runner.entitlements */, + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + 9835C3B82AEBE2B200AD4576 /* RunnerUITests */ = { + isa = PBXGroup; + children = ( + 9835C3B92AEBE2B200AD4576 /* RunnerUITests.m */, + ); + path = RunnerUITests; + sourceTree = ""; + }; + DC071F6FA63E917403D662C6 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6D978CC248F4B0FE33F0F963 /* Pods_Runner.framework */, + 77B0713DC63135B5488A774E /* Pods_Runner_RunnerUITests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 3AF1BFB546C851787D470561 /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 2FC8CE8F8BE785A6FA42F3C6 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; + 9835C3B62AEBE2B200AD4576 /* RunnerUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9835C3C52AEBE2B200AD4576 /* Build configuration list for PBXNativeTarget "RunnerUITests" */; + buildPhases = ( + 6DD48773736CF13259607197 /* [CP] Check Pods Manifest.lock */, + 9835C3B32AEBE2B200AD4576 /* Sources */, + 9835C3B42AEBE2B200AD4576 /* Frameworks */, + 9835C3B52AEBE2B200AD4576 /* Resources */, + FFE213DE21216A1B3F16BFE9 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 9835C3BE2AEBE2B200AD4576 /* PBXTargetDependency */, + ); + name = RunnerUITests; + productName = RunnerUITests; + productReference = 9835C3B72AEBE2B200AD4576 /* RunnerUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1430; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + 9835C3B62AEBE2B200AD4576 = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 9835C3B62AEBE2B200AD4576 /* RunnerUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + 1E78C839FE2BE0BF82D354A0 /* GoogleService-Info.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9835C3B52AEBE2B200AD4576 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 2FC8CE8F8BE785A6FA42F3C6 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3AF1BFB546C851787D470561 /* [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-Runner-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; + }; + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 6DD48773736CF13259607197 /* [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-Runner-RunnerUITests-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; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + FFE213DE21216A1B3F16BFE9 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9835C3B32AEBE2B200AD4576 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9835C3BA2AEBE2B200AD4576 /* RunnerUITests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9835C3BE2AEBE2B200AD4576 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 9835C3BD2AEBE2B200AD4576 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile-prod */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-prod"; + }; + 249021D4217E4FDB00AE95B9 /* Profile-prod */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = Challenge; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = U3EG6EALX7; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Profile-prod"; + }; + 97C147031CF9000F007C117D /* Debug-prod */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + 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_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "Debug-prod"; + }; + 97C147041CF9000F007C117D /* Release-prod */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Release-prod"; + }; + 97C147061CF9000F007C117D /* Debug-prod */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = Challenge; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = U3EG6EALX7; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Debug-prod"; + }; + 97C147071CF9000F007C117D /* Release-prod */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = Challenge; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = U3EG6EALX7; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release-prod"; + }; + 9835C3BF2AEBE2B200AD4576 /* Debug-prod */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = U3EG6EALX7; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + }; + name = "Debug-prod"; + }; + 9835C3C02AEBE2B200AD4576 /* Debug-dev */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = U3EG6EALX7; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + }; + name = "Debug-dev"; + }; + 9835C3C12AEBE2B200AD4576 /* Release-prod */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = U3EG6EALX7; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + VALIDATE_PRODUCT = YES; + }; + name = "Release-prod"; + }; + 9835C3C22AEBE2B200AD4576 /* Release-dev */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = U3EG6EALX7; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + VALIDATE_PRODUCT = YES; + }; + name = "Release-dev"; + }; + 9835C3C32AEBE2B200AD4576 /* Profile-prod */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = U3EG6EALX7; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-prod"; + }; + 9835C3C42AEBE2B200AD4576 /* Profile-dev */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = U3EG6EALX7; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-dev"; + }; + B2F268802A8E5F2200D757B3 /* Debug-dev */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + 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_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "Debug-dev"; + }; + B2F268812A8E5F2200D757B3 /* Debug-dev */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = "DEV Challenge"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = U3EG6EALX7; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.dev; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Debug-dev"; + }; + B2F268822A8E5F2A00D757B3 /* Release-dev */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Release-dev"; + }; + B2F268832A8E5F2A00D757B3 /* Release-dev */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = "DEV Challenge"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = U3EG6EALX7; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.dev; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release-dev"; + }; + B2F268842A8E5F3000D757B3 /* Profile-dev */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-dev"; + }; + B2F268852A8E5F3000D757B3 /* Profile-dev */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + APP_DISPLAY_NAME = "DEV Challenge"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = U3EG6EALX7; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.dev; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Profile-dev"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug-prod */, + B2F268802A8E5F2200D757B3 /* Debug-dev */, + 97C147041CF9000F007C117D /* Release-prod */, + B2F268822A8E5F2A00D757B3 /* Release-dev */, + 249021D3217E4FDB00AE95B9 /* Profile-prod */, + B2F268842A8E5F3000D757B3 /* Profile-dev */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug-dev"; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug-prod */, + B2F268812A8E5F2200D757B3 /* Debug-dev */, + 97C147071CF9000F007C117D /* Release-prod */, + B2F268832A8E5F2A00D757B3 /* Release-dev */, + 249021D4217E4FDB00AE95B9 /* Profile-prod */, + B2F268852A8E5F3000D757B3 /* Profile-dev */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug-dev"; + }; + 9835C3C52AEBE2B200AD4576 /* Build configuration list for PBXNativeTarget "RunnerUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9835C3BF2AEBE2B200AD4576 /* Debug-prod */, + 9835C3C02AEBE2B200AD4576 /* Debug-dev */, + 9835C3C12AEBE2B200AD4576 /* Release-prod */, + 9835C3C22AEBE2B200AD4576 /* Release-dev */, + 9835C3C32AEBE2B200AD4576 /* Profile-prod */, + 9835C3C42AEBE2B200AD4576 /* Profile-dev */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug-dev"; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/patrol/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme b/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme new file mode 100644 index 000000000..6f9a4e92f --- /dev/null +++ b/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme b/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme new file mode 100644 index 000000000..8bafb659d --- /dev/null +++ b/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/patrol/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/patrol/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..21a3cc14c --- /dev/null +++ b/packages/patrol/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/packages/patrol/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/patrol/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/packages/patrol/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/patrol/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/patrol/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..f9b0d7c5e --- /dev/null +++ b/packages/patrol/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/patrol/example/ios/Runner/AppDelegate.swift b/packages/patrol/example/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000..ff10bc94a --- /dev/null +++ b/packages/patrol/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,14 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + UNUserNotificationCenter.current().delegate = self as UNUserNotificationCenterDelegate + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..d36b1fab2 --- /dev/null +++ b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..abb75b5eaf05e9dad5953259ff5e468eb5b82154 GIT binary patch literal 45438 zcmeEu`9GBF|Nk|Eh%BcJm88AwT9s|2&?b~EJFRxIWt*86sd3OoN|wlyecuK%(WEGA zcGHOLjAR+ia(}Psy#I#pPoI7`&3QcT`?_BH@_fDS9-CY=6cyeo3;+;4d*<{d0Qlig zejv0C{)LxSybnN;{@K$f&F-LPXzK%aH@;%5?w6h!sw=SyiQPNkQ85s>mULo)gKc>8 zYO;JFGOjC4L~KcBb)yB z7pM&3T?+pk0jU3ei0c0Lw=SQ=e?Qv((glD2-y=MM{GVL@n#KPa!~Yq>|3!wsuJHdQ zVtzO2e^za$k6V;1vnJA-k3GBnV7y&4CNriwphgEAIj`ei<8lFcHRBMq;CuaM=Ib|! zt5@T$m#j(vg2O{drt4>6B+6*7jE!gI$nZ0yj!{XhO>-`#-Fm;WU3_HCS422J0^Nzy zJ2YS{km78S6ro4oZk!SQ{CzU(s(np>X>_|$Bh$-&emTm(%YijQU0uC?2Y{@dXx@M1 zK;FOp;jRqdsdlNB%6G zQjh-gC#y9kqCsHqCQCMcEvp^N{ZzUOWNAYBE3ZB!?eQ!l260@b8kfr1a$o6zRJ>cD zF|E<~d)V@&+HqBmEP`P+U@#5$Ku8|ezlPf@%vQrt49;U`B>&#{0FB+&S`anAnCyd4 zUJ><>lx>|coZ~tjA0h&$YH{f;YuK)f8|C&~D3JHAo!%i6^&-ZwHMe&xaCmcM4|GWaM;iIU7oe@e}%X0zlC0zP*=|t;m+cn!8^OY{fH| z(^4N*I7xRW(>^#@cT?=l#MLW~Of0dJ*XMEGR#r6T;SbKtyq4UrMo$N2VLE5jFrQ66rN=Cxj7|#69Ql;8d`jJHwGJ&@r#K!V<*rRqKJ{M35{gy@+H+#>VkgA z;H0aM(@7D=aPZq6WLn+9}CY!MY9D*nJqf!9CBYfn)Y z*TBnG8uPo$qHbpX3YJD&h(uX`@N(ndrmsKm6^=~*X1+k8cn zn5Pf0$rExbmJdbhM26f+6GDX~t_6E8$7(kv+KYB;R6oT#ARuF8-l|BEyEKc9t+080 z?Rhih5=DMN$o`=3_gGSLfN_j(vPB-*ATIzBjszRGK?dYp9{o+f$_YJH}9&`r>ZQ zhJRWv9u2@Y(>}YuNg{3rz;it;1qX}m9VW-h*NJa;tz?>rcq-|H=8h)XXaR z*^~MlcLu(SZW$_p~SF?uiXPT<*8oPRSIT0Nh~ZbUl9I;Df3d<@>azu$M{ zEo(Qay84V5^uVUU&Qs3KI$#Nt0WQ$fTk+Sf`Q*-b6#v*Dz0{3Cyow+HsFYh=*rm0Z zG%`=;rao2VjuMeCbnetCen3&?Ig;v-ihY;dfvp=PStD%@?0}5Mkxc8bKNkiDNd5Nq z?d2@r0mhOnCX&;asOGk6oG(fY1q%~51!CK~?w@_;DlZ?fQOHeTMV>FH{b=D(ojSI9 zu5~w4J2>=CN?L&7{{4nqW#y*pquM7Q8w4&nfuXwHyh|lW=gk9swtCGT==)(hWw4QI zO(g2G*=+7Nc;7jsn^R6VVMm*^y!H%rp6w4lS4ENU3CP~<|P!Rq4AspETi zb)Q`IV|I?dHeTFmq$`A}rJ>P5P3Y0c|6R*RvHi={5RvoQ?#VtWz-EZMBCFW0vzPI_ ztdQxc<=d*RA)8k^VC@;mZmkdZv}#jTnlhXhPjS%`)IGrUP@uR5m9BE1dm76fJGKIad&z<^IcWFn2Olx){CHyxJ8FQfy=gNB;nYUp638DI zN$c{5D#AJSy^+K?e8RX~`P#I_%0D3GV!bD-la%o5r{JfsOzXne0~(49mqAZO9Oqnn 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..c0021d1ae86d584cffc0d917d2ba9218b63a56ac GIT binary patch literal 492 zcmV?7Jh4h{z9#p@V0a&t2Xf%tD; zGco-A!@%(19t(qz$Ug>e|37}J5)5LWJ~I3u%0Lx$21S@*Ah38Y55vdzOblY;e}Qtp z8I)E3@T#gasGU8O&u1uOsq&Uzr23jaa?0000mVh}_ZfplR}c~PjBc@^DB1wutJ@FMCW z@Ft=4d0}LQqNV0g2nsQgrb{W7+^o@`^-bp%skQ{#p+%w>Y8E`r#*xfdH9I%vK?k!RRP?(=fJEz117T0 zKi+dH2wBrpSQZqJ^j{$<)Q;$Dtryi8?3d!wRVNzHFRqK1%Y*BVQ4$e1 z&=bHBK>!^hlE=LTS|p@)kwl3zs?f&nIa#Wgjr zd7pEEev^b`2)E38t~e?{KDIzB+MIMH)^qQ=Y-JD~cO3ANYL^?iKRsxzhPDSecO642 zT-UHdla5uy6}UtNIPd{OWPT0x>=d%wF-8+d1$gBG+Q^|TC88w73E0?#J;VpK>6n~+ zCp#^7F|pZK9w%U@1!JVV3L(Lw6nygnCBzS>5(UtdSRx=$j2I3EPQbG#aYQP^F5!^Y zzd(bBsQ4;z;|K0kV+6GKjTORN?7_Z}0$!;gE00000NkvXXu0mjf DPT;9` literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..fcad9eebeb7a025048df2c5fe984313479d72a51 GIT binary patch literal 1338 zcmV-A1;zS_P)ix(^iVp>}%K{m!{-RNewNwdlBW{>~bO*YA1l07q%3)}s}a?aVz zH|P7!<(qG2tt`cyus{~x^(h9t(3TEG{c((T#o~iPpgjX8T|R09CanAOZ}90ZA0F0Foy+URPBz@Bhk9_R!-xAvhB2w3 zUVXqP`|+YC*d-$PzBBLPt?vCeuA@FJz+xz~H%_S3F*;&l;<^dLu+h{UhiNYS?Y=HN z*|HliU-|_Ts=jIgX3y3cz?MSF{&b-XX9qmV`_?@%^gK3&NCfEKe>-APBl-Qw{vaMX z97)^oTMysiBk;GXzUl&QF0||ypLy`{2bIbD!JkvW0(2f$C_Zas+0`{*2QM1~m=Sq< zp=E758^&E`!?JA5&Vg1`*jZ)Rs0F`cIcWjr98+?}!x8?;R{@OwXTqXKyYGs!$AJX7 z#awo~la0DVhp)PNSlOAz?eX;e<%@1S(OrW?!eC=0@b!<^(9vZ#slG!<*BoxtQO~@B z>}dfj6p5JZc?(sW<9F89!^QPDzJmF(QU>O7;h}5ws`V_EWoA6PY!Ru;8Mqn$ zGBAg;=-uo{q@cEaGkD|lIHEHKZmmq9wtiN8ZHSTd{rPnURt;D}u^7<%Xbr{!7F-tB z;kSe6IWm=1j*Tmpzb{qZrK5-Q2CUzHbz_EUzl(3#xhuvjDtEcal)F3cuUD%6g zRyonQZ@#AHuQD))SRMUy-`R6F->-1dD-m!HS1Lp#moHUY|l9*%2xT)C7AK7Fr;(0lBLO7%I_-i7Ax&aV@2WI-+kx9f3dAeDeq6pyIw<@I~TE<{ z#?rtX&UL(a@)j_buDgY1Qw7Knv184F^QDyY5<8sd`@*;$Hj_s)TGWHr|(+8>Fo~3}f0UzpM63;YG>+x)%Vq*u{yBB3_ zrGpls{k-^P?bl0=fj3npmxT?XKm5Rm!&&SYc+ihi3|a@F`S4v*zjJCGa6odSEr2aVq*U#Cd$xiH&36hRt}u wsm(@G=|Ay`T_xaRR|&Y-RRS({-E_eJ1FwHLni4})-~a#s07*qoM6N<$f>;KbrvLx| literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..1902422661b8b2e056b5c173cded0033bb4d14ac GIT binary patch literal 745 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 DPT;9` literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..062fb835e2904cd05fd1c3526eb8a4e5d11c2e1d GIT binary patch literal 1609 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..eebd1727a0d9fda2c36c653fdadb40267c26d3df GIT binary patch literal 1143 zcmV--1c>{IP)w10sK1~e>IZv3R6j&g zQ1qaL9`suv6h#FQVcH8HX}a3ON7$^p)0tT}wRYUOcXeB0zp%{A?mhRO&%O7Ydxn+p zpGf-G4vdzfAd#jhNTewW5@{M0kkWFLe)jCgkqv85^71)8@%9lC$g$Hn6e@%&TQYJ^oWqIY1=z&f2RBHP4bqlU z9Avfo_+CQos~A84idOZ(VpX*7X=|>_D}aqwrGv*GZV<;TWRWkEMr!l6PQu=@Bq-$T zx{W_jaiAM#Pg-&BcD(lc=?k4$S<6Q!2SIW7({&0iPHpt?&_3PUg)9-s%n@Qbh*=gx8H#b6N?TZ_P zvW$b**00p59wbimKoHaw_G$q?Jp)+;@`kl9E)bfvaWrT;kL}Y(W<0Kmg-KMfd0Q`P zUVa|-J0%gvGYgC&#is*L`fukTPrPNaIjOyt!QqP zkV~_CwDKEIcf+J65lSYpl)3tXw;mK12+i8>6}fgf0pGuhX!sywM|lrVcYjKxWRguF zuUU+kK~ko`OtUu4|7;qFULjZ%Gl;fsHl^UP1zrnLvh?CPt-}^gN<+o+;p&Kzh2h14H#} z6wmR%@^}%)(w+(A<`vw1SC3qxU>bx&N>c;sSPYo67Nx{mR-16hFi7P&te^laKp3`_ zU!5+rSCrvWTWj#PhCxcp@qh@%h2j{G><+vpkQc$)83y?m5Ch{HDs~Km)I7u)s}&3R zU1HadUbIniF%*-ALDm+dg5RaFSM)!`NK+If(i8=WH2pUqzW|(k2N-O)WsLv;002ov JPDHLkV1hyl9jyQW literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..66737f2b4e06046d5e032bcfda4dd4232a91014d GIT binary patch literal 1999 zcma*oYdjMQ9|!Q2vaxu~oy0KC+{z_$r!kV`j7)RiT-Kw_avw)>w#=vu6-pB3gfqn0 zXmfd#k%(MEBT?zZF_%+vEywe`d0suA&-3E{`@i_T`@Q*QqrFbcNUKW&005aY?kJ!A zAMx)4N$zLN`vPA809beih4f86ATA-2d|efL_XJZTK-U+_A`wH;JCFxb1P4&j-bi^l zkijrYcXJb}l~-1&M2lv@UY**64tGBXD#)8DRnAGkX>^akvuHHD?25L%4-&rONSTOV zaqj0)ro`U{pNxukZ=DfPRvuVT_UtYW-n%D&pxs?FUdy02S%>nE=w(H~kuVo29W@WR zJ~YieQyyi02YRdge^ix_i0=gBVoTtS-pCJXzt|Le+{E41G|VYFKAX$pZpKnjd-yg5bEKs_KSu6Ye#yQs~2S^aTo0d$3@uPGMunBfLdV)&G(I{mZy1@)!L zCL`Vy*AnA>;P5cCrND(ui~%{n>-cG)x{7D0-ka;Xb<8d$4CGh$gg%zg@`K<0l8_Mf zIAZHB?W9@=>}Vfh?8Dk!?;B>Y57<~Pu*a~dpequtGeS(B9#8F6a|sW&mszqJAfNvk zJI@(;LekSuF(4D0$PNUmc>3muEl-HZ@SJ$Cl9lOl<(WU`sFF_*u=q( zcL|T1*po{kD9Yla_WWyI(5#o0aJEx&-|e*3Qiaalk4_AK-n#9l4pHUaUaXWpx>6`D zfQ}M$m_J}KQ(_Myn4ewVm=+ksfTEO%EF2X&`o)Yn^$4PwyH-6T8c8X!%{S7M;q|NF zHPk@A2Fvl^)=VQ@=%U4vTMXFsX7yGQ2ke8TtxY3x8tmE{Mxis@Dpc>bo>hS7s_J){ zP-IpRn3SY@U4EDQaHf0XT~AV$ywbez`s3dbc=Hf`F>DVjH_mis)^;t9rsOJ?^$nMN<0bxTG zoh2O@m^NEYpa4deVoh74CtfvkxY*TgLI{c(L>`j352X@PoC20n^H=v)zde|5Y2!60H{GH_7kVxK;QiI-SACn0c@^miJ@D0@FI{?60=uX1kPMyLBijlW zCjr+?$FILafUvydvFmx+)ET&mfXZJS6qhC0nO+`tD0Ew=8w{-tL^XoU9kgyAY%kg& zu|xP3^k)S-tl{a1iBMvHU5Z73sd+wyw{gH=!5&NuqN%!J9oFV{yfn7oIB9r!#)XF_ zUc>a^H(QMZL6AaT!&rgQp6%DSOZnqB%?2yND#>u6UcOrfm{WEtU1WK#`Iu~5$CFm7 z3FwNIcJL#WgS=W&n(;2C5;CXdTfLLaO}ts()V`)WttuZG?A}%lP$-n*b#m_&z@W@&JkS5i+uV_fL@ZnCb@2+kIx$(GB zAhYT>&z`~s@I0^-iklwlmP#9Ljz$7q$4q?X7Dcr~ex^F4ZvoX%Ou^(yT`l6=4kja} zEA^A&C0ERG-@L68xMQxc)Ms#&s4pXvNQhtBN>yg&s^0qK5ID`J}~ z*){MYZf;0=)~?C$WN;o5mMQ!8ag9@Zxn$yhJX)Zk^#!^7H6y}=k#54{mZ34$$bjuR zm530>Pv@TtCJ9|DN^$Xg%~bePTRh>xBXHbDIZ@4B<-{Y1G1dQ5wf};*`;VJRxqq?B S)*$;(1J1a5q3WG+w7&uEqN=_C literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..200972561d947de1ab10e477134236f2ed0fcf1c GIT binary patch literal 1296 zcmV+r1@HQaP)jRxwKN7-a5&MKmdVR1`9NurF?<+6di{E~!RNF_6 zPvDWq5(u5H!gr_cQGc`7rvFEhAW`ohof1Gp z0PXbnO2kHClH^X!BJ$7ent|Oet3mffSA4<$L{dn<0%4Nmsx2b&YlCy>eKV%El_I&X z$BoHb7ObpEqkmu$4^m8u+9*ttV#ZKB8bLAve4mX^1vkd6XbR4?Qruf^-av|1uNm&z zE~+C3sY3Zy95)l3N){$mQ`|QZ$*a72&2U%Yn8~4%67RTv57nyc_hQc!UhbV*(1#|nl^!Q~#}Fd9*ed?auV|Y?aonuB$$4$< zJ`|He$xW1Go7V5M$=g*uH76mR*4MFTZwwnYCDmNhu_3A1$G2L09HS5-NrhUoMmpVT zxa(4wqJ8QrZwl5$MyYkkc)aW1rH1l!Y=q|MAPQk zvK1c6u#>E^+{3SF)X#QKmyBbB6TGVRAhpvrl1QFq733mGr;loy*?JyX5oB*63PX|x zQ_6?NwbSx~P9y7iP9t0-d2a)hORI~&+F+qAL~9#+Ev2%>H7+knuA|ROdlnvuSrBaD z8<*EzO}p}70mX-3$p<4L%&^FDk&J{f%_AoYs<%lRTe-+yev+^6#%qT=F~BR&i*OjD z7tVvZHgOpljUY+&YJ^9&7+@k<>i~A`Mis?m)p8kR0P^q<~Wl9)X8uvY0W6tC#Qt zOMfPk6zqS}XFr=s#YfTOs}LxYEESYVmI}%wO9giY$^QV*kR_hH-cAbu0000oy7 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c254ef308a947075847b7ca6d327c2c7fdb5b7c9 GIT binary patch literal 2134 zcmb7`X*kr40>#n1k$p+SG?wgZWy{!_H_d-$WU`K3wm~Rl-?Nk$g$5yvbqb@Qv5iJ# zUrX7-WcPYTvZb=q?LPOz{d(_*bIxV@`=4mYm%AT2z?Pz8el+DWxM4VskV5kX{UUZa!dTw?^YrTMr}j~Uv$>(_jn zssFC`_D6Q!rNZ@DX4pq&0dxIms177jFBz}L^1wiZkmrK%Nf4+!gCxoQ@1?lDkL-g{ z*_nT?Bc3%psL$v@^R}Bh81uudnBB7m&07mo8cm8ik624cebfDDN7@43@P}Y$R=|cCmIGd&y6S+mroxnb31X2ZWqJ&X9-2j z8^5x~x@p^C$2Tiq^-R+t(Su?b?HhQ~1C3PjXv1^>cU&;plO{nyEl^KS&+{USv(UP* zZ(mXBVbD|Yj1NX<{bjAFTGLdHECI!8q%KT+1GX6NlfK;jBK$%14S1N!Kr-op#gNs` z{@e^KL|^f)v&qKIf51NtMv8?l98g^Tp{5`=}(f6tH{;!iNX{9?^^e0 zdSpalzgU7R@672Pi{6CYcoT4YSLy3G;y%rD#Wd(Twq#5;4XP{ynKAo|98Xx%09p1Gk6o%dlz^zMht z(V_RkC$9#)$Tpa{f2c)F)(LrUU?YoQ%-|Zh-bsWz@5}loATOiyvVKQ*#wo zlpDMN?^a7#cd(?!hV8vKx#r4#D>a93c}u#>zV4ngVNHnjw-cSqf7~6p29J^>oIdtd zP=QQp&QPvo@K_V3ot-3mQm7nVIc)@MtJHu7Ef{<<_f?xx?PLe^+rssJ*c|k}bW_t< z5_{0(s3-qgo`^`K)RI`_QJ}7XvNKeS8XIiQQdH!HFEIV)4>Ql&RBm<_bByQ^otmZNmZb8Ot@&h)iOmi)d&3sU7Lq-PrUVvE@C zhrjG+WE#D)`6BkeTTK*b_e~)z8U|)@>o2`RQC@YdjTbob(K(5ZIaf#3ODE{H0^SnO zu`Twk#=gR>=Nb&OpFQGD4zG_s^6|_Gw$62EYwd<7qlKs9uMnavycR^i@c8+Xjr%1q2THBp_)u z_YXS1H=Q1Y@|k{o29Wwr0Z)FW+2XqI*hpJm#6GlNWrqzc)1|nc4}?I;-g4<;e7lLB zpo8Cc4qXHk#RZoYYy|Ndw{b_aw*tXW<}2-6sO&@3o|Kr>3&Phid^d}4#u8S_dUdP1 zk`jd}u!%9Dyj-qZ2S>kb{ms*+`%A9IVVlUGb8+YZ_D%=+7`HC#?d_zvzU^*wQuj~Z zBEInTX9U=B=Vg#zh-}x`bjAxx_=apqwXLrCFR+ojUCdH{P3G3uldR<9%`wl1?n;_B zwM|0fM*uoqmo0l`3osqzk0@uYBp$cgy`DS>tLH?GN7B~RJ%peL3QjnUY;`a-5O-pw ztTw!Q9_5ZSZ9yBYV|@yYc-kt+K2OM$_<9Ge5y0ZmHR9s-0!sIFz!#tZ#t4F2kUaEv z+@n^`<+vqB%XllJ104wuR`YU(ngtkVdqck2@l$}=PP3Q6?o1gYVLQ825coPO?o13& zs?1}Us;QVnAg(Gp$Q+iQ5$t~nQFv309O`&$0g#V^Yfn8q*H}(5w{{(QI>pMbY!67s zAfnS*x!Kf;6t=^D3gN38ZoZJr{!wtXGwJi^LdT-9F%$h0Y?Q=iEf}IWwuOjuXuKgt@ zoF6R|@rw0>hxpl{@5KpD$cw*gBvga9H%ObRva)8Yu#8qLm+v=^Y#r>p6L*J;(0}MP zUx8LrwOIxX@$y--YFVZb_%A01pO!6&ATJ$R6yHXCr2e(e)bz`my-!`u{99g-#Ent( zg8rp|1EmNs(oMV6n!%A&$P+p|3AU{Ul<>;{~bbA UC2N3-|NI3OBftbvZRnElFXI0Hg#Z8m literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e19339fb2342ffb56e36dce6649c5ff92941eb38 GIT binary patch literal 2170 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..dfe2fd092279112ff3c2b67460e7c1a4d1fcbfc7 GIT binary patch literal 3030 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..7145e4227d6e382802b1dd29a88b3c5cec7ca62b GIT binary patch literal 1507 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 LNkvXXu0mjf`db)n literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..287728aaa2bb15bc2c24df402ef4b1483c4886d6 GIT binary patch literal 2677 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 JQ#1d>e*!q`2W4$uGq literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 000000000..00cabce83 --- /dev/null +++ b/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "LaunchImage.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "LaunchImage@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "LaunchImage@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..e94aac8ee517950cabca052561cf9083a94e7432 GIT binary patch literal 2785 zcmeHJ`B&207DvPs%^}N|rUkv(%PEfSSXP0d0w?K)BB zkjo(j#~jN{Op_bFO3ERJ9MUua^AZ~Od*53A^4@yu{R8)hv({PX?7j9r`+WBPd@?-U zofPHw$%8;3MHgp#FAzw|`L89n12{3;Lox?}{iWE1t&%J`K|b3tO!q)Avs7Ib6a=sc$_cKFv=7w|_+pcfgG><`t$ z;Sf?_FjPgwIXM{zhCoyi2pUL=3Xzlh`|3Zd(MF&YaA}eJVCCGB^2SZi0IUZ0H*TzF z3GUWdTi7r3l&?{X=<{@m(^@5KL?HZFc47O$Bs}&k9?);L2wc-4*;-bJZ5VNtxxH47luywBcY`iOC@rC=eRqROrV?Uza zA`Ry?gz^-qnz^d5m71cioz;&n5{vK}#@CgSzZ#lN_*AM_Z3QmY5D<+M#dt<2fLV3fl&T!hnR^aAglSMrC;X zoF>B4(kIc{2TVymw(UpEw?;8C$@Unr!ljic5@=iTW=(%1RH5GX99@ zx>7IHS}w-L>A-O|_i1mwdSA3fSmy-i0N{IY!aDFyTz{bC=7EBE$_-+2?EC} z85A_-T(@OHzbzsp3%O?#OTCV)Z!A>?^Qf2bh7)U}5A(|-C$YS5iIwi%1$AxTCh>)# zOYH+#RwKLz$Q%CFRoOG;gA&D}b8}ie_hj{ps0+LKI+(jRQasOmvDUy*k|WBZszxm$ zwI<_c|LKboP@J6BVZiTL`BRbGLxdS!?eEplU|QB5Az?eLnztu^pRWuGeuYzHb6&k3 zplKUpWZU&=*{AyGnZ-r063V_lnRkWF?j=xSF9dKt>D4g8>eUe`k(io*8LJEoz#14+ z1Lr7`2kTs2Pc*emQ&5L0Y!i2Nm-iZtF16aY$?Dtv!Ve+{Bf}aUk^6_PNl=yV_F!uto6Rx(_RHipcyX zq`P#rE-l;t4L!5vO|E%GJK8vK>E3vmeUyc6yw62w@&;Z+lKE zs3r?82|DwwX5n9jg2dXhV~`m8x$K!CR0U`22mNAiWl_%A4oHk%MY~m1tZ>P<;Nb?Jd0#Y^L-wvFQ)U)ktR$+h8ero$j;38K6>1H6AT(L|NHyPJu@70) zCt~nVBvie*H>{}>e4bzf z=Fxoeyf^u;2O(zPoPn><0Q2%(7Ntft@kZ};Xo>?Sb$7~11Wv%`5fy6qp#P#2;pjF6 zh1(mE>UkwVtyS2L%V%6oL@Ddz<7Ar~U0yF}03zMBQeeGiuSj`jWdP z;$HE5mt>}rl7E<@;@rHxQ1x!)c%_NkMxyBDg;nv8f=Mkw=cFR=nig&H@lACY^*R_; zdoBfcxCd#o#cR3plX!v~8x;-a?I2;S&D#z4Ly7AUrWBGxU|H0?Kc9?ip1Q@A?or=n zPCqoMUVJ9ZVGF{H$@3Ntax=d}iJ$mVvoLwy&-sxj+!03es_+9&h^6@ZLeN1Uu*3OdDnGU8@u&hUOz>m%FfK5Qe}*A zy1dBOONZS?)|8cP?gSc9YwqC_zLUZn#v#lIeY|oHSHvLn0sA~}+>vcU_c^~4s9~e2 zTl$9bVgon!YXsQOfK=Z>-pWn+4c=bM#QMHZMRYKUqZ#U?<^dR!t~yQ5<^(G=^_ioU5ru#Ji-V;??_+Y zT%G1~?QRz1e4crMAKl*Wp1&2(_UQiK`tOIdtXkQ@nyS(tfOG}9IJn!_*%Ge(32BU5 A4*&oF literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8070949558b81fdc689bf56b7b6b24a06511c0b GIT binary patch literal 7954 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 SQt;IqK`hN|_m!D=T>dXx@NkX* literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..4c9ae4459567f10332596d578b42268294500934 GIT binary patch literal 20184 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 literal 0 HcmV?d00001 diff --git a/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 000000000..89c2725b7 --- /dev/null +++ b/packages/patrol/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/packages/patrol/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/patrol/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..c85151dfd --- /dev/null +++ b/packages/patrol/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/patrol/example/ios/Runner/Base.lproj/Main.storyboard b/packages/patrol/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 000000000..f3c28516f --- /dev/null +++ b/packages/patrol/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/patrol/example/ios/Runner/Info.plist b/packages/patrol/example/ios/Runner/Info.plist new file mode 100644 index 000000000..2c94a6ea1 --- /dev/null +++ b/packages/patrol/example/ios/Runner/Info.plist @@ -0,0 +1,71 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + $(APP_DISPLAY_NAME) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + patrol_challenge + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + com.googleusercontent.apps.161899692976-ksb464fv3r9eq3r58n35gficunijd7kv + + + + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSApplicationCategoryType + + LSRequiresIPhoneOS + + UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + + processing + remote-notification + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/packages/patrol/example/ios/Runner/Runner-Bridging-Header.h b/packages/patrol/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000..308a2a560 --- /dev/null +++ b/packages/patrol/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/packages/patrol/example/ios/Runner/Runner.entitlements b/packages/patrol/example/ios/Runner/Runner.entitlements new file mode 100644 index 000000000..903def2af --- /dev/null +++ b/packages/patrol/example/ios/Runner/Runner.entitlements @@ -0,0 +1,8 @@ + + + + + aps-environment + development + + diff --git a/packages/patrol/example/ios/RunnerUITests/RunnerUITests.m b/packages/patrol/example/ios/RunnerUITests/RunnerUITests.m new file mode 100644 index 000000000..bfc5dbda2 --- /dev/null +++ b/packages/patrol/example/ios/RunnerUITests/RunnerUITests.m @@ -0,0 +1,5 @@ +@import XCTest; +@import patrol; +@import ObjectiveC.runtime; + +PATROL_INTEGRATION_TEST_IOS_RUNNER(RunnerUITests) diff --git a/packages/patrol/example/lib/cubit/auth_cubit.dart b/packages/patrol/example/lib/cubit/auth_cubit.dart new file mode 100644 index 000000000..ecae5d91a --- /dev/null +++ b/packages/patrol/example/lib/cubit/auth_cubit.dart @@ -0,0 +1,77 @@ +import 'dart:async'; + +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:google_sign_in/google_sign_in.dart'; + +class AuthCubit extends Cubit { + AuthCubit() : super(AuthStateLoading()); + + late final _firebaseAuth = FirebaseAuth.instance; + late final _googleSignIn = GoogleSignIn(); + late final StreamSubscription _authStateChangesSubscription; + + void init() { + final user = _firebaseAuth.currentUser; + _emitAuthState(user); + + _authStateChangesSubscription = + _firebaseAuth.authStateChanges().listen(_emitAuthState); + } + + void _emitAuthState(User? user) { + if (user == null) { + emit(AuthStateUnauthenticated()); + } else { + emit(AuthStateAuthenticated(user)); + } + } + + Future signInWithGoogle() async { + emit(AuthStateLoading()); + try { + final googleUser = await _googleSignIn.signIn(); + + final googleAuth = await googleUser?.authentication; + + final credential = GoogleAuthProvider.credential( + accessToken: googleAuth?.accessToken, + idToken: googleAuth?.idToken, + ); + + await _firebaseAuth.signInWithCredential(credential); + } catch (e) { + emit(AuthStateUnauthenticated(showError: true)); + emit(AuthStateUnauthenticated()); + } + } + + Future signOut() async { + await _googleSignIn.signOut(); + await _firebaseAuth.signOut(); + } + + @override + Future close() { + _authStateChangesSubscription.cancel(); + return super.close(); + } +} + +@immutable +sealed class AuthState {} + +final class AuthStateLoading extends AuthState {} + +final class AuthStateAuthenticated extends AuthState { + AuthStateAuthenticated(this.user); + + final User user; +} + +final class AuthStateUnauthenticated extends AuthState { + AuthStateUnauthenticated({this.showError = false}); + + final bool showError; +} diff --git a/packages/patrol/example/lib/firebase_options.dart b/packages/patrol/example/lib/firebase_options.dart new file mode 100644 index 000000000..e47f3467b --- /dev/null +++ b/packages/patrol/example/lib/firebase_options.dart @@ -0,0 +1,70 @@ +// File generated by FlutterFire CLI. ignore_for_file: +// lines_longer_than_80_chars, avoid_classes_with_only_static_members +import 'package:firebase_core/firebase_core.dart' show FirebaseOptions; +import 'package:flutter/foundation.dart' + show TargetPlatform, defaultTargetPlatform, kIsWeb; + +/// Default [FirebaseOptions] for use with your Firebase apps. +/// +/// Example: +/// ```dart +/// import 'firebase_options.dart'; +/// // ... +/// await Firebase.initializeApp( +/// options: DefaultFirebaseOptions.currentPlatform, +/// ); +/// ``` +class DefaultFirebaseOptions { + static FirebaseOptions get currentPlatform { + if (kIsWeb) { + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for web - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + } + switch (defaultTargetPlatform) { + case TargetPlatform.android: + return android; + case TargetPlatform.iOS: + return ios; + case TargetPlatform.macOS: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for macos - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.windows: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for windows - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.linux: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for linux - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + default: + throw UnsupportedError( + 'DefaultFirebaseOptions are not supported for this platform.', + ); + } + } + + static const FirebaseOptions android = FirebaseOptions( + apiKey: '', + appId: '', + messagingSenderId: '', + projectId: 'patrol-poc', + storageBucket: '', + ); + + static const FirebaseOptions ios = FirebaseOptions( + apiKey: '', + appId: '', + messagingSenderId: '', + projectId: 'patrol-poc', + storageBucket: '', + androidClientId: '', + iosClientId: '', + iosBundleId: 'com.example.patrolConf', + ); +} diff --git a/packages/patrol/example/lib/handlers/notification_handler.dart b/packages/patrol/example/lib/handlers/notification_handler.dart new file mode 100644 index 000000000..399ecdbfd --- /dev/null +++ b/packages/patrol/example/lib/handlers/notification_handler.dart @@ -0,0 +1,123 @@ +import 'dart:async'; +import 'dart:convert'; + +import 'package:dispose_scope/dispose_scope.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:http/http.dart' as http; +import 'package:patrol_challenge/handlers/permission_handler.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:permission_handler/permission_handler.dart'; + +class NotificationHandler { + NotificationHandler( + this._flutterLocalNotificationsPlugin, + this._firebaseMessaging, + ); + + final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin; + final FirebaseMessaging _firebaseMessaging; + + final _disposeScope = DisposeScope(); + + Future init(VoidCallback onNotificationTap) async { + await _init(onNotificationTap); + final token = await _firebaseMessaging.getToken(); + debugPrint('Device FCM token: $token'); + _listenForPushNotifications(); + } + + Future _init(VoidCallback onNotificationTap) async { + await _flutterLocalNotificationsPlugin.initialize( + const InitializationSettings( + android: AndroidInitializationSettings('notification_icon'), + iOS: DarwinInitializationSettings( + requestAlertPermission: false, + requestBadgePermission: false, + requestSoundPermission: false, + ), + ), + onDidReceiveNotificationResponse: (_) => onNotificationTap(), + ); + await _firebaseMessaging.setForegroundNotificationPresentationOptions( + alert: true, + badge: true, + sound: true, + ); + } + + Future _requestPermission() async { + final permissionStatus = await PermissionHandler.requestPermissions(); + return switch (permissionStatus) { + PermissionStatus.granted => true, + _ => false, + }; + } + + Future triggerLocalNotification({ + required VoidCallback onPressed, + required VoidCallback onError, + }) async { + final hasPermission = await _requestPermission(); + if (!hasPermission) { + onError(); + return; + } + await _init(onPressed); + await _showNotification(title: 'Tap me to finish the quiz!'); + } + + Future triggerPushNotification({ + required VoidCallback onPressed, + }) async { + final hasPermission = await _requestPermission(); + if (!hasPermission) { + return; + } + await _init(onPressed); + final fcmToken = await _firebaseMessaging.getToken(); + await http.post( + Uri.parse( + 'https://us-central1-patrol-poc.cloudfunctions.net/sendNotification', + ), + headers: {'Content-Type': 'application/json'}, + body: jsonEncode({'token': fcmToken}), + ); + } + + void _listenForPushNotifications() { + FirebaseMessaging.onMessage.listen((message) { + if (message.notification != null) { + final notification = message.notification; + _showNotification( + title: notification?.title ?? '', + body: notification?.body, + ); + } + }).disposedBy(_disposeScope); + } + + Future _showNotification({ + required String title, + String? body, + }) async { + const details = NotificationDetails( + android: AndroidNotificationDetails( + 'patrolChallengeChannelId', + 'patrolChallengeChannel', + importance: Importance.max, + priority: Priority.high, + color: PTColors.lcBlack, + ), + iOS: DarwinNotificationDetails( + presentAlert: true, + presentBadge: true, + presentSound: true, + interruptionLevel: InterruptionLevel.active, + ), + ); + + return _flutterLocalNotificationsPlugin.show(0, title, body, details); + } +} diff --git a/packages/patrol/example/lib/handlers/permission_handler.dart b/packages/patrol/example/lib/handlers/permission_handler.dart new file mode 100644 index 000000000..24f6122c3 --- /dev/null +++ b/packages/patrol/example/lib/handlers/permission_handler.dart @@ -0,0 +1,13 @@ +import 'package:permission_handler/permission_handler.dart'; + +class PermissionHandler { + static Future requestPermissions() async { + var status = await Permission.notification.status; + + if (status != PermissionStatus.granted) { + status = await Permission.notification.request(); + } + + return status; + } +} diff --git a/packages/patrol/example/lib/main.dart b/packages/patrol/example/lib/main.dart new file mode 100644 index 000000000..3d8f42c25 --- /dev/null +++ b/packages/patrol/example/lib/main.dart @@ -0,0 +1,87 @@ +import 'package:animations/animations.dart'; +import 'package:firebase_core/firebase_core.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:geolocator/geolocator.dart'; +import 'package:patrol_challenge/cubit/auth_cubit.dart'; +import 'package:patrol_challenge/firebase_options.dart'; +import 'package:patrol_challenge/handlers/notification_handler.dart'; +import 'package:patrol_challenge/pages/home_page.dart'; +import 'package:patrol_challenge/pages/push_notification/notification_success_page.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:provider/provider.dart'; + +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + await initApp(); + debugPrint('!Google sign in will not work when dev flavor used!'); + + runApp(const MyApp()); +} + +Future initApp() async { + _setUpTheme(); + await _initFirebase(); + await _askForLocationPermission(); +} + +void _setUpTheme() { + final mySystemTheme = SystemUiOverlayStyle.light + .copyWith(systemNavigationBarColor: PTColors.lcBlack); + + SystemChrome.setSystemUIOverlayStyle(mySystemTheme); +} + +Future _initFirebase() async { + await Firebase.initializeApp( + options: DefaultFirebaseOptions.currentPlatform, + ); +} + +Future _askForLocationPermission() => Geolocator.requestPermission(); + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return BlocProvider( + create: (context) => AuthCubit()..init(), + child: Provider( + lazy: false, + create: (_) => NotificationHandler( + FlutterLocalNotificationsPlugin(), + FirebaseMessaging.instance, + )..init(() => Navigator.push(context, notificationRoute)), + child: MaterialApp( + theme: ThemeData.dark().copyWith( + pageTransitionsTheme: const PageTransitionsTheme( + builders: { + TargetPlatform.android: SharedAxisPageTransitionsBuilder( + transitionType: SharedAxisTransitionType.horizontal, + ), + TargetPlatform.iOS: SharedAxisPageTransitionsBuilder( + transitionType: SharedAxisTransitionType.horizontal, + ), + }, + ), + colorScheme: ColorScheme.fromSwatch(primarySwatch: Colors.grey), + primaryColor: PTColors.lcBlack, + canvasColor: PTColors.textDark, + textSelectionTheme: TextSelectionThemeData( + selectionColor: PTColors.lcYellow.withOpacity(0.5), + cursorColor: PTColors.textWhite, + selectionHandleColor: PTColors.lcYellow, + ), + ), + debugShowCheckedModeBanner: false, + title: 'Patrol Challenge', + home: const HomePage(), + ), + ), + ); + } +} diff --git a/packages/patrol/example/lib/pages/google_sign_in/profile_page.dart b/packages/patrol/example/lib/pages/google_sign_in/profile_page.dart new file mode 100644 index 000000000..725311d53 --- /dev/null +++ b/packages/patrol/example/lib/pages/google_sign_in/profile_page.dart @@ -0,0 +1,82 @@ +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:patrol_challenge/cubit/auth_cubit.dart'; +import 'package:patrol_challenge/handlers/notification_handler.dart'; +import 'package:patrol_challenge/pages/push_notification/notification_success_page.dart'; +import 'package:patrol_challenge/ui/components/scaffold.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:patrol_challenge/ui/style/test_style.dart'; + +Route get profileRoute => + MaterialPageRoute(builder: (_) => const _ProfilePage()); + +class _ProfilePage extends StatelessWidget { + const _ProfilePage(); + + @override + Widget build(BuildContext context) { + return BlocConsumer( + listener: (context, state) { + if (state case AuthStateUnauthenticated()) { + Navigator.pop(context); + } + }, + builder: (context, state) { + return SafeArea( + child: switch (state) { + AuthStateAuthenticated(:final user) => _ProfilePageBody(user: user), + _ => const SizedBox(), + }, + ); + }, + ); + } +} + +class _ProfilePageBody extends StatelessWidget { + const _ProfilePageBody({required this.user}); + + final User user; + + @override + Widget build(BuildContext context) { + return PTScaffold( + top: Align( + alignment: Alignment.centerRight, + child: Padding( + padding: const EdgeInsets.all(16), + child: IconButton( + color: PTColors.lcYellow, + icon: const Icon( + Icons.power_settings_new, + color: PTColors.lcYellow, + ), + onPressed: context.read().signOut, + ), + ), + ), + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'Welcome ${user.displayName}!', + textAlign: TextAlign.center, + style: PTTextStyles.bodyBold, + ), + const SizedBox(height: 16), + ElevatedButton( + onPressed: () => context + .read() + .triggerPushNotification( + onPressed: () => Navigator.push(context, notificationRoute), + ), + child: const Text('Notify me!'), + ), + ], + ), + ), + ); + } +} diff --git a/packages/patrol/example/lib/pages/home_page.dart b/packages/patrol/example/lib/pages/home_page.dart new file mode 100644 index 000000000..ca95ca41f --- /dev/null +++ b/packages/patrol/example/lib/pages/home_page.dart @@ -0,0 +1,87 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:patrol_challenge/cubit/auth_cubit.dart'; +import 'package:patrol_challenge/handlers/notification_handler.dart'; +import 'package:patrol_challenge/pages/google_sign_in/profile_page.dart'; +import 'package:patrol_challenge/pages/push_notification/notification_success_page.dart'; +import 'package:patrol_challenge/pages/quiz/welcome_page.dart'; +import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; +import 'package:patrol_challenge/ui/components/scaffold.dart'; +import 'package:patrol_challenge/ui/style/test_style.dart'; +import 'package:patrol_challenge/ui/widgets/utils.dart'; + +class HomePage extends StatelessWidget { + const HomePage({super.key}); + + @override + Widget build(BuildContext context) { + return PTScaffold( + body: BlocConsumer( + listener: (context, state) async { + if (state case AuthStateAuthenticated()) { + await Navigator.push(context, profileRoute); + } else if (state case AuthStateUnauthenticated()) { + if (state.showError) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Login failed')), + ); + } + } + }, + builder: (context, state) { + return switch (state) { + AuthStateLoading() => const Center( + child: CircularProgressIndicator(), + ), + _ => const _HomePageBody(), + }; + }, + ), + ); + } +} + +class _HomePageBody extends StatelessWidget { + const _HomePageBody(); + + @override + Widget build(BuildContext context) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + PTElevatedButton( + caption: 'Sign In with Google', + onPressed: context.read().signInWithGoogle, + ), + const _TextSeparator(), + PTElevatedButton( + caption: 'Go to the quiz', + onPressed: () => Navigator.push(context, quizWelcomeRoute), + ), + const _TextSeparator(), + PTElevatedButton( + caption: 'Send notification', + onPressed: () => + context.read().triggerPushNotification( + onPressed: () => Navigator.push(context, notificationRoute), + ), + ), + ], + ).horizontallyPadded24; + } +} + +class _TextSeparator extends StatelessWidget { + const _TextSeparator(); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 45), + child: Text( + 'or', + style: PTTextStyles.h4, + ), + ); + } +} diff --git a/packages/patrol/example/lib/pages/push_notification/notification_success_page.dart b/packages/patrol/example/lib/pages/push_notification/notification_success_page.dart new file mode 100644 index 000000000..506969cec --- /dev/null +++ b/packages/patrol/example/lib/pages/push_notification/notification_success_page.dart @@ -0,0 +1,87 @@ +import 'dart:async'; + +import 'package:confetti/confetti.dart'; +import 'package:flutter/material.dart'; +import 'package:geocoding/geocoding.dart'; +import 'package:geolocator/geolocator.dart'; +import 'package:patrol_challenge/ui/components/scaffold.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; + +Route get notificationRoute => + MaterialPageRoute(builder: (_) => const _NotificationSuccessPage()); + +class _NotificationSuccessPage extends StatefulWidget { + const _NotificationSuccessPage(); + + @override + State<_NotificationSuccessPage> createState() => + _NotificationSuccessPageState(); +} + +class _NotificationSuccessPageState extends State<_NotificationSuccessPage> { + late ConfettiController _confettiController; + late final StreamSubscription _locationStream; + String _location = ''; + + @override + void initState() { + super.initState(); + _confettiController = ConfettiController( + duration: const Duration(seconds: 10), + ); + _locationStream = Geolocator.getPositionStream().listen(_onPositionUpdated); + } + + @override + Widget build(BuildContext context) { + return PTScaffold( + top: AppBar( + backgroundColor: PTColors.textDark, + elevation: 0, + leading: IconButton( + icon: const Icon(Icons.arrow_back, color: PTColors.lcWhite), + onPressed: () => Navigator.of(context).popUntil( + (route) => route.isFirst, + ), + ), + ), + body: Column( + children: [ + const Spacer(), + Text(_location), + Center( + child: ConfettiWidget( + confettiController: _confettiController..play(), + blastDirectionality: BlastDirectionality.explosive, + gravity: 0.05, + shouldLoop: true, + colors: const [ + Colors.green, + Colors.blue, + Colors.pink, + Colors.orange, + Colors.purple, + ], + ), + ), + const Spacer(flex: 3), + ], + ), + ); + } + + @override + void dispose() { + _confettiController.dispose(); + _locationStream.cancel(); + super.dispose(); + } + + Future _onPositionUpdated(Position pos) async { + final placemarks = + await placemarkFromCoordinates(pos.latitude, pos.longitude); + setState(() { + _location = 'Your location: ${placemarks.firstOrNull?.street ?? ''}'; + }); + } +} diff --git a/packages/patrol/example/lib/pages/quiz/error_page.dart b/packages/patrol/example/lib/pages/quiz/error_page.dart new file mode 100644 index 000000000..e90e4f6fd --- /dev/null +++ b/packages/patrol/example/lib/pages/quiz/error_page.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; +import 'package:patrol_challenge/ui/components/scaffold.dart'; +import 'package:patrol_challenge/ui/icons.dart'; +import 'package:patrol_challenge/ui/style/test_style.dart'; + +Route get errorRoute => + MaterialPageRoute(builder: (_) => const _ErrorPage()); + +class _ErrorPage extends StatelessWidget { + const _ErrorPage(); + + @override + Widget build(BuildContext context) { + return PTScaffold( + body: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + PTIcons.circleX, + const SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 48), + child: Text( + 'Unfortunately you have selected wrong answer. ' + 'Restart the app and try again.', + textAlign: TextAlign.center, + style: PTTextStyles.bodyBold, + ), + ), + ], + ), + ); + } +} diff --git a/packages/patrol/example/lib/pages/quiz/form_page.dart b/packages/patrol/example/lib/pages/quiz/form_page.dart new file mode 100644 index 000000000..79e54f915 --- /dev/null +++ b/packages/patrol/example/lib/pages/quiz/form_page.dart @@ -0,0 +1,390 @@ +import 'dart:math'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:patrol_challenge/pages/quiz/question_page.dart'; +import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; +import 'package:patrol_challenge/ui/components/scaffold.dart'; +import 'package:patrol_challenge/ui/components/text_field.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:patrol_challenge/ui/style/test_style.dart'; +import 'package:patrol_challenge/ui/widgets/top_bar.dart'; +import 'package:patrol_challenge/ui/widgets/utils.dart'; + +Route get formRoute => + MaterialPageRoute(builder: (_) => const _FormPage()); + +class _FormPage extends StatefulWidget { + const _FormPage(); + + static final _leanCodeColors = { + PTColors.lcBlack, + PTColors.lcYellow, + PTColors.lcWhite, + }; + static final _otherColors = { + const Color(0xFF3AE35F), + const Color(0xFF7521FF), + const Color(0xFF215FFF), + const Color(0xFFABFFB3), + const Color(0xFF8DD6FF), + const Color(0xFF739F51), + }; + + @override + State<_FormPage> createState() => _FormPageState(); +} + +class _FormPageState extends State<_FormPage> { + var _submitted = false; + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: FocusScope.of(context).unfocus, + child: PTScaffold( + bodyKey: ValueKey(_submitted), + top: const TopBar(), + body: + _submitted ? const _CountdownTimer() : _Form(onSubmit: _showTimer), + ), + ); + } + + void _showTimer(bool valid) { + if (valid) { + setState(() => _submitted = true); + } + } +} + +class _Form extends StatefulWidget { + const _Form({required this.onSubmit}); + + final ValueChanged onSubmit; + + @override + State<_Form> createState() => _FormState(); +} + +class _FormState extends State<_Form> { + final _colorsToDisplay = [ + ..._FormPage._leanCodeColors, + ..._FormPage._otherColors, + ]..shuffle(); + final _textController = TextEditingController(); + final _selectedColors = {}; + var _showErrors = false; + + @override + void initState() { + super.initState(); + _textController.addListener(() => setState(() {})); + } + + @override + void dispose() { + _textController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return SingleChildScrollView( + keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag, + padding: const EdgeInsets.only(bottom: 24), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const SizedBox(height: 24), + Text( + 'Choose a nickname to sign up', + style: PTTextStyles.h4, + ), + const SizedBox(height: 32), + PTTextField( + controller: _textController, + label: 'Your nickname', + errorText: + _showErrors && !_nickValid ? 'Nick must not be empty' : null, + ), + const SizedBox(height: 32), + _ColorPicker( + selectedColors: _selectedColors, + colorsToDisplay: _colorsToDisplay, + onSelected: _onColorSelected, + errorText: + _showErrors && !_colorsValid ? 'Colors must be picked' : null, + ), + const SizedBox(height: 24), + PTElevatedButton( + caption: 'Ready!', + onPressed: _onSubmit, + ), + ], + ).horizontallyPadded24, + ); + } + + void _onColorSelected(Color color) { + setState(() { + if (_selectedColors.contains(color)) { + _selectedColors.remove(color); + } else if (_selectedColors.length < 3) { + _selectedColors.add(color); + } + }); + } + + bool get _nickValid => _textController.text.isNotEmpty; + + bool get _colorsValid => + setEquals(_FormPage._leanCodeColors, _selectedColors); + + bool get _allValid => _nickValid && _colorsValid; + + void _onSubmit() { + if (_allValid) { + widget.onSubmit(true); + } else if (!_showErrors) { + setState(() { + _showErrors = true; + }); + } + } +} + +class _CountdownTimer extends StatefulWidget { + const _CountdownTimer(); + + @override + State<_CountdownTimer> createState() => _CountdownTimerState(); +} + +class _CountdownTimerState extends State<_CountdownTimer> { + @override + Widget build(BuildContext context) { + return Stack( + alignment: Alignment.center, + fit: StackFit.expand, + children: [ + Positioned( + top: 128, + height: 120, + width: 262, + child: Text( + 'The quiz will start in', + style: PTTextStyles.h1, + textAlign: TextAlign.center, + ), + ), + const _AnimatedTimer(), + ], + ); + } +} + +class _AnimatedTimer extends StatefulWidget { + const _AnimatedTimer(); + + @override + State<_AnimatedTimer> createState() => _AnimatedTimerState(); +} + +class _AnimatedTimerState extends State<_AnimatedTimer> + with SingleTickerProviderStateMixin { + late final AnimationController _animationController; + + @override + void initState() { + super.initState(); + _animationController = + AnimationController(vsync: this, duration: const Duration(seconds: 3)) + ..addStatusListener( + (status) { + if (status == AnimationStatus.completed) { + Navigator.of(context).push(questionRoute); + } + }, + ); + + Future.delayed(const Duration(milliseconds: 200), () { + _animationController.animateTo(1); + }); + } + + @override + Widget build(BuildContext context) { + return AnimatedBuilder( + key: const Key('ticker'), + animation: _animationController, + builder: (context, child) { + final valueToDisplay = 3 - _animationController.value * 3; + + return Stack( + alignment: Alignment.center, + children: [ + _CustomPaint(painter: _Painter(2 * pi, PTColors.lcYellow)), + _CustomPaint( + painter: _Painter( + _animationController.value * 2 * pi, + const Color(0xFFFDFED5), + ), + ), + Text( + valueToDisplay.ceil().toString(), + style: PTTextStyles.h2.copyWith(color: PTColors.textDark), + ), + ], + ); + }, + ); + } +} + +class _CustomPaint extends StatelessWidget { + const _CustomPaint({required this.painter}); + + final _Painter painter; + + @override + Widget build(BuildContext context) { + return CustomPaint( + willChange: true, + painter: painter, + size: const Size(145, 145), + ); + } +} + +class _Painter extends CustomPainter { + _Painter(this.angle, this.color); + + final double angle; + final Color color; + + @override + void paint(Canvas canvas, Size size) { + final paint = Paint()..color = color; + canvas.drawArc( + Rect.fromCenter( + center: Offset(size.height / 2, size.width / 2), + height: size.height, + width: size.width, + ), + -pi / 2, + angle, + true, + paint, + ); + } + + @override + bool shouldRepaint(CustomPainter oldDelegate) => true; +} + +class _ColorPicker extends StatelessWidget { + const _ColorPicker({ + required this.selectedColors, + required this.colorsToDisplay, + required this.onSelected, + this.errorText, + }); + + final Set selectedColors; + final List colorsToDisplay; + final void Function(Color) onSelected; + final String? errorText; + + @override + Widget build(BuildContext context) { + final errorText = this.errorText; + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "To confirm you're not a robot, pick LeanCode's colors", + style: PTTextStyles.h4, + ), + const SizedBox(height: 16), + Text( + '${selectedColors.length}/3 selected', + style: PTTextStyles.label, + ), + const SizedBox(height: 8), + Wrap( + runSpacing: 8, + spacing: 8, + children: List.generate( + 9, + (index) => Builder( + builder: (context) { + final color = colorsToDisplay[index]; + + return GestureDetector( + onTap: () { + FocusScope.of(context).unfocus(); + onSelected(color); + }, + child: SelectableBox( + color: color, + selected: selectedColors.contains(color), + ), + ); + }, + ), + ), + ), + if (errorText != null) + Padding( + padding: const EdgeInsets.only(top: 8), + child: Text( + errorText, + style: PTTextStyles.label.copyWith(color: PTColors.error), + ), + ), + ], + ); + } +} + +class SelectableBox extends StatelessWidget { + const SelectableBox({ + super.key, + required this.color, + required this.selected, + }); + + final Color color; + final bool selected; + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + Container( + width: 108, + height: 96, + decoration: BoxDecoration( + color: color, + borderRadius: const BorderRadius.all(Radius.circular(8)), + border: Border.all(color: PTColors.borderGrey), + ), + ), + if (selected) + Positioned( + top: 9, + right: 9, + child: Icon( + Icons.check_circle, + size: 22, + color: color == PTColors.lcBlack + ? PTColors.lcWhite + : PTColors.lcBlack, + ), + ), + ], + ); + } +} diff --git a/packages/patrol/example/lib/pages/quiz/question_page.dart b/packages/patrol/example/lib/pages/quiz/question_page.dart new file mode 100644 index 000000000..cb6fddbc6 --- /dev/null +++ b/packages/patrol/example/lib/pages/quiz/question_page.dart @@ -0,0 +1,279 @@ +import 'package:flutter/material.dart'; +import 'package:patrol_challenge/handlers/notification_handler.dart'; +import 'package:patrol_challenge/pages/quiz/error_page.dart'; +import 'package:patrol_challenge/pages/quiz/success_page.dart'; +import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; +import 'package:patrol_challenge/ui/components/button/text_button.dart'; +import 'package:patrol_challenge/ui/components/scaffold.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:patrol_challenge/ui/style/test_style.dart'; +import 'package:patrol_challenge/ui/widgets/top_bar.dart'; +import 'package:patrol_challenge/ui/widgets/utils.dart'; +import 'package:provider/provider.dart'; + +Route get questionRoute => + MaterialPageRoute(builder: (_) => _QuestionsPage()); + +class _QuestionsPage extends StatefulWidget { + @override + State<_QuestionsPage> createState() => _QuestionsPageState(); +} + +class _QuestionsPageState extends State<_QuestionsPage> { + var _taskIndex = 0; + late final List _answers; + final List _tasks = [ + "Click on elevated button with centered 'Fluttercon' text", + 'Click on an elevated button, which is placed in a list tile with a dash icon', + 'Click on the third button that is enabled', + ]; + + @override + void initState() { + super.initState(); + + _answers = [ + _Answers(answers: firstTaskAnswers), + _Answers(answers: secondTaskAnswers), + _Answers(answers: thirdTaskTaskAnswers), + ]; + } + + @override + Widget build(BuildContext context) { + return PTScaffold( + bodyKey: ValueKey(_taskIndex), + top: const TopBar(), + body: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const SizedBox(height: 32), + Text( + 'Question ${_taskIndex + 1}/3', + style: PTTextStyles.h3, + ).horizontallyPadded24, + const SizedBox(height: 32), + Text(_tasks[_taskIndex]).horizontallyPadded24, + const SizedBox(height: 32), + Flexible(child: _answers[_taskIndex]), + const SizedBox(height: 24), + ], + ), + ); + } + + void _showError() => Navigator.of(context).push(errorRoute); + + void _showNextQuestion() => setState(() => _taskIndex++); + + Future _showNotification() async { + final notificationHandler = context.read(); + await notificationHandler.triggerLocalNotification( + onPressed: () => Navigator.of(context).push(successRoute), + onError: _showError, + ); + } + + List get firstTaskAnswers { + return [ + PTTextButton( + onPressed: _showError, + text: 'Fluttercon', + ), + PTElevatedButton( + onPressed: _showError, + caption: '', + trailing: const Text('Fluttercon'), + ), + PTElevatedButton( + onPressed: _showNextQuestion, + caption: 'Fluttercon', + ), + ]..shuffle(); + } + + List get secondTaskAnswers { + return [ + _Tile( + leading: _EnabledButton(onPressed: _showNextQuestion), + trailing: const _Dash(color: PTColors.lcWhite), + ), + _Tile(leading: _EnabledButton(onPressed: _showError)), + Center( + child: SizedBox( + width: 128, + child: _EnabledButton( + onPressed: _showError, + showTrailing: true, + ), + ), + ), + ]..shuffle(); + } + + List get thirdTaskTaskAnswers { + final firstPart = List.generate( + 10, + (index) => index % 6 == 0 + ? _EnabledButton(onPressed: _showError) + : const _DisabledButton(), + )..shuffle(); + final secondPart = List.generate( + 5, + (index) => index == 0 + ? _EnabledButton(onPressed: _showNotification) + : const _DisabledButton(), + )..shuffle(); + final thirdPart = List.generate( + 5, + (index) => index == 0 + ? _EnabledButton(onPressed: _showError) + : const _DisabledButton(), + )..shuffle(); + + return [...firstPart, ...secondPart, ...thirdPart]; + } +} + +class _Answers extends StatelessWidget { + const _Answers({ + required this.answers, + }); + + final List answers; + + @override + Widget build(BuildContext context) { + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.only(left: 24, right: 16), + child: Column( + children: List.generate( + answers.length, + (index) => Padding( + padding: const EdgeInsets.symmetric(vertical: 16), + child: _Answer( + letter: _getAlphabetLetter(index), + answer: answers[index], + ), + ), + ), + ), + ), + ); + } + + String _getAlphabetLetter(int index) => String.fromCharCode(index + 65); +} + +class _Answer extends StatelessWidget { + const _Answer({ + required this.letter, + required this.answer, + }); + + final String letter; + final Widget answer; + + @override + Widget build(BuildContext context) { + return Row( + children: [ + SizedBox( + width: 14, + height: 19, + child: Text( + letter, + style: PTTextStyles.bodyBold, + ), + ), + const SizedBox(width: 16), + Expanded(child: answer), + ], + ); + } +} + +class _EnabledButton extends StatelessWidget { + const _EnabledButton({ + required this.onPressed, + this.showTrailing = false, + }); + + final VoidCallback onPressed; + final bool showTrailing; + + @override + Widget build(BuildContext context) { + return PTElevatedButton( + caption: 'click', + trailing: showTrailing ? const _Dash(color: PTColors.lcBlack) : null, + onPressed: onPressed, + ); + } +} + +class _DisabledButton extends StatelessWidget { + const _DisabledButton(); + + @override + Widget build(BuildContext context) { + return const PTElevatedButton( + caption: 'click', + onPressed: null, + ); + } +} + +class _Dash extends StatelessWidget { + const _Dash({ + required this.color, + }); + + final Color color; + + @override + Widget build(BuildContext context) { + return Icon( + Icons.flutter_dash, + color: color, + size: 24, + ); + } +} + +class _Tile extends StatelessWidget { + const _Tile({ + required this.leading, + this.trailing, + }); + + final Widget leading; + final Widget? trailing; + + @override + Widget build(BuildContext context) { + return DecoratedBox( + decoration: BoxDecoration( + border: Border.all(color: PTColors.borderGrey), + borderRadius: const BorderRadius.all(Radius.circular(12)), + color: PTColors.backgroundGrey, + ), + child: ListTile( + contentPadding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 6, + ), + leading: SizedBox( + width: 128, + child: leading, + ), + trailing: Padding( + padding: const EdgeInsets.only(right: 8), + child: trailing, + ), + tileColor: PTColors.backgroundGrey, + ), + ); + } +} diff --git a/packages/patrol/example/lib/pages/quiz/success_page.dart b/packages/patrol/example/lib/pages/quiz/success_page.dart new file mode 100644 index 000000000..5d0d37b71 --- /dev/null +++ b/packages/patrol/example/lib/pages/quiz/success_page.dart @@ -0,0 +1,48 @@ +import 'package:flutter/material.dart'; +import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; +import 'package:patrol_challenge/ui/components/scaffold.dart'; +import 'package:patrol_challenge/ui/images.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:patrol_challenge/ui/style/test_style.dart'; + +Route get successRoute => + MaterialPageRoute(builder: (_) => const _SuccessPage()); + +class _SuccessPage extends StatelessWidget { + const _SuccessPage(); + + @override + Widget build(BuildContext context) { + return PTScaffold( + body: Stack( + fit: StackFit.expand, + children: [ + Positioned(child: PTImages.confetti), + Center( + child: Container( + width: double.infinity, + height: 76, + alignment: Alignment.center, + color: PTColors.lcBlack.withOpacity(0.9), + child: Text( + 'Congratulations!', + style: PTTextStyles.h2, + ), + ), + ), + Positioned( + left: 24, + right: 24, + bottom: 24, + child: PTElevatedButton( + onPressed: () => Navigator.of(context).popUntil( + (route) => route.isFirst, + ), + caption: 'Start again', + ), + ), + ], + ), + ); + } +} diff --git a/packages/patrol/example/lib/pages/quiz/welcome_page.dart b/packages/patrol/example/lib/pages/quiz/welcome_page.dart new file mode 100644 index 000000000..83fbbef27 --- /dev/null +++ b/packages/patrol/example/lib/pages/quiz/welcome_page.dart @@ -0,0 +1,50 @@ +import 'package:flutter/material.dart'; +import 'package:patrol_challenge/pages/quiz/form_page.dart'; +import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; +import 'package:patrol_challenge/ui/components/scaffold.dart'; +import 'package:patrol_challenge/ui/images.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:patrol_challenge/ui/style/test_style.dart'; +import 'package:patrol_challenge/ui/widgets/logos_hero.dart'; +import 'package:patrol_challenge/ui/widgets/utils.dart'; + +Route get quizWelcomeRoute => + MaterialPageRoute(builder: (_) => const _WelcomePage()); + +class _WelcomePage extends StatelessWidget { + const _WelcomePage(); + + @override + Widget build(BuildContext context) { + return PTScaffold( + body: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const SizedBox(height: 76), + const LogoHero(), + const Spacer(), + Text.rich( + TextSpan( + style: PTTextStyles.h2.copyWith(color: PTColors.textWhite), + children: [ + const TextSpan(text: 'Welcome to Patrol Testing Quiz for'), + WidgetSpan( + child: Padding( + padding: const EdgeInsets.fromLTRB(5, 10, 10, 5), + child: PTImages.flutterconLogo, + ), + ), + ], + ), + ), + const SizedBox(height: 32), + PTElevatedButton( + caption: 'Start', + onPressed: () => Navigator.push(context, formRoute), + ), + const SizedBox(height: 40), + ], + ).horizontallyPadded24, + ); + } +} diff --git a/packages/patrol/example/lib/ui/components/button/elevated_button.dart b/packages/patrol/example/lib/ui/components/button/elevated_button.dart new file mode 100644 index 000000000..1bdfb1d8f --- /dev/null +++ b/packages/patrol/example/lib/ui/components/button/elevated_button.dart @@ -0,0 +1,84 @@ +import 'package:flutter/material.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:patrol_challenge/ui/style/test_style.dart'; +import 'package:patrol_challenge/ui/widgets/utils.dart'; + +class PTElevatedButton extends StatelessWidget { + const PTElevatedButton({ + super.key, + this.caption, + this.trailing, + required this.onPressed, + }); + + final String? caption; + final Widget? trailing; + final VoidCallback? onPressed; + + @override + Widget build(BuildContext context) { + final caption = this.caption; + final trailing = this.trailing; + + return SizedBox( + height: 48, + child: ElevatedButton( + style: ButtonStyle( + textStyle: _textStyle, + backgroundColor: _backgroundColor, + padding: _padding, + shape: _shape, + ), + onPressed: onPressed, + child: Row( + mainAxisAlignment: trailing != null + ? MainAxisAlignment.spaceBetween + : MainAxisAlignment.center, + children: [ + if (caption != null) Text(caption), + if (trailing != null) trailing, + ], + ).horizontallyPadded24, + ), + ); + } + + MaterialStateProperty? get _padding => + const MaterialStatePropertyAll(EdgeInsets.symmetric(vertical: 12)); + + MaterialStateProperty? get _shape => + const MaterialStatePropertyAll( + RoundedRectangleBorder( + borderRadius: BorderRadius.all(Radius.circular(8)), + ), + ); + + MaterialStateProperty? get _backgroundColor => + MaterialStateProperty.resolveWith( + (states) { + if (states.contains(MaterialState.pressed)) { + return PTColors.lcYellowPressed; + } else if (states.contains(MaterialState.disabled)) { + return PTColors.backgroundDisabled; + } + + return PTColors.lcYellow; + }, + ); + + MaterialStateProperty? get _textStyle => + MaterialStateProperty.resolveWith( + (states) { + if (states.contains(MaterialState.pressed)) { + return PTTextStyles.bodyMedium + .copyWith(foreground: Paint()..color = PTColors.textDark); + } else if (states.contains(MaterialState.disabled)) { + return PTTextStyles.bodyMedium + .copyWith(foreground: Paint()..color = PTColors.textDisabled); + } + + return PTTextStyles.bodyBold + .copyWith(foreground: Paint()..color = PTColors.textDark); + }, + ); +} diff --git a/packages/patrol/example/lib/ui/components/button/text_button.dart b/packages/patrol/example/lib/ui/components/button/text_button.dart new file mode 100644 index 000000000..6383f4728 --- /dev/null +++ b/packages/patrol/example/lib/ui/components/button/text_button.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:patrol_challenge/ui/style/test_style.dart'; + +class PTTextButton extends StatelessWidget { + const PTTextButton({ + super.key, + required this.text, + required this.onPressed, + }); + + final String text; + final VoidCallback onPressed; + + @override + Widget build(BuildContext context) { + return TextButton( + style: ButtonStyle( + overlayColor: MaterialStatePropertyAll( + PTColors.lcYellow.withOpacity(0.2), + ), + ), + onPressed: onPressed, + child: Center( + child: Text( + text, + style: PTTextStyles.bodyBold.copyWith( + color: PTColors.lcYellow, + ), + ), + ), + ); + } +} diff --git a/packages/patrol/example/lib/ui/components/scaffold.dart b/packages/patrol/example/lib/ui/components/scaffold.dart new file mode 100644 index 000000000..78ae9631a --- /dev/null +++ b/packages/patrol/example/lib/ui/components/scaffold.dart @@ -0,0 +1,54 @@ +import 'package:animations/animations.dart'; +import 'package:flutter/material.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:patrol_challenge/ui/style/test_style.dart'; + +class PTScaffold extends StatelessWidget { + const PTScaffold({ + super.key, + this.top, + required this.body, + this.bodyKey, + }); + + final Widget? top; + final Widget body; + final Key? bodyKey; + + @override + Widget build(BuildContext context) { + final top = this.top; + + return WillPopScope( + onWillPop: () => Future.value(false), + child: Scaffold( + backgroundColor: PTColors.textDark, + body: DefaultTextStyle( + style: PTTextStyles.bodyMedium.copyWith(color: PTColors.textWhite), + child: SafeArea( + top: top == null, + child: PageTransitionSwitcher( + duration: const Duration(milliseconds: 1000), + transitionBuilder: (child, primaryAnimation, secondaryAnimation) { + return SharedAxisTransition( + animation: primaryAnimation, + secondaryAnimation: secondaryAnimation, + transitionType: SharedAxisTransitionType.horizontal, + fillColor: PTColors.lcBlack, + child: child, + ); + }, + child: Column( + key: bodyKey, + children: [ + if (top != null) top, + Expanded(child: body), + ], + ), + ), + ), + ), + ), + ); + } +} diff --git a/packages/patrol/example/lib/ui/components/text_field.dart b/packages/patrol/example/lib/ui/components/text_field.dart new file mode 100644 index 000000000..4330d9720 --- /dev/null +++ b/packages/patrol/example/lib/ui/components/text_field.dart @@ -0,0 +1,81 @@ +import 'package:flutter/material.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:patrol_challenge/ui/style/test_style.dart'; + +class PTTextField extends StatelessWidget { + const PTTextField({ + super.key, + required this.controller, + required this.label, + this.errorText, + }); + + final TextEditingController controller; + final String label; + final String? errorText; + + @override + Widget build(BuildContext context) { + final errorText = this.errorText; + + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + SizedBox( + height: 48, + child: _TextField( + controller: controller, + label: label, + ), + ), + if (errorText != null) ...[ + const SizedBox(height: 4), + Text( + errorText, + style: PTTextStyles.label.copyWith(color: PTColors.error), + ), + ], + ], + ); + } +} + +class _TextField extends StatelessWidget { + const _TextField({ + required this.controller, + required this.label, + }); + + final String label; + final TextEditingController controller; + + static const _borderColor = Color(0xFF777777); + static const _fillColor = Color(0xFF2F2F2F); + + @override + Widget build(BuildContext context) { + return TextField( + controller: controller, + style: PTTextStyles.bodyMedium.copyWith(color: PTColors.textWhite), + cursorColor: PTColors.textWhite, + decoration: InputDecoration( + labelText: label, + labelStyle: PTTextStyles.bodyMedium.copyWith(color: PTColors.textWhite), + fillColor: _fillColor, + contentPadding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 12, + ), + filled: true, + focusedBorder: _getBorder(PTColors.lcYellow), + border: _getBorder(_borderColor), + enabledBorder: _getBorder(_borderColor), + ), + ); + } + + OutlineInputBorder _getBorder(Color color) => OutlineInputBorder( + borderRadius: const BorderRadius.all(Radius.circular(6)), + borderSide: BorderSide(color: color), + ); +} diff --git a/packages/patrol/example/lib/ui/icons.dart b/packages/patrol/example/lib/ui/icons.dart new file mode 100644 index 000000000..d75447609 --- /dev/null +++ b/packages/patrol/example/lib/ui/icons.dart @@ -0,0 +1,6 @@ +import 'package:flutter_svg/flutter_svg.dart'; + +abstract class PTIcons { + static final appIcon = SvgPicture.asset('assets/icon/app_icon.png'); + static final circleX = SvgPicture.asset('assets/icon/circle_x.svg'); +} diff --git a/packages/patrol/example/lib/ui/images.dart b/packages/patrol/example/lib/ui/images.dart new file mode 100644 index 000000000..8ae4886c6 --- /dev/null +++ b/packages/patrol/example/lib/ui/images.dart @@ -0,0 +1,17 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +abstract class PTImages { + static final patrolLogo = SvgPicture.asset('assets/image/patrol_logo.svg'); + static final flutterconLogo = SvgPicture.asset( + 'assets/image/fluttercon_logo.svg', + placeholderBuilder: (_) => const SizedBox(height: 26, width: 166), + ); + static final leancodeLogo = SvgPicture.asset( + 'assets/image/leancode_logo.svg', + ); + static final confetti = SvgPicture.asset( + 'assets/image/confetti.svg', + fit: BoxFit.cover, + ); +} diff --git a/packages/patrol/example/lib/ui/style/colors.dart b/packages/patrol/example/lib/ui/style/colors.dart new file mode 100644 index 000000000..ffa1ea7ee --- /dev/null +++ b/packages/patrol/example/lib/ui/style/colors.dart @@ -0,0 +1,15 @@ +import 'dart:ui'; + +abstract class PTColors { + static const textDark = Color(0xFF1F1F1F); + static const lcYellow = Color(0xFFF0FF00); + static const lcBlack = Color(0xFF1F1F1F); + static const lcWhite = Color(0xFFFFFFFF); + static const lcYellowPressed = Color(0xFFEBFA01); + static const textWhite = Color(0xFFFAFAFA); + static const error = Color(0xFFFF1F1F); + static const textDisabled = Color(0xFFBCC1CC); + static const backgroundDisabled = Color(0xFFE8EAED); + static const backgroundGrey = Color(0xFF2F2F2F); + static const borderGrey = Color(0xFF717171); +} diff --git a/packages/patrol/example/lib/ui/style/test_style.dart b/packages/patrol/example/lib/ui/style/test_style.dart new file mode 100644 index 000000000..feccb9db0 --- /dev/null +++ b/packages/patrol/example/lib/ui/style/test_style.dart @@ -0,0 +1,46 @@ +import 'package:flutter/cupertino.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; + +abstract class PTTextStyles { + static const _baseStyle = TextStyle( + color: PTColors.textWhite, + fontFamily: 'Inter', + fontStyle: FontStyle.normal, + ); + + static final h1 = _baseStyle.copyWith( + fontSize: 42, + height: 1.43, + fontWeight: FontWeight.w600, + ); + static final h2 = _baseStyle.copyWith( + fontSize: 36, + height: 1.44, + fontWeight: FontWeight.w600, + ); + static final h3 = _baseStyle.copyWith( + fontSize: 24, + height: 1.50, + fontWeight: FontWeight.w600, + ); + static final h4 = _baseStyle.copyWith( + fontSize: 20, + height: 1.40, + fontWeight: FontWeight.w600, + ); + static final bodyBold = _baseStyle.copyWith( + fontSize: 16, + height: 1.3, + fontWeight: FontWeight.w600, + ); + static final bodyMedium = _baseStyle.copyWith( + fontSize: 16, + height: 1.3, + fontWeight: FontWeight.w500, + ); + static final label = _baseStyle.copyWith( + fontSize: 12, + height: 1.33, + fontWeight: FontWeight.w500, + ); +} diff --git a/packages/patrol/example/lib/ui/widgets/logos_hero.dart b/packages/patrol/example/lib/ui/widgets/logos_hero.dart new file mode 100644 index 000000000..546c91b44 --- /dev/null +++ b/packages/patrol/example/lib/ui/widgets/logos_hero.dart @@ -0,0 +1,20 @@ +import 'package:flutter/widgets.dart'; +import 'package:patrol_challenge/ui/images.dart'; + +class LogoHero extends StatelessWidget { + const LogoHero({super.key}); + + @override + Widget build(BuildContext context) { + return Hero( + tag: 'logoHero', + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + PTImages.patrolLogo, + PTImages.leancodeLogo, + ], + ), + ); + } +} diff --git a/packages/patrol/example/lib/ui/widgets/top_bar.dart b/packages/patrol/example/lib/ui/widgets/top_bar.dart new file mode 100644 index 000000000..98f6c6a6f --- /dev/null +++ b/packages/patrol/example/lib/ui/widgets/top_bar.dart @@ -0,0 +1,26 @@ +import 'package:flutter/widgets.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:patrol_challenge/ui/widgets/logos_hero.dart'; + +class TopBar extends StatelessWidget { + const TopBar({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + color: PTColors.backgroundGrey, + child: Column( + children: [ + SizedBox(height: MediaQuery.of(context).viewPadding.top), + const SizedBox( + height: 56, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 16), + child: LogoHero(), + ), + ), + ], + ), + ); + } +} diff --git a/packages/patrol/example/lib/ui/widgets/utils.dart b/packages/patrol/example/lib/ui/widgets/utils.dart new file mode 100644 index 000000000..e993dc0e0 --- /dev/null +++ b/packages/patrol/example/lib/ui/widgets/utils.dart @@ -0,0 +1,8 @@ +import 'package:flutter/cupertino.dart'; + +extension ColumnPadded on Widget { + Widget get horizontallyPadded24 => Padding( + padding: const EdgeInsets.symmetric(horizontal: 24), + child: this, + ); +} diff --git a/packages/patrol/example/pubspec.yaml b/packages/patrol/example/pubspec.yaml new file mode 100644 index 000000000..9eb3f0fbb --- /dev/null +++ b/packages/patrol/example/pubspec.yaml @@ -0,0 +1,67 @@ +name: patrol_challenge +description: Project for fluttercon patrol challenge. +publish_to: none +version: 1.0.0+1 + +environment: + sdk: '>=3.1.0 <4.0.0' + flutter: '>=3.13.0' + +dependencies: + animations: ^2.0.8 + confetti: ^0.7.0 + dispose_scope: ^2.1.0 + firebase_auth: ^4.12.0 + firebase_core: ^2.20.0 + firebase_messaging: ^14.7.2 + flutter: + sdk: flutter + flutter_bloc: ^8.1.3 + flutter_holo_date_picker: ^1.1.3 + flutter_local_notifications: ^16.1.0 + flutter_svg: ^2.0.8 + geocoding: ^2.1.1 + geolocator: ^10.1.0 + google_sign_in: ^6.1.5 + http: ^1.1.0 + permission_handler: ^11.0.1 + provider: ^6.0.5 +dev_dependencies: + flutter_launcher_icons: ^0.13.1 + flutter_native_splash: ^2.3.4 + flutter_test: + sdk: flutter + leancode_lint: ^6.0.0 + patrol: ^2.3.1 + +flutter_launcher_icons: + android: 'launcher_icon' + ios: true + image_path: 'assets/icon/app_icon.png' + +flutter_native_splash: + color: '#1F1F1F' + image: 'assets/icon/splash_icon.png' + android_12: + image: 'assets/icon/splash_icon.png' + color: '#1F1F1F' + +flutter: + uses-material-design: true + assets: + - assets/icon/ + - assets/image/ + fonts: + - family: Inter + fonts: + - asset: assets/fonts/Inter-Medium.ttf + weight: 500 + - asset: assets/fonts/Inter-SemiBold.ttf + weight: 600 + +patrol: + flavor: dev + android: + package_name: com.example.patrol_challenge + ios: + bundle_id: pl.leancode.patrol.challenge.dev diff --git a/packages/patrol/example/test/widget_test.dart b/packages/patrol/example/test/widget_test.dart new file mode 100644 index 000000000..cbe7af072 --- /dev/null +++ b/packages/patrol/example/test/widget_test.dart @@ -0,0 +1,29 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility in the flutter_test package. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:patrol_challenge/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(const MyApp()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} From ce5db361476f61ab36d9c90d4c8ff3246ae61037 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Fri, 24 Nov 2023 11:10:07 +0100 Subject: [PATCH 07/17] more clean ups --- dev/e2e_app/android/app/build.gradle | 4 +- .../android/app/src/main/AndroidManifest.xml | 2 +- dev/e2e_app/integration_test/common.dart | 2 +- dev/e2e_app/lib/main.dart | 14 ++-- dev/e2e_app/lib/scrolling_screen.dart | 2 +- dev/e2e_app/pubspec.yaml | 4 +- .../patrol/example/android/app/build.gradle | 18 ----- .../android/app/src/main/AndroidManifest.xml | 2 +- .../example/integration_test/done_test.dart | 71 ------------------- .../example/integration_test/main_test.dart | 65 +++++++++++++++++ .../patrol/example/lib/cubit/auth_cubit.dart | 2 +- .../example/lib/ui/components/scaffold.dart | 4 +- packages/patrol/example/pubspec.yaml | 6 +- .../android/app/src/main/AndroidManifest.xml | 5 +- 14 files changed, 87 insertions(+), 114 deletions(-) delete mode 100644 packages/patrol/example/integration_test/done_test.dart create mode 100644 packages/patrol/example/integration_test/main_test.dart diff --git a/dev/e2e_app/android/app/build.gradle b/dev/e2e_app/android/app/build.gradle index cb9dd3f5c..9aff81a2e 100644 --- a/dev/e2e_app/android/app/build.gradle +++ b/dev/e2e_app/android/app/build.gradle @@ -27,7 +27,7 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdk 33 - namespace "pl.leancode.patrol.example" + namespace "pl.leancode.patrol.e2e_app" kotlinOptions { jvmTarget = "1.8" @@ -38,7 +38,7 @@ android { } defaultConfig { - applicationId "pl.leancode.patrol.example" + applicationId "pl.leancode.patrol.e2e_app" minSdk 21 targetSdk 33 versionCode flutterVersionCode.toInteger() diff --git a/dev/e2e_app/android/app/src/main/AndroidManifest.xml b/dev/e2e_app/android/app/src/main/AndroidManifest.xml index b1fb866e6..0fc4be994 100644 --- a/dev/e2e_app/android/app/src/main/AndroidManifest.xml +++ b/dev/e2e_app/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ + xmlns:tools="http://schemas.android.com/tools"> diff --git a/dev/e2e_app/integration_test/common.dart b/dev/e2e_app/integration_test/common.dart index 6cdfff56e..75ed61f96 100644 --- a/dev/e2e_app/integration_test/common.dart +++ b/dev/e2e_app/integration_test/common.dart @@ -1,6 +1,6 @@ +import 'package:e2e_app/main.dart' as app_main; import 'package:flutter_test/flutter_test.dart'; import 'package:patrol/patrol.dart'; -import 'package:patrol_example/main.dart' as app_main; export 'package:flutter_test/flutter_test.dart'; export 'package:patrol/patrol.dart'; diff --git a/dev/e2e_app/lib/main.dart b/dev/e2e_app/lib/main.dart index 1c378b738..363aefb64 100644 --- a/dev/e2e_app/lib/main.dart +++ b/dev/e2e_app/lib/main.dart @@ -1,12 +1,12 @@ +import 'package:e2e_app/loading_screen.dart'; +import 'package:e2e_app/location_screen.dart'; +import 'package:e2e_app/notifications_screen.dart'; +import 'package:e2e_app/overlay_screen.dart'; +import 'package:e2e_app/permissions_screen.dart'; +import 'package:e2e_app/scrolling_screen.dart'; +import 'package:e2e_app/webview_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter_timezone/flutter_timezone.dart'; -import 'package:patrol_example/loading_screen.dart'; -import 'package:patrol_example/location_screen.dart'; -import 'package:patrol_example/notifications_screen.dart'; -import 'package:patrol_example/overlay_screen.dart'; -import 'package:patrol_example/permissions_screen.dart'; -import 'package:patrol_example/scrolling_screen.dart'; -import 'package:patrol_example/webview_screen.dart'; import 'package:timezone/data/latest.dart' as tz_data; import 'package:timezone/timezone.dart' as tz; diff --git a/dev/e2e_app/lib/scrolling_screen.dart b/dev/e2e_app/lib/scrolling_screen.dart index 9989d206e..49849d772 100644 --- a/dev/e2e_app/lib/scrolling_screen.dart +++ b/dev/e2e_app/lib/scrolling_screen.dart @@ -1,5 +1,5 @@ +import 'package:e2e_app/keys.dart'; import 'package:flutter/material.dart'; -import 'package:patrol_example/keys.dart'; class ScrollingScreen extends StatelessWidget { const ScrollingScreen({super.key}); diff --git a/dev/e2e_app/pubspec.yaml b/dev/e2e_app/pubspec.yaml index e1a6acf69..6b5ab9bb6 100644 --- a/dev/e2e_app/pubspec.yaml +++ b/dev/e2e_app/pubspec.yaml @@ -1,4 +1,4 @@ -name: example +name: e2e_app description: A new Flutter project. publish_to: none version: 1.0.0+1 @@ -31,6 +31,6 @@ flutter: patrol: app_name: Patrol example android: - package_name: pl.leancode.patrol.example + package_name: pl.leancode.patrol.e2e_app ios: bundle_id: pl.leancode.patrol.Example diff --git a/packages/patrol/example/android/app/build.gradle b/packages/patrol/example/android/app/build.gradle index d670c8f32..5e72966cd 100644 --- a/packages/patrol/example/android/app/build.gradle +++ b/packages/patrol/example/android/app/build.gradle @@ -50,7 +50,6 @@ android { targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName - multiDexEnabled true testInstrumentationRunner "pl.leancode.patrol.PatrolJUnitRunner" testInstrumentationRunnerArguments clearPackageData: "true" } @@ -61,26 +60,9 @@ android { buildTypes { release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.debug } } - - flavorDimensions "default" - - productFlavors { - dev { - dimension "default" - resValue "string", "app_name", "DEV Challenge" - applicationIdSuffix ".dev" - } - - prod { - dimension "default" - resValue "string", "app_name", "Challenge" - } - } } flutter { diff --git a/packages/patrol/example/android/app/src/main/AndroidManifest.xml b/packages/patrol/example/android/app/src/main/AndroidManifest.xml index 4e9f6487f..c42ca1d16 100644 --- a/packages/patrol/example/android/app/src/main/AndroidManifest.xml +++ b/packages/patrol/example/android/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ ((box) => box.color == color) - .scrollTo() - .tap(); - } - - await $('Ready!').tap(); - - // Why doesn't it work? - // await $(ElevatedButton).$(Center).$('Fluttercon').tap(); - - await $(PTElevatedButton) - .which((widget) => widget.caption == 'Fluttercon') - .tap(); - - await $(ListTile).containing($(Icons.flutter_dash)).$('click').tap(); - - await $(ElevatedButton) - .which( - (widget) => widget.enabled, - ) - .at(2) - .scrollTo() - .tap(); - - if (await $.native.isPermissionDialogVisible()) { - await $.native.grantPermissionWhenInUse(); - } - - await $.native.pressHome(); - await $.native.openNotifications(); - - // wait for notification to show up - await Future.delayed(const Duration(seconds: 5)); - - await $.native.openNotifications(); - - await $.native.tapOnNotificationByIndex(0); - - await $.pumpAndSettle(); - - expect($('Congratulations!'), findsOneWidget); - }, - ); -} diff --git a/packages/patrol/example/integration_test/main_test.dart b/packages/patrol/example/integration_test/main_test.dart new file mode 100644 index 000000000..1b65dd010 --- /dev/null +++ b/packages/patrol/example/integration_test/main_test.dart @@ -0,0 +1,65 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:patrol/patrol.dart'; +import 'package:patrol_challenge/main.dart'; +import 'package:patrol_challenge/pages/quiz/form_page.dart'; +import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; +import 'package:patrol_challenge/ui/style/colors.dart'; + +void main() { + patrolTest('main flow', ($) async { + await $.pumpWidgetAndSettle(const MyApp()); + + await $('Go to the quiz').tap(); + + await $('Start').tap(); + + await $(TextField).enterText('text'); + + final colors = [PTColors.lcYellow, PTColors.lcBlack, PTColors.lcWhite]; + + for (final color in colors) { + await $(SelectableBox) + .which((box) => box.color == color) + .scrollTo() + .tap(); + } + + await $('Ready!').tap(); + + // Why doesn't it work? + // await $(ElevatedButton).$(Center).$('Fluttercon').tap(); + + await $(PTElevatedButton) + .which((widget) => widget.caption == 'Fluttercon') + .tap(); + + await $(ListTile).containing($(Icons.flutter_dash)).$('click').tap(); + + await $(ElevatedButton) + .which( + (widget) => widget.enabled, + ) + .at(2) + .scrollTo() + .tap(); + + if (await $.native.isPermissionDialogVisible()) { + await $.native.grantPermissionWhenInUse(); + } + + await $.native.pressHome(); + await $.native.openNotifications(); + + // wait for notification to show up + await Future.delayed(const Duration(seconds: 5)); + + await $.native.openNotifications(); + + await $.native.tapOnNotificationByIndex(0); + + await $.pumpAndSettle(); + + expect($('Congratulations!'), findsOneWidget); + }); +} diff --git a/packages/patrol/example/lib/cubit/auth_cubit.dart b/packages/patrol/example/lib/cubit/auth_cubit.dart index ecae5d91a..997c5d8af 100644 --- a/packages/patrol/example/lib/cubit/auth_cubit.dart +++ b/packages/patrol/example/lib/cubit/auth_cubit.dart @@ -41,7 +41,7 @@ class AuthCubit extends Cubit { ); await _firebaseAuth.signInWithCredential(credential); - } catch (e) { + } catch (err) { emit(AuthStateUnauthenticated(showError: true)); emit(AuthStateUnauthenticated()); } diff --git a/packages/patrol/example/lib/ui/components/scaffold.dart b/packages/patrol/example/lib/ui/components/scaffold.dart index 78ae9631a..8db9039a2 100644 --- a/packages/patrol/example/lib/ui/components/scaffold.dart +++ b/packages/patrol/example/lib/ui/components/scaffold.dart @@ -19,8 +19,8 @@ class PTScaffold extends StatelessWidget { Widget build(BuildContext context) { final top = this.top; - return WillPopScope( - onWillPop: () => Future.value(false), + return PopScope( + onPopInvoked: (didPop) => Future.value(false), child: Scaffold( backgroundColor: PTColors.textDark, body: DefaultTextStyle( diff --git a/packages/patrol/example/pubspec.yaml b/packages/patrol/example/pubspec.yaml index 9eb3f0fbb..2448f00ea 100644 --- a/packages/patrol/example/pubspec.yaml +++ b/packages/patrol/example/pubspec.yaml @@ -32,7 +32,8 @@ dev_dependencies: flutter_test: sdk: flutter leancode_lint: ^6.0.0 - patrol: ^2.3.1 + patrol: + path: .. flutter_launcher_icons: android: 'launcher_icon' @@ -60,8 +61,7 @@ flutter: weight: 600 patrol: - flavor: dev android: package_name: com.example.patrol_challenge ios: - bundle_id: pl.leancode.patrol.challenge.dev + bundle_id: pl.leancode.patrol.challenge diff --git a/packages/patrol_finders/example/android/app/src/main/AndroidManifest.xml b/packages/patrol_finders/example/android/app/src/main/AndroidManifest.xml index bb0b8b58a..2198855b2 100644 --- a/packages/patrol_finders/example/android/app/src/main/AndroidManifest.xml +++ b/packages/patrol_finders/example/android/app/src/main/AndroidManifest.xml @@ -1,8 +1,5 @@ - - + - Date: Fri, 24 Nov 2023 12:39:51 +0100 Subject: [PATCH 08/17] make iOS app compile --- packages/patrol/example/ios/Podfile.lock | 18 +- .../ios/Runner.xcodeproj/project.pbxproj | 516 ++---------------- .../{dev.xcscheme => Runner.xcscheme} | 24 +- .../xcshareddata/xcschemes/prod.xcscheme | 97 ---- .../ios/Runner/GoogleService-Info.plist | 36 ++ 5 files changed, 95 insertions(+), 596 deletions(-) rename packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/{dev.xcscheme => Runner.xcscheme} (79%) delete mode 100644 packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme create mode 100644 packages/patrol/example/ios/Runner/GoogleService-Info.plist diff --git a/packages/patrol/example/ios/Podfile.lock b/packages/patrol/example/ios/Podfile.lock index 3593aafbb..cc98c5629 100644 --- a/packages/patrol/example/ios/Podfile.lock +++ b/packages/patrol/example/ios/Podfile.lock @@ -58,6 +58,10 @@ PODS: - Flutter - flutter_native_splash (0.0.1): - Flutter + - geocoding_ios (1.0.5): + - Flutter + - geolocator_apple (1.2.0): + - Flutter - google_sign_in_ios (0.0.1): - Flutter - GoogleSignIn (~> 6.2) @@ -91,8 +95,6 @@ PODS: - GTMSessionFetcher/Core (< 3.0, >= 1.5) - GTMSessionFetcher/Core (2.3.0) - HTTPParserC (2.9.4) - - integration_test (0.0.1): - - Flutter - nanopb (2.30909.0): - nanopb/decode (= 2.30909.0) - nanopb/encode (= 2.30909.0) @@ -116,8 +118,9 @@ DEPENDENCIES: - Flutter (from `Flutter`) - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) + - geocoding_ios (from `.symlinks/plugins/geocoding_ios/ios`) + - geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`) - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/ios`) - - integration_test (from `.symlinks/plugins/integration_test/ios`) - patrol (from `.symlinks/plugins/patrol/ios`) - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) @@ -156,10 +159,12 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/flutter_local_notifications/ios" flutter_native_splash: :path: ".symlinks/plugins/flutter_native_splash/ios" + geocoding_ios: + :path: ".symlinks/plugins/geocoding_ios/ios" + geolocator_apple: + :path: ".symlinks/plugins/geolocator_apple/ios" google_sign_in_ios: :path: ".symlinks/plugins/google_sign_in_ios/ios" - integration_test: - :path: ".symlinks/plugins/integration_test/ios" patrol: :path: ".symlinks/plugins/patrol/ios" permission_handler_apple: @@ -181,6 +186,8 @@ SPEC CHECKSUMS: Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef + geocoding_ios: a389ea40f6f548de6e63006a2e31bf66ff80769a + geolocator_apple: cc556e6844d508c95df1e87e3ea6fa4e58c50401 google_sign_in_ios: 1256ff9d941db546373826966720b0c24804bcdd GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2 GoogleSignIn: 5651ce3a61e56ca864160e79b484cd9ed3f49b7a @@ -188,7 +195,6 @@ SPEC CHECKSUMS: GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd GTMSessionFetcher: 3a63d75eecd6aa32c2fc79f578064e1214dfdec2 HTTPParserC: aea14c3d2d4ac5beb3988781daa36dfa62e0d9ef - integration_test: 13825b8a9334a850581300559b8839134b124670 nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 patrol: 792c0bb6cc4d552fc8b37f49266341c39e659b4d permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6 diff --git a/packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj b/packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj index b10eee35c..f0c195aad 100644 --- a/packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj @@ -52,6 +52,7 @@ 2F50FCC5E7FFD7D98D9E37C0 /* Pods-Runner.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig"; sourceTree = ""; }; 35B0BC3EA00F65C7F5C2A2DC /* Pods-Runner.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-prod.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 47449248CF084D77624EF27B /* Pods-Runner-RunnerUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.release.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.release.xcconfig"; sourceTree = ""; }; 5A4E6FEAE8203E3593674CFC /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; }; 5E424AFEDD5F54FB9C5FE6A0 /* Pods-Runner-RunnerUITests.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.debug-dev.xcconfig"; sourceTree = ""; }; 68BCEFDE4A146CA3EAEBE287 /* Pods-Runner.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-prod.xcconfig"; sourceTree = ""; }; @@ -76,7 +77,9 @@ B25051AE2A914DEB002AB245 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; B49FBE2F1B8BD809F01F6970 /* Pods-Runner-RunnerUITests.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.profile-prod.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.profile-prod.xcconfig"; sourceTree = ""; }; CFBBF813CD43D6EB929AB2B6 /* Pods-Runner-RunnerUITests.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.profile-dev.xcconfig"; sourceTree = ""; }; + E740F02DB75B59873B10F97B /* Pods-Runner-RunnerUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.debug.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.debug.xcconfig"; sourceTree = ""; }; EDCD1D890C833F4AC9A7EB0C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + FD73CFB3D4A1A089A124EDA8 /* Pods-Runner-RunnerUITests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.profile.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -117,6 +120,9 @@ 0A5055EBC979578B00780A25 /* Pods-Runner-RunnerUITests.release-dev.xcconfig */, B49FBE2F1B8BD809F01F6970 /* Pods-Runner-RunnerUITests.profile-prod.xcconfig */, CFBBF813CD43D6EB929AB2B6 /* Pods-Runner-RunnerUITests.profile-dev.xcconfig */, + E740F02DB75B59873B10F97B /* Pods-Runner-RunnerUITests.debug.xcconfig */, + 47449248CF084D77624EF27B /* Pods-Runner-RunnerUITests.release.xcconfig */, + FD73CFB3D4A1A089A124EDA8 /* Pods-Runner-RunnerUITests.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -346,7 +352,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n"; }; 6DD48773736CF13259607197 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; @@ -383,7 +389,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; }; FFE213DE21216A1B3F16BFE9 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; @@ -452,243 +458,7 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ - 249021D3217E4FDB00AE95B9 /* Profile-prod */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = "Profile-prod"; - }; - 249021D4217E4FDB00AE95B9 /* Profile-prod */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - APP_DISPLAY_NAME = Challenge; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = U3EG6EALX7; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Profile-prod"; - }; - 97C147031CF9000F007C117D /* Debug-prod */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - 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_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = "Debug-prod"; - }; - 97C147041CF9000F007C117D /* Release-prod */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = "Release-prod"; - }; - 97C147061CF9000F007C117D /* Debug-prod */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - APP_DISPLAY_NAME = Challenge; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = U3EG6EALX7; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Debug-prod"; - }; - 97C147071CF9000F007C117D /* Release-prod */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - APP_DISPLAY_NAME = Challenge; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = U3EG6EALX7; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Release-prod"; - }; - 9835C3BF2AEBE2B200AD4576 /* Debug-prod */ = { + 9835C3C02AEBE2B200AD4576 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { @@ -755,141 +525,9 @@ TARGETED_DEVICE_FAMILY = "1,2"; TEST_TARGET_NAME = Runner; }; - name = "Debug-prod"; - }; - 9835C3C02AEBE2B200AD4576 /* Debug-dev */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = U3EG6EALX7; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.RunnerUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_EMIT_LOC_STRINGS = NO; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Runner; - }; - name = "Debug-dev"; - }; - 9835C3C12AEBE2B200AD4576 /* Release-prod */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = U3EG6EALX7; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.RunnerUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_EMIT_LOC_STRINGS = NO; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Runner; - VALIDATE_PRODUCT = YES; - }; - name = "Release-prod"; + name = Debug; }; - 9835C3C22AEBE2B200AD4576 /* Release-dev */ = { + 9835C3C22AEBE2B200AD4576 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { @@ -950,9 +588,9 @@ TEST_TARGET_NAME = Runner; VALIDATE_PRODUCT = YES; }; - name = "Release-dev"; + name = Release; }; - 9835C3C32AEBE2B200AD4576 /* Profile-prod */ = { + 9835C3C42AEBE2B200AD4576 /* Profile */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { @@ -1013,72 +651,9 @@ TEST_TARGET_NAME = Runner; VALIDATE_PRODUCT = YES; }; - name = "Profile-prod"; + name = Profile; }; - 9835C3C42AEBE2B200AD4576 /* Profile-dev */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = U3EG6EALX7; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.RunnerUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_EMIT_LOC_STRINGS = NO; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Runner; - VALIDATE_PRODUCT = YES; - }; - name = "Profile-dev"; - }; - B2F268802A8E5F2200D757B3 /* Debug-dev */ = { + B2F268802A8E5F2200D757B3 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1131,9 +706,9 @@ SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; - name = "Debug-dev"; + name = Debug; }; - B2F268812A8E5F2200D757B3 /* Debug-dev */ = { + B2F268812A8E5F2200D757B3 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { @@ -1150,7 +725,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.dev; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -1158,9 +733,9 @@ SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Debug-dev"; + name = Debug; }; - B2F268822A8E5F2A00D757B3 /* Release-dev */ = { + B2F268822A8E5F2A00D757B3 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1210,9 +785,9 @@ TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; - name = "Release-dev"; + name = Release; }; - B2F268832A8E5F2A00D757B3 /* Release-dev */ = { + B2F268832A8E5F2A00D757B3 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { @@ -1229,16 +804,16 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.dev; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Release-dev"; + name = Release; }; - B2F268842A8E5F3000D757B3 /* Profile-dev */ = { + B2F268842A8E5F3000D757B3 /* Profile */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1286,9 +861,9 @@ TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; - name = "Profile-dev"; + name = Profile; }; - B2F268852A8E5F3000D757B3 /* Profile-dev */ = { + B2F268852A8E5F3000D757B3 /* Profile */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { @@ -1305,14 +880,14 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.dev; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Profile-dev"; + name = Profile; }; /* End XCBuildConfiguration section */ @@ -1320,41 +895,32 @@ 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( - 97C147031CF9000F007C117D /* Debug-prod */, - B2F268802A8E5F2200D757B3 /* Debug-dev */, - 97C147041CF9000F007C117D /* Release-prod */, - B2F268822A8E5F2A00D757B3 /* Release-dev */, - 249021D3217E4FDB00AE95B9 /* Profile-prod */, - B2F268842A8E5F3000D757B3 /* Profile-dev */, + B2F268802A8E5F2200D757B3 /* Debug */, + B2F268822A8E5F2A00D757B3 /* Release */, + B2F268842A8E5F3000D757B3 /* Profile */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Debug-dev"; + defaultConfigurationName = Debug; }; 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( - 97C147061CF9000F007C117D /* Debug-prod */, - B2F268812A8E5F2200D757B3 /* Debug-dev */, - 97C147071CF9000F007C117D /* Release-prod */, - B2F268832A8E5F2A00D757B3 /* Release-dev */, - 249021D4217E4FDB00AE95B9 /* Profile-prod */, - B2F268852A8E5F3000D757B3 /* Profile-dev */, + B2F268812A8E5F2200D757B3 /* Debug */, + B2F268832A8E5F2A00D757B3 /* Release */, + B2F268852A8E5F3000D757B3 /* Profile */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Debug-dev"; + defaultConfigurationName = Debug; }; 9835C3C52AEBE2B200AD4576 /* Build configuration list for PBXNativeTarget "RunnerUITests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9835C3BF2AEBE2B200AD4576 /* Debug-prod */, - 9835C3C02AEBE2B200AD4576 /* Debug-dev */, - 9835C3C12AEBE2B200AD4576 /* Release-prod */, - 9835C3C22AEBE2B200AD4576 /* Release-dev */, - 9835C3C32AEBE2B200AD4576 /* Profile-prod */, - 9835C3C42AEBE2B200AD4576 /* Profile-dev */, + 9835C3C02AEBE2B200AD4576 /* Debug */, + 9835C3C22AEBE2B200AD4576 /* Release */, + 9835C3C42AEBE2B200AD4576 /* Profile */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Debug-dev"; + defaultConfigurationName = Debug; }; /* End XCConfigurationList section */ }; diff --git a/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme b/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 79% rename from packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme rename to packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 6f9a4e92f..93d90acc6 100644 --- a/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme +++ b/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,7 +1,7 @@ + version = "1.7"> @@ -23,26 +23,14 @@ - - - - - - + buildConfiguration = "Debug"> diff --git a/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme b/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme deleted file mode 100644 index 8bafb659d..000000000 --- a/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/patrol/example/ios/Runner/GoogleService-Info.plist b/packages/patrol/example/ios/Runner/GoogleService-Info.plist new file mode 100644 index 000000000..3269c06d7 --- /dev/null +++ b/packages/patrol/example/ios/Runner/GoogleService-Info.plist @@ -0,0 +1,36 @@ + + + + + CLIENT_ID + REMOVED.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.REMOVED + ANDROID_CLIENT_ID + REMOVED.apps.googleusercontent.com + API_KEY + REMOVED + GCM_SENDER_ID + 1084544097393 + PLIST_VERSION + 1 + BUNDLE_ID + pl.leancode.patrol.challenge + PROJECT_ID + opentouristics + STORAGE_BUCKET + REMOVED + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + REMOVED + + From f4ab5ad28aaaae969d1960265b513521fd99fdbf Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Fri, 24 Nov 2023 14:12:59 +0100 Subject: [PATCH 09/17] more changes --- .github/workflows/patrol-prepare.yaml | 2 +- dev/e2e_app/android/app/build.gradle | 16 ++-- dev/e2e_app/android/build.gradle | 24 +---- dev/e2e_app/android/settings.gradle | 31 +++++-- .../patrol/example/android/app/build.gradle | 20 ++--- .../example/android/app/google-services.json | 62 +++++++++++++ .../patrol/example}/MainActivityTest.java | 2 +- .../{challenge => example}/MainActivity.kt | 2 +- packages/patrol/example/android/build.gradle | 27 +----- .../patrol/example/android/settings.gradle | 32 +++++-- .../example/integration_test/empty_test.dart | 2 +- .../example/integration_test/main_test.dart | 8 +- packages/patrol/example/ios/Podfile.lock | 90 +++++++++---------- .../ios/Runner.xcodeproj/project.pbxproj | 12 +-- .../ios/Runner/GoogleService-Info.plist | 12 +-- .../patrol/example/lib/cubit/auth_cubit.dart | 19 +++- .../lib/handlers/notification_handler.dart | 21 ++--- packages/patrol/example/lib/main.dart | 28 ++++-- .../pages/google_sign_in/profile_page.dart | 12 +-- .../patrol/example/lib/pages/home_page.dart | 18 ++-- .../notification_success_page.dart | 4 +- .../example/lib/pages/quiz/error_page.dart | 6 +- .../example/lib/pages/quiz/form_page.dart | 16 ++-- .../example/lib/pages/quiz/question_page.dart | 20 ++--- .../example/lib/pages/quiz/success_page.dart | 10 +-- .../example/lib/pages/quiz/welcome_page.dart | 16 ++-- .../ui/components/button/elevated_button.dart | 6 +- .../lib/ui/components/button/text_button.dart | 4 +- .../example/lib/ui/components/scaffold.dart | 4 +- .../example/lib/ui/components/text_field.dart | 4 +- .../example/lib/ui/style/test_style.dart | 2 +- .../example/lib/ui/widgets/logos_hero.dart | 2 +- .../example/lib/ui/widgets/top_bar.dart | 4 +- packages/patrol/example/pubspec.yaml | 30 +++---- packages/patrol/example/test/widget_test.dart | 2 +- packages/patrol/pubspec.yaml | 5 ++ 36 files changed, 326 insertions(+), 249 deletions(-) create mode 100644 packages/patrol/example/android/app/google-services.json rename packages/patrol/example/android/app/src/androidTest/{java/com/example/patrol_challenge => pl/leancode/patrol/example}/MainActivityTest.java (96%) rename packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/{challenge => example}/MainActivity.kt (71%) diff --git a/.github/workflows/patrol-prepare.yaml b/.github/workflows/patrol-prepare.yaml index 9148dd27e..0f21c0f7f 100644 --- a/.github/workflows/patrol-prepare.yaml +++ b/.github/workflows/patrol-prepare.yaml @@ -164,7 +164,7 @@ jobs: - name: Preload Flutter artifacts run: flutter precache --ios - - name: Generate iOS build files + - name: Generate iOS build filesP working-directory: packages/patrol/example run: flutter build ios --config-only --simulator diff --git a/dev/e2e_app/android/app/build.gradle b/dev/e2e_app/android/app/build.gradle index 9aff81a2e..96114373e 100644 --- a/dev/e2e_app/android/app/build.gradle +++ b/dev/e2e_app/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "org.jetbrains.kotlin.android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file("local.properties") if (localPropertiesFile.exists()) { @@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty("flutter.sdk") -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty("flutter.versionCode") if (flutterVersionCode == null) { flutterVersionCode = "1" @@ -21,10 +22,6 @@ if (flutterVersionName == null) { flutterVersionName = "1.0" } -apply plugin: "com.android.application" -apply plugin: "kotlin-android" -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { compileSdk 33 namespace "pl.leancode.patrol.e2e_app" @@ -49,7 +46,6 @@ android { buildTypes { release { - // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.debug } } diff --git a/dev/e2e_app/android/build.gradle b/dev/e2e_app/android/build.gradle index 2f807d1e2..da0d8da81 100644 --- a/dev/e2e_app/android/build.gradle +++ b/dev/e2e_app/android/build.gradle @@ -1,25 +1,9 @@ -buildscript { - ext.kotlin_version = "1.8.22" - repositories { - google() - mavenCentral() - } - - dependencies { - classpath "com.android.tools.build:gradle:7.4.2" - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - rootProject.buildDir = "../build" subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" project.evaluationDependsOn(":app") } + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} diff --git a/dev/e2e_app/android/settings.gradle b/dev/e2e_app/android/settings.gradle index e791cf5c3..6cf68fd84 100644 --- a/dev/e2e_app/android/settings.gradle +++ b/dev/e2e_app/android/settings.gradle @@ -1,11 +1,26 @@ -include ":app" +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + } + settings.ext.flutterSdkPath = flutterSdkPath() + + includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } +plugins { + id "dev.flutter.flutter-plugin-loader" + id "com.android.application" version "7.4.2" apply false + id "org.jetbrains.kotlin.android" version "1.9.20" apply false +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +include ":app" diff --git a/packages/patrol/example/android/app/build.gradle b/packages/patrol/example/android/app/build.gradle index 5e72966cd..9fdde16ae 100644 --- a/packages/patrol/example/android/app/build.gradle +++ b/packages/patrol/example/android/app/build.gradle @@ -1,3 +1,10 @@ +plugins { + id "com.android.application" + id "org.jetbrains.kotlin.android" + id "dev.flutter.flutter-gradle-plugin" + id "com.google.gms.google-services" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +13,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,15 +23,11 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { compileSdkVersion 33 ndkVersion flutter.ndkVersion - namespace "pl.leancode.patrol.challenge" + namespace "pl.leancode.patrol.example" compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -45,7 +43,7 @@ android { } defaultConfig { - applicationId "pl.leancode.patrol.challenge" + applicationId "pl.leancode.patrol.example" minSdkVersion 21 targetSdkVersion 33 versionCode flutterVersionCode.toInteger() diff --git a/packages/patrol/example/android/app/google-services.json b/packages/patrol/example/android/app/google-services.json new file mode 100644 index 000000000..1401c22a5 --- /dev/null +++ b/packages/patrol/example/android/app/google-services.json @@ -0,0 +1,62 @@ +{ + "project_info": { + "project_number": "1084522097392", + "project_id": "REMOVED", + "storage_bucket": "REMOVED.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:1084544027393:android:a954abb91299778a2c8ff0", + "android_client_info": { + "package_name": "pl.leancode.patrol.example" + } + }, + "oauth_client": [ + { + "client_id": "1082544097392-j48pqr8dkg4almagua8er7hcl86el0df.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "pl.leancode.patrol.example", + "certificate_hash": "04c4d550315e88f469e252e20d08aa7bf07d8657" + } + }, + { + "client_id": "1084144097393-vu46lsrqbkenn0kid9r469668m6rtd0.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "pl.leancode.patrol.Example", + "certificate_hash": "77d5797c5c5481afe34d78ef8153d59cfd44f951" + } + }, + { + "client_id": "1084544097393-7fu46orccluulnfv0cjq3rvtv9e4op3q.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyChbKtvpnU9dvaI4U69_HHEd8mjb1ehx0o" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "1084544097393-7fu46orccluullfv0cjq5rvtv9e8op3q.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "1084544094393-1n4pqvqcni14ihhkbgl5oda9ufg9c6gf.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "pl.leancode.patrol.Example" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} diff --git a/packages/patrol/example/android/app/src/androidTest/java/com/example/patrol_challenge/MainActivityTest.java b/packages/patrol/example/android/app/src/androidTest/pl/leancode/patrol/example/MainActivityTest.java similarity index 96% rename from packages/patrol/example/android/app/src/androidTest/java/com/example/patrol_challenge/MainActivityTest.java rename to packages/patrol/example/android/app/src/androidTest/pl/leancode/patrol/example/MainActivityTest.java index 9c59d44f4..675e46464 100644 --- a/packages/patrol/example/android/app/src/androidTest/java/com/example/patrol_challenge/MainActivityTest.java +++ b/packages/patrol/example/android/app/src/androidTest/pl/leancode/patrol/example/MainActivityTest.java @@ -1,4 +1,4 @@ -package pl.leancode.patrol.challenge; +package pl.leancode.patrol.example; import androidx.test.platform.app.InstrumentationRegistry; import org.junit.Test; diff --git a/packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/challenge/MainActivity.kt b/packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/example/MainActivity.kt similarity index 71% rename from packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/challenge/MainActivity.kt rename to packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/example/MainActivity.kt index c06cbd716..0b9313215 100644 --- a/packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/challenge/MainActivity.kt +++ b/packages/patrol/example/android/app/src/main/kotlin/pl/leancode/patrol/example/MainActivity.kt @@ -1,4 +1,4 @@ -package pl.leancode.patrol.challenge +package pl.leancode.patrol.example import io.flutter.embedding.android.FlutterActivity diff --git a/packages/patrol/example/android/build.gradle b/packages/patrol/example/android/build.gradle index 39bf9d5d3..da0d8da81 100644 --- a/packages/patrol/example/android/build.gradle +++ b/packages/patrol/example/android/build.gradle @@ -1,30 +1,7 @@ -buildscript { - ext.kotlin_version = '1.7.20' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:8.1.2' - classpath 'com.google.gms:google-services:4.4.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = '../build' +rootProject.buildDir = "../build" subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') + project.evaluationDependsOn(":app") } tasks.register("clean", Delete) { diff --git a/packages/patrol/example/android/settings.gradle b/packages/patrol/example/android/settings.gradle index 44e62bcf0..f08a60d92 100644 --- a/packages/patrol/example/android/settings.gradle +++ b/packages/patrol/example/android/settings.gradle @@ -1,11 +1,27 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + } + settings.ext.flutterSdkPath = flutterSdkPath() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" + id "com.android.application" version "8.1.2" apply false + id "com.google.gms.google-services" version "4.4.0" apply false + id "org.jetbrains.kotlin.android" version "1.9.20" apply false +} + +include ":app" diff --git a/packages/patrol/example/integration_test/empty_test.dart b/packages/patrol/example/integration_test/empty_test.dart index 57fac0979..94dbdb405 100644 --- a/packages/patrol/example/integration_test/empty_test.dart +++ b/packages/patrol/example/integration_test/empty_test.dart @@ -1,6 +1,6 @@ +import 'package:example/main.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:patrol/patrol.dart'; -import 'package:patrol_challenge/main.dart'; void main() { patrolTest( diff --git a/packages/patrol/example/integration_test/main_test.dart b/packages/patrol/example/integration_test/main_test.dart index 1b65dd010..035b5e6c1 100644 --- a/packages/patrol/example/integration_test/main_test.dart +++ b/packages/patrol/example/integration_test/main_test.dart @@ -1,10 +1,10 @@ +import 'package:example/main.dart'; +import 'package:example/pages/quiz/form_page.dart'; +import 'package:example/ui/components/button/elevated_button.dart'; +import 'package:example/ui/style/colors.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:patrol/patrol.dart'; -import 'package:patrol_challenge/main.dart'; -import 'package:patrol_challenge/pages/quiz/form_page.dart'; -import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; void main() { patrolTest('main flow', ($) async { diff --git a/packages/patrol/example/ios/Podfile.lock b/packages/patrol/example/ios/Podfile.lock index cc98c5629..87398a90b 100644 --- a/packages/patrol/example/ios/Podfile.lock +++ b/packages/patrol/example/ios/Podfile.lock @@ -6,45 +6,45 @@ PODS: - AppAuth/ExternalUserAgent (1.6.2): - AppAuth/Core - CocoaAsyncSocket (7.6.5) - - Firebase/Auth (10.16.0): + - Firebase/Auth (10.18.0): - Firebase/CoreOnly - - FirebaseAuth (~> 10.16.0) - - Firebase/CoreOnly (10.16.0): - - FirebaseCore (= 10.16.0) - - Firebase/Messaging (10.16.0): + - FirebaseAuth (~> 10.18.0) + - Firebase/CoreOnly (10.18.0): + - FirebaseCore (= 10.18.0) + - Firebase/Messaging (10.18.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 10.16.0) - - firebase_auth (4.12.0): - - Firebase/Auth (= 10.16.0) + - FirebaseMessaging (~> 10.18.0) + - firebase_auth (4.14.1): + - Firebase/Auth (= 10.18.0) - firebase_core - Flutter - - firebase_core (2.20.0): - - Firebase/CoreOnly (= 10.16.0) + - firebase_core (2.23.0): + - Firebase/CoreOnly (= 10.18.0) - Flutter - - firebase_messaging (14.7.2): - - Firebase/Messaging (= 10.16.0) + - firebase_messaging (14.7.5): + - Firebase/Messaging (= 10.18.0) - firebase_core - Flutter - - FirebaseAppCheckInterop (10.16.0) - - FirebaseAuth (10.16.0): - - FirebaseAppCheckInterop (~> 10.0) + - FirebaseAppCheckInterop (10.18.0) + - FirebaseAuth (10.18.0): + - FirebaseAppCheckInterop (~> 10.17) - FirebaseCore (~> 10.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.8) - GoogleUtilities/Environment (~> 7.8) - GTMSessionFetcher/Core (< 4.0, >= 2.1) - RecaptchaInterop (~> 100.0) - - FirebaseCore (10.16.0): + - FirebaseCore (10.18.0): - FirebaseCoreInternal (~> 10.0) - - GoogleUtilities/Environment (~> 7.8) - - GoogleUtilities/Logger (~> 7.8) - - FirebaseCoreInternal (10.16.0): + - GoogleUtilities/Environment (~> 7.12) + - GoogleUtilities/Logger (~> 7.12) + - FirebaseCoreInternal (10.18.0): - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseInstallations (10.16.0): + - FirebaseInstallations (10.18.0): - FirebaseCore (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/UserDefaults (~> 7.8) - PromisesObjC (~> 2.1) - - FirebaseMessaging (10.16.0): + - FirebaseMessaging (10.18.0): - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - GoogleDataTransport (~> 9.2) @@ -73,33 +73,33 @@ PODS: - AppAuth (~> 1.5) - GTMAppAuth (~> 1.3) - GTMSessionFetcher/Core (< 3.0, >= 1.1) - - GoogleUtilities/AppDelegateSwizzler (7.11.5): + - GoogleUtilities/AppDelegateSwizzler (7.12.0): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - - GoogleUtilities/Environment (7.11.5): + - GoogleUtilities/Environment (7.12.0): - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.11.5): + - GoogleUtilities/Logger (7.12.0): - GoogleUtilities/Environment - - GoogleUtilities/Network (7.11.5): + - GoogleUtilities/Network (7.12.0): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.11.5)" - - GoogleUtilities/Reachability (7.11.5): + - "GoogleUtilities/NSData+zlib (7.12.0)" + - GoogleUtilities/Reachability (7.12.0): - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (7.11.5): + - GoogleUtilities/UserDefaults (7.12.0): - GoogleUtilities/Logger - GTMAppAuth (1.3.1): - AppAuth/Core (~> 1.6) - GTMSessionFetcher/Core (< 3.0, >= 1.5) - GTMSessionFetcher/Core (2.3.0) - HTTPParserC (2.9.4) - - nanopb (2.30909.0): - - nanopb/decode (= 2.30909.0) - - nanopb/encode (= 2.30909.0) - - nanopb/decode (2.30909.0) - - nanopb/encode (2.30909.0) + - nanopb (2.30909.1): + - nanopb/decode (= 2.30909.1) + - nanopb/encode (= 2.30909.1) + - nanopb/decode (2.30909.1) + - nanopb/encode (2.30909.1) - patrol (0.0.1): - Flutter - Telegraph (~> 0.30.0) @@ -173,16 +173,16 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 - Firebase: 25899099b77d255a636e3579c3d9dce10ec150d5 - firebase_auth: 015dab4ffe9e4d97f7d84a3373ad4c8a7712c5c7 - firebase_core: 2e0e89436a00b664a23bebb08859e5fede7215e9 - firebase_messaging: 2b2ed8f43ca8289caebfa324ada472e527bebcdf - FirebaseAppCheckInterop: 82358cff9f33452dd44259e88eea5e562500b1cb - FirebaseAuth: 3862d87d4d58deff08f705d471896a2f66e8bbf0 - FirebaseCore: 65a801af84cca84361ef9eac3fd868656968a53b - FirebaseCoreInternal: 26233f705cc4531236818a07ac84d20c333e505a - FirebaseInstallations: b822f91a61f7d1ba763e5ccc9d4f2e6f2ed3b3ee - FirebaseMessaging: 80b4a086d20ed4fd385a702f4bfa920e14f5064d + Firebase: 414ad272f8d02dfbf12662a9d43f4bba9bec2a06 + firebase_auth: 88053a759923970e580789d167a43b6031568ef5 + firebase_core: 29d66baf806970cda37c93621b27cd369b27db1b + firebase_messaging: 0a39f2514e1f27b0274b0d2fa99048f57856ee7c + FirebaseAppCheckInterop: 3cd914842ba46f4304050874cd284de82f154ffd + FirebaseAuth: 12314b438fa76048540c8fb86d6cfc9e08595176 + FirebaseCore: 2322423314d92f946219c8791674d2f3345b598f + FirebaseCoreInternal: 8eb002e564b533bdcf1ba011f33f2b5c10e2ed4a + FirebaseInstallations: e842042ec6ac1fd2e37d7706363ebe7f662afea4 + FirebaseMessaging: 9bc34a98d2e0237e1b121915120d4d48ddcf301e Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef @@ -191,11 +191,11 @@ SPEC CHECKSUMS: google_sign_in_ios: 1256ff9d941db546373826966720b0c24804bcdd GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2 GoogleSignIn: 5651ce3a61e56ca864160e79b484cd9ed3f49b7a - GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084 + GoogleUtilities: 0759d1a57ebb953965c2dfe0ba4c82e95ccc2e34 GTMAppAuth: 0ff230db599948a9ad7470ca667337803b3fc4dd GTMSessionFetcher: 3a63d75eecd6aa32c2fc79f578064e1214dfdec2 HTTPParserC: aea14c3d2d4ac5beb3988781daa36dfa62e0d9ef - nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 + nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5 patrol: 792c0bb6cc4d552fc8b37f49266341c39e659b4d permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6 PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4 diff --git a/packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj b/packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj index f0c195aad..cdfeb877f 100644 --- a/packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/patrol/example/ios/Runner.xcodeproj/project.pbxproj @@ -518,7 +518,7 @@ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.RunnerUITests; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.Example.RunnerUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SWIFT_EMIT_LOC_STRINGS = NO; @@ -580,7 +580,7 @@ MARKETING_VERSION = 1.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.RunnerUITests; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.Example.RunnerUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SWIFT_EMIT_LOC_STRINGS = NO; @@ -643,7 +643,7 @@ MARKETING_VERSION = 1.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge.RunnerUITests; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.Example.RunnerUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SWIFT_EMIT_LOC_STRINGS = NO; @@ -725,7 +725,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.Example; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -804,7 +804,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.Example; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -880,7 +880,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.challenge; + PRODUCT_BUNDLE_IDENTIFIER = pl.leancode.patrol.Example; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; diff --git a/packages/patrol/example/ios/Runner/GoogleService-Info.plist b/packages/patrol/example/ios/Runner/GoogleService-Info.plist index 3269c06d7..8828b76ce 100644 --- a/packages/patrol/example/ios/Runner/GoogleService-Info.plist +++ b/packages/patrol/example/ios/Runner/GoogleService-Info.plist @@ -9,17 +9,17 @@ ANDROID_CLIENT_ID REMOVED.apps.googleusercontent.com API_KEY - REMOVED + AIzaSyChw7aDlxxJBfLRDxb1qIoBXqxrJ-8_fw1 GCM_SENDER_ID - 1084544097393 + 1814244492393 PLIST_VERSION 1 BUNDLE_ID - pl.leancode.patrol.challenge + pl.leancode.patrol.Example PROJECT_ID - opentouristics - STORAGE_BUCKET REMOVED + STORAGE_BUCKET + REMOVED.appspot.com IS_ADS_ENABLED IS_ANALYTICS_ENABLED @@ -31,6 +31,6 @@ IS_SIGNIN_ENABLED GOOGLE_APP_ID - REMOVED + 1:1984545047423:ios:ad10dafb0621e0382c8ff5 diff --git a/packages/patrol/example/lib/cubit/auth_cubit.dart b/packages/patrol/example/lib/cubit/auth_cubit.dart index 997c5d8af..2123c0ae1 100644 --- a/packages/patrol/example/lib/cubit/auth_cubit.dart +++ b/packages/patrol/example/lib/cubit/auth_cubit.dart @@ -6,13 +6,18 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:google_sign_in/google_sign_in.dart'; class AuthCubit extends Cubit { - AuthCubit() : super(AuthStateLoading()); + AuthCubit(this._firebaseAuth, this._googleSignIn) : super(AuthStateLoading()); - late final _firebaseAuth = FirebaseAuth.instance; - late final _googleSignIn = GoogleSignIn(); + final FirebaseAuth? _firebaseAuth; + final GoogleSignIn? _googleSignIn; late final StreamSubscription _authStateChangesSubscription; void init() { + if (_firebaseAuth == null || _googleSignIn == null) { + emit(AuthStateUnauthenticated()); + return; + } + final user = _firebaseAuth.currentUser; _emitAuthState(user); @@ -29,6 +34,10 @@ class AuthCubit extends Cubit { } Future signInWithGoogle() async { + if (_firebaseAuth == null || _googleSignIn == null) { + return; + } + emit(AuthStateLoading()); try { final googleUser = await _googleSignIn.signIn(); @@ -48,6 +57,10 @@ class AuthCubit extends Cubit { } Future signOut() async { + if (_firebaseAuth == null || _googleSignIn == null) { + return; + } + await _googleSignIn.signOut(); await _firebaseAuth.signOut(); } diff --git a/packages/patrol/example/lib/handlers/notification_handler.dart b/packages/patrol/example/lib/handlers/notification_handler.dart index 399ecdbfd..af976f9ca 100644 --- a/packages/patrol/example/lib/handlers/notification_handler.dart +++ b/packages/patrol/example/lib/handlers/notification_handler.dart @@ -1,13 +1,12 @@ import 'dart:async'; import 'dart:convert'; -import 'package:dispose_scope/dispose_scope.dart'; +import 'package:example/handlers/permission_handler.dart'; +import 'package:example/ui/style/colors.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:http/http.dart' as http; -import 'package:patrol_challenge/handlers/permission_handler.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; import 'package:permission_handler/permission_handler.dart'; class NotificationHandler { @@ -17,13 +16,11 @@ class NotificationHandler { ); final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin; - final FirebaseMessaging _firebaseMessaging; - - final _disposeScope = DisposeScope(); + final FirebaseMessaging? _firebaseMessaging; Future init(VoidCallback onNotificationTap) async { await _init(onNotificationTap); - final token = await _firebaseMessaging.getToken(); + final token = await _firebaseMessaging?.getToken(); debugPrint('Device FCM token: $token'); _listenForPushNotifications(); } @@ -40,7 +37,7 @@ class NotificationHandler { ), onDidReceiveNotificationResponse: (_) => onNotificationTap(), ); - await _firebaseMessaging.setForegroundNotificationPresentationOptions( + await _firebaseMessaging?.setForegroundNotificationPresentationOptions( alert: true, badge: true, sound: true, @@ -76,7 +73,7 @@ class NotificationHandler { return; } await _init(onPressed); - final fcmToken = await _firebaseMessaging.getToken(); + final fcmToken = await _firebaseMessaging?.getToken(); await http.post( Uri.parse( 'https://us-central1-patrol-poc.cloudfunctions.net/sendNotification', @@ -87,6 +84,10 @@ class NotificationHandler { } void _listenForPushNotifications() { + if (_firebaseMessaging == null) { + return; + } + FirebaseMessaging.onMessage.listen((message) { if (message.notification != null) { final notification = message.notification; @@ -95,7 +96,7 @@ class NotificationHandler { body: notification?.body, ); } - }).disposedBy(_disposeScope); + }); } Future _showNotification({ diff --git a/packages/patrol/example/lib/main.dart b/packages/patrol/example/lib/main.dart index 3d8f42c25..69769eabe 100644 --- a/packages/patrol/example/lib/main.dart +++ b/packages/patrol/example/lib/main.dart @@ -1,4 +1,11 @@ import 'package:animations/animations.dart'; +import 'package:example/cubit/auth_cubit.dart'; +import 'package:example/firebase_options.dart'; +import 'package:example/handlers/notification_handler.dart'; +import 'package:example/pages/home_page.dart'; +import 'package:example/pages/push_notification/notification_success_page.dart'; +import 'package:example/ui/style/colors.dart'; +import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; @@ -6,14 +13,11 @@ import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:geolocator/geolocator.dart'; -import 'package:patrol_challenge/cubit/auth_cubit.dart'; -import 'package:patrol_challenge/firebase_options.dart'; -import 'package:patrol_challenge/handlers/notification_handler.dart'; -import 'package:patrol_challenge/pages/home_page.dart'; -import 'package:patrol_challenge/pages/push_notification/notification_success_page.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; +import 'package:google_sign_in/google_sign_in.dart'; import 'package:provider/provider.dart'; +const firebaseEnabled = String.fromEnvironment('FIREBASE_ENABLED') == 'true'; + void main() async { WidgetsFlutterBinding.ensureInitialized(); await initApp(); @@ -24,7 +28,10 @@ void main() async { Future initApp() async { _setUpTheme(); - await _initFirebase(); + + if (firebaseEnabled) { + await _initFirebase(); + } await _askForLocationPermission(); } @@ -49,12 +56,15 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return BlocProvider( - create: (context) => AuthCubit()..init(), + create: (context) => AuthCubit( + firebaseEnabled ? FirebaseAuth.instance : null, + firebaseEnabled ? GoogleSignIn() : null, + )..init(), child: Provider( lazy: false, create: (_) => NotificationHandler( FlutterLocalNotificationsPlugin(), - FirebaseMessaging.instance, + firebaseEnabled ? FirebaseMessaging.instance : null, )..init(() => Navigator.push(context, notificationRoute)), child: MaterialApp( theme: ThemeData.dark().copyWith( diff --git a/packages/patrol/example/lib/pages/google_sign_in/profile_page.dart b/packages/patrol/example/lib/pages/google_sign_in/profile_page.dart index 725311d53..2eb167d82 100644 --- a/packages/patrol/example/lib/pages/google_sign_in/profile_page.dart +++ b/packages/patrol/example/lib/pages/google_sign_in/profile_page.dart @@ -1,12 +1,12 @@ +import 'package:example/cubit/auth_cubit.dart'; +import 'package:example/handlers/notification_handler.dart'; +import 'package:example/pages/push_notification/notification_success_page.dart'; +import 'package:example/ui/components/scaffold.dart'; +import 'package:example/ui/style/colors.dart'; +import 'package:example/ui/style/test_style.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:patrol_challenge/cubit/auth_cubit.dart'; -import 'package:patrol_challenge/handlers/notification_handler.dart'; -import 'package:patrol_challenge/pages/push_notification/notification_success_page.dart'; -import 'package:patrol_challenge/ui/components/scaffold.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; -import 'package:patrol_challenge/ui/style/test_style.dart'; Route get profileRoute => MaterialPageRoute(builder: (_) => const _ProfilePage()); diff --git a/packages/patrol/example/lib/pages/home_page.dart b/packages/patrol/example/lib/pages/home_page.dart index ca95ca41f..ce83a0071 100644 --- a/packages/patrol/example/lib/pages/home_page.dart +++ b/packages/patrol/example/lib/pages/home_page.dart @@ -1,14 +1,14 @@ +import 'package:example/cubit/auth_cubit.dart'; +import 'package:example/handlers/notification_handler.dart'; +import 'package:example/pages/google_sign_in/profile_page.dart'; +import 'package:example/pages/push_notification/notification_success_page.dart'; +import 'package:example/pages/quiz/welcome_page.dart'; +import 'package:example/ui/components/button/elevated_button.dart'; +import 'package:example/ui/components/scaffold.dart'; +import 'package:example/ui/style/test_style.dart'; +import 'package:example/ui/widgets/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:patrol_challenge/cubit/auth_cubit.dart'; -import 'package:patrol_challenge/handlers/notification_handler.dart'; -import 'package:patrol_challenge/pages/google_sign_in/profile_page.dart'; -import 'package:patrol_challenge/pages/push_notification/notification_success_page.dart'; -import 'package:patrol_challenge/pages/quiz/welcome_page.dart'; -import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; -import 'package:patrol_challenge/ui/components/scaffold.dart'; -import 'package:patrol_challenge/ui/style/test_style.dart'; -import 'package:patrol_challenge/ui/widgets/utils.dart'; class HomePage extends StatelessWidget { const HomePage({super.key}); diff --git a/packages/patrol/example/lib/pages/push_notification/notification_success_page.dart b/packages/patrol/example/lib/pages/push_notification/notification_success_page.dart index 506969cec..1efc63eab 100644 --- a/packages/patrol/example/lib/pages/push_notification/notification_success_page.dart +++ b/packages/patrol/example/lib/pages/push_notification/notification_success_page.dart @@ -1,11 +1,11 @@ import 'dart:async'; import 'package:confetti/confetti.dart'; +import 'package:example/ui/components/scaffold.dart'; +import 'package:example/ui/style/colors.dart'; import 'package:flutter/material.dart'; import 'package:geocoding/geocoding.dart'; import 'package:geolocator/geolocator.dart'; -import 'package:patrol_challenge/ui/components/scaffold.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; Route get notificationRoute => MaterialPageRoute(builder: (_) => const _NotificationSuccessPage()); diff --git a/packages/patrol/example/lib/pages/quiz/error_page.dart b/packages/patrol/example/lib/pages/quiz/error_page.dart index e90e4f6fd..19c3f6540 100644 --- a/packages/patrol/example/lib/pages/quiz/error_page.dart +++ b/packages/patrol/example/lib/pages/quiz/error_page.dart @@ -1,7 +1,7 @@ +import 'package:example/ui/components/scaffold.dart'; +import 'package:example/ui/icons.dart'; +import 'package:example/ui/style/test_style.dart'; import 'package:flutter/material.dart'; -import 'package:patrol_challenge/ui/components/scaffold.dart'; -import 'package:patrol_challenge/ui/icons.dart'; -import 'package:patrol_challenge/ui/style/test_style.dart'; Route get errorRoute => MaterialPageRoute(builder: (_) => const _ErrorPage()); diff --git a/packages/patrol/example/lib/pages/quiz/form_page.dart b/packages/patrol/example/lib/pages/quiz/form_page.dart index 79e54f915..83bc35ace 100644 --- a/packages/patrol/example/lib/pages/quiz/form_page.dart +++ b/packages/patrol/example/lib/pages/quiz/form_page.dart @@ -1,15 +1,15 @@ import 'dart:math'; +import 'package:example/pages/quiz/question_page.dart'; +import 'package:example/ui/components/button/elevated_button.dart'; +import 'package:example/ui/components/scaffold.dart'; +import 'package:example/ui/components/text_field.dart'; +import 'package:example/ui/style/colors.dart'; +import 'package:example/ui/style/test_style.dart'; +import 'package:example/ui/widgets/top_bar.dart'; +import 'package:example/ui/widgets/utils.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:patrol_challenge/pages/quiz/question_page.dart'; -import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; -import 'package:patrol_challenge/ui/components/scaffold.dart'; -import 'package:patrol_challenge/ui/components/text_field.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; -import 'package:patrol_challenge/ui/style/test_style.dart'; -import 'package:patrol_challenge/ui/widgets/top_bar.dart'; -import 'package:patrol_challenge/ui/widgets/utils.dart'; Route get formRoute => MaterialPageRoute(builder: (_) => const _FormPage()); diff --git a/packages/patrol/example/lib/pages/quiz/question_page.dart b/packages/patrol/example/lib/pages/quiz/question_page.dart index cb6fddbc6..7af178045 100644 --- a/packages/patrol/example/lib/pages/quiz/question_page.dart +++ b/packages/patrol/example/lib/pages/quiz/question_page.dart @@ -1,14 +1,14 @@ +import 'package:example/handlers/notification_handler.dart'; +import 'package:example/pages/quiz/error_page.dart'; +import 'package:example/pages/quiz/success_page.dart'; +import 'package:example/ui/components/button/elevated_button.dart'; +import 'package:example/ui/components/button/text_button.dart'; +import 'package:example/ui/components/scaffold.dart'; +import 'package:example/ui/style/colors.dart'; +import 'package:example/ui/style/test_style.dart'; +import 'package:example/ui/widgets/top_bar.dart'; +import 'package:example/ui/widgets/utils.dart'; import 'package:flutter/material.dart'; -import 'package:patrol_challenge/handlers/notification_handler.dart'; -import 'package:patrol_challenge/pages/quiz/error_page.dart'; -import 'package:patrol_challenge/pages/quiz/success_page.dart'; -import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; -import 'package:patrol_challenge/ui/components/button/text_button.dart'; -import 'package:patrol_challenge/ui/components/scaffold.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; -import 'package:patrol_challenge/ui/style/test_style.dart'; -import 'package:patrol_challenge/ui/widgets/top_bar.dart'; -import 'package:patrol_challenge/ui/widgets/utils.dart'; import 'package:provider/provider.dart'; Route get questionRoute => diff --git a/packages/patrol/example/lib/pages/quiz/success_page.dart b/packages/patrol/example/lib/pages/quiz/success_page.dart index 5d0d37b71..550d64f4a 100644 --- a/packages/patrol/example/lib/pages/quiz/success_page.dart +++ b/packages/patrol/example/lib/pages/quiz/success_page.dart @@ -1,9 +1,9 @@ +import 'package:example/ui/components/button/elevated_button.dart'; +import 'package:example/ui/components/scaffold.dart'; +import 'package:example/ui/images.dart'; +import 'package:example/ui/style/colors.dart'; +import 'package:example/ui/style/test_style.dart'; import 'package:flutter/material.dart'; -import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; -import 'package:patrol_challenge/ui/components/scaffold.dart'; -import 'package:patrol_challenge/ui/images.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; -import 'package:patrol_challenge/ui/style/test_style.dart'; Route get successRoute => MaterialPageRoute(builder: (_) => const _SuccessPage()); diff --git a/packages/patrol/example/lib/pages/quiz/welcome_page.dart b/packages/patrol/example/lib/pages/quiz/welcome_page.dart index 83fbbef27..711f08c28 100644 --- a/packages/patrol/example/lib/pages/quiz/welcome_page.dart +++ b/packages/patrol/example/lib/pages/quiz/welcome_page.dart @@ -1,12 +1,12 @@ +import 'package:example/pages/quiz/form_page.dart'; +import 'package:example/ui/components/button/elevated_button.dart'; +import 'package:example/ui/components/scaffold.dart'; +import 'package:example/ui/images.dart'; +import 'package:example/ui/style/colors.dart'; +import 'package:example/ui/style/test_style.dart'; +import 'package:example/ui/widgets/logos_hero.dart'; +import 'package:example/ui/widgets/utils.dart'; import 'package:flutter/material.dart'; -import 'package:patrol_challenge/pages/quiz/form_page.dart'; -import 'package:patrol_challenge/ui/components/button/elevated_button.dart'; -import 'package:patrol_challenge/ui/components/scaffold.dart'; -import 'package:patrol_challenge/ui/images.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; -import 'package:patrol_challenge/ui/style/test_style.dart'; -import 'package:patrol_challenge/ui/widgets/logos_hero.dart'; -import 'package:patrol_challenge/ui/widgets/utils.dart'; Route get quizWelcomeRoute => MaterialPageRoute(builder: (_) => const _WelcomePage()); diff --git a/packages/patrol/example/lib/ui/components/button/elevated_button.dart b/packages/patrol/example/lib/ui/components/button/elevated_button.dart index 1bdfb1d8f..ce75ac591 100644 --- a/packages/patrol/example/lib/ui/components/button/elevated_button.dart +++ b/packages/patrol/example/lib/ui/components/button/elevated_button.dart @@ -1,7 +1,7 @@ +import 'package:example/ui/style/colors.dart'; +import 'package:example/ui/style/test_style.dart'; +import 'package:example/ui/widgets/utils.dart'; import 'package:flutter/material.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; -import 'package:patrol_challenge/ui/style/test_style.dart'; -import 'package:patrol_challenge/ui/widgets/utils.dart'; class PTElevatedButton extends StatelessWidget { const PTElevatedButton({ diff --git a/packages/patrol/example/lib/ui/components/button/text_button.dart b/packages/patrol/example/lib/ui/components/button/text_button.dart index 6383f4728..6174501d6 100644 --- a/packages/patrol/example/lib/ui/components/button/text_button.dart +++ b/packages/patrol/example/lib/ui/components/button/text_button.dart @@ -1,6 +1,6 @@ +import 'package:example/ui/style/colors.dart'; +import 'package:example/ui/style/test_style.dart'; import 'package:flutter/material.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; -import 'package:patrol_challenge/ui/style/test_style.dart'; class PTTextButton extends StatelessWidget { const PTTextButton({ diff --git a/packages/patrol/example/lib/ui/components/scaffold.dart b/packages/patrol/example/lib/ui/components/scaffold.dart index 8db9039a2..e6f7c20a8 100644 --- a/packages/patrol/example/lib/ui/components/scaffold.dart +++ b/packages/patrol/example/lib/ui/components/scaffold.dart @@ -1,7 +1,7 @@ import 'package:animations/animations.dart'; +import 'package:example/ui/style/colors.dart'; +import 'package:example/ui/style/test_style.dart'; import 'package:flutter/material.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; -import 'package:patrol_challenge/ui/style/test_style.dart'; class PTScaffold extends StatelessWidget { const PTScaffold({ diff --git a/packages/patrol/example/lib/ui/components/text_field.dart b/packages/patrol/example/lib/ui/components/text_field.dart index 4330d9720..2f5609eb4 100644 --- a/packages/patrol/example/lib/ui/components/text_field.dart +++ b/packages/patrol/example/lib/ui/components/text_field.dart @@ -1,6 +1,6 @@ +import 'package:example/ui/style/colors.dart'; +import 'package:example/ui/style/test_style.dart'; import 'package:flutter/material.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; -import 'package:patrol_challenge/ui/style/test_style.dart'; class PTTextField extends StatelessWidget { const PTTextField({ diff --git a/packages/patrol/example/lib/ui/style/test_style.dart b/packages/patrol/example/lib/ui/style/test_style.dart index feccb9db0..061e41379 100644 --- a/packages/patrol/example/lib/ui/style/test_style.dart +++ b/packages/patrol/example/lib/ui/style/test_style.dart @@ -1,5 +1,5 @@ +import 'package:example/ui/style/colors.dart'; import 'package:flutter/cupertino.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; abstract class PTTextStyles { static const _baseStyle = TextStyle( diff --git a/packages/patrol/example/lib/ui/widgets/logos_hero.dart b/packages/patrol/example/lib/ui/widgets/logos_hero.dart index 546c91b44..6df9b1f26 100644 --- a/packages/patrol/example/lib/ui/widgets/logos_hero.dart +++ b/packages/patrol/example/lib/ui/widgets/logos_hero.dart @@ -1,5 +1,5 @@ +import 'package:example/ui/images.dart'; import 'package:flutter/widgets.dart'; -import 'package:patrol_challenge/ui/images.dart'; class LogoHero extends StatelessWidget { const LogoHero({super.key}); diff --git a/packages/patrol/example/lib/ui/widgets/top_bar.dart b/packages/patrol/example/lib/ui/widgets/top_bar.dart index 98f6c6a6f..9a42597bb 100644 --- a/packages/patrol/example/lib/ui/widgets/top_bar.dart +++ b/packages/patrol/example/lib/ui/widgets/top_bar.dart @@ -1,6 +1,6 @@ +import 'package:example/ui/style/colors.dart'; +import 'package:example/ui/widgets/logos_hero.dart'; import 'package:flutter/widgets.dart'; -import 'package:patrol_challenge/ui/style/colors.dart'; -import 'package:patrol_challenge/ui/widgets/logos_hero.dart'; class TopBar extends StatelessWidget { const TopBar({super.key}); diff --git a/packages/patrol/example/pubspec.yaml b/packages/patrol/example/pubspec.yaml index 2448f00ea..285293f7f 100644 --- a/packages/patrol/example/pubspec.yaml +++ b/packages/patrol/example/pubspec.yaml @@ -1,37 +1,37 @@ -name: patrol_challenge -description: Project for fluttercon patrol challenge. +name: example +description: Patrol example app. publish_to: none version: 1.0.0+1 environment: - sdk: '>=3.1.0 <4.0.0' - flutter: '>=3.13.0' + sdk: '>=3.2.0 <4.0.0' + flutter: '>=3.16.0' dependencies: animations: ^2.0.8 confetti: ^0.7.0 dispose_scope: ^2.1.0 - firebase_auth: ^4.12.0 - firebase_core: ^2.20.0 - firebase_messaging: ^14.7.2 + firebase_auth: ^4.14.1 + firebase_core: ^2.23.0 + firebase_messaging: ^14.7.5 flutter: sdk: flutter flutter_bloc: ^8.1.3 flutter_holo_date_picker: ^1.1.3 flutter_local_notifications: ^16.1.0 - flutter_svg: ^2.0.8 + flutter_svg: ^2.0.9 geocoding: ^2.1.1 geolocator: ^10.1.0 - google_sign_in: ^6.1.5 + google_sign_in: ^6.1.6 http: ^1.1.0 - permission_handler: ^11.0.1 - provider: ^6.0.5 + permission_handler: ^11.1.0 + provider: ^6.1.1 dev_dependencies: flutter_launcher_icons: ^0.13.1 - flutter_native_splash: ^2.3.4 + flutter_native_splash: ^2.3.6 flutter_test: sdk: flutter - leancode_lint: ^6.0.0 + leancode_lint: ^7.0.0+1 patrol: path: .. @@ -62,6 +62,6 @@ flutter: patrol: android: - package_name: com.example.patrol_challenge + package_name: pl.leancode.patrol.example ios: - bundle_id: pl.leancode.patrol.challenge + bundle_id: pl.leancode.patrol.Example diff --git a/packages/patrol/example/test/widget_test.dart b/packages/patrol/example/test/widget_test.dart index cbe7af072..d5cfa06f1 100644 --- a/packages/patrol/example/test/widget_test.dart +++ b/packages/patrol/example/test/widget_test.dart @@ -5,9 +5,9 @@ // gestures. You can also use WidgetTester to find child widgets in the widget // tree, read text, and verify that the values of widget properties are correct. +import 'package:example/main.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:patrol_challenge/main.dart'; void main() { testWidgets('Counter increments smoke test', (tester) async { diff --git a/packages/patrol/pubspec.yaml b/packages/patrol/pubspec.yaml index a60ccb653..51574906b 100644 --- a/packages/patrol/pubspec.yaml +++ b/packages/patrol/pubspec.yaml @@ -43,3 +43,8 @@ flutter: pluginClass: PatrolPlugin ios: pluginClass: PatrolPlugin + +# These files don't contain real credentials. They exist only for build to pass. +false_secrets: + - /example/android/app/google-services.json + - /example/ios/Runner/GoogleService-Info.plist From f5d95785926c373ce53842939b437ac6874e1d81 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Fri, 24 Nov 2023 14:42:45 +0100 Subject: [PATCH 10/17] example app: add xctestplan --- .../xcshareddata/xcschemes/Runner.xcscheme | 9 ++++-- .../contents.xcworkspacedata | 3 ++ .../patrol/example/ios/TestPlan.xctestplan | 29 +++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 packages/patrol/example/ios/TestPlan.xctestplan diff --git a/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 93d90acc6..97a416ad2 100644 --- a/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/patrol/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -26,8 +26,13 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES" - shouldAutocreateTestPlan = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + + + diff --git a/packages/patrol/example/ios/TestPlan.xctestplan b/packages/patrol/example/ios/TestPlan.xctestplan new file mode 100644 index 000000000..f7b74699a --- /dev/null +++ b/packages/patrol/example/ios/TestPlan.xctestplan @@ -0,0 +1,29 @@ +{ + "configurations" : [ + { + "id" : "939A83E4-5059-4987-9414-28779DA07207", + "name" : "Test Scheme Action", + "options" : { + + } + } + ], + "defaultOptions" : { + "codeCoverage" : false, + "targetForVariableExpansion" : { + "containerPath" : "container:Runner.xcodeproj", + "identifier" : "97C146ED1CF9000F007C117D", + "name" : "Runner" + } + }, + "testTargets" : [ + { + "target" : { + "containerPath" : "container:Runner.xcodeproj", + "identifier" : "9835C3B62AEBE2B200AD4576", + "name" : "RunnerUITests" + } + } + ], + "version" : 1 +} From fa60942f942caa692f5cbdf3d7151eac8831cf48 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Mon, 27 Nov 2023 14:12:35 +0100 Subject: [PATCH 11/17] fix android build --- dev/e2e_app/android/app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/e2e_app/android/app/build.gradle b/dev/e2e_app/android/app/build.gradle index 96114373e..1aea450db 100644 --- a/dev/e2e_app/android/app/build.gradle +++ b/dev/e2e_app/android/app/build.gradle @@ -60,6 +60,6 @@ flutter { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.20" androidTestUtil "androidx.test:orchestrator:1.4.2" } From 217671d1b36e19d6f826f51b09ba4a2358ba9bc3 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Mon, 27 Nov 2023 14:33:41 +0100 Subject: [PATCH 12/17] fix android build 2 --- .../leancode/patrol/{example => e2e_app}/MainActivityTest.java | 2 +- .../pl/leancode/patrol/{example => e2e_app}/MainActivity.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename dev/e2e_app/android/app/src/androidTest/java/pl/leancode/patrol/{example => e2e_app}/MainActivityTest.java (96%) rename dev/e2e_app/android/app/src/main/kotlin/pl/leancode/patrol/{example => e2e_app}/MainActivity.kt (72%) diff --git a/dev/e2e_app/android/app/src/androidTest/java/pl/leancode/patrol/example/MainActivityTest.java b/dev/e2e_app/android/app/src/androidTest/java/pl/leancode/patrol/e2e_app/MainActivityTest.java similarity index 96% rename from dev/e2e_app/android/app/src/androidTest/java/pl/leancode/patrol/example/MainActivityTest.java rename to dev/e2e_app/android/app/src/androidTest/java/pl/leancode/patrol/e2e_app/MainActivityTest.java index 675e46464..c59e67de8 100644 --- a/dev/e2e_app/android/app/src/androidTest/java/pl/leancode/patrol/example/MainActivityTest.java +++ b/dev/e2e_app/android/app/src/androidTest/java/pl/leancode/patrol/e2e_app/MainActivityTest.java @@ -1,4 +1,4 @@ -package pl.leancode.patrol.example; +package pl.leancode.patrol.e2e_app; import androidx.test.platform.app.InstrumentationRegistry; import org.junit.Test; diff --git a/dev/e2e_app/android/app/src/main/kotlin/pl/leancode/patrol/example/MainActivity.kt b/dev/e2e_app/android/app/src/main/kotlin/pl/leancode/patrol/e2e_app/MainActivity.kt similarity index 72% rename from dev/e2e_app/android/app/src/main/kotlin/pl/leancode/patrol/example/MainActivity.kt rename to dev/e2e_app/android/app/src/main/kotlin/pl/leancode/patrol/e2e_app/MainActivity.kt index 6044ed3cb..2ebf56819 100644 --- a/dev/e2e_app/android/app/src/main/kotlin/pl/leancode/patrol/example/MainActivity.kt +++ b/dev/e2e_app/android/app/src/main/kotlin/pl/leancode/patrol/e2e_app/MainActivity.kt @@ -1,4 +1,4 @@ -package pl.leancode.patrol.example +package pl.leancode.patrol.e2e_app import io.flutter.embedding.android.FlutterActivity From aceecb33a66a45ad6aa30d02d36b1f4fffa0ada0 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Mon, 27 Nov 2023 17:00:01 +0100 Subject: [PATCH 13/17] update CI --- .github/workflows/patrol-prepare.yaml | 39 +--- .github/workflows/prepare-e2e_app.yaml | 245 ++++++++++++++++++++++ .github/workflows/test-ios-simulator.yaml | 2 +- dev/e2e_app/ios/Podfile.lock | 2 +- 4 files changed, 249 insertions(+), 39 deletions(-) create mode 100644 .github/workflows/prepare-e2e_app.yaml diff --git a/.github/workflows/patrol-prepare.yaml b/.github/workflows/patrol-prepare.yaml index 0f21c0f7f..df8d56427 100644 --- a/.github/workflows/patrol-prepare.yaml +++ b/.github/workflows/patrol-prepare.yaml @@ -140,8 +140,8 @@ jobs: brew install xcbeautify # Disabled because of generated protobuf code - #- name: swift-format lint - # run: test -z $(swift-format lint --recursive --strict .) + - name: swift-format lint + run: test -z $(swift-format lint --recursive --strict .) - name: swift-format format if: success() || failure() @@ -154,41 +154,6 @@ jobs: if: success() || failure() run: | find . -iname '*.h' -o -iname '*.m' | xargs -I {} clang-format --dry-run --Werror {} - - - name: Set up Flutter - uses: subosito/flutter-action@v2 - with: - flutter-version: ${{ matrix.flutter-version }} - channel: ${{ matrix.flutter-channel }} - - - name: Preload Flutter artifacts - run: flutter precache --ios - - - name: Generate iOS build filesP - working-directory: packages/patrol/example - run: flutter build ios --config-only --simulator - - - name: Start iOS simulator - uses: futureware-tech/simulator-action@v2 - with: - model: iPhone 14 - os: iOS - os_version: 16.2 - erase_before_boot: true - shutdown_after_job: true - - - name: Run unit tests - working-directory: packages/patrol/example/ios - run: | - set -o pipefail - xcodebuild test \ - -workspace Runner.xcworkspace \ - -scheme Runner \ - -only-testing RunnerTests \ - -configuration Debug \ - -sdk iphoneos -destination 'platform=iOS Simulator,name=iPhone 14' \ - -derivedDataPath ../build/ios_unit | xcbeautify --renderer github-actions - prepare-flutter: name: Flutter ${{ matrix.flutter-version }} runs-on: ubuntu-latest diff --git a/.github/workflows/prepare-e2e_app.yaml b/.github/workflows/prepare-e2e_app.yaml new file mode 100644 index 000000000..6361c8ac7 --- /dev/null +++ b/.github/workflows/prepare-e2e_app.yaml @@ -0,0 +1,245 @@ +name: prepare e2e_app + +on: + workflow_dispatch: + pull_request: + paths: + - '**' + - '!**.md' # ignore readmes + - '!**.mdx' # ignore docs + +jobs: + prepare-android-on-windows: + runs-on: ${{ matrix.os }} + name: Android on ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [windows-latest] + flutter-version: ['3.16.x'] + flutter-channel: ['stable'] + + defaults: + run: + working-directory: dev/e2e_app/android + + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Set up Java + uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: 17 + + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ matrix.flutter-version }} + channel: ${{ matrix.flutter-channel }} + + - name: Preload Flutter artifacts + run: flutter precache --android + + - name: Generate Gradle wrapper + run: flutter build apk --config-only + + - name: ktlint check + run: .\gradlew.bat :patrol:ktlintCheck + + - name: ktlint format + run: .\gradlew.bat :patrol:ktlintFormat + + - name: Build app with Gradle + run: .\gradlew.bat :app:assembleDebug + + - name: Build app with Flutter tool + run: flutter build apk --debug + + prepare-android-on-linux: + runs-on: ${{ matrix.os }} + name: Android on ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + flutter-version: ['3.16.x'] + flutter-channel: ['stable'] + + defaults: + run: + working-directory: dev/e2e_app + + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Set up Java + uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: 17 + + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ matrix.flutter-version }} + channel: ${{ matrix.flutter-channel }} + + - name: Preload Flutter artifacts + run: flutter precache --android + + - name: Generate Gradle wrapper + run: flutter build apk --config-only + + - name: Run unit tests + if: success() || failure() + run: ./gradlew :patrol:testDebug + + - name: ktlint check + if: success() || failure() + run: ./gradlew :patrol:ktlintCheck + + - name: ktlint format + if: success() || failure() + run: ./gradlew :patrol:ktlintFormat + + - name: Build app with Gradle + run: ./gradlew :app:assembleDebug + + - name: Build app with Flutter tool + run: flutter build apk --debug + + prepare-ios: + runs-on: ${{ matrix.os }} + name: iOS on ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + os: [macos-latest] + flutter-version: ['3.16.x'] + flutter-channel: ['stable'] + + defaults: + run: + working-directory: packages/patrol/ios + + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Install tools + run: | + brew update + brew install swift-format + brew install clang-format + brew install xcbeautify + + - name: swift-format lint + run: test -z $(swift-format lint --recursive --strict .) + + - name: swift-format format + if: success() || failure() + run: | + swift-format format --recursive --in-place . + git update-index --refresh + git diff-index --quiet HEAD -- + + - name: clang-format + if: success() || failure() + run: | + find . -iname '*.h' -o -iname '*.m' | xargs -I {} clang-format --dry-run --Werror {} + + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ matrix.flutter-version }} + channel: ${{ matrix.flutter-channel }} + + - name: Preload Flutter artifacts + run: flutter precache --ios + + - name: Generate iOS build files + working-directory: packages/patrol/example + run: flutter build ios --config-only --simulator + + - name: Start iOS simulator + uses: futureware-tech/simulator-action@v2 + with: + model: iPhone 14 + os: iOS + os_version: 16.2 + erase_before_boot: true + shutdown_after_job: true + + - name: Run unit tests + working-directory: packages/patrol/example/ios + run: | + set -o pipefail + xcodebuild test \ + -workspace Runner.xcworkspace \ + -scheme Runner \ + -only-testing RunnerTests \ + -configuration Debug \ + -sdk iphoneos -destination 'platform=iOS Simulator,name=iPhone 14' \ + -derivedDataPath ../build/ios_unit | xcbeautify --renderer github-actions + + prepare-flutter: + name: Flutter ${{ matrix.flutter-version }} + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + flutter-version: ['3.16.x'] + flutter-channel: ['stable'] + + defaults: + run: + working-directory: packages/patrol + + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Set up Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ matrix.flutter-version }} + channel: ${{ matrix.flutter-channel }} + + - name: Set up Melos and activate workspace + working-directory: . + run: | + dart pub global activate melos + melos bootstrap + + - name: flutter pub get + run: flutter pub get + + - name: flutter test + if: success() || failure() + run: flutter test + + - name: Run analyzer + if: success() || failure() + run: | + flutter analyze + dart run custom_lint + + - name: dart format + if: success() || failure() + run: dart format --set-exit-if-changed . + + - name: flutter pub publish --dry-run + if: success() || failure() + run: flutter pub publish --dry-run + + - name: flutter pub get (example app) + if: success() || failure() + working-directory: ./packages/patrol/example + run: flutter pub get diff --git a/.github/workflows/test-ios-simulator.yaml b/.github/workflows/test-ios-simulator.yaml index fef6e5437..108f92587 100644 --- a/.github/workflows/test-ios-simulator.yaml +++ b/.github/workflows/test-ios-simulator.yaml @@ -87,7 +87,7 @@ jobs: echo "EXCLUDED_TESTS=$TESTS_TO_EXCLUDE" >> "$GITHUB_OUTPUT" echo "EXCLUDED_TESTS=$target_paths" >> "$GITHUB_ENV" - - name: Run tests + - name: Run UI tests id: tests_step run: | xcrun simctl io booted recordVideo --codec=h264 "${{ matrix.device_model }}.mp4" & diff --git a/dev/e2e_app/ios/Podfile.lock b/dev/e2e_app/ios/Podfile.lock index d7cd4bbf6..4e0d4d622 100644 --- a/dev/e2e_app/ios/Podfile.lock +++ b/dev/e2e_app/ios/Podfile.lock @@ -64,4 +64,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: b2bb71756d032256bcb4043384dd40772d5e6a93 -COCOAPODS: 1.14.2 +COCOAPODS: 1.14.3 From c13a2bcc9b9a72c80fe939c837c954187ce475b5 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Mon, 27 Nov 2023 17:52:05 +0100 Subject: [PATCH 14/17] fix tests --- .github/workflows/prepare-e2e_app.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prepare-e2e_app.yaml b/.github/workflows/prepare-e2e_app.yaml index 6361c8ac7..ad680ef9b 100644 --- a/.github/workflows/prepare-e2e_app.yaml +++ b/.github/workflows/prepare-e2e_app.yaml @@ -71,7 +71,7 @@ jobs: defaults: run: - working-directory: dev/e2e_app + working-directory: dev/e2e_app/android steps: - name: Clone repository @@ -126,7 +126,7 @@ jobs: defaults: run: - working-directory: packages/patrol/ios + working-directory: dev/e2e_app/ios steps: - name: Clone repository From ab55a6e680266664588b7d9ff631b62c42235fba Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Mon, 27 Nov 2023 18:16:36 +0100 Subject: [PATCH 15/17] fix tests 3 --- .github/workflows/prepare-e2e_app.yaml | 13 +------------ dev/e2e_app/test/example_test.dart | 7 +++++++ 2 files changed, 8 insertions(+), 12 deletions(-) create mode 100644 dev/e2e_app/test/example_test.dart diff --git a/.github/workflows/prepare-e2e_app.yaml b/.github/workflows/prepare-e2e_app.yaml index ad680ef9b..310e9b2ec 100644 --- a/.github/workflows/prepare-e2e_app.yaml +++ b/.github/workflows/prepare-e2e_app.yaml @@ -164,7 +164,6 @@ jobs: run: flutter precache --ios - name: Generate iOS build files - working-directory: packages/patrol/example run: flutter build ios --config-only --simulator - name: Start iOS simulator @@ -177,7 +176,6 @@ jobs: shutdown_after_job: true - name: Run unit tests - working-directory: packages/patrol/example/ios run: | set -o pipefail xcodebuild test \ @@ -200,7 +198,7 @@ jobs: defaults: run: - working-directory: packages/patrol + working-directory: dev/e2e_app steps: - name: Clone repository @@ -234,12 +232,3 @@ jobs: - name: dart format if: success() || failure() run: dart format --set-exit-if-changed . - - - name: flutter pub publish --dry-run - if: success() || failure() - run: flutter pub publish --dry-run - - - name: flutter pub get (example app) - if: success() || failure() - working-directory: ./packages/patrol/example - run: flutter pub get diff --git a/dev/e2e_app/test/example_test.dart b/dev/e2e_app/test/example_test.dart new file mode 100644 index 000000000..c49295e5e --- /dev/null +++ b/dev/e2e_app/test/example_test.dart @@ -0,0 +1,7 @@ +import 'package:flutter_test/flutter_test.dart'; + +void main() { + test('my first unit test', () { + expect(true, true); + }); +} From d7ec3ac8e2fdcbe7db1d6bee955c46768477004d Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Mon, 27 Nov 2023 18:29:37 +0100 Subject: [PATCH 16/17] fix patrol_develop_test.dart --- dev/cli_tests/patrol_develop_test.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dev/cli_tests/patrol_develop_test.dart b/dev/cli_tests/patrol_develop_test.dart index c61102c66..f9ee4d243 100644 --- a/dev/cli_tests/patrol_develop_test.dart +++ b/dev/cli_tests/patrol_develop_test.dart @@ -46,9 +46,7 @@ void main(List args) async { Timer? inactivityTimer; final output = StringBuffer(); - final exampleAppDirectory = io.Directory( - join('..', '..', 'packages', 'patrol', 'example'), - ); + final exampleAppDirectory = io.Directory(join('..', 'e2e_app')); final exampleTestFile = io.File( join(exampleAppDirectory.path, 'integration_test', 'example_test.dart'), ); From 7e91406edeb66b8914efc45b00c217cdd2187c85 Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Tue, 28 Nov 2023 23:20:34 +0100 Subject: [PATCH 17/17] disable heavy `test-*` workflows on `pull_request` event --- .github/workflows/test-android-device.yaml | 1 - .github/workflows/test-android-emulator-webview.yaml | 1 - .github/workflows/test-android-emulator.yaml | 1 - .github/workflows/test-ios-device.yaml | 1 - .github/workflows/test-ios-simulator-webview.yaml | 1 - .github/workflows/test-ios-simulator.yaml | 1 - 6 files changed, 6 deletions(-) diff --git a/.github/workflows/test-android-device.yaml b/.github/workflows/test-android-device.yaml index cd12f6e60..bfa1ae384 100644 --- a/.github/workflows/test-android-device.yaml +++ b/.github/workflows/test-android-device.yaml @@ -4,7 +4,6 @@ on: workflow_dispatch: schedule: - cron: '30 21 * * *' - pull_request: jobs: run_tests: diff --git a/.github/workflows/test-android-emulator-webview.yaml b/.github/workflows/test-android-emulator-webview.yaml index f28b9cce8..97f9ecdfd 100644 --- a/.github/workflows/test-android-emulator-webview.yaml +++ b/.github/workflows/test-android-emulator-webview.yaml @@ -4,7 +4,6 @@ on: workflow_dispatch: schedule: - cron: '0 23 * * *' - pull_request: jobs: run_tests: diff --git a/.github/workflows/test-android-emulator.yaml b/.github/workflows/test-android-emulator.yaml index 067974611..e3d36935e 100644 --- a/.github/workflows/test-android-emulator.yaml +++ b/.github/workflows/test-android-emulator.yaml @@ -4,7 +4,6 @@ on: workflow_dispatch: schedule: - cron: '0 */12 * * *' - pull_request: jobs: run_tests: diff --git a/.github/workflows/test-ios-device.yaml b/.github/workflows/test-ios-device.yaml index 1744b85c5..a8cedf4b3 100644 --- a/.github/workflows/test-ios-device.yaml +++ b/.github/workflows/test-ios-device.yaml @@ -4,7 +4,6 @@ on: workflow_dispatch: schedule: - cron: '30 21 * * *' - pull_request: jobs: run_tests: diff --git a/.github/workflows/test-ios-simulator-webview.yaml b/.github/workflows/test-ios-simulator-webview.yaml index c45cd5160..25f7b12e5 100644 --- a/.github/workflows/test-ios-simulator-webview.yaml +++ b/.github/workflows/test-ios-simulator-webview.yaml @@ -4,7 +4,6 @@ on: workflow_dispatch: schedule: - cron: '0 23 * * *' - pull_request: jobs: run_tests: diff --git a/.github/workflows/test-ios-simulator.yaml b/.github/workflows/test-ios-simulator.yaml index 108f92587..67da6aeb1 100644 --- a/.github/workflows/test-ios-simulator.yaml +++ b/.github/workflows/test-ios-simulator.yaml @@ -4,7 +4,6 @@ on: workflow_dispatch: schedule: - cron: '0 */12 * * *' - pull_request: jobs: run_tests: