diff --git a/.fvmrc b/.fvmrc
new file mode 100644
index 0000000..062f393
--- /dev/null
+++ b/.fvmrc
@@ -0,0 +1,4 @@
+{
+ "flutter": "3.22.1",
+ "flavors": {}
+}
\ No newline at end of file
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..ceda818
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,5 @@
+*.freezed.dart linguist-generated=true
+*.g.dart linguist-generated=true
+*.gr.dart linguist-generated=true
+pubspec.lock linguist-generated=true
+Gemfile.lock linguist-generated=true
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..b086db1
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,46 @@
+# Support for pub is in beta, and thus, we are aware of some limitations. For example, security updates are not supported in this release but will be in the future.
+#
+# Other known limitations:
+#
+# - No support for updating git-dependencies
+# - If the version found is ignored (by dependabot config) no update will happen (even if, an earlier version could be used)
+# - No support for private package repositories
+
+version: 2
+enable-beta-ecosystems: true
+updates:
+ - package-ecosystem: 'pub'
+ directory: '/'
+ schedule:
+ interval: 'daily'
+ open-pull-requests-limit: 2
+ commit-message:
+ prefix: 'chore: '
+ - package-ecosystem: 'github-actions'
+ directory: '/'
+ schedule:
+ interval: 'daily'
+ open-pull-requests-limit: 2
+ commit-message:
+ prefix: 'chore: '
+ - package-ecosystem: 'bundler'
+ directory: '/'
+ schedule:
+ interval: 'daily'
+ open-pull-requests-limit: 2
+ commit-message:
+ prefix: 'chore: '
+ - package-ecosystem: 'bundler'
+ directory: '/ios/'
+ schedule:
+ interval: 'daily'
+ open-pull-requests-limit: 2
+ commit-message:
+ prefix: 'chore: '
+ - package-ecosystem: 'bundler'
+ directory: '/android/'
+ schedule:
+ interval: 'daily'
+ open-pull-requests-limit: 2
+ commit-message:
+ prefix: 'chore: '
diff --git a/.github/hooks/pre-push b/.github/hooks/pre-push
new file mode 100755
index 0000000..9a03767
--- /dev/null
+++ b/.github/hooks/pre-push
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+printf "\e[33;1m%s\e[0m\n" 'Running the Pre-push checks'
+./scripts/checks.sh
diff --git a/.github/pr-title-checker-config.json b/.github/pr-title-checker-config.json
new file mode 100644
index 0000000..8ff9c20
--- /dev/null
+++ b/.github/pr-title-checker-config.json
@@ -0,0 +1,15 @@
+{
+ "LABEL": {
+ "name": "Title needs formatting",
+ "color": "EEEEEE"
+ },
+ "CHECKS": {
+ "prefixes": ["fix: ", "feat: ", "docs: ", "refactor: ", "test: ", "chore: "],
+ "ignoreLabels" : ["meta"]
+ },
+ "MESSAGES": {
+ "success": "All OK",
+ "failure": "Failing CI test",
+ "notice": ""
+ }
+}
diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml
new file mode 100644
index 0000000..d0e0d40
--- /dev/null
+++ b/.github/workflows/flutter-ci.yml
@@ -0,0 +1,55 @@
+name: Flutter CI
+on:
+ pull_request:
+ push:
+ branches:
+ - main
+
+jobs:
+ build:
+ runs-on: macos-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-java@v3
+ with:
+ distribution: 'zulu'
+ java-version: '11'
+ - uses: dart-lang/setup-dart@v1.4
+ - uses: subosito/flutter-action@v2
+ with:
+ channel: 'stable'
+ cache: true
+ - name: Cache FVM & Flutter
+ uses: actions/cache@v3
+ with:
+ path: /home/runner/fvm/versions/
+ key: ${{ runner.os }}-${{ hashFiles('**/fvm_config.json') }}
+ - name: Cache pub cache
+ uses: actions/cache@v3
+ with:
+ path: /home/runner/.pub-cache/
+ key: ${{ runner.os }}-pub-cache
+ - name: Install FVM && Flutter
+ run: dart pub global activate fvm --verbose && fvm install --verbose && fvm use --force --verbose
+ - uses: ruby/setup-ruby@v1
+ with:
+ bundler-cache: true
+ - name: Activate arb_utils
+ run: |
+ dart pub global activate arb_utils 0.8.1
+ - name: Get dependencies
+ uses: maierj/fastlane-action@v3.0.0
+ with:
+ lane: 'fetch_dependencies'
+ - name: 'Run lints'
+ uses: maierj/fastlane-action@v3.0.0
+ with:
+ lane: 'lints'
+ - name: 'Check generated code'
+ uses: maierj/fastlane-action@v3.0.0
+ with:
+ lane: 'ensure_no_change_in_generated_code'
+ - name: 'Run tests'
+ uses: maierj/fastlane-action@v3.0.0
+ with:
+ lane: 'tests'
diff --git a/.github/workflows/pr-title-checker.yml b/.github/workflows/pr-title-checker.yml
new file mode 100644
index 0000000..3bf5c49
--- /dev/null
+++ b/.github/workflows/pr-title-checker.yml
@@ -0,0 +1,19 @@
+name: "PR Title Checker"
+on:
+ pull_request_target:
+ types:
+ - opened
+ - edited
+ - synchronize
+ - labeled
+ - unlabeled
+
+jobs:
+ check:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: thehanimo/pr-title-checker@v1.4.0
+ with:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ pass_on_octokit_error: false
+ configuration_path: ".github/pr-title-checker-config.json"
diff --git a/.gitignore b/.gitignore
index ff06475..b87f304 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,16 +5,66 @@
*.swp
.DS_Store
.atom/
-build/
.buildlog/
.history
.svn/
-migrate_working_dir/
+
+# Mason
+.mason/
+mason-lock.json
# IntelliJ related
*.iml
*.ipr
*.iws
+.idea/*
+android/.idea
+!.idea/runConfigurations/
+
+# 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/settings.json
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Web related
+lib/generated_plugin_registrant.dart
+
+# 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
+
+# Environment files
+*.env
+*.env.default
+# Fvm
+.fvm/
+# fastlane specific
+**/fastlane/report.xml
+**/fastlane/Preview.html
+**/fastlane/screenshots
+**/fastlane/test_output
+.bundle/
+vendor/bundle/
+#intl
+l10n_errors
diff --git a/.idea/runConfigurations/main_dev.xml b/.idea/runConfigurations/main_dev.xml
new file mode 100644
index 0000000..1c69cb9
--- /dev/null
+++ b/.idea/runConfigurations/main_dev.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/main_prod.xml b/.idea/runConfigurations/main_prod.xml
new file mode 100644
index 0000000..0e5b5ff
--- /dev/null
+++ b/.idea/runConfigurations/main_prod.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
diff --git a/.idea/runConfigurations/main_staging.xml b/.idea/runConfigurations/main_staging.xml
new file mode 100644
index 0000000..f2d862e
--- /dev/null
+++ b/.idea/runConfigurations/main_staging.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.metadata b/.metadata
new file mode 100644
index 0000000..784ce12
--- /dev/null
+++ b/.metadata
@@ -0,0 +1,30 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+ revision: "a14f74ff3a1cbd521163c5f03d68113d50af93d3"
+ channel: "stable"
+
+project_type: app
+
+# Tracks metadata for the flutter migrate command
+migration:
+ platforms:
+ - platform: root
+ create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
+ base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
+ - platform: web
+ create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
+ base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
+
+ # User provided section
+
+ # List of Local paths (relative to this file) that should be
+ # ignored by the migrate tool.
+ #
+ # Files that are not part of the templates will be ignored by default.
+ unmanaged_files:
+ - 'lib/main.dart'
+ - 'ios/Runner.xcodeproj/project.pbxproj'
diff --git a/.ruby-version b/.ruby-version
new file mode 100644
index 0000000..be94e6f
--- /dev/null
+++ b/.ruby-version
@@ -0,0 +1 @@
+3.2.2
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..2c4b15a
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,51 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "ClientApp Staging",
+ "request": "launch",
+ "type": "dart",
+ "program": "lib/main.dart",
+ "args": [
+ "--flavor=staging",
+ "--dart-define=ENV=staging"
+ ]
+ },
+ {
+ "name": "ClientApp Production",
+ "request": "launch",
+ "type": "dart",
+ "program": "lib/main.dart",
+ "args": [
+ "--flavor=production",
+ "--dart-define=ENV=production"
+ ]
+ },
+ {
+ "name": "ClientApp (profile mode)",
+ "request": "launch",
+ "type": "dart",
+ "program": "lib/main.dart",
+ "args": [
+ "--profile",
+ "--flavor=staging",
+ "--dart-define=ENV=staging",
+ ],
+ },
+ {
+ "name": "ClientApp (release mode)",
+ "request": "launch",
+ "type": "dart",
+ "flutterMode": "release"
+ },
+ {
+ "name": "Integration Test",
+ "program": "integration_test/",
+ "request": "launch",
+ "type": "dart"
+ }
+ ]
+}
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..95e8f0c
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,8 @@
+source "https://rubygems.org"
+
+gem "fastlane"
+gem 'fastlane-plugin-flutter_version'
+gem 'cocoapods'
+
+plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
+eval_gemfile(plugins_path) if File.exist?(plugins_path)
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..909a6dc
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,291 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ CFPropertyList (3.0.6)
+ rexml
+ activesupport (5.2.8.1)
+ concurrent-ruby (~> 1.0, >= 1.0.2)
+ i18n (>= 0.7, < 2)
+ minitest (~> 5.1)
+ tzinfo (~> 1.1)
+ addressable (2.8.4)
+ public_suffix (>= 2.0.2, < 6.0)
+ algoliasearch (1.27.5)
+ httpclient (~> 2.8, >= 2.8.3)
+ json (>= 1.5.1)
+ artifactory (3.0.15)
+ atomos (0.1.3)
+ aws-eventstream (1.2.0)
+ aws-partitions (1.774.0)
+ aws-sdk-core (3.174.0)
+ aws-eventstream (~> 1, >= 1.0.2)
+ aws-partitions (~> 1, >= 1.651.0)
+ aws-sigv4 (~> 1.5)
+ jmespath (~> 1, >= 1.6.1)
+ aws-sdk-kms (1.65.0)
+ aws-sdk-core (~> 3, >= 3.174.0)
+ aws-sigv4 (~> 1.1)
+ aws-sdk-s3 (1.123.1)
+ aws-sdk-core (~> 3, >= 3.174.0)
+ aws-sdk-kms (~> 1)
+ aws-sigv4 (~> 1.4)
+ aws-sigv4 (1.5.2)
+ aws-eventstream (~> 1, >= 1.0.2)
+ babosa (1.0.4)
+ claide (1.1.0)
+ cocoapods (1.10.2)
+ addressable (~> 2.6)
+ claide (>= 1.0.2, < 2.0)
+ cocoapods-core (= 1.10.2)
+ cocoapods-deintegrate (>= 1.0.3, < 2.0)
+ cocoapods-downloader (>= 1.4.0, < 2.0)
+ cocoapods-plugins (>= 1.0.0, < 2.0)
+ cocoapods-search (>= 1.0.0, < 2.0)
+ cocoapods-trunk (>= 1.4.0, < 2.0)
+ cocoapods-try (>= 1.1.0, < 2.0)
+ colored2 (~> 3.1)
+ escape (~> 0.0.4)
+ fourflusher (>= 2.3.0, < 3.0)
+ gh_inspector (~> 1.0)
+ molinillo (~> 0.6.6)
+ nap (~> 1.0)
+ ruby-macho (~> 1.4)
+ xcodeproj (>= 1.19.0, < 2.0)
+ cocoapods-core (1.10.2)
+ activesupport (> 5.0, < 6)
+ addressable (~> 2.6)
+ algoliasearch (~> 1.0)
+ concurrent-ruby (~> 1.1)
+ fuzzy_match (~> 2.0.4)
+ nap (~> 1.0)
+ netrc (~> 0.11)
+ public_suffix
+ typhoeus (~> 1.0)
+ cocoapods-deintegrate (1.0.5)
+ cocoapods-downloader (1.6.3)
+ cocoapods-plugins (1.0.0)
+ nap
+ cocoapods-search (1.0.1)
+ cocoapods-trunk (1.6.0)
+ nap (>= 0.8, < 2.0)
+ netrc (~> 0.11)
+ cocoapods-try (1.2.0)
+ colored (1.2)
+ colored2 (3.1.2)
+ commander (4.6.0)
+ highline (~> 2.0.0)
+ concurrent-ruby (1.1.10)
+ declarative (0.0.20)
+ digest-crc (0.6.4)
+ rake (>= 12.0.0, < 14.0.0)
+ domain_name (0.5.20190701)
+ unf (>= 0.0.5, < 1.0.0)
+ dotenv (2.8.1)
+ emoji_regex (3.2.3)
+ escape (0.0.4)
+ ethon (0.16.0)
+ ffi (>= 1.15.0)
+ excon (0.99.0)
+ faraday (1.10.3)
+ faraday-em_http (~> 1.0)
+ faraday-em_synchrony (~> 1.0)
+ faraday-excon (~> 1.1)
+ faraday-httpclient (~> 1.0)
+ faraday-multipart (~> 1.0)
+ faraday-net_http (~> 1.0)
+ faraday-net_http_persistent (~> 1.0)
+ faraday-patron (~> 1.0)
+ faraday-rack (~> 1.0)
+ faraday-retry (~> 1.0)
+ ruby2_keywords (>= 0.0.4)
+ faraday-cookie_jar (0.0.7)
+ faraday (>= 0.8.0)
+ http-cookie (~> 1.0.0)
+ faraday-em_http (1.0.0)
+ faraday-em_synchrony (1.0.0)
+ faraday-excon (1.1.0)
+ faraday-httpclient (1.0.1)
+ faraday-multipart (1.0.4)
+ multipart-post (~> 2)
+ faraday-net_http (1.0.1)
+ faraday-net_http_persistent (1.2.0)
+ faraday-patron (1.0.0)
+ faraday-rack (1.0.0)
+ faraday-retry (1.0.3)
+ faraday_middleware (1.2.0)
+ faraday (~> 1.0)
+ fastimage (2.2.7)
+ fastlane (2.213.0)
+ CFPropertyList (>= 2.3, < 4.0.0)
+ addressable (>= 2.8, < 3.0.0)
+ artifactory (~> 3.0)
+ aws-sdk-s3 (~> 1.0)
+ babosa (>= 1.0.3, < 2.0.0)
+ bundler (>= 1.12.0, < 3.0.0)
+ colored
+ commander (~> 4.6)
+ dotenv (>= 2.1.1, < 3.0.0)
+ emoji_regex (>= 0.1, < 4.0)
+ excon (>= 0.71.0, < 1.0.0)
+ faraday (~> 1.0)
+ faraday-cookie_jar (~> 0.0.6)
+ faraday_middleware (~> 1.0)
+ fastimage (>= 2.1.0, < 3.0.0)
+ gh_inspector (>= 1.1.2, < 2.0.0)
+ google-apis-androidpublisher_v3 (~> 0.3)
+ google-apis-playcustomapp_v1 (~> 0.1)
+ google-cloud-storage (~> 1.31)
+ highline (~> 2.0)
+ json (< 3.0.0)
+ jwt (>= 2.1.0, < 3)
+ mini_magick (>= 4.9.4, < 5.0.0)
+ multipart-post (>= 2.0.0, < 3.0.0)
+ naturally (~> 2.2)
+ optparse (~> 0.1.1)
+ plist (>= 3.1.0, < 4.0.0)
+ rubyzip (>= 2.0.0, < 3.0.0)
+ security (= 0.1.3)
+ simctl (~> 1.6.3)
+ terminal-notifier (>= 2.0.0, < 3.0.0)
+ terminal-table (>= 1.4.5, < 2.0.0)
+ tty-screen (>= 0.6.3, < 1.0.0)
+ tty-spinner (>= 0.8.0, < 1.0.0)
+ word_wrap (~> 1.0.0)
+ xcodeproj (>= 1.13.0, < 2.0.0)
+ xcpretty (~> 0.3.0)
+ xcpretty-travis-formatter (>= 0.0.3)
+ fastlane-plugin-flutter_version (1.1.15)
+ ffi (1.15.5)
+ fourflusher (2.3.1)
+ fuzzy_match (2.0.4)
+ gh_inspector (1.1.3)
+ google-apis-androidpublisher_v3 (0.42.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-core (0.11.0)
+ addressable (~> 2.5, >= 2.5.1)
+ googleauth (>= 0.16.2, < 2.a)
+ httpclient (>= 2.8.1, < 3.a)
+ mini_mime (~> 1.0)
+ representable (~> 3.0)
+ retriable (>= 2.0, < 4.a)
+ rexml
+ webrick
+ google-apis-iamcredentials_v1 (0.17.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-playcustomapp_v1 (0.13.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-storage_v1 (0.19.0)
+ google-apis-core (>= 0.9.0, < 2.a)
+ google-cloud-core (1.6.0)
+ google-cloud-env (~> 1.0)
+ google-cloud-errors (~> 1.0)
+ google-cloud-env (1.6.0)
+ faraday (>= 0.17.3, < 3.0)
+ google-cloud-errors (1.3.1)
+ google-cloud-storage (1.44.0)
+ addressable (~> 2.8)
+ digest-crc (~> 0.4)
+ google-apis-iamcredentials_v1 (~> 0.1)
+ google-apis-storage_v1 (~> 0.19.0)
+ google-cloud-core (~> 1.6)
+ googleauth (>= 0.16.2, < 2.a)
+ mini_mime (~> 1.0)
+ googleauth (1.5.2)
+ faraday (>= 0.17.3, < 3.a)
+ jwt (>= 1.4, < 3.0)
+ memoist (~> 0.16)
+ multi_json (~> 1.11)
+ os (>= 0.9, < 2.0)
+ signet (>= 0.16, < 2.a)
+ highline (2.0.3)
+ http-cookie (1.0.5)
+ domain_name (~> 0.5)
+ httpclient (2.8.3)
+ i18n (1.12.0)
+ concurrent-ruby (~> 1.0)
+ jmespath (1.6.2)
+ json (2.6.3)
+ jwt (2.7.0)
+ memoist (0.16.2)
+ mini_magick (4.12.0)
+ mini_mime (1.1.2)
+ minitest (5.16.3)
+ molinillo (0.6.6)
+ multi_json (1.15.0)
+ multipart-post (2.3.0)
+ nanaimo (0.3.0)
+ nap (1.1.0)
+ naturally (2.2.1)
+ netrc (0.11.0)
+ optparse (0.1.1)
+ os (1.1.4)
+ plist (3.7.0)
+ public_suffix (5.0.1)
+ rake (13.0.6)
+ representable (3.2.0)
+ declarative (< 0.1.0)
+ trailblazer-option (>= 0.1.1, < 0.2.0)
+ uber (< 0.2.0)
+ retriable (3.1.2)
+ rexml (3.2.5)
+ rouge (2.0.7)
+ ruby-macho (1.4.0)
+ ruby2_keywords (0.0.5)
+ rubyzip (2.3.2)
+ security (0.1.3)
+ signet (0.17.0)
+ addressable (~> 2.8)
+ faraday (>= 0.17.5, < 3.a)
+ jwt (>= 1.5, < 3.0)
+ multi_json (~> 1.10)
+ simctl (1.6.10)
+ CFPropertyList
+ naturally
+ terminal-notifier (2.0.0)
+ terminal-table (1.8.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ thread_safe (0.3.6)
+ trailblazer-option (0.1.2)
+ tty-cursor (0.7.1)
+ tty-screen (0.8.1)
+ tty-spinner (0.9.3)
+ tty-cursor (~> 0.7)
+ typhoeus (1.4.0)
+ ethon (>= 0.9.0)
+ tzinfo (1.2.10)
+ thread_safe (~> 0.1)
+ uber (0.1.0)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.8.2)
+ unicode-display_width (1.8.0)
+ webrick (1.8.1)
+ word_wrap (1.0.0)
+ xcodeproj (1.22.0)
+ CFPropertyList (>= 2.3.3, < 4.0)
+ atomos (~> 0.1.3)
+ claide (>= 1.0.2, < 2.0)
+ colored2 (~> 3.1)
+ nanaimo (~> 0.3.0)
+ rexml (~> 3.2.4)
+ xcpretty (0.3.0)
+ rouge (~> 2.0.7)
+ xcpretty-travis-formatter (1.0.1)
+ xcpretty (~> 0.2, >= 0.0.7)
+
+PLATFORMS
+ arm64-darwin-21
+ arm64-darwin-22
+ arm64-darwin-23
+ x86_64-darwin-19
+ x86_64-darwin-20
+ x86_64-darwin-22
+ x86_64-linux
+
+DEPENDENCIES
+ cocoapods
+ fastlane
+ fastlane-plugin-flutter_version
+
+BUNDLED WITH
+ 2.3.11
diff --git a/README.md b/README.md
index 6a138c3..dfba40d 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,172 @@
-# XL Says
+# Xmartlabs' Flutter template
-This is the readme for XL Says. /ml folder contains the ML model implementation
+## Arch Overview
+The project is divided into two main folders:
+- The UI contains all app screens.
+- The Core contains the models and the data layer.
+
+The design system is located on a package called [design_system][design_system],
+
+### UI section
+
+[Flutter Bloc][bloc] is used for state management, specifically, we use Cubit to manage the screen state.
+Each app section is added in a project folder which contains three components, the Screen (a `StatelessWidget`, the UI), the Cubit and the state.
+
+The `MainScreen` is the Widget that contains all screens. It defines the `MaterialApp` and provides the app router.
+The router has two subgraphs, the `UnauthenticatedRouter` used for unauthenticated users and the `AuthenticatedRouter` used for authenticated users.
+
+The [app router][app_router] is provided by [auto_route][auto_route], and contains the previous sections with some nested screens.
+
+### Core section
+
+The models are defined in the [models folder][models]. If you need to use different models for database or networking, you can create them in `db` and `service` folders respectively.
+
+The repository pattern is used to manage the data layer.
+A [repository][repository_folder] uses different [data sources][data_source_folder] (for example a local cache or a REST API).
+These components are injected in the Cubits using [get_it][get_it].
+
+## Project Overview
+
+### Assets
+The [`/assets/`](./assets) folder contains the assets used by the application, such as images, fonts, and other files.
+
+### Environments
+
+The environment variables are defined in the `default.env` file located in [`/environments/`](./environments) folder.
+You can read more information about the environment variables in the [README.md](./environments/README.md) file.
+
+## Project Setup
+
+The project setup is based on some plugins which generate the required native code.
+
+You can use [project_setup.sh](scripts/project_setup.sh) to reload all project setups.
+
+### Flavor setup: Project name, properties BundleId & Application id
+This information is set using [flavorizr], a flutter utility to easily create flavors in your flutter application.
+To change it go to `flavorizr` section in the [pubspec] file.
+
+For example, to add a new flavour, you can do something like:
+```yaml
+flavorizr:
+ flavors:
+ qa:
+ app:
+ name: 'My Project - QA'
+ android:
+ applicationId: 'com.xmartlabs.myproject.qa'
+ ios:
+ bundleId: 'com.xmartlabs.myproject.qa'
+```
+
+After a change is made, you need to regenerate your native files.
+You can do that by executing `flutter pub run flutter_flavorizr`.
+
+More information in [flavorizr] page.
+
+### App icons
+
+Icons are generated using [flutter_launcher_icons] plugin.
+To change it go to `flutter_icons` section in the [pubspec] file.
+
+After a change is made, you need to regenerate your native files.
+You can do that by executing `flutter pub run flutter_launcher_icons:main`.
+
+
+### Splash screen
+
+Splash screen is generated using [flutter_native_splash].
+To change it go to `flutter_native_splash` section in the [pubspec] file.
+
+After a change is made, you need to regenerate your native files.
+You can do that by executing `flutter pub run flutter_native_splash:create`.
+
+Although you can setup a bunch of features in this library, it doesn't provide a way to display animations.
+If you need a more personalized splash screen, you can edit the native code or just remove this library.
+
+### Code generation
+
+Code generation is created using `build_runner` package.\
+To configure this package edit the `build.yaml`\
+To add new files to watch for code generation add the following lines:
+```
+targets:
+ $default:
+ builders:
+ # Previous configured builders
+ ...
+ builder_package_name:
+ generate_for:
+ # Example glob for only the Dart files under `lib/models`
+ - lib/models/*.dart
+```
+To create generated code run `clean_up.sh` under [scripts] folder or the following command: `flutter pub run build_runner build --delete-conflicting-outputs`
+
+### Pre Push config
+
+In order to setup pre-push hook you need to go to the root of the project and run `git config core.hooksPath .github/hooks`
+
+# Bitrise CI/CD Setup Guide
+
+This guide provides the steps to set up and update your Bitrise CI/CD configuration to match your app's requirements.
+
+## Steps to Configure Bitrise
+
+### Update `bitrise.yml`
+
+The CI/CD workflow is defined in the `bitrise.yml` file. To update the environment variables to match your needs, modify the values under the `envs` section as shown in the example below:
+
+```yaml
+app:
+ envs:
+ - opts:
+ is_expand: false
+ FLUTTER_ENV_FILE: VALUE
+ - opts:
+ is_expand: false
+ ENV_DEV_CONFIG: |-
+ API_BASE_URL=VALUE\n
+ BUGSEE_API_KEY=VALUE\n
+```
+
+### Upload Required Files to Bitrise
+
+Ensure the following files are uploaded to your Bitrise account:
+
+- `service_account.json`
+- `upload_keystore.jks`
+- `dist_certificate.p12`
+
+### Add Secrets to Bitrise
+
+You need to add the following secrets in the Bitrise dashboard:
+
+- `KEYSTORE_PASSWORD`
+- `KEYSTORE_KEY_PASSWORD`
+- `DIST_CERTIFICATE_PASSWORD`
+- `APPSTORE_CONNECT_API_KEY_ISSUER_ID`
+- `APPSTORE_CONNECT_API_KEY_ID`
+- `APPSTORE_CONNECT_API_KEY_BASE_64_CONTENT`
+- `KEYSTORE_KEY_ALIAS`
+- `KEYSTORE_FILE`
+
+#### How to Add Secrets
+
+1. Navigate to your app on Bitrise.
+2. Go to the `Secrets` tab.
+3. Add each of the above secrets with their corresponding values.
+
+[design_system]: https://github.com/xmartlabs/flutter-template/tree/main/design_system
+[flavorizr]: https://pub.dev/packages/flutter_flavorizr
+[flutter_launcher_icons]: https://pub.dev/packages/flutter_launcher_icons
+[flutter_native_splash]: https://pub.dev/packages/flutter_native_splash
+[pubspec]: ./pubspec.yaml
+[app_router]: https://github.com/xmartlabs/flutter-template/blob/main/lib/ui/app_router.dart
+[bloc]: https://bloclibrary.dev
+[auto_route]: https://pub.dev/packages/auto_route
+[flutter_screenutil]: https://pub.dev/packages/flutter_screenutil
+[models]: https://github.com/xmartlabs/flutter-template/tree/main/lib/core/model
+[repository_folder]: https://github.com/xmartlabs/flutter-template/tree/main/lib/core/repository
+[data_source_folder]: https://github.com/xmartlabs/flutter-template/tree/main/lib/core/source
+[get_it]: https://pub.dev/packages/get_it
+[scripts]: https://github.com/xmartlabs/flutter-template/tree/main/scripts
diff --git a/analysis_options.yaml b/analysis_options.yaml
new file mode 100644
index 0000000..46de134
--- /dev/null
+++ b/analysis_options.yaml
@@ -0,0 +1,125 @@
+include: package:flutter_lints/flutter.yaml
+linter:
+ rules:
+ - always_declare_return_types
+ - always_put_required_named_parameters_first
+ - always_use_package_imports
+ - annotate_overrides
+ - avoid_bool_literals_in_conditional_expressions
+ - avoid_catching_errors
+ - avoid_empty_else
+ - avoid_multiple_declarations_per_line
+ - avoid_null_checks_in_equality_operators
+ - avoid_print
+ - avoid_relative_lib_imports
+ - avoid_renaming_method_parameters
+ - avoid_return_types_on_setters
+ - avoid_returning_null_for_void
+ - avoid_returning_this
+ - avoid_shadowing_type_parameters
+ - avoid_single_cascade_in_expression_statements
+ - avoid_type_to_string
+ - avoid_types_as_parameter_names
+ - avoid_unnecessary_containers
+ - avoid_void_async
+ - camel_case_extensions
+ - camel_case_types
+ - cancel_subscriptions
+ - cascade_invocations
+ - cast_nullable_to_non_nullable
+ - close_sinks
+ - constant_identifier_names
+ - curly_braces_in_flow_control_structures
+ - empty_constructor_bodies
+ - empty_statements
+ - eol_at_end_of_file
+ - exhaustive_cases
+ - file_names
+ - hash_and_equals
+ - library_names
+ - lines_longer_than_80_chars
+ - literal_only_boolean_expressions
+ - missing_whitespace_between_adjacent_strings
+ - no_default_cases
+ - no_duplicate_case_values
+ - no_leading_underscores_for_local_identifiers
+ - no_runtimeType_toString
+ - non_constant_identifier_names
+ - only_throw_errors
+ - prefer_adjacent_string_concatenation
+ - prefer_asserts_with_message
+ - prefer_const_constructors_in_immutables
+ - prefer_const_declarations
+ - prefer_contains
+ - prefer_expression_function_bodies
+ - prefer_final_in_for_each
+ - prefer_final_locals
+ - prefer_if_null_operators
+ - prefer_initializing_formals
+ - prefer_is_empty
+ - prefer_is_not_empty
+ - prefer_is_not_operator
+ - prefer_iterable_whereType
+ - prefer_void_to_null
+ - recursive_getters
+ - require_trailing_commas
+ - slash_for_doc_comments
+ - unawaited_futures
+ - unnecessary_await_in_return
+ - unnecessary_brace_in_string_interps
+ - unnecessary_const
+ - unnecessary_late
+ - unnecessary_new
+ - unnecessary_nullable_for_final_variable_declarations
+ - unnecessary_overrides
+ - unnecessary_parenthesis
+ - unnecessary_raw_strings
+ - unnecessary_statements
+ - unnecessary_string_interpolations
+ - unnecessary_this
+ - unrelated_type_equality_checks
+ - use_build_context_synchronously
+ - use_if_null_to_convert_nulls_to_bools
+ - use_key_in_widget_constructors
+ - valid_regexps
+
+dart_code_linter:
+ anti-patterns:
+ - long-method
+ - long-parameter-list
+ metrics:
+ cyclomatic-complexity: 20
+ maximum-nesting-level: 5
+ number-of-parameters: 4
+ source-lines-of-code: 50
+ metrics-exclude:
+ - test/**
+ rules:
+ - avoid-nested-conditional-expressions
+ - avoid-passing-async-when-sync-expected
+ - avoid-redundant-async
+ - no-boolean-literal-compare
+ - no-empty-block
+ - no-equal-then-else
+ - no-object-declaration
+ - prefer-conditional-expressions
+ - prefer-first
+ - prefer-immediate-return
+ - prefer-last
+ - prefer-moving-to-variable:
+ allowed-duplicated-chains: 3
+ - prefer-trailing-comma
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
+analyzer:
+ exclude:
+ - "**/*.freezed.dart"
+ - "**/*.g.dart"
+ - "**/*.gen.dart"
+ - "**/*.gr.dart"
+ - "bricks"
+ - "lib/generated_plugin_registrant.dart"
+ errors:
+ invalid_annotation_target: ignore
+ unused_element: ignore # https://github.com/dart-lang/sdk/issues/49025
diff --git a/android/.gitignore b/android/.gitignore
new file mode 100644
index 0000000..6f56801
--- /dev/null
+++ b/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/android/.ruby-version b/android/.ruby-version
new file mode 100644
index 0000000..be94e6f
--- /dev/null
+++ b/android/.ruby-version
@@ -0,0 +1 @@
+3.2.2
diff --git a/android/app/build.gradle b/android/app/build.gradle
new file mode 100644
index 0000000..478c2af
--- /dev/null
+++ b/android/app/build.gradle
@@ -0,0 +1,106 @@
+apply from: rootProject.file('read_properties.gradle')
+
+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 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'
+// START: FlutterFire Configuration
+apply plugin: 'com.google.gms.google-services'
+// END: FlutterFire Configuration
+apply plugin: 'kotlin-android'
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+
+android {
+
+ // ----- BEGIN flavorDimensions (autogenerated by flutter_flavorizr) -----
+ flavorDimensions += "flavor-type"
+
+ productFlavors {
+ dev {
+ dimension "flavor-type"
+ applicationId "com.xmartlabs.simonai.dev"
+ resValue "string", "app_name", "Simon AI Dev"
+ }
+ staging {
+ dimension "flavor-type"
+ applicationId "com.xmartlabs.simonai.dev"
+ resValue "string", "app_name", "Simon AI Sta"
+ }
+ prod {
+ dimension "flavor-type"
+ applicationId "com.xmartlabs.simonai"
+ resValue "string", "app_name", "Simon AI"
+ }
+ }
+
+ // ----- END flavorDimensions (autogenerated by flutter_flavorizr) -----
+
+ compileSdkVersion 34
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId "com.xmartlabs.simon_ai"
+ minSdkVersion 26
+ targetSdkVersion 33
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ signingConfigs {
+ release {
+ storeFile getEnvVariable('KEYSTORE_FILE') == null ? null : file(getEnvVariable('KEYSTORE_FILE'))
+ storePassword getEnvVariable('KEYSTORE_PASSWORD')
+ keyAlias getEnvVariable('KEYSTORE_KEY_ALIAS')
+ keyPassword getEnvVariable('KEYSTORE_KEY_PASSWORD')
+ }
+ }
+
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ }
+ }
+ lintOptions {
+ checkReleaseBuilds false
+ }
+}
+
+flutter {
+ source '../..'
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+}
diff --git a/android/app/google-services.json b/android/app/google-services.json
new file mode 100644
index 0000000..6c94af2
--- /dev/null
+++ b/android/app/google-services.json
@@ -0,0 +1,48 @@
+{
+ "project_info": {
+ "project_number": "559870872327",
+ "project_id": "simonai-37870",
+ "storage_bucket": "simonai-37870.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:559870872327:android:482dd466d40ce418c493a2",
+ "android_client_info": {
+ "package_name": "com.xmartlabs.simonai"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyCgLkQaXHLH76UA2evk9a9YrOeCEBwwLfA"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ },
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:559870872327:android:09c4e525e96fc105c493a2",
+ "android_client_info": {
+ "package_name": "com.xmartlabs.simonai.dev"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyCgLkQaXHLH76UA2evk9a9YrOeCEBwwLfA"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..e9808d4
--- /dev/null
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..4d90c2f
--- /dev/null
+++ b/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/kotlin/com/xmartlabs/flutter_template/MainActivity.kt b/android/app/src/main/kotlin/com/xmartlabs/flutter_template/MainActivity.kt
new file mode 100644
index 0000000..28f03bb
--- /dev/null
+++ b/android/app/src/main/kotlin/com/xmartlabs/flutter_template/MainActivity.kt
@@ -0,0 +1,6 @@
+package com.xmartlabs.simon_ai
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity : FlutterActivity() {
+}
diff --git a/android/app/src/main/res/drawable-hdpi-v31/android12branding.png b/android/app/src/main/res/drawable-hdpi-v31/android12branding.png
new file mode 100644
index 0000000..d28948f
Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi-v31/android12branding.png differ
diff --git a/android/app/src/main/res/drawable-hdpi/android12splash.png b/android/app/src/main/res/drawable-hdpi/android12splash.png
new file mode 100644
index 0000000..07b1c18
Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/android12splash.png differ
diff --git a/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..e6cba59
Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/drawable-hdpi/splash.png b/android/app/src/main/res/drawable-hdpi/splash.png
new file mode 100644
index 0000000..5121a08
Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-mdpi-v31/android12branding.png b/android/app/src/main/res/drawable-mdpi-v31/android12branding.png
new file mode 100644
index 0000000..12872bf
Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi-v31/android12branding.png differ
diff --git a/android/app/src/main/res/drawable-mdpi/android12splash.png b/android/app/src/main/res/drawable-mdpi/android12splash.png
new file mode 100644
index 0000000..47fcf48
Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/android12splash.png differ
diff --git a/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..c272c1d
Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/drawable-mdpi/splash.png b/android/app/src/main/res/drawable-mdpi/splash.png
new file mode 100644
index 0000000..2544b5c
Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png
new file mode 100644
index 0000000..d28948f
Binary files /dev/null and b/android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png differ
diff --git a/android/app/src/main/res/drawable-night-hdpi/android12splash.png b/android/app/src/main/res/drawable-night-hdpi/android12splash.png
new file mode 100644
index 0000000..07b1c18
Binary files /dev/null and b/android/app/src/main/res/drawable-night-hdpi/android12splash.png differ
diff --git a/android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png
new file mode 100644
index 0000000..12872bf
Binary files /dev/null and b/android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png differ
diff --git a/android/app/src/main/res/drawable-night-mdpi/android12splash.png b/android/app/src/main/res/drawable-night-mdpi/android12splash.png
new file mode 100644
index 0000000..47fcf48
Binary files /dev/null and b/android/app/src/main/res/drawable-night-mdpi/android12splash.png differ
diff --git a/android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png
new file mode 100644
index 0000000..1c4646f
Binary files /dev/null and b/android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png differ
diff --git a/android/app/src/main/res/drawable-night-xhdpi/android12splash.png b/android/app/src/main/res/drawable-night-xhdpi/android12splash.png
new file mode 100644
index 0000000..7f0a257
Binary files /dev/null and b/android/app/src/main/res/drawable-night-xhdpi/android12splash.png differ
diff --git a/android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png
new file mode 100644
index 0000000..0358cdf
Binary files /dev/null and b/android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png differ
diff --git a/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png b/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png
new file mode 100644
index 0000000..73a4afc
Binary files /dev/null and b/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png differ
diff --git a/android/app/src/main/res/drawable-night-xxxhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-night-xxxhdpi-v31/android12branding.png
new file mode 100644
index 0000000..83f22e1
Binary files /dev/null and b/android/app/src/main/res/drawable-night-xxxhdpi-v31/android12branding.png differ
diff --git a/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png b/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png
new file mode 100644
index 0000000..2e159e1
Binary files /dev/null and b/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png differ
diff --git a/android/app/src/main/res/drawable-v21/background.png b/android/app/src/main/res/drawable-v21/background.png
new file mode 100644
index 0000000..3107d37
Binary files /dev/null and b/android/app/src/main/res/drawable-v21/background.png differ
diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 0000000..3cc4948
--- /dev/null
+++ b/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+ -
+
+
+
diff --git a/android/app/src/main/res/drawable-xhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-xhdpi-v31/android12branding.png
new file mode 100644
index 0000000..1c4646f
Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi-v31/android12branding.png differ
diff --git a/android/app/src/main/res/drawable-xhdpi/android12splash.png b/android/app/src/main/res/drawable-xhdpi/android12splash.png
new file mode 100644
index 0000000..7f0a257
Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/android12splash.png differ
diff --git a/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..a78a151
Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/drawable-xhdpi/splash.png b/android/app/src/main/res/drawable-xhdpi/splash.png
new file mode 100644
index 0000000..ca38ed1
Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png
new file mode 100644
index 0000000..0358cdf
Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png differ
diff --git a/android/app/src/main/res/drawable-xxhdpi/android12splash.png b/android/app/src/main/res/drawable-xxhdpi/android12splash.png
new file mode 100644
index 0000000..73a4afc
Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/android12splash.png differ
diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..b11e378
Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/drawable-xxhdpi/splash.png b/android/app/src/main/res/drawable-xxhdpi/splash.png
new file mode 100644
index 0000000..ee10389
Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable-xxxhdpi-v31/android12branding.png b/android/app/src/main/res/drawable-xxxhdpi-v31/android12branding.png
new file mode 100644
index 0000000..83f22e1
Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi-v31/android12branding.png differ
diff --git a/android/app/src/main/res/drawable-xxxhdpi/android12splash.png b/android/app/src/main/res/drawable-xxxhdpi/android12splash.png
new file mode 100644
index 0000000..2e159e1
Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/android12splash.png differ
diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..f118b43
Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/android/app/src/main/res/drawable-xxxhdpi/splash.png b/android/app/src/main/res/drawable-xxxhdpi/splash.png
new file mode 100644
index 0000000..1b6630e
Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/splash.png differ
diff --git a/android/app/src/main/res/drawable/background.png b/android/app/src/main/res/drawable/background.png
new file mode 100644
index 0000000..3107d37
Binary files /dev/null and b/android/app/src/main/res/drawable/background.png differ
diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000..3cc4948
--- /dev/null
+++ b/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+ -
+
+
+
diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..5f349f7
--- /dev/null
+++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..4201d92
Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..a3ecae8
Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..b63f282
Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..35f1410
Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..a87df63
Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/values-night-v31/styles.xml b/android/app/src/main/res/values-night-v31/styles.xml
new file mode 100644
index 0000000..4f1c3f9
--- /dev/null
+++ b/android/app/src/main/res/values-night-v31/styles.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000..7b20e15
--- /dev/null
+++ b/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/values-v31/styles.xml b/android/app/src/main/res/values-v31/styles.xml
new file mode 100644
index 0000000..a0e12b2
--- /dev/null
+++ b/android/app/src/main/res/values-v31/styles.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..7e0e15d
--- /dev/null
+++ b/android/app/src/main/res/values/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #ee1a64
+
\ No newline at end of file
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..f86ecf4
--- /dev/null
+++ b/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 0000000..e9808d4
--- /dev/null
+++ b/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/android/build.gradle b/android/build.gradle
new file mode 100644
index 0000000..713c05b
--- /dev/null
+++ b/android/build.gradle
@@ -0,0 +1,32 @@
+buildscript {
+ ext.kotlin_version = '2.0.0'
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ // START: FlutterFire Configuration
+ classpath 'com.google.gms:google-services:4.3.15'
+ // END: FlutterFire Configuration
+ classpath "com.android.tools.build:gradle:7.1.3"
+ 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/android/fastlane/Appfile b/android/fastlane/Appfile
new file mode 100644
index 0000000..4b4d74e
--- /dev/null
+++ b/android/fastlane/Appfile
@@ -0,0 +1,2 @@
+# TODO: Change it
+package_name("com.xmartlabs.template")
diff --git a/android/fastlane/Fastfile b/android/fastlane/Fastfile
new file mode 100644
index 0000000..19c011d
--- /dev/null
+++ b/android/fastlane/Fastfile
@@ -0,0 +1,104 @@
+import "../../fastlane/Fastfile"
+
+default_platform(:android)
+platform :android do
+ desc "**Generates a release apk**"
+ desc "#### Envs\n" +
+ " * **`env`**: Sets the env. It sets the flavour and the dart env. " +
+ "The executed command is `build apk --flavor env --dart-define=ENV=env --debug`"
+ lane :build_apk do |options|
+ build_flutter(options.merge(build_platform: 'apk'))
+ end
+
+ desc "**Generates a release app bundle build**"
+ desc "#### Envs\n" +
+ " * **`env`**: Sets the env. It sets the flavour and the dart env. " +
+ "The executed command is `flutter build appbundle --flavor env --dart-define=ENV=env --release`"
+ lane :build_appbundle do |options|
+ build_flutter(
+ build_platform: 'appbundle',
+ build_type: 'release',
+ flavor: options[:env],
+ )
+ end
+
+ desc "**Build dev debug app**"
+ lane :build_dev_debug_apk do |options|
+ build_flutter(
+ build_platform: 'apk',
+ build_type: 'debug',
+ )
+ end
+
+ desc "**Assemble prod apk release version**"
+ lane :build_prod do
+ build_apk(env: "prod")
+ end
+
+ desc "**Assemble dev apk release version**"
+ lane :build_dev do
+ build_apk(env: "dev")
+ end
+
+ desc "**Submit a new Beta Build to Firebase app distribution**"
+ desc "#### Envs\n" +
+ " * **`firebase_app_id`**: Firebase app id.\n" +
+ " * **`FIREBASE_SERVICE_ACCOUNT_FILE`**: The path to your Google service account json file.\n" +
+ " * **`FIREBASE_TESTERS`**: The email addresses of the testers you want to invite.\n" +
+ " You can specify the testers as a comma-separated list of email addresses: \"ali@example.com, bri@example.com, cal@example.com\"\n"
+ " * **`FIREBASE_TESTER_GROUPS`**: The tester groups you want to invite." +
+ " You can specify the groups as a comma-separated list: \"qa-team, trusted-testers\"\n"
+ lane :deploy_firebase_app_distribution do |options|
+ env = options[:env]
+ firebase_app_id = options[:firebase_app_id]
+ clean
+ build_apk(env: env, include_git_version_suffix: true, build_type: 'release')
+ firebase_app_distribution(
+ app: firebase_app_id,
+ service_credentials_file: ENV["FIREBASE_SERVICE_ACCOUNT_FILE"],
+ testers: ENV["FIREBASE_TESTERS"],
+ groups: ENV["FIREBASE_TESTER_GROUPS"],
+ release_notes: generate_snapshot_changelog,
+ apk_path: "../build/app/outputs/flutter-apk/app-#{env}-release.apk",
+ )
+ end
+
+ desc "**Deploy a new dev version to the Firebase App Distribution**"
+ desc "#### Envs\n" +
+ " * **`FIREBASE_APP_ID_DEV`**: Dev Firebase app id.\n" +
+ " * **`FIREBASE_SERVICE_ACCOUNT_FILE`**: The path to your Google service account json file.\n" +
+ " * **`FIREBASE_TESTERS`**: The email addresses of the testers you want to invite.\n" +
+ " You can specify the testers as a comma-separated list of email addresses: \"ali@example.com, bri@example.com, cal@example.com\"\n"
+ " * **`FIREBASE_TESTER_GROUPS`**: The tester groups you want to invite." +
+ " You can specify the groups as a comma-separated list: \"qa-team, trusted-testers\"\n"
+ lane :deploy_firebase_dev do
+ deploy_firebase_app_distribution(env: 'dev', firebase_app_id: ENV["FIREBASE_APP_ID_DEV"])
+ end
+
+ desc "**Deploy a new prod version to the Firebase App Distribution**"
+ desc "#### Envs\n" +
+ " * **`FIREBASE_APP_ID_PROD`**: Production Firebase app id.\n"
+ " * **`FIREBASE_SERVICE_ACCOUNT_FILE`**: The path to your Google service account json file.\n" +
+ " * **`FIREBASE_TESTERS`**: The email addresses of the testers you want to invite." +
+ " You can specify the testers as a comma-separated list of email addresses: \"ali@example.com, bri@example.com, cal@example.com\"\n"
+ " * **`FIREBASE_TESTER_GROUPS`**: The tester groups you want to invite." +
+ " You can specify the groups as a comma-separated list: \"qa-team, trusted-testers\"\n"
+ lane :deploy_firebase_prod do
+ deploy_firebase_app_distribution(env: 'prod', firebase_app_id: ENV["FIREBASE_APP_ID_PROD"])
+ end
+
+ desc "**Deploy a new version to the Google Play**"
+ desc "#### Envs\n" +
+ " * **`GOOGLE_PLAY_TRACK`**: Sets the release track. The default value is `internal`\n" +
+ " * **`GOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALS_FILE`**: Sets the service account file.\n" +
+ " * **`GOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALS_CONTENT`**: Sets the service account content file."
+ lane :deploy_prod do
+ build_appbundle(env: 'prod')
+ upload_to_play_store(
+ track: ENV['GOOGLE_PLAY_TRACK'] || 'internal',
+ json_key: ENV['GOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALS_FILE'],
+ json_key_data: ENV['GOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALS_CONTENT'],
+ aab_paths: ["#{root_path}/build/app/outputs/bundle/prodRelease/app-prod-release.aab"],
+ )
+ end
+end
diff --git a/android/fastlane/Pluginfile b/android/fastlane/Pluginfile
new file mode 100644
index 0000000..b18539b
--- /dev/null
+++ b/android/fastlane/Pluginfile
@@ -0,0 +1,5 @@
+# Autogenerated by fastlane
+#
+# Ensure this file is checked in to source control!
+
+gem 'fastlane-plugin-firebase_app_distribution'
diff --git a/android/fastlane/README.md b/android/fastlane/README.md
new file mode 100644
index 0000000..ceddd3f
--- /dev/null
+++ b/android/fastlane/README.md
@@ -0,0 +1,216 @@
+fastlane documentation
+----
+
+# Installation
+
+Make sure you have the latest version of the Xcode command line tools installed:
+
+```sh
+xcode-select --install
+```
+
+For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)
+
+# Available Actions
+
+### fetch_dependencies
+
+```sh
+[bundle exec] fastlane fetch_dependencies
+```
+
+**Fetch flutter dependencies**
+
+### build_autogenerated_code
+
+```sh
+[bundle exec] fastlane build_autogenerated_code
+```
+
+**Generate flutter generated code**
+
+### lint_format
+
+```sh
+[bundle exec] fastlane lint_format
+```
+
+**Lint: Check code format**
+
+### lint_check_language_sorting
+
+```sh
+[bundle exec] fastlane lint_check_language_sorting
+```
+
+**Lint: Check code format**
+
+### lint_analyze
+
+```sh
+[bundle exec] fastlane lint_analyze
+```
+
+**Lint: Analyze code**
+
+### lint_code_metrics
+
+```sh
+[bundle exec] fastlane lint_code_metrics
+```
+
+**Lint: Code metrics**
+
+### lints
+
+```sh
+[bundle exec] fastlane lints
+```
+
+**Run linters**
+
+### ensure_no_change_in_generated_code
+
+```sh
+[bundle exec] fastlane ensure_no_change_in_generated_code
+```
+
+**Check generated code is fine**
+
+### tests
+
+```sh
+[bundle exec] fastlane tests
+```
+
+**Run tests**
+
+### clean_up
+
+```sh
+[bundle exec] fastlane clean_up
+```
+
+**Clean up project**
+
+### build_flutter
+
+```sh
+[bundle exec] fastlane build_flutter
+```
+
+
+
+----
+
+
+## Android
+
+### android build_apk
+
+```sh
+[bundle exec] fastlane android build_apk
+```
+
+**Generates a release apk**
+
+#### Envs
+ * **`env`**: Sets the env. It sets the flavour and the dart env. The executed command is `build apk --flavor env --dart-define=ENV=env --debug`
+
+### android build_appbundle
+
+```sh
+[bundle exec] fastlane android build_appbundle
+```
+
+**Generates a release app bundle build**
+
+#### Envs
+ * **`env`**: Sets the env. It sets the flavour and the dart env. The executed command is `flutter build appbundle --flavor env --dart-define=ENV=env --release`
+
+### android build_dev_debug_apk
+
+```sh
+[bundle exec] fastlane android build_dev_debug_apk
+```
+
+**Build dev debug app**
+
+### android build_prod
+
+```sh
+[bundle exec] fastlane android build_prod
+```
+
+**Assemble prod apk release version**
+
+### android build_dev
+
+```sh
+[bundle exec] fastlane android build_dev
+```
+
+**Assemble dev apk release version**
+
+### android deploy_firebase_app_distribution
+
+```sh
+[bundle exec] fastlane android deploy_firebase_app_distribution
+```
+
+**Submit a new Beta Build to Firebase app distribution**
+
+#### Envs
+ * **`firebase_app_id`**: Firebase app id.
+ * **`FIREBASE_SERVICE_ACCOUNT_FILE`**: The path to your Google service account json file.
+ * **`FIREBASE_TESTERS`**: The email addresses of the testers you want to invite.
+ You can specify the testers as a comma-separated list of email addresses: "ali@example.com, bri@example.com, cal@example.com"
+
+
+### android deploy_firebase_dev
+
+```sh
+[bundle exec] fastlane android deploy_firebase_dev
+```
+
+**Deploy a new dev version to the Firebase App Distribution**
+
+#### Envs
+ * **`FIREBASE_APP_ID_DEV`**: Dev Firebase app id.
+ * **`FIREBASE_SERVICE_ACCOUNT_FILE`**: The path to your Google service account json file.
+ * **`FIREBASE_TESTERS`**: The email addresses of the testers you want to invite.
+ You can specify the testers as a comma-separated list of email addresses: "ali@example.com, bri@example.com, cal@example.com"
+
+
+### android deploy_firebase_prod
+
+```sh
+[bundle exec] fastlane android deploy_firebase_prod
+```
+
+**Deploy a new prod version to the Firebase App Distribution**
+
+#### Envs
+ * **`FIREBASE_APP_ID_PROD`**: Production Firebase app id.
+
+
+### android deploy_prod
+
+```sh
+[bundle exec] fastlane android deploy_prod
+```
+
+**Deploy a new version to the Google Play**
+
+#### Envs
+ * **`GOOGLE_PLAY_TRACK`**: Sets the release track. The default value is `internal`
+ * **`GOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALS_FILE`**: Sets the service account file.
+ * **`GOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALS_CONTENT`**: Sets the service account content file.
+
+----
+
+This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
+
+More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools).
+
+The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
diff --git a/android/gradle.properties b/android/gradle.properties
new file mode 100644
index 0000000..94adc3a
--- /dev/null
+++ b/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx1536M
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..b776d4b
--- /dev/null
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
diff --git a/android/read_properties.gradle b/android/read_properties.gradle
new file mode 100644
index 0000000..0a8c61e
--- /dev/null
+++ b/android/read_properties.gradle
@@ -0,0 +1,18 @@
+final def PROPERTY_FILE = file(rootProject.file('secrets/keys.properties'))
+final def PROPERTIES = new Properties()
+if (PROPERTY_FILE.exists()) {
+ PROPERTY_FILE.withInputStream { PROPERTIES.load(it) }
+}
+
+ext.getEnvVariable = { key, defaultValue = null ->
+ def value = PROPERTIES[key]
+ if (value != null) {
+ return value
+ }
+ value = project.hasProperty(key) ? project.getProperty(key) : System.getenv(key)
+ value = value?.trim() ? value : null
+ if (value == null && defaultValue == null) {
+ logger.warn("Variable '$key' is not defined.")
+ }
+ return value ?: defaultValue
+}
diff --git a/android/settings.gradle b/android/settings.gradle
new file mode 100644
index 0000000..44e62bc
--- /dev/null
+++ b/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/assets/README.md b/assets/README.md
new file mode 100644
index 0000000..decfa2a
--- /dev/null
+++ b/assets/README.md
@@ -0,0 +1 @@
+Flutter application assets are taken from the assets folder. This folder contains the assets used by the application, such as images, fonts, and other files.
diff --git a/assets/audio/mario_coin_sound.mp3 b/assets/audio/mario_coin_sound.mp3
new file mode 100644
index 0000000..75fa0b9
Binary files /dev/null and b/assets/audio/mario_coin_sound.mp3 differ
diff --git a/assets/images/2.0x/Check.png b/assets/images/2.0x/Check.png
new file mode 100644
index 0000000..fb9c3c1
Binary files /dev/null and b/assets/images/2.0x/Check.png differ
diff --git a/assets/images/2.0x/Estrella.png b/assets/images/2.0x/Estrella.png
new file mode 100644
index 0000000..5094995
Binary files /dev/null and b/assets/images/2.0x/Estrella.png differ
diff --git a/assets/images/2.0x/Reloj.png b/assets/images/2.0x/Reloj.png
new file mode 100644
index 0000000..8fa8b1e
Binary files /dev/null and b/assets/images/2.0x/Reloj.png differ
diff --git a/assets/images/2.0x/background_green_prop.png b/assets/images/2.0x/background_green_prop.png
new file mode 100644
index 0000000..85bcdd3
Binary files /dev/null and b/assets/images/2.0x/background_green_prop.png differ
diff --git a/assets/images/2.0x/background_red_prop.png b/assets/images/2.0x/background_red_prop.png
new file mode 100644
index 0000000..2c24f00
Binary files /dev/null and b/assets/images/2.0x/background_red_prop.png differ
diff --git a/assets/images/3.0x/Check.png b/assets/images/3.0x/Check.png
new file mode 100644
index 0000000..89a69c5
Binary files /dev/null and b/assets/images/3.0x/Check.png differ
diff --git a/assets/images/3.0x/Estrella.png b/assets/images/3.0x/Estrella.png
new file mode 100644
index 0000000..f869dfe
Binary files /dev/null and b/assets/images/3.0x/Estrella.png differ
diff --git a/assets/images/3.0x/Reloj.png b/assets/images/3.0x/Reloj.png
new file mode 100644
index 0000000..c77f012
Binary files /dev/null and b/assets/images/3.0x/Reloj.png differ
diff --git a/assets/images/3.0x/background_green_prop.png b/assets/images/3.0x/background_green_prop.png
new file mode 100644
index 0000000..29c4273
Binary files /dev/null and b/assets/images/3.0x/background_green_prop.png differ
diff --git a/assets/images/3.0x/background_red_prop.png b/assets/images/3.0x/background_red_prop.png
new file mode 100644
index 0000000..1336e5c
Binary files /dev/null and b/assets/images/3.0x/background_red_prop.png differ
diff --git a/assets/images/4.0x/Check.png b/assets/images/4.0x/Check.png
new file mode 100644
index 0000000..4ddae5e
Binary files /dev/null and b/assets/images/4.0x/Check.png differ
diff --git a/assets/images/4.0x/Estrella.png b/assets/images/4.0x/Estrella.png
new file mode 100644
index 0000000..777c580
Binary files /dev/null and b/assets/images/4.0x/Estrella.png differ
diff --git a/assets/images/4.0x/Reloj.png b/assets/images/4.0x/Reloj.png
new file mode 100644
index 0000000..5545509
Binary files /dev/null and b/assets/images/4.0x/Reloj.png differ
diff --git a/assets/images/4.0x/background_green_prop.png b/assets/images/4.0x/background_green_prop.png
new file mode 100644
index 0000000..866fe43
Binary files /dev/null and b/assets/images/4.0x/background_green_prop.png differ
diff --git a/assets/images/4.0x/background_red_prop.png b/assets/images/4.0x/background_red_prop.png
new file mode 100644
index 0000000..b174606
Binary files /dev/null and b/assets/images/4.0x/background_red_prop.png differ
diff --git a/assets/images/Check.png b/assets/images/Check.png
new file mode 100644
index 0000000..af8d947
Binary files /dev/null and b/assets/images/Check.png differ
diff --git a/assets/images/Estrella.png b/assets/images/Estrella.png
new file mode 100644
index 0000000..4960298
Binary files /dev/null and b/assets/images/Estrella.png differ
diff --git a/assets/images/Reloj.png b/assets/images/Reloj.png
new file mode 100644
index 0000000..e69dea1
Binary files /dev/null and b/assets/images/Reloj.png differ
diff --git a/assets/images/background_green_prop.png b/assets/images/background_green_prop.png
new file mode 100644
index 0000000..d2c716c
Binary files /dev/null and b/assets/images/background_green_prop.png differ
diff --git a/assets/images/background_red_prop.png b/assets/images/background_red_prop.png
new file mode 100644
index 0000000..e9a1f1f
Binary files /dev/null and b/assets/images/background_red_prop.png differ
diff --git a/assets/models/anchors.csv b/assets/models/anchors.csv
new file mode 100644
index 0000000..2e62a43
--- /dev/null
+++ b/assets/models/anchors.csv
@@ -0,0 +1,2016 @@
+0.020833333333333332,0.020833333333333332,1,1
+0.020833333333333332,0.020833333333333332,1,1
+0.0625,0.020833333333333332,1,1
+0.0625,0.020833333333333332,1,1
+0.10416666666666667,0.020833333333333332,1,1
+0.10416666666666667,0.020833333333333332,1,1
+0.14583333333333334,0.020833333333333332,1,1
+0.14583333333333334,0.020833333333333332,1,1
+0.1875,0.020833333333333332,1,1
+0.1875,0.020833333333333332,1,1
+0.22916666666666666,0.020833333333333332,1,1
+0.22916666666666666,0.020833333333333332,1,1
+0.2708333333333333,0.020833333333333332,1,1
+0.2708333333333333,0.020833333333333332,1,1
+0.3125,0.020833333333333332,1,1
+0.3125,0.020833333333333332,1,1
+0.3541666666666667,0.020833333333333332,1,1
+0.3541666666666667,0.020833333333333332,1,1
+0.3958333333333333,0.020833333333333332,1,1
+0.3958333333333333,0.020833333333333332,1,1
+0.4375,0.020833333333333332,1,1
+0.4375,0.020833333333333332,1,1
+0.4791666666666667,0.020833333333333332,1,1
+0.4791666666666667,0.020833333333333332,1,1
+0.5208333333333334,0.020833333333333332,1,1
+0.5208333333333334,0.020833333333333332,1,1
+0.5625,0.020833333333333332,1,1
+0.5625,0.020833333333333332,1,1
+0.6041666666666666,0.020833333333333332,1,1
+0.6041666666666666,0.020833333333333332,1,1
+0.6458333333333334,0.020833333333333332,1,1
+0.6458333333333334,0.020833333333333332,1,1
+0.6875,0.020833333333333332,1,1
+0.6875,0.020833333333333332,1,1
+0.7291666666666666,0.020833333333333332,1,1
+0.7291666666666666,0.020833333333333332,1,1
+0.7708333333333334,0.020833333333333332,1,1
+0.7708333333333334,0.020833333333333332,1,1
+0.8125,0.020833333333333332,1,1
+0.8125,0.020833333333333332,1,1
+0.8541666666666666,0.020833333333333332,1,1
+0.8541666666666666,0.020833333333333332,1,1
+0.8958333333333334,0.020833333333333332,1,1
+0.8958333333333334,0.020833333333333332,1,1
+0.9375,0.020833333333333332,1,1
+0.9375,0.020833333333333332,1,1
+0.9791666666666666,0.020833333333333332,1,1
+0.9791666666666666,0.020833333333333332,1,1
+0.020833333333333332,0.0625,1,1
+0.020833333333333332,0.0625,1,1
+0.0625,0.0625,1,1
+0.0625,0.0625,1,1
+0.10416666666666667,0.0625,1,1
+0.10416666666666667,0.0625,1,1
+0.14583333333333334,0.0625,1,1
+0.14583333333333334,0.0625,1,1
+0.1875,0.0625,1,1
+0.1875,0.0625,1,1
+0.22916666666666666,0.0625,1,1
+0.22916666666666666,0.0625,1,1
+0.2708333333333333,0.0625,1,1
+0.2708333333333333,0.0625,1,1
+0.3125,0.0625,1,1
+0.3125,0.0625,1,1
+0.3541666666666667,0.0625,1,1
+0.3541666666666667,0.0625,1,1
+0.3958333333333333,0.0625,1,1
+0.3958333333333333,0.0625,1,1
+0.4375,0.0625,1,1
+0.4375,0.0625,1,1
+0.4791666666666667,0.0625,1,1
+0.4791666666666667,0.0625,1,1
+0.5208333333333334,0.0625,1,1
+0.5208333333333334,0.0625,1,1
+0.5625,0.0625,1,1
+0.5625,0.0625,1,1
+0.6041666666666666,0.0625,1,1
+0.6041666666666666,0.0625,1,1
+0.6458333333333334,0.0625,1,1
+0.6458333333333334,0.0625,1,1
+0.6875,0.0625,1,1
+0.6875,0.0625,1,1
+0.7291666666666666,0.0625,1,1
+0.7291666666666666,0.0625,1,1
+0.7708333333333334,0.0625,1,1
+0.7708333333333334,0.0625,1,1
+0.8125,0.0625,1,1
+0.8125,0.0625,1,1
+0.8541666666666666,0.0625,1,1
+0.8541666666666666,0.0625,1,1
+0.8958333333333334,0.0625,1,1
+0.8958333333333334,0.0625,1,1
+0.9375,0.0625,1,1
+0.9375,0.0625,1,1
+0.9791666666666666,0.0625,1,1
+0.9791666666666666,0.0625,1,1
+0.020833333333333332,0.10416666666666667,1,1
+0.020833333333333332,0.10416666666666667,1,1
+0.0625,0.10416666666666667,1,1
+0.0625,0.10416666666666667,1,1
+0.10416666666666667,0.10416666666666667,1,1
+0.10416666666666667,0.10416666666666667,1,1
+0.14583333333333334,0.10416666666666667,1,1
+0.14583333333333334,0.10416666666666667,1,1
+0.1875,0.10416666666666667,1,1
+0.1875,0.10416666666666667,1,1
+0.22916666666666666,0.10416666666666667,1,1
+0.22916666666666666,0.10416666666666667,1,1
+0.2708333333333333,0.10416666666666667,1,1
+0.2708333333333333,0.10416666666666667,1,1
+0.3125,0.10416666666666667,1,1
+0.3125,0.10416666666666667,1,1
+0.3541666666666667,0.10416666666666667,1,1
+0.3541666666666667,0.10416666666666667,1,1
+0.3958333333333333,0.10416666666666667,1,1
+0.3958333333333333,0.10416666666666667,1,1
+0.4375,0.10416666666666667,1,1
+0.4375,0.10416666666666667,1,1
+0.4791666666666667,0.10416666666666667,1,1
+0.4791666666666667,0.10416666666666667,1,1
+0.5208333333333334,0.10416666666666667,1,1
+0.5208333333333334,0.10416666666666667,1,1
+0.5625,0.10416666666666667,1,1
+0.5625,0.10416666666666667,1,1
+0.6041666666666666,0.10416666666666667,1,1
+0.6041666666666666,0.10416666666666667,1,1
+0.6458333333333334,0.10416666666666667,1,1
+0.6458333333333334,0.10416666666666667,1,1
+0.6875,0.10416666666666667,1,1
+0.6875,0.10416666666666667,1,1
+0.7291666666666666,0.10416666666666667,1,1
+0.7291666666666666,0.10416666666666667,1,1
+0.7708333333333334,0.10416666666666667,1,1
+0.7708333333333334,0.10416666666666667,1,1
+0.8125,0.10416666666666667,1,1
+0.8125,0.10416666666666667,1,1
+0.8541666666666666,0.10416666666666667,1,1
+0.8541666666666666,0.10416666666666667,1,1
+0.8958333333333334,0.10416666666666667,1,1
+0.8958333333333334,0.10416666666666667,1,1
+0.9375,0.10416666666666667,1,1
+0.9375,0.10416666666666667,1,1
+0.9791666666666666,0.10416666666666667,1,1
+0.9791666666666666,0.10416666666666667,1,1
+0.020833333333333332,0.14583333333333334,1,1
+0.020833333333333332,0.14583333333333334,1,1
+0.0625,0.14583333333333334,1,1
+0.0625,0.14583333333333334,1,1
+0.10416666666666667,0.14583333333333334,1,1
+0.10416666666666667,0.14583333333333334,1,1
+0.14583333333333334,0.14583333333333334,1,1
+0.14583333333333334,0.14583333333333334,1,1
+0.1875,0.14583333333333334,1,1
+0.1875,0.14583333333333334,1,1
+0.22916666666666666,0.14583333333333334,1,1
+0.22916666666666666,0.14583333333333334,1,1
+0.2708333333333333,0.14583333333333334,1,1
+0.2708333333333333,0.14583333333333334,1,1
+0.3125,0.14583333333333334,1,1
+0.3125,0.14583333333333334,1,1
+0.3541666666666667,0.14583333333333334,1,1
+0.3541666666666667,0.14583333333333334,1,1
+0.3958333333333333,0.14583333333333334,1,1
+0.3958333333333333,0.14583333333333334,1,1
+0.4375,0.14583333333333334,1,1
+0.4375,0.14583333333333334,1,1
+0.4791666666666667,0.14583333333333334,1,1
+0.4791666666666667,0.14583333333333334,1,1
+0.5208333333333334,0.14583333333333334,1,1
+0.5208333333333334,0.14583333333333334,1,1
+0.5625,0.14583333333333334,1,1
+0.5625,0.14583333333333334,1,1
+0.6041666666666666,0.14583333333333334,1,1
+0.6041666666666666,0.14583333333333334,1,1
+0.6458333333333334,0.14583333333333334,1,1
+0.6458333333333334,0.14583333333333334,1,1
+0.6875,0.14583333333333334,1,1
+0.6875,0.14583333333333334,1,1
+0.7291666666666666,0.14583333333333334,1,1
+0.7291666666666666,0.14583333333333334,1,1
+0.7708333333333334,0.14583333333333334,1,1
+0.7708333333333334,0.14583333333333334,1,1
+0.8125,0.14583333333333334,1,1
+0.8125,0.14583333333333334,1,1
+0.8541666666666666,0.14583333333333334,1,1
+0.8541666666666666,0.14583333333333334,1,1
+0.8958333333333334,0.14583333333333334,1,1
+0.8958333333333334,0.14583333333333334,1,1
+0.9375,0.14583333333333334,1,1
+0.9375,0.14583333333333334,1,1
+0.9791666666666666,0.14583333333333334,1,1
+0.9791666666666666,0.14583333333333334,1,1
+0.020833333333333332,0.1875,1,1
+0.020833333333333332,0.1875,1,1
+0.0625,0.1875,1,1
+0.0625,0.1875,1,1
+0.10416666666666667,0.1875,1,1
+0.10416666666666667,0.1875,1,1
+0.14583333333333334,0.1875,1,1
+0.14583333333333334,0.1875,1,1
+0.1875,0.1875,1,1
+0.1875,0.1875,1,1
+0.22916666666666666,0.1875,1,1
+0.22916666666666666,0.1875,1,1
+0.2708333333333333,0.1875,1,1
+0.2708333333333333,0.1875,1,1
+0.3125,0.1875,1,1
+0.3125,0.1875,1,1
+0.3541666666666667,0.1875,1,1
+0.3541666666666667,0.1875,1,1
+0.3958333333333333,0.1875,1,1
+0.3958333333333333,0.1875,1,1
+0.4375,0.1875,1,1
+0.4375,0.1875,1,1
+0.4791666666666667,0.1875,1,1
+0.4791666666666667,0.1875,1,1
+0.5208333333333334,0.1875,1,1
+0.5208333333333334,0.1875,1,1
+0.5625,0.1875,1,1
+0.5625,0.1875,1,1
+0.6041666666666666,0.1875,1,1
+0.6041666666666666,0.1875,1,1
+0.6458333333333334,0.1875,1,1
+0.6458333333333334,0.1875,1,1
+0.6875,0.1875,1,1
+0.6875,0.1875,1,1
+0.7291666666666666,0.1875,1,1
+0.7291666666666666,0.1875,1,1
+0.7708333333333334,0.1875,1,1
+0.7708333333333334,0.1875,1,1
+0.8125,0.1875,1,1
+0.8125,0.1875,1,1
+0.8541666666666666,0.1875,1,1
+0.8541666666666666,0.1875,1,1
+0.8958333333333334,0.1875,1,1
+0.8958333333333334,0.1875,1,1
+0.9375,0.1875,1,1
+0.9375,0.1875,1,1
+0.9791666666666666,0.1875,1,1
+0.9791666666666666,0.1875,1,1
+0.020833333333333332,0.22916666666666666,1,1
+0.020833333333333332,0.22916666666666666,1,1
+0.0625,0.22916666666666666,1,1
+0.0625,0.22916666666666666,1,1
+0.10416666666666667,0.22916666666666666,1,1
+0.10416666666666667,0.22916666666666666,1,1
+0.14583333333333334,0.22916666666666666,1,1
+0.14583333333333334,0.22916666666666666,1,1
+0.1875,0.22916666666666666,1,1
+0.1875,0.22916666666666666,1,1
+0.22916666666666666,0.22916666666666666,1,1
+0.22916666666666666,0.22916666666666666,1,1
+0.2708333333333333,0.22916666666666666,1,1
+0.2708333333333333,0.22916666666666666,1,1
+0.3125,0.22916666666666666,1,1
+0.3125,0.22916666666666666,1,1
+0.3541666666666667,0.22916666666666666,1,1
+0.3541666666666667,0.22916666666666666,1,1
+0.3958333333333333,0.22916666666666666,1,1
+0.3958333333333333,0.22916666666666666,1,1
+0.4375,0.22916666666666666,1,1
+0.4375,0.22916666666666666,1,1
+0.4791666666666667,0.22916666666666666,1,1
+0.4791666666666667,0.22916666666666666,1,1
+0.5208333333333334,0.22916666666666666,1,1
+0.5208333333333334,0.22916666666666666,1,1
+0.5625,0.22916666666666666,1,1
+0.5625,0.22916666666666666,1,1
+0.6041666666666666,0.22916666666666666,1,1
+0.6041666666666666,0.22916666666666666,1,1
+0.6458333333333334,0.22916666666666666,1,1
+0.6458333333333334,0.22916666666666666,1,1
+0.6875,0.22916666666666666,1,1
+0.6875,0.22916666666666666,1,1
+0.7291666666666666,0.22916666666666666,1,1
+0.7291666666666666,0.22916666666666666,1,1
+0.7708333333333334,0.22916666666666666,1,1
+0.7708333333333334,0.22916666666666666,1,1
+0.8125,0.22916666666666666,1,1
+0.8125,0.22916666666666666,1,1
+0.8541666666666666,0.22916666666666666,1,1
+0.8541666666666666,0.22916666666666666,1,1
+0.8958333333333334,0.22916666666666666,1,1
+0.8958333333333334,0.22916666666666666,1,1
+0.9375,0.22916666666666666,1,1
+0.9375,0.22916666666666666,1,1
+0.9791666666666666,0.22916666666666666,1,1
+0.9791666666666666,0.22916666666666666,1,1
+0.020833333333333332,0.2708333333333333,1,1
+0.020833333333333332,0.2708333333333333,1,1
+0.0625,0.2708333333333333,1,1
+0.0625,0.2708333333333333,1,1
+0.10416666666666667,0.2708333333333333,1,1
+0.10416666666666667,0.2708333333333333,1,1
+0.14583333333333334,0.2708333333333333,1,1
+0.14583333333333334,0.2708333333333333,1,1
+0.1875,0.2708333333333333,1,1
+0.1875,0.2708333333333333,1,1
+0.22916666666666666,0.2708333333333333,1,1
+0.22916666666666666,0.2708333333333333,1,1
+0.2708333333333333,0.2708333333333333,1,1
+0.2708333333333333,0.2708333333333333,1,1
+0.3125,0.2708333333333333,1,1
+0.3125,0.2708333333333333,1,1
+0.3541666666666667,0.2708333333333333,1,1
+0.3541666666666667,0.2708333333333333,1,1
+0.3958333333333333,0.2708333333333333,1,1
+0.3958333333333333,0.2708333333333333,1,1
+0.4375,0.2708333333333333,1,1
+0.4375,0.2708333333333333,1,1
+0.4791666666666667,0.2708333333333333,1,1
+0.4791666666666667,0.2708333333333333,1,1
+0.5208333333333334,0.2708333333333333,1,1
+0.5208333333333334,0.2708333333333333,1,1
+0.5625,0.2708333333333333,1,1
+0.5625,0.2708333333333333,1,1
+0.6041666666666666,0.2708333333333333,1,1
+0.6041666666666666,0.2708333333333333,1,1
+0.6458333333333334,0.2708333333333333,1,1
+0.6458333333333334,0.2708333333333333,1,1
+0.6875,0.2708333333333333,1,1
+0.6875,0.2708333333333333,1,1
+0.7291666666666666,0.2708333333333333,1,1
+0.7291666666666666,0.2708333333333333,1,1
+0.7708333333333334,0.2708333333333333,1,1
+0.7708333333333334,0.2708333333333333,1,1
+0.8125,0.2708333333333333,1,1
+0.8125,0.2708333333333333,1,1
+0.8541666666666666,0.2708333333333333,1,1
+0.8541666666666666,0.2708333333333333,1,1
+0.8958333333333334,0.2708333333333333,1,1
+0.8958333333333334,0.2708333333333333,1,1
+0.9375,0.2708333333333333,1,1
+0.9375,0.2708333333333333,1,1
+0.9791666666666666,0.2708333333333333,1,1
+0.9791666666666666,0.2708333333333333,1,1
+0.020833333333333332,0.3125,1,1
+0.020833333333333332,0.3125,1,1
+0.0625,0.3125,1,1
+0.0625,0.3125,1,1
+0.10416666666666667,0.3125,1,1
+0.10416666666666667,0.3125,1,1
+0.14583333333333334,0.3125,1,1
+0.14583333333333334,0.3125,1,1
+0.1875,0.3125,1,1
+0.1875,0.3125,1,1
+0.22916666666666666,0.3125,1,1
+0.22916666666666666,0.3125,1,1
+0.2708333333333333,0.3125,1,1
+0.2708333333333333,0.3125,1,1
+0.3125,0.3125,1,1
+0.3125,0.3125,1,1
+0.3541666666666667,0.3125,1,1
+0.3541666666666667,0.3125,1,1
+0.3958333333333333,0.3125,1,1
+0.3958333333333333,0.3125,1,1
+0.4375,0.3125,1,1
+0.4375,0.3125,1,1
+0.4791666666666667,0.3125,1,1
+0.4791666666666667,0.3125,1,1
+0.5208333333333334,0.3125,1,1
+0.5208333333333334,0.3125,1,1
+0.5625,0.3125,1,1
+0.5625,0.3125,1,1
+0.6041666666666666,0.3125,1,1
+0.6041666666666666,0.3125,1,1
+0.6458333333333334,0.3125,1,1
+0.6458333333333334,0.3125,1,1
+0.6875,0.3125,1,1
+0.6875,0.3125,1,1
+0.7291666666666666,0.3125,1,1
+0.7291666666666666,0.3125,1,1
+0.7708333333333334,0.3125,1,1
+0.7708333333333334,0.3125,1,1
+0.8125,0.3125,1,1
+0.8125,0.3125,1,1
+0.8541666666666666,0.3125,1,1
+0.8541666666666666,0.3125,1,1
+0.8958333333333334,0.3125,1,1
+0.8958333333333334,0.3125,1,1
+0.9375,0.3125,1,1
+0.9375,0.3125,1,1
+0.9791666666666666,0.3125,1,1
+0.9791666666666666,0.3125,1,1
+0.020833333333333332,0.3541666666666667,1,1
+0.020833333333333332,0.3541666666666667,1,1
+0.0625,0.3541666666666667,1,1
+0.0625,0.3541666666666667,1,1
+0.10416666666666667,0.3541666666666667,1,1
+0.10416666666666667,0.3541666666666667,1,1
+0.14583333333333334,0.3541666666666667,1,1
+0.14583333333333334,0.3541666666666667,1,1
+0.1875,0.3541666666666667,1,1
+0.1875,0.3541666666666667,1,1
+0.22916666666666666,0.3541666666666667,1,1
+0.22916666666666666,0.3541666666666667,1,1
+0.2708333333333333,0.3541666666666667,1,1
+0.2708333333333333,0.3541666666666667,1,1
+0.3125,0.3541666666666667,1,1
+0.3125,0.3541666666666667,1,1
+0.3541666666666667,0.3541666666666667,1,1
+0.3541666666666667,0.3541666666666667,1,1
+0.3958333333333333,0.3541666666666667,1,1
+0.3958333333333333,0.3541666666666667,1,1
+0.4375,0.3541666666666667,1,1
+0.4375,0.3541666666666667,1,1
+0.4791666666666667,0.3541666666666667,1,1
+0.4791666666666667,0.3541666666666667,1,1
+0.5208333333333334,0.3541666666666667,1,1
+0.5208333333333334,0.3541666666666667,1,1
+0.5625,0.3541666666666667,1,1
+0.5625,0.3541666666666667,1,1
+0.6041666666666666,0.3541666666666667,1,1
+0.6041666666666666,0.3541666666666667,1,1
+0.6458333333333334,0.3541666666666667,1,1
+0.6458333333333334,0.3541666666666667,1,1
+0.6875,0.3541666666666667,1,1
+0.6875,0.3541666666666667,1,1
+0.7291666666666666,0.3541666666666667,1,1
+0.7291666666666666,0.3541666666666667,1,1
+0.7708333333333334,0.3541666666666667,1,1
+0.7708333333333334,0.3541666666666667,1,1
+0.8125,0.3541666666666667,1,1
+0.8125,0.3541666666666667,1,1
+0.8541666666666666,0.3541666666666667,1,1
+0.8541666666666666,0.3541666666666667,1,1
+0.8958333333333334,0.3541666666666667,1,1
+0.8958333333333334,0.3541666666666667,1,1
+0.9375,0.3541666666666667,1,1
+0.9375,0.3541666666666667,1,1
+0.9791666666666666,0.3541666666666667,1,1
+0.9791666666666666,0.3541666666666667,1,1
+0.020833333333333332,0.3958333333333333,1,1
+0.020833333333333332,0.3958333333333333,1,1
+0.0625,0.3958333333333333,1,1
+0.0625,0.3958333333333333,1,1
+0.10416666666666667,0.3958333333333333,1,1
+0.10416666666666667,0.3958333333333333,1,1
+0.14583333333333334,0.3958333333333333,1,1
+0.14583333333333334,0.3958333333333333,1,1
+0.1875,0.3958333333333333,1,1
+0.1875,0.3958333333333333,1,1
+0.22916666666666666,0.3958333333333333,1,1
+0.22916666666666666,0.3958333333333333,1,1
+0.2708333333333333,0.3958333333333333,1,1
+0.2708333333333333,0.3958333333333333,1,1
+0.3125,0.3958333333333333,1,1
+0.3125,0.3958333333333333,1,1
+0.3541666666666667,0.3958333333333333,1,1
+0.3541666666666667,0.3958333333333333,1,1
+0.3958333333333333,0.3958333333333333,1,1
+0.3958333333333333,0.3958333333333333,1,1
+0.4375,0.3958333333333333,1,1
+0.4375,0.3958333333333333,1,1
+0.4791666666666667,0.3958333333333333,1,1
+0.4791666666666667,0.3958333333333333,1,1
+0.5208333333333334,0.3958333333333333,1,1
+0.5208333333333334,0.3958333333333333,1,1
+0.5625,0.3958333333333333,1,1
+0.5625,0.3958333333333333,1,1
+0.6041666666666666,0.3958333333333333,1,1
+0.6041666666666666,0.3958333333333333,1,1
+0.6458333333333334,0.3958333333333333,1,1
+0.6458333333333334,0.3958333333333333,1,1
+0.6875,0.3958333333333333,1,1
+0.6875,0.3958333333333333,1,1
+0.7291666666666666,0.3958333333333333,1,1
+0.7291666666666666,0.3958333333333333,1,1
+0.7708333333333334,0.3958333333333333,1,1
+0.7708333333333334,0.3958333333333333,1,1
+0.8125,0.3958333333333333,1,1
+0.8125,0.3958333333333333,1,1
+0.8541666666666666,0.3958333333333333,1,1
+0.8541666666666666,0.3958333333333333,1,1
+0.8958333333333334,0.3958333333333333,1,1
+0.8958333333333334,0.3958333333333333,1,1
+0.9375,0.3958333333333333,1,1
+0.9375,0.3958333333333333,1,1
+0.9791666666666666,0.3958333333333333,1,1
+0.9791666666666666,0.3958333333333333,1,1
+0.020833333333333332,0.4375,1,1
+0.020833333333333332,0.4375,1,1
+0.0625,0.4375,1,1
+0.0625,0.4375,1,1
+0.10416666666666667,0.4375,1,1
+0.10416666666666667,0.4375,1,1
+0.14583333333333334,0.4375,1,1
+0.14583333333333334,0.4375,1,1
+0.1875,0.4375,1,1
+0.1875,0.4375,1,1
+0.22916666666666666,0.4375,1,1
+0.22916666666666666,0.4375,1,1
+0.2708333333333333,0.4375,1,1
+0.2708333333333333,0.4375,1,1
+0.3125,0.4375,1,1
+0.3125,0.4375,1,1
+0.3541666666666667,0.4375,1,1
+0.3541666666666667,0.4375,1,1
+0.3958333333333333,0.4375,1,1
+0.3958333333333333,0.4375,1,1
+0.4375,0.4375,1,1
+0.4375,0.4375,1,1
+0.4791666666666667,0.4375,1,1
+0.4791666666666667,0.4375,1,1
+0.5208333333333334,0.4375,1,1
+0.5208333333333334,0.4375,1,1
+0.5625,0.4375,1,1
+0.5625,0.4375,1,1
+0.6041666666666666,0.4375,1,1
+0.6041666666666666,0.4375,1,1
+0.6458333333333334,0.4375,1,1
+0.6458333333333334,0.4375,1,1
+0.6875,0.4375,1,1
+0.6875,0.4375,1,1
+0.7291666666666666,0.4375,1,1
+0.7291666666666666,0.4375,1,1
+0.7708333333333334,0.4375,1,1
+0.7708333333333334,0.4375,1,1
+0.8125,0.4375,1,1
+0.8125,0.4375,1,1
+0.8541666666666666,0.4375,1,1
+0.8541666666666666,0.4375,1,1
+0.8958333333333334,0.4375,1,1
+0.8958333333333334,0.4375,1,1
+0.9375,0.4375,1,1
+0.9375,0.4375,1,1
+0.9791666666666666,0.4375,1,1
+0.9791666666666666,0.4375,1,1
+0.020833333333333332,0.4791666666666667,1,1
+0.020833333333333332,0.4791666666666667,1,1
+0.0625,0.4791666666666667,1,1
+0.0625,0.4791666666666667,1,1
+0.10416666666666667,0.4791666666666667,1,1
+0.10416666666666667,0.4791666666666667,1,1
+0.14583333333333334,0.4791666666666667,1,1
+0.14583333333333334,0.4791666666666667,1,1
+0.1875,0.4791666666666667,1,1
+0.1875,0.4791666666666667,1,1
+0.22916666666666666,0.4791666666666667,1,1
+0.22916666666666666,0.4791666666666667,1,1
+0.2708333333333333,0.4791666666666667,1,1
+0.2708333333333333,0.4791666666666667,1,1
+0.3125,0.4791666666666667,1,1
+0.3125,0.4791666666666667,1,1
+0.3541666666666667,0.4791666666666667,1,1
+0.3541666666666667,0.4791666666666667,1,1
+0.3958333333333333,0.4791666666666667,1,1
+0.3958333333333333,0.4791666666666667,1,1
+0.4375,0.4791666666666667,1,1
+0.4375,0.4791666666666667,1,1
+0.4791666666666667,0.4791666666666667,1,1
+0.4791666666666667,0.4791666666666667,1,1
+0.5208333333333334,0.4791666666666667,1,1
+0.5208333333333334,0.4791666666666667,1,1
+0.5625,0.4791666666666667,1,1
+0.5625,0.4791666666666667,1,1
+0.6041666666666666,0.4791666666666667,1,1
+0.6041666666666666,0.4791666666666667,1,1
+0.6458333333333334,0.4791666666666667,1,1
+0.6458333333333334,0.4791666666666667,1,1
+0.6875,0.4791666666666667,1,1
+0.6875,0.4791666666666667,1,1
+0.7291666666666666,0.4791666666666667,1,1
+0.7291666666666666,0.4791666666666667,1,1
+0.7708333333333334,0.4791666666666667,1,1
+0.7708333333333334,0.4791666666666667,1,1
+0.8125,0.4791666666666667,1,1
+0.8125,0.4791666666666667,1,1
+0.8541666666666666,0.4791666666666667,1,1
+0.8541666666666666,0.4791666666666667,1,1
+0.8958333333333334,0.4791666666666667,1,1
+0.8958333333333334,0.4791666666666667,1,1
+0.9375,0.4791666666666667,1,1
+0.9375,0.4791666666666667,1,1
+0.9791666666666666,0.4791666666666667,1,1
+0.9791666666666666,0.4791666666666667,1,1
+0.020833333333333332,0.5208333333333334,1,1
+0.020833333333333332,0.5208333333333334,1,1
+0.0625,0.5208333333333334,1,1
+0.0625,0.5208333333333334,1,1
+0.10416666666666667,0.5208333333333334,1,1
+0.10416666666666667,0.5208333333333334,1,1
+0.14583333333333334,0.5208333333333334,1,1
+0.14583333333333334,0.5208333333333334,1,1
+0.1875,0.5208333333333334,1,1
+0.1875,0.5208333333333334,1,1
+0.22916666666666666,0.5208333333333334,1,1
+0.22916666666666666,0.5208333333333334,1,1
+0.2708333333333333,0.5208333333333334,1,1
+0.2708333333333333,0.5208333333333334,1,1
+0.3125,0.5208333333333334,1,1
+0.3125,0.5208333333333334,1,1
+0.3541666666666667,0.5208333333333334,1,1
+0.3541666666666667,0.5208333333333334,1,1
+0.3958333333333333,0.5208333333333334,1,1
+0.3958333333333333,0.5208333333333334,1,1
+0.4375,0.5208333333333334,1,1
+0.4375,0.5208333333333334,1,1
+0.4791666666666667,0.5208333333333334,1,1
+0.4791666666666667,0.5208333333333334,1,1
+0.5208333333333334,0.5208333333333334,1,1
+0.5208333333333334,0.5208333333333334,1,1
+0.5625,0.5208333333333334,1,1
+0.5625,0.5208333333333334,1,1
+0.6041666666666666,0.5208333333333334,1,1
+0.6041666666666666,0.5208333333333334,1,1
+0.6458333333333334,0.5208333333333334,1,1
+0.6458333333333334,0.5208333333333334,1,1
+0.6875,0.5208333333333334,1,1
+0.6875,0.5208333333333334,1,1
+0.7291666666666666,0.5208333333333334,1,1
+0.7291666666666666,0.5208333333333334,1,1
+0.7708333333333334,0.5208333333333334,1,1
+0.7708333333333334,0.5208333333333334,1,1
+0.8125,0.5208333333333334,1,1
+0.8125,0.5208333333333334,1,1
+0.8541666666666666,0.5208333333333334,1,1
+0.8541666666666666,0.5208333333333334,1,1
+0.8958333333333334,0.5208333333333334,1,1
+0.8958333333333334,0.5208333333333334,1,1
+0.9375,0.5208333333333334,1,1
+0.9375,0.5208333333333334,1,1
+0.9791666666666666,0.5208333333333334,1,1
+0.9791666666666666,0.5208333333333334,1,1
+0.020833333333333332,0.5625,1,1
+0.020833333333333332,0.5625,1,1
+0.0625,0.5625,1,1
+0.0625,0.5625,1,1
+0.10416666666666667,0.5625,1,1
+0.10416666666666667,0.5625,1,1
+0.14583333333333334,0.5625,1,1
+0.14583333333333334,0.5625,1,1
+0.1875,0.5625,1,1
+0.1875,0.5625,1,1
+0.22916666666666666,0.5625,1,1
+0.22916666666666666,0.5625,1,1
+0.2708333333333333,0.5625,1,1
+0.2708333333333333,0.5625,1,1
+0.3125,0.5625,1,1
+0.3125,0.5625,1,1
+0.3541666666666667,0.5625,1,1
+0.3541666666666667,0.5625,1,1
+0.3958333333333333,0.5625,1,1
+0.3958333333333333,0.5625,1,1
+0.4375,0.5625,1,1
+0.4375,0.5625,1,1
+0.4791666666666667,0.5625,1,1
+0.4791666666666667,0.5625,1,1
+0.5208333333333334,0.5625,1,1
+0.5208333333333334,0.5625,1,1
+0.5625,0.5625,1,1
+0.5625,0.5625,1,1
+0.6041666666666666,0.5625,1,1
+0.6041666666666666,0.5625,1,1
+0.6458333333333334,0.5625,1,1
+0.6458333333333334,0.5625,1,1
+0.6875,0.5625,1,1
+0.6875,0.5625,1,1
+0.7291666666666666,0.5625,1,1
+0.7291666666666666,0.5625,1,1
+0.7708333333333334,0.5625,1,1
+0.7708333333333334,0.5625,1,1
+0.8125,0.5625,1,1
+0.8125,0.5625,1,1
+0.8541666666666666,0.5625,1,1
+0.8541666666666666,0.5625,1,1
+0.8958333333333334,0.5625,1,1
+0.8958333333333334,0.5625,1,1
+0.9375,0.5625,1,1
+0.9375,0.5625,1,1
+0.9791666666666666,0.5625,1,1
+0.9791666666666666,0.5625,1,1
+0.020833333333333332,0.6041666666666666,1,1
+0.020833333333333332,0.6041666666666666,1,1
+0.0625,0.6041666666666666,1,1
+0.0625,0.6041666666666666,1,1
+0.10416666666666667,0.6041666666666666,1,1
+0.10416666666666667,0.6041666666666666,1,1
+0.14583333333333334,0.6041666666666666,1,1
+0.14583333333333334,0.6041666666666666,1,1
+0.1875,0.6041666666666666,1,1
+0.1875,0.6041666666666666,1,1
+0.22916666666666666,0.6041666666666666,1,1
+0.22916666666666666,0.6041666666666666,1,1
+0.2708333333333333,0.6041666666666666,1,1
+0.2708333333333333,0.6041666666666666,1,1
+0.3125,0.6041666666666666,1,1
+0.3125,0.6041666666666666,1,1
+0.3541666666666667,0.6041666666666666,1,1
+0.3541666666666667,0.6041666666666666,1,1
+0.3958333333333333,0.6041666666666666,1,1
+0.3958333333333333,0.6041666666666666,1,1
+0.4375,0.6041666666666666,1,1
+0.4375,0.6041666666666666,1,1
+0.4791666666666667,0.6041666666666666,1,1
+0.4791666666666667,0.6041666666666666,1,1
+0.5208333333333334,0.6041666666666666,1,1
+0.5208333333333334,0.6041666666666666,1,1
+0.5625,0.6041666666666666,1,1
+0.5625,0.6041666666666666,1,1
+0.6041666666666666,0.6041666666666666,1,1
+0.6041666666666666,0.6041666666666666,1,1
+0.6458333333333334,0.6041666666666666,1,1
+0.6458333333333334,0.6041666666666666,1,1
+0.6875,0.6041666666666666,1,1
+0.6875,0.6041666666666666,1,1
+0.7291666666666666,0.6041666666666666,1,1
+0.7291666666666666,0.6041666666666666,1,1
+0.7708333333333334,0.6041666666666666,1,1
+0.7708333333333334,0.6041666666666666,1,1
+0.8125,0.6041666666666666,1,1
+0.8125,0.6041666666666666,1,1
+0.8541666666666666,0.6041666666666666,1,1
+0.8541666666666666,0.6041666666666666,1,1
+0.8958333333333334,0.6041666666666666,1,1
+0.8958333333333334,0.6041666666666666,1,1
+0.9375,0.6041666666666666,1,1
+0.9375,0.6041666666666666,1,1
+0.9791666666666666,0.6041666666666666,1,1
+0.9791666666666666,0.6041666666666666,1,1
+0.020833333333333332,0.6458333333333334,1,1
+0.020833333333333332,0.6458333333333334,1,1
+0.0625,0.6458333333333334,1,1
+0.0625,0.6458333333333334,1,1
+0.10416666666666667,0.6458333333333334,1,1
+0.10416666666666667,0.6458333333333334,1,1
+0.14583333333333334,0.6458333333333334,1,1
+0.14583333333333334,0.6458333333333334,1,1
+0.1875,0.6458333333333334,1,1
+0.1875,0.6458333333333334,1,1
+0.22916666666666666,0.6458333333333334,1,1
+0.22916666666666666,0.6458333333333334,1,1
+0.2708333333333333,0.6458333333333334,1,1
+0.2708333333333333,0.6458333333333334,1,1
+0.3125,0.6458333333333334,1,1
+0.3125,0.6458333333333334,1,1
+0.3541666666666667,0.6458333333333334,1,1
+0.3541666666666667,0.6458333333333334,1,1
+0.3958333333333333,0.6458333333333334,1,1
+0.3958333333333333,0.6458333333333334,1,1
+0.4375,0.6458333333333334,1,1
+0.4375,0.6458333333333334,1,1
+0.4791666666666667,0.6458333333333334,1,1
+0.4791666666666667,0.6458333333333334,1,1
+0.5208333333333334,0.6458333333333334,1,1
+0.5208333333333334,0.6458333333333334,1,1
+0.5625,0.6458333333333334,1,1
+0.5625,0.6458333333333334,1,1
+0.6041666666666666,0.6458333333333334,1,1
+0.6041666666666666,0.6458333333333334,1,1
+0.6458333333333334,0.6458333333333334,1,1
+0.6458333333333334,0.6458333333333334,1,1
+0.6875,0.6458333333333334,1,1
+0.6875,0.6458333333333334,1,1
+0.7291666666666666,0.6458333333333334,1,1
+0.7291666666666666,0.6458333333333334,1,1
+0.7708333333333334,0.6458333333333334,1,1
+0.7708333333333334,0.6458333333333334,1,1
+0.8125,0.6458333333333334,1,1
+0.8125,0.6458333333333334,1,1
+0.8541666666666666,0.6458333333333334,1,1
+0.8541666666666666,0.6458333333333334,1,1
+0.8958333333333334,0.6458333333333334,1,1
+0.8958333333333334,0.6458333333333334,1,1
+0.9375,0.6458333333333334,1,1
+0.9375,0.6458333333333334,1,1
+0.9791666666666666,0.6458333333333334,1,1
+0.9791666666666666,0.6458333333333334,1,1
+0.020833333333333332,0.6875,1,1
+0.020833333333333332,0.6875,1,1
+0.0625,0.6875,1,1
+0.0625,0.6875,1,1
+0.10416666666666667,0.6875,1,1
+0.10416666666666667,0.6875,1,1
+0.14583333333333334,0.6875,1,1
+0.14583333333333334,0.6875,1,1
+0.1875,0.6875,1,1
+0.1875,0.6875,1,1
+0.22916666666666666,0.6875,1,1
+0.22916666666666666,0.6875,1,1
+0.2708333333333333,0.6875,1,1
+0.2708333333333333,0.6875,1,1
+0.3125,0.6875,1,1
+0.3125,0.6875,1,1
+0.3541666666666667,0.6875,1,1
+0.3541666666666667,0.6875,1,1
+0.3958333333333333,0.6875,1,1
+0.3958333333333333,0.6875,1,1
+0.4375,0.6875,1,1
+0.4375,0.6875,1,1
+0.4791666666666667,0.6875,1,1
+0.4791666666666667,0.6875,1,1
+0.5208333333333334,0.6875,1,1
+0.5208333333333334,0.6875,1,1
+0.5625,0.6875,1,1
+0.5625,0.6875,1,1
+0.6041666666666666,0.6875,1,1
+0.6041666666666666,0.6875,1,1
+0.6458333333333334,0.6875,1,1
+0.6458333333333334,0.6875,1,1
+0.6875,0.6875,1,1
+0.6875,0.6875,1,1
+0.7291666666666666,0.6875,1,1
+0.7291666666666666,0.6875,1,1
+0.7708333333333334,0.6875,1,1
+0.7708333333333334,0.6875,1,1
+0.8125,0.6875,1,1
+0.8125,0.6875,1,1
+0.8541666666666666,0.6875,1,1
+0.8541666666666666,0.6875,1,1
+0.8958333333333334,0.6875,1,1
+0.8958333333333334,0.6875,1,1
+0.9375,0.6875,1,1
+0.9375,0.6875,1,1
+0.9791666666666666,0.6875,1,1
+0.9791666666666666,0.6875,1,1
+0.020833333333333332,0.7291666666666666,1,1
+0.020833333333333332,0.7291666666666666,1,1
+0.0625,0.7291666666666666,1,1
+0.0625,0.7291666666666666,1,1
+0.10416666666666667,0.7291666666666666,1,1
+0.10416666666666667,0.7291666666666666,1,1
+0.14583333333333334,0.7291666666666666,1,1
+0.14583333333333334,0.7291666666666666,1,1
+0.1875,0.7291666666666666,1,1
+0.1875,0.7291666666666666,1,1
+0.22916666666666666,0.7291666666666666,1,1
+0.22916666666666666,0.7291666666666666,1,1
+0.2708333333333333,0.7291666666666666,1,1
+0.2708333333333333,0.7291666666666666,1,1
+0.3125,0.7291666666666666,1,1
+0.3125,0.7291666666666666,1,1
+0.3541666666666667,0.7291666666666666,1,1
+0.3541666666666667,0.7291666666666666,1,1
+0.3958333333333333,0.7291666666666666,1,1
+0.3958333333333333,0.7291666666666666,1,1
+0.4375,0.7291666666666666,1,1
+0.4375,0.7291666666666666,1,1
+0.4791666666666667,0.7291666666666666,1,1
+0.4791666666666667,0.7291666666666666,1,1
+0.5208333333333334,0.7291666666666666,1,1
+0.5208333333333334,0.7291666666666666,1,1
+0.5625,0.7291666666666666,1,1
+0.5625,0.7291666666666666,1,1
+0.6041666666666666,0.7291666666666666,1,1
+0.6041666666666666,0.7291666666666666,1,1
+0.6458333333333334,0.7291666666666666,1,1
+0.6458333333333334,0.7291666666666666,1,1
+0.6875,0.7291666666666666,1,1
+0.6875,0.7291666666666666,1,1
+0.7291666666666666,0.7291666666666666,1,1
+0.7291666666666666,0.7291666666666666,1,1
+0.7708333333333334,0.7291666666666666,1,1
+0.7708333333333334,0.7291666666666666,1,1
+0.8125,0.7291666666666666,1,1
+0.8125,0.7291666666666666,1,1
+0.8541666666666666,0.7291666666666666,1,1
+0.8541666666666666,0.7291666666666666,1,1
+0.8958333333333334,0.7291666666666666,1,1
+0.8958333333333334,0.7291666666666666,1,1
+0.9375,0.7291666666666666,1,1
+0.9375,0.7291666666666666,1,1
+0.9791666666666666,0.7291666666666666,1,1
+0.9791666666666666,0.7291666666666666,1,1
+0.020833333333333332,0.7708333333333334,1,1
+0.020833333333333332,0.7708333333333334,1,1
+0.0625,0.7708333333333334,1,1
+0.0625,0.7708333333333334,1,1
+0.10416666666666667,0.7708333333333334,1,1
+0.10416666666666667,0.7708333333333334,1,1
+0.14583333333333334,0.7708333333333334,1,1
+0.14583333333333334,0.7708333333333334,1,1
+0.1875,0.7708333333333334,1,1
+0.1875,0.7708333333333334,1,1
+0.22916666666666666,0.7708333333333334,1,1
+0.22916666666666666,0.7708333333333334,1,1
+0.2708333333333333,0.7708333333333334,1,1
+0.2708333333333333,0.7708333333333334,1,1
+0.3125,0.7708333333333334,1,1
+0.3125,0.7708333333333334,1,1
+0.3541666666666667,0.7708333333333334,1,1
+0.3541666666666667,0.7708333333333334,1,1
+0.3958333333333333,0.7708333333333334,1,1
+0.3958333333333333,0.7708333333333334,1,1
+0.4375,0.7708333333333334,1,1
+0.4375,0.7708333333333334,1,1
+0.4791666666666667,0.7708333333333334,1,1
+0.4791666666666667,0.7708333333333334,1,1
+0.5208333333333334,0.7708333333333334,1,1
+0.5208333333333334,0.7708333333333334,1,1
+0.5625,0.7708333333333334,1,1
+0.5625,0.7708333333333334,1,1
+0.6041666666666666,0.7708333333333334,1,1
+0.6041666666666666,0.7708333333333334,1,1
+0.6458333333333334,0.7708333333333334,1,1
+0.6458333333333334,0.7708333333333334,1,1
+0.6875,0.7708333333333334,1,1
+0.6875,0.7708333333333334,1,1
+0.7291666666666666,0.7708333333333334,1,1
+0.7291666666666666,0.7708333333333334,1,1
+0.7708333333333334,0.7708333333333334,1,1
+0.7708333333333334,0.7708333333333334,1,1
+0.8125,0.7708333333333334,1,1
+0.8125,0.7708333333333334,1,1
+0.8541666666666666,0.7708333333333334,1,1
+0.8541666666666666,0.7708333333333334,1,1
+0.8958333333333334,0.7708333333333334,1,1
+0.8958333333333334,0.7708333333333334,1,1
+0.9375,0.7708333333333334,1,1
+0.9375,0.7708333333333334,1,1
+0.9791666666666666,0.7708333333333334,1,1
+0.9791666666666666,0.7708333333333334,1,1
+0.020833333333333332,0.8125,1,1
+0.020833333333333332,0.8125,1,1
+0.0625,0.8125,1,1
+0.0625,0.8125,1,1
+0.10416666666666667,0.8125,1,1
+0.10416666666666667,0.8125,1,1
+0.14583333333333334,0.8125,1,1
+0.14583333333333334,0.8125,1,1
+0.1875,0.8125,1,1
+0.1875,0.8125,1,1
+0.22916666666666666,0.8125,1,1
+0.22916666666666666,0.8125,1,1
+0.2708333333333333,0.8125,1,1
+0.2708333333333333,0.8125,1,1
+0.3125,0.8125,1,1
+0.3125,0.8125,1,1
+0.3541666666666667,0.8125,1,1
+0.3541666666666667,0.8125,1,1
+0.3958333333333333,0.8125,1,1
+0.3958333333333333,0.8125,1,1
+0.4375,0.8125,1,1
+0.4375,0.8125,1,1
+0.4791666666666667,0.8125,1,1
+0.4791666666666667,0.8125,1,1
+0.5208333333333334,0.8125,1,1
+0.5208333333333334,0.8125,1,1
+0.5625,0.8125,1,1
+0.5625,0.8125,1,1
+0.6041666666666666,0.8125,1,1
+0.6041666666666666,0.8125,1,1
+0.6458333333333334,0.8125,1,1
+0.6458333333333334,0.8125,1,1
+0.6875,0.8125,1,1
+0.6875,0.8125,1,1
+0.7291666666666666,0.8125,1,1
+0.7291666666666666,0.8125,1,1
+0.7708333333333334,0.8125,1,1
+0.7708333333333334,0.8125,1,1
+0.8125,0.8125,1,1
+0.8125,0.8125,1,1
+0.8541666666666666,0.8125,1,1
+0.8541666666666666,0.8125,1,1
+0.8958333333333334,0.8125,1,1
+0.8958333333333334,0.8125,1,1
+0.9375,0.8125,1,1
+0.9375,0.8125,1,1
+0.9791666666666666,0.8125,1,1
+0.9791666666666666,0.8125,1,1
+0.020833333333333332,0.8541666666666666,1,1
+0.020833333333333332,0.8541666666666666,1,1
+0.0625,0.8541666666666666,1,1
+0.0625,0.8541666666666666,1,1
+0.10416666666666667,0.8541666666666666,1,1
+0.10416666666666667,0.8541666666666666,1,1
+0.14583333333333334,0.8541666666666666,1,1
+0.14583333333333334,0.8541666666666666,1,1
+0.1875,0.8541666666666666,1,1
+0.1875,0.8541666666666666,1,1
+0.22916666666666666,0.8541666666666666,1,1
+0.22916666666666666,0.8541666666666666,1,1
+0.2708333333333333,0.8541666666666666,1,1
+0.2708333333333333,0.8541666666666666,1,1
+0.3125,0.8541666666666666,1,1
+0.3125,0.8541666666666666,1,1
+0.3541666666666667,0.8541666666666666,1,1
+0.3541666666666667,0.8541666666666666,1,1
+0.3958333333333333,0.8541666666666666,1,1
+0.3958333333333333,0.8541666666666666,1,1
+0.4375,0.8541666666666666,1,1
+0.4375,0.8541666666666666,1,1
+0.4791666666666667,0.8541666666666666,1,1
+0.4791666666666667,0.8541666666666666,1,1
+0.5208333333333334,0.8541666666666666,1,1
+0.5208333333333334,0.8541666666666666,1,1
+0.5625,0.8541666666666666,1,1
+0.5625,0.8541666666666666,1,1
+0.6041666666666666,0.8541666666666666,1,1
+0.6041666666666666,0.8541666666666666,1,1
+0.6458333333333334,0.8541666666666666,1,1
+0.6458333333333334,0.8541666666666666,1,1
+0.6875,0.8541666666666666,1,1
+0.6875,0.8541666666666666,1,1
+0.7291666666666666,0.8541666666666666,1,1
+0.7291666666666666,0.8541666666666666,1,1
+0.7708333333333334,0.8541666666666666,1,1
+0.7708333333333334,0.8541666666666666,1,1
+0.8125,0.8541666666666666,1,1
+0.8125,0.8541666666666666,1,1
+0.8541666666666666,0.8541666666666666,1,1
+0.8541666666666666,0.8541666666666666,1,1
+0.8958333333333334,0.8541666666666666,1,1
+0.8958333333333334,0.8541666666666666,1,1
+0.9375,0.8541666666666666,1,1
+0.9375,0.8541666666666666,1,1
+0.9791666666666666,0.8541666666666666,1,1
+0.9791666666666666,0.8541666666666666,1,1
+0.020833333333333332,0.8958333333333334,1,1
+0.020833333333333332,0.8958333333333334,1,1
+0.0625,0.8958333333333334,1,1
+0.0625,0.8958333333333334,1,1
+0.10416666666666667,0.8958333333333334,1,1
+0.10416666666666667,0.8958333333333334,1,1
+0.14583333333333334,0.8958333333333334,1,1
+0.14583333333333334,0.8958333333333334,1,1
+0.1875,0.8958333333333334,1,1
+0.1875,0.8958333333333334,1,1
+0.22916666666666666,0.8958333333333334,1,1
+0.22916666666666666,0.8958333333333334,1,1
+0.2708333333333333,0.8958333333333334,1,1
+0.2708333333333333,0.8958333333333334,1,1
+0.3125,0.8958333333333334,1,1
+0.3125,0.8958333333333334,1,1
+0.3541666666666667,0.8958333333333334,1,1
+0.3541666666666667,0.8958333333333334,1,1
+0.3958333333333333,0.8958333333333334,1,1
+0.3958333333333333,0.8958333333333334,1,1
+0.4375,0.8958333333333334,1,1
+0.4375,0.8958333333333334,1,1
+0.4791666666666667,0.8958333333333334,1,1
+0.4791666666666667,0.8958333333333334,1,1
+0.5208333333333334,0.8958333333333334,1,1
+0.5208333333333334,0.8958333333333334,1,1
+0.5625,0.8958333333333334,1,1
+0.5625,0.8958333333333334,1,1
+0.6041666666666666,0.8958333333333334,1,1
+0.6041666666666666,0.8958333333333334,1,1
+0.6458333333333334,0.8958333333333334,1,1
+0.6458333333333334,0.8958333333333334,1,1
+0.6875,0.8958333333333334,1,1
+0.6875,0.8958333333333334,1,1
+0.7291666666666666,0.8958333333333334,1,1
+0.7291666666666666,0.8958333333333334,1,1
+0.7708333333333334,0.8958333333333334,1,1
+0.7708333333333334,0.8958333333333334,1,1
+0.8125,0.8958333333333334,1,1
+0.8125,0.8958333333333334,1,1
+0.8541666666666666,0.8958333333333334,1,1
+0.8541666666666666,0.8958333333333334,1,1
+0.8958333333333334,0.8958333333333334,1,1
+0.8958333333333334,0.8958333333333334,1,1
+0.9375,0.8958333333333334,1,1
+0.9375,0.8958333333333334,1,1
+0.9791666666666666,0.8958333333333334,1,1
+0.9791666666666666,0.8958333333333334,1,1
+0.020833333333333332,0.9375,1,1
+0.020833333333333332,0.9375,1,1
+0.0625,0.9375,1,1
+0.0625,0.9375,1,1
+0.10416666666666667,0.9375,1,1
+0.10416666666666667,0.9375,1,1
+0.14583333333333334,0.9375,1,1
+0.14583333333333334,0.9375,1,1
+0.1875,0.9375,1,1
+0.1875,0.9375,1,1
+0.22916666666666666,0.9375,1,1
+0.22916666666666666,0.9375,1,1
+0.2708333333333333,0.9375,1,1
+0.2708333333333333,0.9375,1,1
+0.3125,0.9375,1,1
+0.3125,0.9375,1,1
+0.3541666666666667,0.9375,1,1
+0.3541666666666667,0.9375,1,1
+0.3958333333333333,0.9375,1,1
+0.3958333333333333,0.9375,1,1
+0.4375,0.9375,1,1
+0.4375,0.9375,1,1
+0.4791666666666667,0.9375,1,1
+0.4791666666666667,0.9375,1,1
+0.5208333333333334,0.9375,1,1
+0.5208333333333334,0.9375,1,1
+0.5625,0.9375,1,1
+0.5625,0.9375,1,1
+0.6041666666666666,0.9375,1,1
+0.6041666666666666,0.9375,1,1
+0.6458333333333334,0.9375,1,1
+0.6458333333333334,0.9375,1,1
+0.6875,0.9375,1,1
+0.6875,0.9375,1,1
+0.7291666666666666,0.9375,1,1
+0.7291666666666666,0.9375,1,1
+0.7708333333333334,0.9375,1,1
+0.7708333333333334,0.9375,1,1
+0.8125,0.9375,1,1
+0.8125,0.9375,1,1
+0.8541666666666666,0.9375,1,1
+0.8541666666666666,0.9375,1,1
+0.8958333333333334,0.9375,1,1
+0.8958333333333334,0.9375,1,1
+0.9375,0.9375,1,1
+0.9375,0.9375,1,1
+0.9791666666666666,0.9375,1,1
+0.9791666666666666,0.9375,1,1
+0.020833333333333332,0.9791666666666666,1,1
+0.020833333333333332,0.9791666666666666,1,1
+0.0625,0.9791666666666666,1,1
+0.0625,0.9791666666666666,1,1
+0.10416666666666667,0.9791666666666666,1,1
+0.10416666666666667,0.9791666666666666,1,1
+0.14583333333333334,0.9791666666666666,1,1
+0.14583333333333334,0.9791666666666666,1,1
+0.1875,0.9791666666666666,1,1
+0.1875,0.9791666666666666,1,1
+0.22916666666666666,0.9791666666666666,1,1
+0.22916666666666666,0.9791666666666666,1,1
+0.2708333333333333,0.9791666666666666,1,1
+0.2708333333333333,0.9791666666666666,1,1
+0.3125,0.9791666666666666,1,1
+0.3125,0.9791666666666666,1,1
+0.3541666666666667,0.9791666666666666,1,1
+0.3541666666666667,0.9791666666666666,1,1
+0.3958333333333333,0.9791666666666666,1,1
+0.3958333333333333,0.9791666666666666,1,1
+0.4375,0.9791666666666666,1,1
+0.4375,0.9791666666666666,1,1
+0.4791666666666667,0.9791666666666666,1,1
+0.4791666666666667,0.9791666666666666,1,1
+0.5208333333333334,0.9791666666666666,1,1
+0.5208333333333334,0.9791666666666666,1,1
+0.5625,0.9791666666666666,1,1
+0.5625,0.9791666666666666,1,1
+0.6041666666666666,0.9791666666666666,1,1
+0.6041666666666666,0.9791666666666666,1,1
+0.6458333333333334,0.9791666666666666,1,1
+0.6458333333333334,0.9791666666666666,1,1
+0.6875,0.9791666666666666,1,1
+0.6875,0.9791666666666666,1,1
+0.7291666666666666,0.9791666666666666,1,1
+0.7291666666666666,0.9791666666666666,1,1
+0.7708333333333334,0.9791666666666666,1,1
+0.7708333333333334,0.9791666666666666,1,1
+0.8125,0.9791666666666666,1,1
+0.8125,0.9791666666666666,1,1
+0.8541666666666666,0.9791666666666666,1,1
+0.8541666666666666,0.9791666666666666,1,1
+0.8958333333333334,0.9791666666666666,1,1
+0.8958333333333334,0.9791666666666666,1,1
+0.9375,0.9791666666666666,1,1
+0.9375,0.9791666666666666,1,1
+0.9791666666666666,0.9791666666666666,1,1
+0.9791666666666666,0.9791666666666666,1,1
+0.041666666666666664,0.041666666666666664,1,1
+0.041666666666666664,0.041666666666666664,1,1
+0.041666666666666664,0.041666666666666664,1,1
+0.041666666666666664,0.041666666666666664,1,1
+0.041666666666666664,0.041666666666666664,1,1
+0.041666666666666664,0.041666666666666664,1,1
+0.125,0.041666666666666664,1,1
+0.125,0.041666666666666664,1,1
+0.125,0.041666666666666664,1,1
+0.125,0.041666666666666664,1,1
+0.125,0.041666666666666664,1,1
+0.125,0.041666666666666664,1,1
+0.20833333333333334,0.041666666666666664,1,1
+0.20833333333333334,0.041666666666666664,1,1
+0.20833333333333334,0.041666666666666664,1,1
+0.20833333333333334,0.041666666666666664,1,1
+0.20833333333333334,0.041666666666666664,1,1
+0.20833333333333334,0.041666666666666664,1,1
+0.2916666666666667,0.041666666666666664,1,1
+0.2916666666666667,0.041666666666666664,1,1
+0.2916666666666667,0.041666666666666664,1,1
+0.2916666666666667,0.041666666666666664,1,1
+0.2916666666666667,0.041666666666666664,1,1
+0.2916666666666667,0.041666666666666664,1,1
+0.375,0.041666666666666664,1,1
+0.375,0.041666666666666664,1,1
+0.375,0.041666666666666664,1,1
+0.375,0.041666666666666664,1,1
+0.375,0.041666666666666664,1,1
+0.375,0.041666666666666664,1,1
+0.4583333333333333,0.041666666666666664,1,1
+0.4583333333333333,0.041666666666666664,1,1
+0.4583333333333333,0.041666666666666664,1,1
+0.4583333333333333,0.041666666666666664,1,1
+0.4583333333333333,0.041666666666666664,1,1
+0.4583333333333333,0.041666666666666664,1,1
+0.5416666666666666,0.041666666666666664,1,1
+0.5416666666666666,0.041666666666666664,1,1
+0.5416666666666666,0.041666666666666664,1,1
+0.5416666666666666,0.041666666666666664,1,1
+0.5416666666666666,0.041666666666666664,1,1
+0.5416666666666666,0.041666666666666664,1,1
+0.625,0.041666666666666664,1,1
+0.625,0.041666666666666664,1,1
+0.625,0.041666666666666664,1,1
+0.625,0.041666666666666664,1,1
+0.625,0.041666666666666664,1,1
+0.625,0.041666666666666664,1,1
+0.7083333333333334,0.041666666666666664,1,1
+0.7083333333333334,0.041666666666666664,1,1
+0.7083333333333334,0.041666666666666664,1,1
+0.7083333333333334,0.041666666666666664,1,1
+0.7083333333333334,0.041666666666666664,1,1
+0.7083333333333334,0.041666666666666664,1,1
+0.7916666666666666,0.041666666666666664,1,1
+0.7916666666666666,0.041666666666666664,1,1
+0.7916666666666666,0.041666666666666664,1,1
+0.7916666666666666,0.041666666666666664,1,1
+0.7916666666666666,0.041666666666666664,1,1
+0.7916666666666666,0.041666666666666664,1,1
+0.875,0.041666666666666664,1,1
+0.875,0.041666666666666664,1,1
+0.875,0.041666666666666664,1,1
+0.875,0.041666666666666664,1,1
+0.875,0.041666666666666664,1,1
+0.875,0.041666666666666664,1,1
+0.9583333333333334,0.041666666666666664,1,1
+0.9583333333333334,0.041666666666666664,1,1
+0.9583333333333334,0.041666666666666664,1,1
+0.9583333333333334,0.041666666666666664,1,1
+0.9583333333333334,0.041666666666666664,1,1
+0.9583333333333334,0.041666666666666664,1,1
+0.041666666666666664,0.125,1,1
+0.041666666666666664,0.125,1,1
+0.041666666666666664,0.125,1,1
+0.041666666666666664,0.125,1,1
+0.041666666666666664,0.125,1,1
+0.041666666666666664,0.125,1,1
+0.125,0.125,1,1
+0.125,0.125,1,1
+0.125,0.125,1,1
+0.125,0.125,1,1
+0.125,0.125,1,1
+0.125,0.125,1,1
+0.20833333333333334,0.125,1,1
+0.20833333333333334,0.125,1,1
+0.20833333333333334,0.125,1,1
+0.20833333333333334,0.125,1,1
+0.20833333333333334,0.125,1,1
+0.20833333333333334,0.125,1,1
+0.2916666666666667,0.125,1,1
+0.2916666666666667,0.125,1,1
+0.2916666666666667,0.125,1,1
+0.2916666666666667,0.125,1,1
+0.2916666666666667,0.125,1,1
+0.2916666666666667,0.125,1,1
+0.375,0.125,1,1
+0.375,0.125,1,1
+0.375,0.125,1,1
+0.375,0.125,1,1
+0.375,0.125,1,1
+0.375,0.125,1,1
+0.4583333333333333,0.125,1,1
+0.4583333333333333,0.125,1,1
+0.4583333333333333,0.125,1,1
+0.4583333333333333,0.125,1,1
+0.4583333333333333,0.125,1,1
+0.4583333333333333,0.125,1,1
+0.5416666666666666,0.125,1,1
+0.5416666666666666,0.125,1,1
+0.5416666666666666,0.125,1,1
+0.5416666666666666,0.125,1,1
+0.5416666666666666,0.125,1,1
+0.5416666666666666,0.125,1,1
+0.625,0.125,1,1
+0.625,0.125,1,1
+0.625,0.125,1,1
+0.625,0.125,1,1
+0.625,0.125,1,1
+0.625,0.125,1,1
+0.7083333333333334,0.125,1,1
+0.7083333333333334,0.125,1,1
+0.7083333333333334,0.125,1,1
+0.7083333333333334,0.125,1,1
+0.7083333333333334,0.125,1,1
+0.7083333333333334,0.125,1,1
+0.7916666666666666,0.125,1,1
+0.7916666666666666,0.125,1,1
+0.7916666666666666,0.125,1,1
+0.7916666666666666,0.125,1,1
+0.7916666666666666,0.125,1,1
+0.7916666666666666,0.125,1,1
+0.875,0.125,1,1
+0.875,0.125,1,1
+0.875,0.125,1,1
+0.875,0.125,1,1
+0.875,0.125,1,1
+0.875,0.125,1,1
+0.9583333333333334,0.125,1,1
+0.9583333333333334,0.125,1,1
+0.9583333333333334,0.125,1,1
+0.9583333333333334,0.125,1,1
+0.9583333333333334,0.125,1,1
+0.9583333333333334,0.125,1,1
+0.041666666666666664,0.20833333333333334,1,1
+0.041666666666666664,0.20833333333333334,1,1
+0.041666666666666664,0.20833333333333334,1,1
+0.041666666666666664,0.20833333333333334,1,1
+0.041666666666666664,0.20833333333333334,1,1
+0.041666666666666664,0.20833333333333334,1,1
+0.125,0.20833333333333334,1,1
+0.125,0.20833333333333334,1,1
+0.125,0.20833333333333334,1,1
+0.125,0.20833333333333334,1,1
+0.125,0.20833333333333334,1,1
+0.125,0.20833333333333334,1,1
+0.20833333333333334,0.20833333333333334,1,1
+0.20833333333333334,0.20833333333333334,1,1
+0.20833333333333334,0.20833333333333334,1,1
+0.20833333333333334,0.20833333333333334,1,1
+0.20833333333333334,0.20833333333333334,1,1
+0.20833333333333334,0.20833333333333334,1,1
+0.2916666666666667,0.20833333333333334,1,1
+0.2916666666666667,0.20833333333333334,1,1
+0.2916666666666667,0.20833333333333334,1,1
+0.2916666666666667,0.20833333333333334,1,1
+0.2916666666666667,0.20833333333333334,1,1
+0.2916666666666667,0.20833333333333334,1,1
+0.375,0.20833333333333334,1,1
+0.375,0.20833333333333334,1,1
+0.375,0.20833333333333334,1,1
+0.375,0.20833333333333334,1,1
+0.375,0.20833333333333334,1,1
+0.375,0.20833333333333334,1,1
+0.4583333333333333,0.20833333333333334,1,1
+0.4583333333333333,0.20833333333333334,1,1
+0.4583333333333333,0.20833333333333334,1,1
+0.4583333333333333,0.20833333333333334,1,1
+0.4583333333333333,0.20833333333333334,1,1
+0.4583333333333333,0.20833333333333334,1,1
+0.5416666666666666,0.20833333333333334,1,1
+0.5416666666666666,0.20833333333333334,1,1
+0.5416666666666666,0.20833333333333334,1,1
+0.5416666666666666,0.20833333333333334,1,1
+0.5416666666666666,0.20833333333333334,1,1
+0.5416666666666666,0.20833333333333334,1,1
+0.625,0.20833333333333334,1,1
+0.625,0.20833333333333334,1,1
+0.625,0.20833333333333334,1,1
+0.625,0.20833333333333334,1,1
+0.625,0.20833333333333334,1,1
+0.625,0.20833333333333334,1,1
+0.7083333333333334,0.20833333333333334,1,1
+0.7083333333333334,0.20833333333333334,1,1
+0.7083333333333334,0.20833333333333334,1,1
+0.7083333333333334,0.20833333333333334,1,1
+0.7083333333333334,0.20833333333333334,1,1
+0.7083333333333334,0.20833333333333334,1,1
+0.7916666666666666,0.20833333333333334,1,1
+0.7916666666666666,0.20833333333333334,1,1
+0.7916666666666666,0.20833333333333334,1,1
+0.7916666666666666,0.20833333333333334,1,1
+0.7916666666666666,0.20833333333333334,1,1
+0.7916666666666666,0.20833333333333334,1,1
+0.875,0.20833333333333334,1,1
+0.875,0.20833333333333334,1,1
+0.875,0.20833333333333334,1,1
+0.875,0.20833333333333334,1,1
+0.875,0.20833333333333334,1,1
+0.875,0.20833333333333334,1,1
+0.9583333333333334,0.20833333333333334,1,1
+0.9583333333333334,0.20833333333333334,1,1
+0.9583333333333334,0.20833333333333334,1,1
+0.9583333333333334,0.20833333333333334,1,1
+0.9583333333333334,0.20833333333333334,1,1
+0.9583333333333334,0.20833333333333334,1,1
+0.041666666666666664,0.2916666666666667,1,1
+0.041666666666666664,0.2916666666666667,1,1
+0.041666666666666664,0.2916666666666667,1,1
+0.041666666666666664,0.2916666666666667,1,1
+0.041666666666666664,0.2916666666666667,1,1
+0.041666666666666664,0.2916666666666667,1,1
+0.125,0.2916666666666667,1,1
+0.125,0.2916666666666667,1,1
+0.125,0.2916666666666667,1,1
+0.125,0.2916666666666667,1,1
+0.125,0.2916666666666667,1,1
+0.125,0.2916666666666667,1,1
+0.20833333333333334,0.2916666666666667,1,1
+0.20833333333333334,0.2916666666666667,1,1
+0.20833333333333334,0.2916666666666667,1,1
+0.20833333333333334,0.2916666666666667,1,1
+0.20833333333333334,0.2916666666666667,1,1
+0.20833333333333334,0.2916666666666667,1,1
+0.2916666666666667,0.2916666666666667,1,1
+0.2916666666666667,0.2916666666666667,1,1
+0.2916666666666667,0.2916666666666667,1,1
+0.2916666666666667,0.2916666666666667,1,1
+0.2916666666666667,0.2916666666666667,1,1
+0.2916666666666667,0.2916666666666667,1,1
+0.375,0.2916666666666667,1,1
+0.375,0.2916666666666667,1,1
+0.375,0.2916666666666667,1,1
+0.375,0.2916666666666667,1,1
+0.375,0.2916666666666667,1,1
+0.375,0.2916666666666667,1,1
+0.4583333333333333,0.2916666666666667,1,1
+0.4583333333333333,0.2916666666666667,1,1
+0.4583333333333333,0.2916666666666667,1,1
+0.4583333333333333,0.2916666666666667,1,1
+0.4583333333333333,0.2916666666666667,1,1
+0.4583333333333333,0.2916666666666667,1,1
+0.5416666666666666,0.2916666666666667,1,1
+0.5416666666666666,0.2916666666666667,1,1
+0.5416666666666666,0.2916666666666667,1,1
+0.5416666666666666,0.2916666666666667,1,1
+0.5416666666666666,0.2916666666666667,1,1
+0.5416666666666666,0.2916666666666667,1,1
+0.625,0.2916666666666667,1,1
+0.625,0.2916666666666667,1,1
+0.625,0.2916666666666667,1,1
+0.625,0.2916666666666667,1,1
+0.625,0.2916666666666667,1,1
+0.625,0.2916666666666667,1,1
+0.7083333333333334,0.2916666666666667,1,1
+0.7083333333333334,0.2916666666666667,1,1
+0.7083333333333334,0.2916666666666667,1,1
+0.7083333333333334,0.2916666666666667,1,1
+0.7083333333333334,0.2916666666666667,1,1
+0.7083333333333334,0.2916666666666667,1,1
+0.7916666666666666,0.2916666666666667,1,1
+0.7916666666666666,0.2916666666666667,1,1
+0.7916666666666666,0.2916666666666667,1,1
+0.7916666666666666,0.2916666666666667,1,1
+0.7916666666666666,0.2916666666666667,1,1
+0.7916666666666666,0.2916666666666667,1,1
+0.875,0.2916666666666667,1,1
+0.875,0.2916666666666667,1,1
+0.875,0.2916666666666667,1,1
+0.875,0.2916666666666667,1,1
+0.875,0.2916666666666667,1,1
+0.875,0.2916666666666667,1,1
+0.9583333333333334,0.2916666666666667,1,1
+0.9583333333333334,0.2916666666666667,1,1
+0.9583333333333334,0.2916666666666667,1,1
+0.9583333333333334,0.2916666666666667,1,1
+0.9583333333333334,0.2916666666666667,1,1
+0.9583333333333334,0.2916666666666667,1,1
+0.041666666666666664,0.375,1,1
+0.041666666666666664,0.375,1,1
+0.041666666666666664,0.375,1,1
+0.041666666666666664,0.375,1,1
+0.041666666666666664,0.375,1,1
+0.041666666666666664,0.375,1,1
+0.125,0.375,1,1
+0.125,0.375,1,1
+0.125,0.375,1,1
+0.125,0.375,1,1
+0.125,0.375,1,1
+0.125,0.375,1,1
+0.20833333333333334,0.375,1,1
+0.20833333333333334,0.375,1,1
+0.20833333333333334,0.375,1,1
+0.20833333333333334,0.375,1,1
+0.20833333333333334,0.375,1,1
+0.20833333333333334,0.375,1,1
+0.2916666666666667,0.375,1,1
+0.2916666666666667,0.375,1,1
+0.2916666666666667,0.375,1,1
+0.2916666666666667,0.375,1,1
+0.2916666666666667,0.375,1,1
+0.2916666666666667,0.375,1,1
+0.375,0.375,1,1
+0.375,0.375,1,1
+0.375,0.375,1,1
+0.375,0.375,1,1
+0.375,0.375,1,1
+0.375,0.375,1,1
+0.4583333333333333,0.375,1,1
+0.4583333333333333,0.375,1,1
+0.4583333333333333,0.375,1,1
+0.4583333333333333,0.375,1,1
+0.4583333333333333,0.375,1,1
+0.4583333333333333,0.375,1,1
+0.5416666666666666,0.375,1,1
+0.5416666666666666,0.375,1,1
+0.5416666666666666,0.375,1,1
+0.5416666666666666,0.375,1,1
+0.5416666666666666,0.375,1,1
+0.5416666666666666,0.375,1,1
+0.625,0.375,1,1
+0.625,0.375,1,1
+0.625,0.375,1,1
+0.625,0.375,1,1
+0.625,0.375,1,1
+0.625,0.375,1,1
+0.7083333333333334,0.375,1,1
+0.7083333333333334,0.375,1,1
+0.7083333333333334,0.375,1,1
+0.7083333333333334,0.375,1,1
+0.7083333333333334,0.375,1,1
+0.7083333333333334,0.375,1,1
+0.7916666666666666,0.375,1,1
+0.7916666666666666,0.375,1,1
+0.7916666666666666,0.375,1,1
+0.7916666666666666,0.375,1,1
+0.7916666666666666,0.375,1,1
+0.7916666666666666,0.375,1,1
+0.875,0.375,1,1
+0.875,0.375,1,1
+0.875,0.375,1,1
+0.875,0.375,1,1
+0.875,0.375,1,1
+0.875,0.375,1,1
+0.9583333333333334,0.375,1,1
+0.9583333333333334,0.375,1,1
+0.9583333333333334,0.375,1,1
+0.9583333333333334,0.375,1,1
+0.9583333333333334,0.375,1,1
+0.9583333333333334,0.375,1,1
+0.041666666666666664,0.4583333333333333,1,1
+0.041666666666666664,0.4583333333333333,1,1
+0.041666666666666664,0.4583333333333333,1,1
+0.041666666666666664,0.4583333333333333,1,1
+0.041666666666666664,0.4583333333333333,1,1
+0.041666666666666664,0.4583333333333333,1,1
+0.125,0.4583333333333333,1,1
+0.125,0.4583333333333333,1,1
+0.125,0.4583333333333333,1,1
+0.125,0.4583333333333333,1,1
+0.125,0.4583333333333333,1,1
+0.125,0.4583333333333333,1,1
+0.20833333333333334,0.4583333333333333,1,1
+0.20833333333333334,0.4583333333333333,1,1
+0.20833333333333334,0.4583333333333333,1,1
+0.20833333333333334,0.4583333333333333,1,1
+0.20833333333333334,0.4583333333333333,1,1
+0.20833333333333334,0.4583333333333333,1,1
+0.2916666666666667,0.4583333333333333,1,1
+0.2916666666666667,0.4583333333333333,1,1
+0.2916666666666667,0.4583333333333333,1,1
+0.2916666666666667,0.4583333333333333,1,1
+0.2916666666666667,0.4583333333333333,1,1
+0.2916666666666667,0.4583333333333333,1,1
+0.375,0.4583333333333333,1,1
+0.375,0.4583333333333333,1,1
+0.375,0.4583333333333333,1,1
+0.375,0.4583333333333333,1,1
+0.375,0.4583333333333333,1,1
+0.375,0.4583333333333333,1,1
+0.4583333333333333,0.4583333333333333,1,1
+0.4583333333333333,0.4583333333333333,1,1
+0.4583333333333333,0.4583333333333333,1,1
+0.4583333333333333,0.4583333333333333,1,1
+0.4583333333333333,0.4583333333333333,1,1
+0.4583333333333333,0.4583333333333333,1,1
+0.5416666666666666,0.4583333333333333,1,1
+0.5416666666666666,0.4583333333333333,1,1
+0.5416666666666666,0.4583333333333333,1,1
+0.5416666666666666,0.4583333333333333,1,1
+0.5416666666666666,0.4583333333333333,1,1
+0.5416666666666666,0.4583333333333333,1,1
+0.625,0.4583333333333333,1,1
+0.625,0.4583333333333333,1,1
+0.625,0.4583333333333333,1,1
+0.625,0.4583333333333333,1,1
+0.625,0.4583333333333333,1,1
+0.625,0.4583333333333333,1,1
+0.7083333333333334,0.4583333333333333,1,1
+0.7083333333333334,0.4583333333333333,1,1
+0.7083333333333334,0.4583333333333333,1,1
+0.7083333333333334,0.4583333333333333,1,1
+0.7083333333333334,0.4583333333333333,1,1
+0.7083333333333334,0.4583333333333333,1,1
+0.7916666666666666,0.4583333333333333,1,1
+0.7916666666666666,0.4583333333333333,1,1
+0.7916666666666666,0.4583333333333333,1,1
+0.7916666666666666,0.4583333333333333,1,1
+0.7916666666666666,0.4583333333333333,1,1
+0.7916666666666666,0.4583333333333333,1,1
+0.875,0.4583333333333333,1,1
+0.875,0.4583333333333333,1,1
+0.875,0.4583333333333333,1,1
+0.875,0.4583333333333333,1,1
+0.875,0.4583333333333333,1,1
+0.875,0.4583333333333333,1,1
+0.9583333333333334,0.4583333333333333,1,1
+0.9583333333333334,0.4583333333333333,1,1
+0.9583333333333334,0.4583333333333333,1,1
+0.9583333333333334,0.4583333333333333,1,1
+0.9583333333333334,0.4583333333333333,1,1
+0.9583333333333334,0.4583333333333333,1,1
+0.041666666666666664,0.5416666666666666,1,1
+0.041666666666666664,0.5416666666666666,1,1
+0.041666666666666664,0.5416666666666666,1,1
+0.041666666666666664,0.5416666666666666,1,1
+0.041666666666666664,0.5416666666666666,1,1
+0.041666666666666664,0.5416666666666666,1,1
+0.125,0.5416666666666666,1,1
+0.125,0.5416666666666666,1,1
+0.125,0.5416666666666666,1,1
+0.125,0.5416666666666666,1,1
+0.125,0.5416666666666666,1,1
+0.125,0.5416666666666666,1,1
+0.20833333333333334,0.5416666666666666,1,1
+0.20833333333333334,0.5416666666666666,1,1
+0.20833333333333334,0.5416666666666666,1,1
+0.20833333333333334,0.5416666666666666,1,1
+0.20833333333333334,0.5416666666666666,1,1
+0.20833333333333334,0.5416666666666666,1,1
+0.2916666666666667,0.5416666666666666,1,1
+0.2916666666666667,0.5416666666666666,1,1
+0.2916666666666667,0.5416666666666666,1,1
+0.2916666666666667,0.5416666666666666,1,1
+0.2916666666666667,0.5416666666666666,1,1
+0.2916666666666667,0.5416666666666666,1,1
+0.375,0.5416666666666666,1,1
+0.375,0.5416666666666666,1,1
+0.375,0.5416666666666666,1,1
+0.375,0.5416666666666666,1,1
+0.375,0.5416666666666666,1,1
+0.375,0.5416666666666666,1,1
+0.4583333333333333,0.5416666666666666,1,1
+0.4583333333333333,0.5416666666666666,1,1
+0.4583333333333333,0.5416666666666666,1,1
+0.4583333333333333,0.5416666666666666,1,1
+0.4583333333333333,0.5416666666666666,1,1
+0.4583333333333333,0.5416666666666666,1,1
+0.5416666666666666,0.5416666666666666,1,1
+0.5416666666666666,0.5416666666666666,1,1
+0.5416666666666666,0.5416666666666666,1,1
+0.5416666666666666,0.5416666666666666,1,1
+0.5416666666666666,0.5416666666666666,1,1
+0.5416666666666666,0.5416666666666666,1,1
+0.625,0.5416666666666666,1,1
+0.625,0.5416666666666666,1,1
+0.625,0.5416666666666666,1,1
+0.625,0.5416666666666666,1,1
+0.625,0.5416666666666666,1,1
+0.625,0.5416666666666666,1,1
+0.7083333333333334,0.5416666666666666,1,1
+0.7083333333333334,0.5416666666666666,1,1
+0.7083333333333334,0.5416666666666666,1,1
+0.7083333333333334,0.5416666666666666,1,1
+0.7083333333333334,0.5416666666666666,1,1
+0.7083333333333334,0.5416666666666666,1,1
+0.7916666666666666,0.5416666666666666,1,1
+0.7916666666666666,0.5416666666666666,1,1
+0.7916666666666666,0.5416666666666666,1,1
+0.7916666666666666,0.5416666666666666,1,1
+0.7916666666666666,0.5416666666666666,1,1
+0.7916666666666666,0.5416666666666666,1,1
+0.875,0.5416666666666666,1,1
+0.875,0.5416666666666666,1,1
+0.875,0.5416666666666666,1,1
+0.875,0.5416666666666666,1,1
+0.875,0.5416666666666666,1,1
+0.875,0.5416666666666666,1,1
+0.9583333333333334,0.5416666666666666,1,1
+0.9583333333333334,0.5416666666666666,1,1
+0.9583333333333334,0.5416666666666666,1,1
+0.9583333333333334,0.5416666666666666,1,1
+0.9583333333333334,0.5416666666666666,1,1
+0.9583333333333334,0.5416666666666666,1,1
+0.041666666666666664,0.625,1,1
+0.041666666666666664,0.625,1,1
+0.041666666666666664,0.625,1,1
+0.041666666666666664,0.625,1,1
+0.041666666666666664,0.625,1,1
+0.041666666666666664,0.625,1,1
+0.125,0.625,1,1
+0.125,0.625,1,1
+0.125,0.625,1,1
+0.125,0.625,1,1
+0.125,0.625,1,1
+0.125,0.625,1,1
+0.20833333333333334,0.625,1,1
+0.20833333333333334,0.625,1,1
+0.20833333333333334,0.625,1,1
+0.20833333333333334,0.625,1,1
+0.20833333333333334,0.625,1,1
+0.20833333333333334,0.625,1,1
+0.2916666666666667,0.625,1,1
+0.2916666666666667,0.625,1,1
+0.2916666666666667,0.625,1,1
+0.2916666666666667,0.625,1,1
+0.2916666666666667,0.625,1,1
+0.2916666666666667,0.625,1,1
+0.375,0.625,1,1
+0.375,0.625,1,1
+0.375,0.625,1,1
+0.375,0.625,1,1
+0.375,0.625,1,1
+0.375,0.625,1,1
+0.4583333333333333,0.625,1,1
+0.4583333333333333,0.625,1,1
+0.4583333333333333,0.625,1,1
+0.4583333333333333,0.625,1,1
+0.4583333333333333,0.625,1,1
+0.4583333333333333,0.625,1,1
+0.5416666666666666,0.625,1,1
+0.5416666666666666,0.625,1,1
+0.5416666666666666,0.625,1,1
+0.5416666666666666,0.625,1,1
+0.5416666666666666,0.625,1,1
+0.5416666666666666,0.625,1,1
+0.625,0.625,1,1
+0.625,0.625,1,1
+0.625,0.625,1,1
+0.625,0.625,1,1
+0.625,0.625,1,1
+0.625,0.625,1,1
+0.7083333333333334,0.625,1,1
+0.7083333333333334,0.625,1,1
+0.7083333333333334,0.625,1,1
+0.7083333333333334,0.625,1,1
+0.7083333333333334,0.625,1,1
+0.7083333333333334,0.625,1,1
+0.7916666666666666,0.625,1,1
+0.7916666666666666,0.625,1,1
+0.7916666666666666,0.625,1,1
+0.7916666666666666,0.625,1,1
+0.7916666666666666,0.625,1,1
+0.7916666666666666,0.625,1,1
+0.875,0.625,1,1
+0.875,0.625,1,1
+0.875,0.625,1,1
+0.875,0.625,1,1
+0.875,0.625,1,1
+0.875,0.625,1,1
+0.9583333333333334,0.625,1,1
+0.9583333333333334,0.625,1,1
+0.9583333333333334,0.625,1,1
+0.9583333333333334,0.625,1,1
+0.9583333333333334,0.625,1,1
+0.9583333333333334,0.625,1,1
+0.041666666666666664,0.7083333333333334,1,1
+0.041666666666666664,0.7083333333333334,1,1
+0.041666666666666664,0.7083333333333334,1,1
+0.041666666666666664,0.7083333333333334,1,1
+0.041666666666666664,0.7083333333333334,1,1
+0.041666666666666664,0.7083333333333334,1,1
+0.125,0.7083333333333334,1,1
+0.125,0.7083333333333334,1,1
+0.125,0.7083333333333334,1,1
+0.125,0.7083333333333334,1,1
+0.125,0.7083333333333334,1,1
+0.125,0.7083333333333334,1,1
+0.20833333333333334,0.7083333333333334,1,1
+0.20833333333333334,0.7083333333333334,1,1
+0.20833333333333334,0.7083333333333334,1,1
+0.20833333333333334,0.7083333333333334,1,1
+0.20833333333333334,0.7083333333333334,1,1
+0.20833333333333334,0.7083333333333334,1,1
+0.2916666666666667,0.7083333333333334,1,1
+0.2916666666666667,0.7083333333333334,1,1
+0.2916666666666667,0.7083333333333334,1,1
+0.2916666666666667,0.7083333333333334,1,1
+0.2916666666666667,0.7083333333333334,1,1
+0.2916666666666667,0.7083333333333334,1,1
+0.375,0.7083333333333334,1,1
+0.375,0.7083333333333334,1,1
+0.375,0.7083333333333334,1,1
+0.375,0.7083333333333334,1,1
+0.375,0.7083333333333334,1,1
+0.375,0.7083333333333334,1,1
+0.4583333333333333,0.7083333333333334,1,1
+0.4583333333333333,0.7083333333333334,1,1
+0.4583333333333333,0.7083333333333334,1,1
+0.4583333333333333,0.7083333333333334,1,1
+0.4583333333333333,0.7083333333333334,1,1
+0.4583333333333333,0.7083333333333334,1,1
+0.5416666666666666,0.7083333333333334,1,1
+0.5416666666666666,0.7083333333333334,1,1
+0.5416666666666666,0.7083333333333334,1,1
+0.5416666666666666,0.7083333333333334,1,1
+0.5416666666666666,0.7083333333333334,1,1
+0.5416666666666666,0.7083333333333334,1,1
+0.625,0.7083333333333334,1,1
+0.625,0.7083333333333334,1,1
+0.625,0.7083333333333334,1,1
+0.625,0.7083333333333334,1,1
+0.625,0.7083333333333334,1,1
+0.625,0.7083333333333334,1,1
+0.7083333333333334,0.7083333333333334,1,1
+0.7083333333333334,0.7083333333333334,1,1
+0.7083333333333334,0.7083333333333334,1,1
+0.7083333333333334,0.7083333333333334,1,1
+0.7083333333333334,0.7083333333333334,1,1
+0.7083333333333334,0.7083333333333334,1,1
+0.7916666666666666,0.7083333333333334,1,1
+0.7916666666666666,0.7083333333333334,1,1
+0.7916666666666666,0.7083333333333334,1,1
+0.7916666666666666,0.7083333333333334,1,1
+0.7916666666666666,0.7083333333333334,1,1
+0.7916666666666666,0.7083333333333334,1,1
+0.875,0.7083333333333334,1,1
+0.875,0.7083333333333334,1,1
+0.875,0.7083333333333334,1,1
+0.875,0.7083333333333334,1,1
+0.875,0.7083333333333334,1,1
+0.875,0.7083333333333334,1,1
+0.9583333333333334,0.7083333333333334,1,1
+0.9583333333333334,0.7083333333333334,1,1
+0.9583333333333334,0.7083333333333334,1,1
+0.9583333333333334,0.7083333333333334,1,1
+0.9583333333333334,0.7083333333333334,1,1
+0.9583333333333334,0.7083333333333334,1,1
+0.041666666666666664,0.7916666666666666,1,1
+0.041666666666666664,0.7916666666666666,1,1
+0.041666666666666664,0.7916666666666666,1,1
+0.041666666666666664,0.7916666666666666,1,1
+0.041666666666666664,0.7916666666666666,1,1
+0.041666666666666664,0.7916666666666666,1,1
+0.125,0.7916666666666666,1,1
+0.125,0.7916666666666666,1,1
+0.125,0.7916666666666666,1,1
+0.125,0.7916666666666666,1,1
+0.125,0.7916666666666666,1,1
+0.125,0.7916666666666666,1,1
+0.20833333333333334,0.7916666666666666,1,1
+0.20833333333333334,0.7916666666666666,1,1
+0.20833333333333334,0.7916666666666666,1,1
+0.20833333333333334,0.7916666666666666,1,1
+0.20833333333333334,0.7916666666666666,1,1
+0.20833333333333334,0.7916666666666666,1,1
+0.2916666666666667,0.7916666666666666,1,1
+0.2916666666666667,0.7916666666666666,1,1
+0.2916666666666667,0.7916666666666666,1,1
+0.2916666666666667,0.7916666666666666,1,1
+0.2916666666666667,0.7916666666666666,1,1
+0.2916666666666667,0.7916666666666666,1,1
+0.375,0.7916666666666666,1,1
+0.375,0.7916666666666666,1,1
+0.375,0.7916666666666666,1,1
+0.375,0.7916666666666666,1,1
+0.375,0.7916666666666666,1,1
+0.375,0.7916666666666666,1,1
+0.4583333333333333,0.7916666666666666,1,1
+0.4583333333333333,0.7916666666666666,1,1
+0.4583333333333333,0.7916666666666666,1,1
+0.4583333333333333,0.7916666666666666,1,1
+0.4583333333333333,0.7916666666666666,1,1
+0.4583333333333333,0.7916666666666666,1,1
+0.5416666666666666,0.7916666666666666,1,1
+0.5416666666666666,0.7916666666666666,1,1
+0.5416666666666666,0.7916666666666666,1,1
+0.5416666666666666,0.7916666666666666,1,1
+0.5416666666666666,0.7916666666666666,1,1
+0.5416666666666666,0.7916666666666666,1,1
+0.625,0.7916666666666666,1,1
+0.625,0.7916666666666666,1,1
+0.625,0.7916666666666666,1,1
+0.625,0.7916666666666666,1,1
+0.625,0.7916666666666666,1,1
+0.625,0.7916666666666666,1,1
+0.7083333333333334,0.7916666666666666,1,1
+0.7083333333333334,0.7916666666666666,1,1
+0.7083333333333334,0.7916666666666666,1,1
+0.7083333333333334,0.7916666666666666,1,1
+0.7083333333333334,0.7916666666666666,1,1
+0.7083333333333334,0.7916666666666666,1,1
+0.7916666666666666,0.7916666666666666,1,1
+0.7916666666666666,0.7916666666666666,1,1
+0.7916666666666666,0.7916666666666666,1,1
+0.7916666666666666,0.7916666666666666,1,1
+0.7916666666666666,0.7916666666666666,1,1
+0.7916666666666666,0.7916666666666666,1,1
+0.875,0.7916666666666666,1,1
+0.875,0.7916666666666666,1,1
+0.875,0.7916666666666666,1,1
+0.875,0.7916666666666666,1,1
+0.875,0.7916666666666666,1,1
+0.875,0.7916666666666666,1,1
+0.9583333333333334,0.7916666666666666,1,1
+0.9583333333333334,0.7916666666666666,1,1
+0.9583333333333334,0.7916666666666666,1,1
+0.9583333333333334,0.7916666666666666,1,1
+0.9583333333333334,0.7916666666666666,1,1
+0.9583333333333334,0.7916666666666666,1,1
+0.041666666666666664,0.875,1,1
+0.041666666666666664,0.875,1,1
+0.041666666666666664,0.875,1,1
+0.041666666666666664,0.875,1,1
+0.041666666666666664,0.875,1,1
+0.041666666666666664,0.875,1,1
+0.125,0.875,1,1
+0.125,0.875,1,1
+0.125,0.875,1,1
+0.125,0.875,1,1
+0.125,0.875,1,1
+0.125,0.875,1,1
+0.20833333333333334,0.875,1,1
+0.20833333333333334,0.875,1,1
+0.20833333333333334,0.875,1,1
+0.20833333333333334,0.875,1,1
+0.20833333333333334,0.875,1,1
+0.20833333333333334,0.875,1,1
+0.2916666666666667,0.875,1,1
+0.2916666666666667,0.875,1,1
+0.2916666666666667,0.875,1,1
+0.2916666666666667,0.875,1,1
+0.2916666666666667,0.875,1,1
+0.2916666666666667,0.875,1,1
+0.375,0.875,1,1
+0.375,0.875,1,1
+0.375,0.875,1,1
+0.375,0.875,1,1
+0.375,0.875,1,1
+0.375,0.875,1,1
+0.4583333333333333,0.875,1,1
+0.4583333333333333,0.875,1,1
+0.4583333333333333,0.875,1,1
+0.4583333333333333,0.875,1,1
+0.4583333333333333,0.875,1,1
+0.4583333333333333,0.875,1,1
+0.5416666666666666,0.875,1,1
+0.5416666666666666,0.875,1,1
+0.5416666666666666,0.875,1,1
+0.5416666666666666,0.875,1,1
+0.5416666666666666,0.875,1,1
+0.5416666666666666,0.875,1,1
+0.625,0.875,1,1
+0.625,0.875,1,1
+0.625,0.875,1,1
+0.625,0.875,1,1
+0.625,0.875,1,1
+0.625,0.875,1,1
+0.7083333333333334,0.875,1,1
+0.7083333333333334,0.875,1,1
+0.7083333333333334,0.875,1,1
+0.7083333333333334,0.875,1,1
+0.7083333333333334,0.875,1,1
+0.7083333333333334,0.875,1,1
+0.7916666666666666,0.875,1,1
+0.7916666666666666,0.875,1,1
+0.7916666666666666,0.875,1,1
+0.7916666666666666,0.875,1,1
+0.7916666666666666,0.875,1,1
+0.7916666666666666,0.875,1,1
+0.875,0.875,1,1
+0.875,0.875,1,1
+0.875,0.875,1,1
+0.875,0.875,1,1
+0.875,0.875,1,1
+0.875,0.875,1,1
+0.9583333333333334,0.875,1,1
+0.9583333333333334,0.875,1,1
+0.9583333333333334,0.875,1,1
+0.9583333333333334,0.875,1,1
+0.9583333333333334,0.875,1,1
+0.9583333333333334,0.875,1,1
+0.041666666666666664,0.9583333333333334,1,1
+0.041666666666666664,0.9583333333333334,1,1
+0.041666666666666664,0.9583333333333334,1,1
+0.041666666666666664,0.9583333333333334,1,1
+0.041666666666666664,0.9583333333333334,1,1
+0.041666666666666664,0.9583333333333334,1,1
+0.125,0.9583333333333334,1,1
+0.125,0.9583333333333334,1,1
+0.125,0.9583333333333334,1,1
+0.125,0.9583333333333334,1,1
+0.125,0.9583333333333334,1,1
+0.125,0.9583333333333334,1,1
+0.20833333333333334,0.9583333333333334,1,1
+0.20833333333333334,0.9583333333333334,1,1
+0.20833333333333334,0.9583333333333334,1,1
+0.20833333333333334,0.9583333333333334,1,1
+0.20833333333333334,0.9583333333333334,1,1
+0.20833333333333334,0.9583333333333334,1,1
+0.2916666666666667,0.9583333333333334,1,1
+0.2916666666666667,0.9583333333333334,1,1
+0.2916666666666667,0.9583333333333334,1,1
+0.2916666666666667,0.9583333333333334,1,1
+0.2916666666666667,0.9583333333333334,1,1
+0.2916666666666667,0.9583333333333334,1,1
+0.375,0.9583333333333334,1,1
+0.375,0.9583333333333334,1,1
+0.375,0.9583333333333334,1,1
+0.375,0.9583333333333334,1,1
+0.375,0.9583333333333334,1,1
+0.375,0.9583333333333334,1,1
+0.4583333333333333,0.9583333333333334,1,1
+0.4583333333333333,0.9583333333333334,1,1
+0.4583333333333333,0.9583333333333334,1,1
+0.4583333333333333,0.9583333333333334,1,1
+0.4583333333333333,0.9583333333333334,1,1
+0.4583333333333333,0.9583333333333334,1,1
+0.5416666666666666,0.9583333333333334,1,1
+0.5416666666666666,0.9583333333333334,1,1
+0.5416666666666666,0.9583333333333334,1,1
+0.5416666666666666,0.9583333333333334,1,1
+0.5416666666666666,0.9583333333333334,1,1
+0.5416666666666666,0.9583333333333334,1,1
+0.625,0.9583333333333334,1,1
+0.625,0.9583333333333334,1,1
+0.625,0.9583333333333334,1,1
+0.625,0.9583333333333334,1,1
+0.625,0.9583333333333334,1,1
+0.625,0.9583333333333334,1,1
+0.7083333333333334,0.9583333333333334,1,1
+0.7083333333333334,0.9583333333333334,1,1
+0.7083333333333334,0.9583333333333334,1,1
+0.7083333333333334,0.9583333333333334,1,1
+0.7083333333333334,0.9583333333333334,1,1
+0.7083333333333334,0.9583333333333334,1,1
+0.7916666666666666,0.9583333333333334,1,1
+0.7916666666666666,0.9583333333333334,1,1
+0.7916666666666666,0.9583333333333334,1,1
+0.7916666666666666,0.9583333333333334,1,1
+0.7916666666666666,0.9583333333333334,1,1
+0.7916666666666666,0.9583333333333334,1,1
+0.875,0.9583333333333334,1,1
+0.875,0.9583333333333334,1,1
+0.875,0.9583333333333334,1,1
+0.875,0.9583333333333334,1,1
+0.875,0.9583333333333334,1,1
+0.875,0.9583333333333334,1,1
+0.9583333333333334,0.9583333333333334,1,1
+0.9583333333333334,0.9583333333333334,1,1
+0.9583333333333334,0.9583333333333334,1,1
+0.9583333333333334,0.9583333333333334,1,1
+0.9583333333333334,0.9583333333333334,1,1
+0.9583333333333334,0.9583333333333334,1,1
diff --git a/assets/models/canned_gesture_classifier.tflite b/assets/models/canned_gesture_classifier.tflite
new file mode 100644
index 0000000..f1bcf94
Binary files /dev/null and b/assets/models/canned_gesture_classifier.tflite differ
diff --git a/assets/models/gesture_embedder.tflite b/assets/models/gesture_embedder.tflite
new file mode 100644
index 0000000..4533e98
Binary files /dev/null and b/assets/models/gesture_embedder.tflite differ
diff --git a/assets/models/hand_detector.tflite b/assets/models/hand_detector.tflite
new file mode 100644
index 0000000..f31ece4
Binary files /dev/null and b/assets/models/hand_detector.tflite differ
diff --git a/ml/src/hand_landmarker.task b/assets/models/hand_landmarks_detector.tflite
similarity index 70%
rename from ml/src/hand_landmarker.task
rename to assets/models/hand_landmarks_detector.tflite
index 0d53faf..ea8b0c1 100644
Binary files a/ml/src/hand_landmarker.task and b/assets/models/hand_landmarks_detector.tflite differ
diff --git a/bricks/mason.yaml b/bricks/mason.yaml
new file mode 100644
index 0000000..7814dfa
--- /dev/null
+++ b/bricks/mason.yaml
@@ -0,0 +1,5 @@
+bricks:
+ xl_cubit_screen:
+ path: xl_cubit_screen
+ xl_model_freezed:
+ path: xl_model_freezed
diff --git a/bricks/xl_cubit_screen/CHANGELOG.md b/bricks/xl_cubit_screen/CHANGELOG.md
new file mode 100644
index 0000000..f0640d6
--- /dev/null
+++ b/bricks/xl_cubit_screen/CHANGELOG.md
@@ -0,0 +1,3 @@
+# 0.1.0+1
+
+- TODO: Describe initial release.
diff --git a/bricks/xl_cubit_screen/LICENSE b/bricks/xl_cubit_screen/LICENSE
new file mode 100644
index 0000000..ba75c69
--- /dev/null
+++ b/bricks/xl_cubit_screen/LICENSE
@@ -0,0 +1 @@
+TODO: Add your license here.
diff --git a/bricks/xl_cubit_screen/README.md b/bricks/xl_cubit_screen/README.md
new file mode 100644
index 0000000..17adc36
--- /dev/null
+++ b/bricks/xl_cubit_screen/README.md
@@ -0,0 +1,21 @@
+# xl_screen
+
+[![Powered by Mason](https://img.shields.io/endpoint?url=https%3A%2F%2Ftinyurl.com%2Fmason-badge)](https://github.com/felangel/mason)
+
+A new brick created with the Mason CLI.
+
+_Generated by [mason][1] 🧱_
+
+## Getting Started 🚀
+
+This is a starting point for a new brick.
+A few resources to get you started if this is your first brick template:
+
+- [Official Mason Documentation][2]
+- [Code generation with Mason Blog][3]
+- [Very Good Livestream: Felix Angelov Demos Mason][4]
+
+[1]: https://github.com/felangel/mason
+[2]: https://github.com/felangel/mason/tree/master/packages/mason_cli#readme
+[3]: https://verygood.ventures/blog/code-generation-with-mason
+[4]: https://youtu.be/G4PTjA6tpTU
diff --git a/bricks/xl_cubit_screen/__brick__/{{name.snakeCase()}}/{{name.snakeCase()}}_cubit.dart b/bricks/xl_cubit_screen/__brick__/{{name.snakeCase()}}/{{name.snakeCase()}}_cubit.dart
new file mode 100644
index 0000000..8cadfda
--- /dev/null
+++ b/bricks/xl_cubit_screen/__brick__/{{name.snakeCase()}}/{{name.snakeCase()}}_cubit.dart
@@ -0,0 +1,10 @@
+import 'package:flutter_bloc/flutter_bloc.dart';
+import 'package:freezed_annotation/freezed_annotation.dart';
+
+part '{{name.snakeCase()}}_state.dart';
+
+part '{{name.snakeCase()}}_cubit.freezed.dart';
+
+class {{name.pascalCase()}}Cubit extends Cubit<{{name.pascalCase()}}State> {
+ {{name.pascalCase()}}Cubit() : super(const {{name.pascalCase()}}State.state());
+}
diff --git a/bricks/xl_cubit_screen/__brick__/{{name.snakeCase()}}/{{name.snakeCase()}}_screen.dart b/bricks/xl_cubit_screen/__brick__/{{name.snakeCase()}}/{{name.snakeCase()}}_screen.dart
new file mode 100644
index 0000000..e63687e
--- /dev/null
+++ b/bricks/xl_cubit_screen/__brick__/{{name.snakeCase()}}/{{name.snakeCase()}}_screen.dart
@@ -0,0 +1,21 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:flutter/widgets.dart';
+import 'package:flutter_bloc/flutter_bloc.dart';
+
+import '{{name.snakeCase()}}_cubit.dart';
+
+@RoutePage()
+class {{name.pascalCase()}}Screen extends StatelessWidget {
+ const {{name.pascalCase()}}Screen({super.key});
+
+ @override
+ Widget build(BuildContext context) => BlocProvider(
+ create: (_) => {{name.pascalCase()}}Cubit(),
+ child: _{{name.pascalCase()}}ContentScreen(),
+ );
+}
+
+class _{{name.pascalCase()}}ContentScreen extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) => Container();
+}
diff --git a/bricks/xl_cubit_screen/__brick__/{{name.snakeCase()}}/{{name.snakeCase()}}_state.dart b/bricks/xl_cubit_screen/__brick__/{{name.snakeCase()}}/{{name.snakeCase()}}_state.dart
new file mode 100644
index 0000000..4924322
--- /dev/null
+++ b/bricks/xl_cubit_screen/__brick__/{{name.snakeCase()}}/{{name.snakeCase()}}_state.dart
@@ -0,0 +1,6 @@
+part of '{{name.snakeCase()}}_cubit.dart';
+
+@freezed
+class {{name.pascalCase()}}State with _${{name.pascalCase()}}State {
+ const factory {{name.pascalCase()}}State.state() = _{{name.pascalCase()}}State;
+}
diff --git a/bricks/xl_cubit_screen/brick.yaml b/bricks/xl_cubit_screen/brick.yaml
new file mode 100644
index 0000000..bdafccf
--- /dev/null
+++ b/bricks/xl_cubit_screen/brick.yaml
@@ -0,0 +1,14 @@
+name: xl_cubit_screen
+description: A screen which uses Cubit for state management, following Xmartlabs' standards.
+
+version: 0.1.0+1
+
+environment:
+ mason: ">=0.1.0-dev.26 <0.1.0"
+
+vars:
+ name:
+ type: string
+ description: Your screen/feature name
+ default: xl
+ prompt: What is your screen name?
diff --git a/bricks/xl_model_freezed/CHANGELOG.md b/bricks/xl_model_freezed/CHANGELOG.md
new file mode 100644
index 0000000..f0640d6
--- /dev/null
+++ b/bricks/xl_model_freezed/CHANGELOG.md
@@ -0,0 +1,3 @@
+# 0.1.0+1
+
+- TODO: Describe initial release.
diff --git a/bricks/xl_model_freezed/LICENSE b/bricks/xl_model_freezed/LICENSE
new file mode 100644
index 0000000..ba75c69
--- /dev/null
+++ b/bricks/xl_model_freezed/LICENSE
@@ -0,0 +1 @@
+TODO: Add your license here.
diff --git a/bricks/xl_model_freezed/README.md b/bricks/xl_model_freezed/README.md
new file mode 100644
index 0000000..3899f6d
--- /dev/null
+++ b/bricks/xl_model_freezed/README.md
@@ -0,0 +1,21 @@
+# xl_model_freezed
+
+[![Powered by Mason](https://img.shields.io/endpoint?url=https%3A%2F%2Ftinyurl.com%2Fmason-badge)](https://github.com/felangel/mason)
+
+A new brick created with the Mason CLI.
+
+_Generated by [mason][1] 🧱_
+
+## Getting Started 🚀
+
+This is a starting point for a new brick.
+A few resources to get you started if this is your first brick template:
+
+- [Official Mason Documentation][2]
+- [Code generation with Mason Blog][3]
+- [Very Good Livestream: Felix Angelov Demos Mason][4]
+
+[1]: https://github.com/felangel/mason
+[2]: https://github.com/felangel/mason/tree/master/packages/mason_cli#readme
+[3]: https://verygood.ventures/blog/code-generation-with-mason
+[4]: https://youtu.be/G4PTjA6tpTU
diff --git a/bricks/xl_model_freezed/__brick__/{{name.snakeCase()}}.dart b/bricks/xl_model_freezed/__brick__/{{name.snakeCase()}}.dart
new file mode 100644
index 0000000..901426f
--- /dev/null
+++ b/bricks/xl_model_freezed/__brick__/{{name.snakeCase()}}.dart
@@ -0,0 +1,16 @@
+import 'package:freezed_annotation/freezed_annotation.dart';
+
+part '{{name.snakeCase()}}.freezed.dart';
+
+part '{{name.snakeCase()}}.g.dart';
+
+@freezed
+class {{name.pascalCase()}} with _${{name.pascalCase()}} {
+ @JsonSerializable()
+ factory {{name.pascalCase()}}({
+
+ }) = _{{name.pascalCase()}};
+
+ factory {{name.pascalCase()}}.fromJson(Map json) =>
+ _${{name.pascalCase()}}FromJson(json);
+}
diff --git a/bricks/xl_model_freezed/brick.yaml b/bricks/xl_model_freezed/brick.yaml
new file mode 100644
index 0000000..8539888
--- /dev/null
+++ b/bricks/xl_model_freezed/brick.yaml
@@ -0,0 +1,14 @@
+name: xl_model_freezed
+description: Generates boilerplate for a Freezed model.
+
+version: 0.1.0+1
+
+environment:
+ mason: ">=0.1.0-dev.26 <0.1.0"
+
+vars:
+ name:
+ type: string
+ description: Your model name
+ default: Dash
+ prompt: What is your model name?
diff --git a/build.yaml b/build.yaml
new file mode 100644
index 0000000..ec03915
--- /dev/null
+++ b/build.yaml
@@ -0,0 +1,26 @@
+targets:
+ $default:
+ builders:
+ json_serializable:
+ options:
+ explicit_to_json: true
+ field_rename: snake
+ generate_for:
+ include:
+ - lib/core/model/*.dart
+ - lib/core/model/service/*.dart
+ freezed:
+ generate_for:
+ include:
+ - lib/core/model/*.dart
+ - lib/core/common/network_exceptions.dart
+ - lib/core/model/service/*.dart
+ - "lib/ui/**_cubit.dart"
+ - lib/ui/section/error_handler/general_error.dart
+ auto_route_generator:
+ generate_for:
+ include:
+ - "lib/ui/**_router.dart"
+ - "lib/ui/**_screen.dart"
+ - "lib/ui/**_page.dart"
+ - "lib/ui/**_section.dart"
diff --git a/client/ios/build/.last_build_id b/client/ios/build/.last_build_id
new file mode 100644
index 0000000..483ebdf
--- /dev/null
+++ b/client/ios/build/.last_build_id
@@ -0,0 +1 @@
+5ee8c12991117be9d8a1e19adeebbc6a
\ No newline at end of file
diff --git a/design_system/.gitignore b/design_system/.gitignore
new file mode 100644
index 0000000..d920ae6
--- /dev/null
+++ b/design_system/.gitignore
@@ -0,0 +1,30 @@
+# 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
+# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
+/pubspec.lock
+**/doc/api/
+.dart_tool/
+.packages
+build/
diff --git a/design_system/.metadata b/design_system/.metadata
new file mode 100644
index 0000000..e5c802c
--- /dev/null
+++ b/design_system/.metadata
@@ -0,0 +1,10 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+ revision: "367f9ea16bfae1ca451b9cc27c1366870b187ae2"
+ channel: "stable"
+
+project_type: package
diff --git a/design_system/README.md b/design_system/README.md
new file mode 100644
index 0000000..df83f40
--- /dev/null
+++ b/design_system/README.md
@@ -0,0 +1,56 @@
+# Design system' Flutter template
+
+Design system is a Flutter package that provides a base implementation for UX/UI components based on the [design template of Xmartlabs][figma].
+It aims to simplify and expedite the development process for Flutter projects, ensuring a consistent and visually appealing user interface.
+
+## Features
+
+- Ready-to-use main UI components inspired by Xmartlabs design principles.
+- Customizable components to fit your project's specific requirements.
+
+## Getting started
+
+### Installation
+
+Integrate the package in your project, adding the following line to your `pubspec.yaml` file:
+
+```yaml
+dependencies flutter:
+ design_system:
+ path: ../
+```
+
+## Arch Overview
+
+The design system project is organized into a singular folder named 'Theme.'
+Within the [theme folder][theme], various files contribute to the overall theme definition:
+
+- App Theme:
+This file outlines the app's styles, encompassing elements such as the app bar, dialogs, radio buttons, and other components.
+
+- App Buttons:
+Styles for the default buttons of the app are defined within this file.
+
+- App Color Scheme:
+Default color schemes for the app are established in this file.
+
+- Custom Colors:
+As a Theme Extension, this file incorporates custom colors specific to the app.
+
+- App Dimensions:
+Default dimensions for various elements within the app are specified in this file.
+
+- App Text Styles:
+Default text styles across the app are defined in this file.
+
+- Custom Text Styles:
+As another Theme Extension, this file articulates the custom text styles unique to the app.
+
+This organized structure within the 'Theme' folder ensures a systematic approach to managing and defining the visual aspects of the app.
+
+### Contributing
+We welcome contributions! If you find a bug or have a feature request, please open an [issue].
+
+[issue]: https://github.com/xmartlabs/flutter-template/issues
+[theme]: https://github.com/xmartlabs/flutter-template/tree/main/lib/ui/theme
+[figma]: https://www.figma.com/file/OWDUY4WaDjyfiOE6Z8mfsC/XL---Tourmaline?node-id=0%3A1&mode=dev
\ No newline at end of file
diff --git a/design_system/analysis_options.yaml b/design_system/analysis_options.yaml
new file mode 100644
index 0000000..5e2133e
--- /dev/null
+++ b/design_system/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../analysis_options.yaml
diff --git a/design_system/assets/README.md b/design_system/assets/README.md
new file mode 100644
index 0000000..decfa2a
--- /dev/null
+++ b/design_system/assets/README.md
@@ -0,0 +1 @@
+Flutter application assets are taken from the assets folder. This folder contains the assets used by the application, such as images, fonts, and other files.
diff --git a/design_system/assets/images/2.0x/Check.png b/design_system/assets/images/2.0x/Check.png
new file mode 100644
index 0000000..fb9c3c1
Binary files /dev/null and b/design_system/assets/images/2.0x/Check.png differ
diff --git a/design_system/assets/images/2.0x/Estrella.png b/design_system/assets/images/2.0x/Estrella.png
new file mode 100644
index 0000000..5094995
Binary files /dev/null and b/design_system/assets/images/2.0x/Estrella.png differ
diff --git a/design_system/assets/images/2.0x/Reloj.png b/design_system/assets/images/2.0x/Reloj.png
new file mode 100644
index 0000000..8fa8b1e
Binary files /dev/null and b/design_system/assets/images/2.0x/Reloj.png differ
diff --git a/design_system/assets/images/2.0x/background_green_prop.png b/design_system/assets/images/2.0x/background_green_prop.png
new file mode 100644
index 0000000..85bcdd3
Binary files /dev/null and b/design_system/assets/images/2.0x/background_green_prop.png differ
diff --git a/design_system/assets/images/2.0x/background_red_prop.png b/design_system/assets/images/2.0x/background_red_prop.png
new file mode 100644
index 0000000..2c24f00
Binary files /dev/null and b/design_system/assets/images/2.0x/background_red_prop.png differ
diff --git a/design_system/assets/images/3.0x/Check.png b/design_system/assets/images/3.0x/Check.png
new file mode 100644
index 0000000..89a69c5
Binary files /dev/null and b/design_system/assets/images/3.0x/Check.png differ
diff --git a/design_system/assets/images/3.0x/Estrella.png b/design_system/assets/images/3.0x/Estrella.png
new file mode 100644
index 0000000..f869dfe
Binary files /dev/null and b/design_system/assets/images/3.0x/Estrella.png differ
diff --git a/design_system/assets/images/3.0x/Reloj.png b/design_system/assets/images/3.0x/Reloj.png
new file mode 100644
index 0000000..c77f012
Binary files /dev/null and b/design_system/assets/images/3.0x/Reloj.png differ
diff --git a/design_system/assets/images/3.0x/background_green_prop.png b/design_system/assets/images/3.0x/background_green_prop.png
new file mode 100644
index 0000000..29c4273
Binary files /dev/null and b/design_system/assets/images/3.0x/background_green_prop.png differ
diff --git a/design_system/assets/images/3.0x/background_red_prop.png b/design_system/assets/images/3.0x/background_red_prop.png
new file mode 100644
index 0000000..1336e5c
Binary files /dev/null and b/design_system/assets/images/3.0x/background_red_prop.png differ
diff --git a/design_system/assets/images/4.0x/Check.png b/design_system/assets/images/4.0x/Check.png
new file mode 100644
index 0000000..4ddae5e
Binary files /dev/null and b/design_system/assets/images/4.0x/Check.png differ
diff --git a/design_system/assets/images/4.0x/Estrella.png b/design_system/assets/images/4.0x/Estrella.png
new file mode 100644
index 0000000..777c580
Binary files /dev/null and b/design_system/assets/images/4.0x/Estrella.png differ
diff --git a/design_system/assets/images/4.0x/Reloj.png b/design_system/assets/images/4.0x/Reloj.png
new file mode 100644
index 0000000..5545509
Binary files /dev/null and b/design_system/assets/images/4.0x/Reloj.png differ
diff --git a/design_system/assets/images/4.0x/background_green_prop.png b/design_system/assets/images/4.0x/background_green_prop.png
new file mode 100644
index 0000000..866fe43
Binary files /dev/null and b/design_system/assets/images/4.0x/background_green_prop.png differ
diff --git a/design_system/assets/images/4.0x/background_red_prop.png b/design_system/assets/images/4.0x/background_red_prop.png
new file mode 100644
index 0000000..b174606
Binary files /dev/null and b/design_system/assets/images/4.0x/background_red_prop.png differ
diff --git a/design_system/assets/images/Check.png b/design_system/assets/images/Check.png
new file mode 100644
index 0000000..af8d947
Binary files /dev/null and b/design_system/assets/images/Check.png differ
diff --git a/design_system/assets/images/Estrella.png b/design_system/assets/images/Estrella.png
new file mode 100644
index 0000000..4960298
Binary files /dev/null and b/design_system/assets/images/Estrella.png differ
diff --git a/design_system/assets/images/Reloj.png b/design_system/assets/images/Reloj.png
new file mode 100644
index 0000000..e69dea1
Binary files /dev/null and b/design_system/assets/images/Reloj.png differ
diff --git a/design_system/assets/images/background_green_prop.png b/design_system/assets/images/background_green_prop.png
new file mode 100644
index 0000000..d2c716c
Binary files /dev/null and b/design_system/assets/images/background_green_prop.png differ
diff --git a/design_system/assets/images/background_red_prop.png b/design_system/assets/images/background_red_prop.png
new file mode 100644
index 0000000..e9a1f1f
Binary files /dev/null and b/design_system/assets/images/background_red_prop.png differ
diff --git a/design_system/design_system_gallery/.gitignore b/design_system/design_system_gallery/.gitignore
new file mode 100644
index 0000000..5836224
--- /dev/null
+++ b/design_system/design_system_gallery/.gitignore
@@ -0,0 +1,44 @@
+# 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
diff --git a/design_system/design_system_gallery/.metadata b/design_system/design_system_gallery/.metadata
new file mode 100644
index 0000000..2bb8bb7
--- /dev/null
+++ b/design_system/design_system_gallery/.metadata
@@ -0,0 +1,36 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+ revision: "367f9ea16bfae1ca451b9cc27c1366870b187ae2"
+ channel: "stable"
+
+project_type: app
+
+# Tracks metadata for the flutter migrate command
+migration:
+ platforms:
+ - platform: root
+ create_revision: 367f9ea16bfae1ca451b9cc27c1366870b187ae2
+ base_revision: 367f9ea16bfae1ca451b9cc27c1366870b187ae2
+ - platform: android
+ create_revision: 367f9ea16bfae1ca451b9cc27c1366870b187ae2
+ base_revision: 367f9ea16bfae1ca451b9cc27c1366870b187ae2
+ - platform: ios
+ create_revision: 367f9ea16bfae1ca451b9cc27c1366870b187ae2
+ base_revision: 367f9ea16bfae1ca451b9cc27c1366870b187ae2
+ - platform: web
+ create_revision: 367f9ea16bfae1ca451b9cc27c1366870b187ae2
+ base_revision: 367f9ea16bfae1ca451b9cc27c1366870b187ae2
+
+ # User provided section
+
+ # List of Local paths (relative to this file) that should be
+ # ignored by the migrate tool.
+ #
+ # Files that are not part of the templates will be ignored by default.
+ unmanaged_files:
+ - 'lib/main.dart'
+ - 'ios/Runner.xcodeproj/project.pbxproj'
diff --git a/design_system/design_system_gallery/README.md b/design_system/design_system_gallery/README.md
new file mode 100644
index 0000000..ea45578
--- /dev/null
+++ b/design_system/design_system_gallery/README.md
@@ -0,0 +1,20 @@
+# Design System Gallery App
+
+Design System Gallery is a Flutter app designed to showcase and share the design system of our project.
+This app serves as a visual reference for developers and provides a streamlined process for the design team to approve the correct implementation of components.
+
+## Features
+
+- **Design System Showcase:** View and explore the design system components used in the app.
+- **Interactive Examples:** Interact with live examples of components to see them in action.
+- **Easy Sharing:** Share specific components or screens with the design team for review.
+
+
+## Design System Documentation
+For comprehensive documentation on our design system, including guidelines, principles, and usage instructions, please refer to [Design System].
+
+### Contributing
+We welcome contributions! If you find a bug or have a feature request, please open an [issue].
+
+[issue]: https://github.com/xmartlabs/flutter-template/issues
+[Design System]: https://www.figma.com/file/OWDUY4WaDjyfiOE6Z8mfsC/XL---Tourmaline?node-id=0%3A1&mode=dev
diff --git a/design_system/design_system_gallery/analysis_options.yaml b/design_system/design_system_gallery/analysis_options.yaml
new file mode 100644
index 0000000..f04c6cf
--- /dev/null
+++ b/design_system/design_system_gallery/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../analysis_options.yaml
diff --git a/design_system/design_system_gallery/android/.gitignore b/design_system/design_system_gallery/android/.gitignore
new file mode 100644
index 0000000..6f56801
--- /dev/null
+++ b/design_system/design_system_gallery/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/design_system/design_system_gallery/android/Gemfile b/design_system/design_system_gallery/android/Gemfile
new file mode 100644
index 0000000..7a118b4
--- /dev/null
+++ b/design_system/design_system_gallery/android/Gemfile
@@ -0,0 +1,3 @@
+source "https://rubygems.org"
+
+gem "fastlane"
diff --git a/design_system/design_system_gallery/android/Gemfile.lock b/design_system/design_system_gallery/android/Gemfile.lock
new file mode 100644
index 0000000..f595af0
--- /dev/null
+++ b/design_system/design_system_gallery/android/Gemfile.lock
@@ -0,0 +1,217 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ CFPropertyList (3.0.6)
+ rexml
+ addressable (2.8.5)
+ public_suffix (>= 2.0.2, < 6.0)
+ artifactory (3.0.15)
+ atomos (0.1.3)
+ aws-eventstream (1.2.0)
+ aws-partitions (1.844.0)
+ aws-sdk-core (3.186.0)
+ aws-eventstream (~> 1, >= 1.0.2)
+ aws-partitions (~> 1, >= 1.651.0)
+ aws-sigv4 (~> 1.5)
+ jmespath (~> 1, >= 1.6.1)
+ aws-sdk-kms (1.72.0)
+ aws-sdk-core (~> 3, >= 3.184.0)
+ aws-sigv4 (~> 1.1)
+ aws-sdk-s3 (1.136.0)
+ aws-sdk-core (~> 3, >= 3.181.0)
+ aws-sdk-kms (~> 1)
+ aws-sigv4 (~> 1.6)
+ aws-sigv4 (1.6.1)
+ aws-eventstream (~> 1, >= 1.0.2)
+ babosa (1.0.4)
+ claide (1.1.0)
+ colored (1.2)
+ colored2 (3.1.2)
+ commander (4.6.0)
+ highline (~> 2.0.0)
+ declarative (0.0.20)
+ digest-crc (0.6.5)
+ rake (>= 12.0.0, < 14.0.0)
+ domain_name (0.5.20190701)
+ unf (>= 0.0.5, < 1.0.0)
+ dotenv (2.8.1)
+ emoji_regex (3.2.3)
+ excon (0.104.0)
+ faraday (1.10.3)
+ faraday-em_http (~> 1.0)
+ faraday-em_synchrony (~> 1.0)
+ faraday-excon (~> 1.1)
+ faraday-httpclient (~> 1.0)
+ faraday-multipart (~> 1.0)
+ faraday-net_http (~> 1.0)
+ faraday-net_http_persistent (~> 1.0)
+ faraday-patron (~> 1.0)
+ faraday-rack (~> 1.0)
+ faraday-retry (~> 1.0)
+ ruby2_keywords (>= 0.0.4)
+ faraday-cookie_jar (0.0.7)
+ faraday (>= 0.8.0)
+ http-cookie (~> 1.0.0)
+ faraday-em_http (1.0.0)
+ faraday-em_synchrony (1.0.0)
+ faraday-excon (1.1.0)
+ faraday-httpclient (1.0.1)
+ faraday-multipart (1.0.4)
+ multipart-post (~> 2)
+ faraday-net_http (1.0.1)
+ faraday-net_http_persistent (1.2.0)
+ faraday-patron (1.0.0)
+ faraday-rack (1.0.0)
+ faraday-retry (1.0.3)
+ faraday_middleware (1.2.0)
+ faraday (~> 1.0)
+ fastimage (2.2.7)
+ fastlane (2.216.0)
+ CFPropertyList (>= 2.3, < 4.0.0)
+ addressable (>= 2.8, < 3.0.0)
+ artifactory (~> 3.0)
+ aws-sdk-s3 (~> 1.0)
+ babosa (>= 1.0.3, < 2.0.0)
+ bundler (>= 1.12.0, < 3.0.0)
+ colored
+ commander (~> 4.6)
+ dotenv (>= 2.1.1, < 3.0.0)
+ emoji_regex (>= 0.1, < 4.0)
+ excon (>= 0.71.0, < 1.0.0)
+ faraday (~> 1.0)
+ faraday-cookie_jar (~> 0.0.6)
+ faraday_middleware (~> 1.0)
+ fastimage (>= 2.1.0, < 3.0.0)
+ gh_inspector (>= 1.1.2, < 2.0.0)
+ google-apis-androidpublisher_v3 (~> 0.3)
+ google-apis-playcustomapp_v1 (~> 0.1)
+ google-cloud-storage (~> 1.31)
+ highline (~> 2.0)
+ http-cookie (~> 1.0.5)
+ json (< 3.0.0)
+ jwt (>= 2.1.0, < 3)
+ mini_magick (>= 4.9.4, < 5.0.0)
+ multipart-post (>= 2.0.0, < 3.0.0)
+ naturally (~> 2.2)
+ optparse (~> 0.1.1)
+ plist (>= 3.1.0, < 4.0.0)
+ rubyzip (>= 2.0.0, < 3.0.0)
+ security (= 0.1.3)
+ simctl (~> 1.6.3)
+ terminal-notifier (>= 2.0.0, < 3.0.0)
+ terminal-table (~> 3)
+ tty-screen (>= 0.6.3, < 1.0.0)
+ tty-spinner (>= 0.8.0, < 1.0.0)
+ word_wrap (~> 1.0.0)
+ xcodeproj (>= 1.13.0, < 2.0.0)
+ xcpretty (~> 0.3.0)
+ xcpretty-travis-formatter (>= 0.0.3)
+ gh_inspector (1.1.3)
+ google-apis-androidpublisher_v3 (0.51.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-core (0.11.2)
+ addressable (~> 2.5, >= 2.5.1)
+ googleauth (>= 0.16.2, < 2.a)
+ httpclient (>= 2.8.1, < 3.a)
+ mini_mime (~> 1.0)
+ representable (~> 3.0)
+ retriable (>= 2.0, < 4.a)
+ rexml
+ webrick
+ google-apis-iamcredentials_v1 (0.17.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-playcustomapp_v1 (0.13.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-storage_v1 (0.19.0)
+ google-apis-core (>= 0.9.0, < 2.a)
+ google-cloud-core (1.6.0)
+ google-cloud-env (~> 1.0)
+ google-cloud-errors (~> 1.0)
+ google-cloud-env (1.6.0)
+ faraday (>= 0.17.3, < 3.0)
+ google-cloud-errors (1.3.1)
+ google-cloud-storage (1.44.0)
+ addressable (~> 2.8)
+ digest-crc (~> 0.4)
+ google-apis-iamcredentials_v1 (~> 0.1)
+ google-apis-storage_v1 (~> 0.19.0)
+ google-cloud-core (~> 1.6)
+ googleauth (>= 0.16.2, < 2.a)
+ mini_mime (~> 1.0)
+ googleauth (1.8.1)
+ faraday (>= 0.17.3, < 3.a)
+ jwt (>= 1.4, < 3.0)
+ multi_json (~> 1.11)
+ os (>= 0.9, < 2.0)
+ signet (>= 0.16, < 2.a)
+ highline (2.0.3)
+ http-cookie (1.0.5)
+ domain_name (~> 0.5)
+ httpclient (2.8.3)
+ jmespath (1.6.2)
+ json (2.6.3)
+ jwt (2.7.1)
+ mini_magick (4.12.0)
+ mini_mime (1.1.5)
+ multi_json (1.15.0)
+ multipart-post (2.3.0)
+ nanaimo (0.3.0)
+ naturally (2.2.1)
+ optparse (0.1.1)
+ os (1.1.4)
+ plist (3.7.0)
+ public_suffix (5.0.3)
+ rake (13.1.0)
+ representable (3.2.0)
+ declarative (< 0.1.0)
+ trailblazer-option (>= 0.1.1, < 0.2.0)
+ uber (< 0.2.0)
+ retriable (3.1.2)
+ rexml (3.2.6)
+ rouge (2.0.7)
+ ruby2_keywords (0.0.5)
+ rubyzip (2.3.2)
+ security (0.1.3)
+ signet (0.18.0)
+ addressable (~> 2.8)
+ faraday (>= 0.17.5, < 3.a)
+ jwt (>= 1.5, < 3.0)
+ multi_json (~> 1.10)
+ simctl (1.6.10)
+ CFPropertyList
+ naturally
+ terminal-notifier (2.0.0)
+ terminal-table (3.0.2)
+ unicode-display_width (>= 1.1.1, < 3)
+ trailblazer-option (0.1.2)
+ tty-cursor (0.7.1)
+ tty-screen (0.8.1)
+ tty-spinner (0.9.3)
+ tty-cursor (~> 0.7)
+ uber (0.1.0)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.8.2)
+ unicode-display_width (2.5.0)
+ webrick (1.8.1)
+ word_wrap (1.0.0)
+ xcodeproj (1.23.0)
+ CFPropertyList (>= 2.3.3, < 4.0)
+ atomos (~> 0.1.3)
+ claide (>= 1.0.2, < 2.0)
+ colored2 (~> 3.1)
+ nanaimo (~> 0.3.0)
+ rexml (~> 3.2.4)
+ xcpretty (0.3.0)
+ rouge (~> 2.0.7)
+ xcpretty-travis-formatter (1.0.1)
+ xcpretty (~> 0.2, >= 0.0.7)
+
+PLATFORMS
+ x86_64-darwin-21
+
+DEPENDENCIES
+ fastlane
+
+BUNDLED WITH
+ 2.4.10
diff --git a/design_system/design_system_gallery/android/app/build.gradle b/design_system/design_system_gallery/android/app/build.gradle
new file mode 100644
index 0000000..5be6caa
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/build.gradle
@@ -0,0 +1,67 @@
+plugins {
+ id "com.android.application"
+ id "kotlin-android"
+ id "dev.flutter.flutter-gradle-plugin"
+}
+
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+android {
+ namespace "com.example.design_system_gallery"
+ compileSdkVersion flutter.compileSdkVersion
+ ndkVersion flutter.ndkVersion
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId "com.example.design_system_gallery"
+ // You can update the following values to match your application needs.
+ // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
+ minSdkVersion flutter.minSdkVersion
+ targetSdkVersion flutter.targetSdkVersion
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ 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
+ }
+ }
+}
+
+flutter {
+ source '../..'
+}
+
+dependencies {}
diff --git a/design_system/design_system_gallery/android/app/src/debug/AndroidManifest.xml b/design_system/design_system_gallery/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..399f698
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/design_system/design_system_gallery/android/app/src/main/AndroidManifest.xml b/design_system/design_system_gallery/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..15dd1de
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/design_system/design_system_gallery/android/app/src/main/kotlin/com/example/gallery/MainActivity.kt b/design_system/design_system_gallery/android/app/src/main/kotlin/com/example/gallery/MainActivity.kt
new file mode 100644
index 0000000..b900067
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/src/main/kotlin/com/example/gallery/MainActivity.kt
@@ -0,0 +1,6 @@
+package com.example.design_system_gallery
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity() {
+}
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-hdpi-v31/android12branding.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-hdpi-v31/android12branding.png
new file mode 100644
index 0000000..d28948f
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-hdpi-v31/android12branding.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-hdpi/android12splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-hdpi/android12splash.png
new file mode 100644
index 0000000..07b1c18
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-hdpi/android12splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..e6cba59
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-hdpi/splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-hdpi/splash.png
new file mode 100644
index 0000000..5121a08
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-hdpi/splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-mdpi-v31/android12branding.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-mdpi-v31/android12branding.png
new file mode 100644
index 0000000..12872bf
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-mdpi-v31/android12branding.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-mdpi/android12splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-mdpi/android12splash.png
new file mode 100644
index 0000000..47fcf48
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-mdpi/android12splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..c272c1d
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-mdpi/splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-mdpi/splash.png
new file mode 100644
index 0000000..2544b5c
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-mdpi/splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png
new file mode 100644
index 0000000..d28948f
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-night-hdpi/android12splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-hdpi/android12splash.png
new file mode 100644
index 0000000..07b1c18
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-hdpi/android12splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png
new file mode 100644
index 0000000..12872bf
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-night-mdpi/android12splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-mdpi/android12splash.png
new file mode 100644
index 0000000..47fcf48
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-mdpi/android12splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png
new file mode 100644
index 0000000..1c4646f
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xhdpi/android12splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xhdpi/android12splash.png
new file mode 100644
index 0000000..7f0a257
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xhdpi/android12splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png
new file mode 100644
index 0000000..0358cdf
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png
new file mode 100644
index 0000000..73a4afc
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xxxhdpi-v31/android12branding.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xxxhdpi-v31/android12branding.png
new file mode 100644
index 0000000..83f22e1
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xxxhdpi-v31/android12branding.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png
new file mode 100644
index 0000000..2e159e1
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-v21/background.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-v21/background.png
new file mode 100644
index 0000000..3107d37
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-v21/background.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-v21/launch_background.xml b/design_system/design_system_gallery/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 0000000..3cc4948
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+ -
+
+
+
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-xhdpi-v31/android12branding.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-xhdpi-v31/android12branding.png
new file mode 100644
index 0000000..1c4646f
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-xhdpi-v31/android12branding.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-xhdpi/android12splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-xhdpi/android12splash.png
new file mode 100644
index 0000000..7f0a257
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-xhdpi/android12splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..a78a151
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-xhdpi/splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-xhdpi/splash.png
new file mode 100644
index 0000000..ca38ed1
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-xhdpi/splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png
new file mode 100644
index 0000000..0358cdf
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-xxhdpi/android12splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxhdpi/android12splash.png
new file mode 100644
index 0000000..73a4afc
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxhdpi/android12splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..b11e378
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-xxhdpi/splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxhdpi/splash.png
new file mode 100644
index 0000000..ee10389
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxhdpi/splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-xxxhdpi-v31/android12branding.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxxhdpi-v31/android12branding.png
new file mode 100644
index 0000000..83f22e1
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxxhdpi-v31/android12branding.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-xxxhdpi/android12splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxxhdpi/android12splash.png
new file mode 100644
index 0000000..2e159e1
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxxhdpi/android12splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..f118b43
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable-xxxhdpi/splash.png b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxxhdpi/splash.png
new file mode 100644
index 0000000..1b6630e
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable-xxxhdpi/splash.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable/background.png b/design_system/design_system_gallery/android/app/src/main/res/drawable/background.png
new file mode 100644
index 0000000..3107d37
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/drawable/background.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/drawable/launch_background.xml b/design_system/design_system_gallery/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000..3cc4948
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+ -
+
+
+
diff --git a/design_system/design_system_gallery/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/design_system/design_system_gallery/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..5f349f7
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/design_system/design_system_gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/design_system/design_system_gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..4201d92
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/design_system/design_system_gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..a3ecae8
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/design_system/design_system_gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..b63f282
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/design_system/design_system_gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..35f1410
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/design_system/design_system_gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..a87df63
Binary files /dev/null and b/design_system/design_system_gallery/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/design_system/design_system_gallery/android/app/src/main/res/values-night-v31/styles.xml b/design_system/design_system_gallery/android/app/src/main/res/values-night-v31/styles.xml
new file mode 100644
index 0000000..4f1c3f9
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/src/main/res/values-night-v31/styles.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/design_system/design_system_gallery/android/app/src/main/res/values-night/styles.xml b/design_system/design_system_gallery/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000..dbc9ea9
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/design_system/design_system_gallery/android/app/src/main/res/values-v31/styles.xml b/design_system/design_system_gallery/android/app/src/main/res/values-v31/styles.xml
new file mode 100644
index 0000000..a0e12b2
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/src/main/res/values-v31/styles.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/design_system/design_system_gallery/android/app/src/main/res/values/colors.xml b/design_system/design_system_gallery/android/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..7e0e15d
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/src/main/res/values/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #ee1a64
+
\ No newline at end of file
diff --git a/design_system/design_system_gallery/android/app/src/main/res/values/styles.xml b/design_system/design_system_gallery/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..0d1fa8f
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/design_system/design_system_gallery/android/app/src/profile/AndroidManifest.xml b/design_system/design_system_gallery/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 0000000..399f698
--- /dev/null
+++ b/design_system/design_system_gallery/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/design_system/design_system_gallery/android/build.gradle b/design_system/design_system_gallery/android/build.gradle
new file mode 100644
index 0000000..f7eb7f6
--- /dev/null
+++ b/design_system/design_system_gallery/android/build.gradle
@@ -0,0 +1,31 @@
+buildscript {
+ ext.kotlin_version = '1.7.10'
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:7.3.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/design_system/design_system_gallery/android/fastlane/Appfile b/design_system/design_system_gallery/android/fastlane/Appfile
new file mode 100644
index 0000000..250644c
--- /dev/null
+++ b/design_system/design_system_gallery/android/fastlane/Appfile
@@ -0,0 +1,2 @@
+json_key_file("") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
+package_name("design_system") # e.g. com.krausefx.app
diff --git a/design_system/design_system_gallery/android/fastlane/Fastfile b/design_system/design_system_gallery/android/fastlane/Fastfile
new file mode 100644
index 0000000..19c557c
--- /dev/null
+++ b/design_system/design_system_gallery/android/fastlane/Fastfile
@@ -0,0 +1,38 @@
+# This file contains the fastlane.tools configuration
+# You can find the documentation at https://docs.fastlane.tools
+#
+# For a list of all available actions, check out
+#
+# https://docs.fastlane.tools/actions
+#
+# For a list of all available plugins, check out
+#
+# https://docs.fastlane.tools/plugins/available-plugins
+#
+
+# Uncomment the line if you want fastlane to automatically update itself
+# update_fastlane
+
+default_platform(:android)
+
+platform :android do
+ desc "Runs all the tests"
+ lane :test do
+ gradle(task: "test")
+ end
+
+ desc "Submit a new Beta Build to Crashlytics Beta"
+ lane :beta do
+ gradle(task: "clean assembleRelease")
+ crashlytics
+
+ # sh "your_script.sh"
+ # You can also use other beta testing services here
+ end
+
+ desc "Deploy a new version to the Google Play"
+ lane :deploy do
+ gradle(task: "clean assembleRelease")
+ upload_to_play_store
+ end
+end
diff --git a/design_system/design_system_gallery/android/gradle.properties b/design_system/design_system_gallery/android/gradle.properties
new file mode 100644
index 0000000..94adc3a
--- /dev/null
+++ b/design_system/design_system_gallery/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx1536M
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/design_system/design_system_gallery/android/gradle/wrapper/gradle-wrapper.properties b/design_system/design_system_gallery/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..3c472b9
--- /dev/null
+++ b/design_system/design_system_gallery/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-7.5-all.zip
diff --git a/design_system/design_system_gallery/android/settings.gradle b/design_system/design_system_gallery/android/settings.gradle
new file mode 100644
index 0000000..55c4ca8
--- /dev/null
+++ b/design_system/design_system_gallery/android/settings.gradle
@@ -0,0 +1,20 @@
+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")
+
+ plugins {
+ id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false
+ }
+}
+
+include ":app"
+
+apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/design_system/design_system_gallery/icons/ic_launcher.png b/design_system/design_system_gallery/icons/ic_launcher.png
new file mode 100644
index 0000000..16abf55
Binary files /dev/null and b/design_system/design_system_gallery/icons/ic_launcher.png differ
diff --git a/design_system/design_system_gallery/icons/ic_launcher_foreground.png b/design_system/design_system_gallery/icons/ic_launcher_foreground.png
new file mode 100644
index 0000000..3d8563b
Binary files /dev/null and b/design_system/design_system_gallery/icons/ic_launcher_foreground.png differ
diff --git a/design_system/design_system_gallery/icons/ic_launcher_ios.png b/design_system/design_system_gallery/icons/ic_launcher_ios.png
new file mode 100644
index 0000000..7af7f93
Binary files /dev/null and b/design_system/design_system_gallery/icons/ic_launcher_ios.png differ
diff --git a/design_system/design_system_gallery/icons/splash_branding.png b/design_system/design_system_gallery/icons/splash_branding.png
new file mode 100644
index 0000000..e126e4d
Binary files /dev/null and b/design_system/design_system_gallery/icons/splash_branding.png differ
diff --git a/design_system/design_system_gallery/icons/splash_logo.png b/design_system/design_system_gallery/icons/splash_logo.png
new file mode 100644
index 0000000..9df7387
Binary files /dev/null and b/design_system/design_system_gallery/icons/splash_logo.png differ
diff --git a/design_system/design_system_gallery/icons/splash_logo_android_12.png b/design_system/design_system_gallery/icons/splash_logo_android_12.png
new file mode 100644
index 0000000..0354018
Binary files /dev/null and b/design_system/design_system_gallery/icons/splash_logo_android_12.png differ
diff --git a/design_system/design_system_gallery/ios/.gitignore b/design_system/design_system_gallery/ios/.gitignore
new file mode 100644
index 0000000..7a7f987
--- /dev/null
+++ b/design_system/design_system_gallery/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/design_system/design_system_gallery/ios/Flutter/AppFrameworkInfo.plist b/design_system/design_system_gallery/ios/Flutter/AppFrameworkInfo.plist
new file mode 100644
index 0000000..7c56964
--- /dev/null
+++ b/design_system/design_system_gallery/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
+ 12.0
+
+
diff --git a/design_system/design_system_gallery/ios/Flutter/Debug.xcconfig b/design_system/design_system_gallery/ios/Flutter/Debug.xcconfig
new file mode 100644
index 0000000..ec97fc6
--- /dev/null
+++ b/design_system/design_system_gallery/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/design_system/design_system_gallery/ios/Flutter/Release.xcconfig b/design_system/design_system_gallery/ios/Flutter/Release.xcconfig
new file mode 100644
index 0000000..c4855bf
--- /dev/null
+++ b/design_system/design_system_gallery/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/design_system/design_system_gallery/ios/Podfile b/design_system/design_system_gallery/ios/Podfile
new file mode 100644
index 0000000..d97f17e
--- /dev/null
+++ b/design_system/design_system_gallery/ios/Podfile
@@ -0,0 +1,44 @@
+# Uncomment this line to define a global platform for your project
+# platform :ios, '12.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!
+
+ flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
+ target 'RunnerTests' do
+ inherit! :search_paths
+ end
+end
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ flutter_additional_ios_build_settings(target)
+ end
+end
diff --git a/design_system/design_system_gallery/ios/Podfile.lock b/design_system/design_system_gallery/ios/Podfile.lock
new file mode 100644
index 0000000..7ba0e63
--- /dev/null
+++ b/design_system/design_system_gallery/ios/Podfile.lock
@@ -0,0 +1,29 @@
+PODS:
+ - Flutter (1.0.0)
+ - flutter_native_splash (0.0.1):
+ - Flutter
+ - path_provider_foundation (0.0.1):
+ - Flutter
+ - FlutterMacOS
+
+DEPENDENCIES:
+ - Flutter (from `Flutter`)
+ - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
+ - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
+
+EXTERNAL SOURCES:
+ Flutter:
+ :path: Flutter
+ flutter_native_splash:
+ :path: ".symlinks/plugins/flutter_native_splash/ios"
+ path_provider_foundation:
+ :path: ".symlinks/plugins/path_provider_foundation/darwin"
+
+SPEC CHECKSUMS:
+ Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
+ flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
+ path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
+
+PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796
+
+COCOAPODS: 1.15.2
diff --git a/design_system/design_system_gallery/ios/Runner.xcodeproj/project.pbxproj b/design_system/design_system_gallery/ios/Runner.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..0804dfe
--- /dev/null
+++ b/design_system/design_system_gallery/ios/Runner.xcodeproj/project.pbxproj
@@ -0,0 +1,725 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 54;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 22336CBF25949E471736667F /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 959729E268E47C1704E2F6D0 /* Pods_RunnerTests.framework */; };
+ 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 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 */; };
+ A03BE04D285909D30D1B5C2D /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28D29128B08C0FC80B1ADB3B /* Pods_Runner.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 331C8085294A63A400263BE5 /* 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 */
+ 0E42C8F29CE70D5F6DBD2FE7 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.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 = ""; };
+ 28D29128B08C0FC80B1ADB3B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; };
+ 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 365FDFE932DAECCBE6CDA6C2 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; };
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 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 = ""; };
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
+ 7B38C402BEC14CCFB3BCC86B /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; };
+ 800D1436A84E4B660BFFAC2C /* 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 = ""; };
+ 959729E268E47C1704E2F6D0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 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 = ""; };
+ AE146B1C36E0F65D9B9E0440 /* 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 = ""; };
+ B405BC34B39725B6BDF7999F /* 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 = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 97C146EB1CF9000F007C117D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A03BE04D285909D30D1B5C2D /* Pods_Runner.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ B6078182E6F3D1951969F8DA /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 22336CBF25949E471736667F /* Pods_RunnerTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 331C8082294A63A400263BE5 /* RunnerTests */ = {
+ isa = PBXGroup;
+ children = (
+ 331C807B294A618700263BE5 /* RunnerTests.swift */,
+ );
+ path = RunnerTests;
+ sourceTree = "";
+ };
+ 497C73E8445D35C74AFD069A /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 28D29128B08C0FC80B1ADB3B /* Pods_Runner.framework */,
+ 959729E268E47C1704E2F6D0 /* Pods_RunnerTests.framework */,
+ );
+ name = Frameworks;
+ 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 */,
+ 97C146EF1CF9000F007C117D /* Products */,
+ 331C8082294A63A400263BE5 /* RunnerTests */,
+ E9F5E0EA082C8BBCA5DED24A /* Pods */,
+ 497C73E8445D35C74AFD069A /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 97C146EF1CF9000F007C117D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146EE1CF9000F007C117D /* Runner.app */,
+ 331C8081294A63A400263BE5 /* RunnerTests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 97C146F01CF9000F007C117D /* Runner */ = {
+ isa = PBXGroup;
+ children = (
+ 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 = "";
+ };
+ E9F5E0EA082C8BBCA5DED24A /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ AE146B1C36E0F65D9B9E0440 /* Pods-Runner.debug.xcconfig */,
+ 800D1436A84E4B660BFFAC2C /* Pods-Runner.release.xcconfig */,
+ B405BC34B39725B6BDF7999F /* Pods-Runner.profile.xcconfig */,
+ 7B38C402BEC14CCFB3BCC86B /* Pods-RunnerTests.debug.xcconfig */,
+ 0E42C8F29CE70D5F6DBD2FE7 /* Pods-RunnerTests.release.xcconfig */,
+ 365FDFE932DAECCBE6CDA6C2 /* Pods-RunnerTests.profile.xcconfig */,
+ );
+ name = Pods;
+ path = Pods;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 331C8080294A63A400263BE5 /* RunnerTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
+ buildPhases = (
+ 5A800C66C15EFB36FD47DA67 /* [CP] Check Pods Manifest.lock */,
+ 331C807D294A63A400263BE5 /* Sources */,
+ 331C807F294A63A400263BE5 /* Resources */,
+ B6078182E6F3D1951969F8DA /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 331C8086294A63A400263BE5 /* PBXTargetDependency */,
+ );
+ name = RunnerTests;
+ productName = RunnerTests;
+ productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+ 97C146ED1CF9000F007C117D /* Runner */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
+ buildPhases = (
+ 76A0C9727A11FD4C6B7C7E66 /* [CP] Check Pods Manifest.lock */,
+ 9740EEB61CF901F6004384FC /* Run Script */,
+ 97C146EA1CF9000F007C117D /* Sources */,
+ 97C146EB1CF9000F007C117D /* Frameworks */,
+ 97C146EC1CF9000F007C117D /* Resources */,
+ 9705A1C41CF9048500538489 /* Embed Frameworks */,
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ 403C99EC43CBDA26E8FF45DD /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Runner;
+ productName = Runner;
+ productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 97C146E61CF9000F007C117D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ BuildIndependentTargetsInParallel = YES;
+ LastUpgradeCheck = 1510;
+ ORGANIZATIONNAME = "";
+ TargetAttributes = {
+ 331C8080294A63A400263BE5 = {
+ CreatedOnToolsVersion = 14.0;
+ TestTargetID = 97C146ED1CF9000F007C117D;
+ };
+ 97C146ED1CF9000F007C117D = {
+ CreatedOnToolsVersion = 7.3.1;
+ LastSwiftMigration = 1100;
+ };
+ };
+ };
+ 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 */,
+ 331C8080294A63A400263BE5 /* RunnerTests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 331C807F294A63A400263BE5 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 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 */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 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";
+ };
+ 403C99EC43CBDA26E8FF45DD /* [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;
+ };
+ 5A800C66C15EFB36FD47DA67 /* [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-RunnerTests-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;
+ };
+ 76A0C9727A11FD4C6B7C7E66 /* [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;
+ };
+ 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";
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 331C807D294A63A400263BE5 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 97C146EA1CF9000F007C117D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 97C146ED1CF9000F007C117D /* Runner */;
+ targetProxy = 331C8085294A63A400263BE5 /* 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 */ = {
+ 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 = 12.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ 249021D4217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = R94MGT3BBR;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.design_system_gallery;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ 331C8088294A63A400263BE5 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7B38C402BEC14CCFB3BCC86B /* Pods-RunnerTests.debug.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.gallery.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Debug;
+ };
+ 331C8089294A63A400263BE5 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 0E42C8F29CE70D5F6DBD2FE7 /* Pods-RunnerTests.release.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.design_system_gallery.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Release;
+ };
+ 331C808A294A63A400263BE5 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 365FDFE932DAECCBE6CDA6C2 /* Pods-RunnerTests.profile.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.gallery.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Profile;
+ };
+ 97C147031CF9000F007C117D /* Debug */ = {
+ 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 = 12.0;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 97C147041CF9000F007C117D /* Release */ = {
+ 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 = 12.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;
+ };
+ 97C147061CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = R94MGT3BBR;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.design_system_gallery;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 97C147071CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = R94MGT3BBR;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.design_system_gallery;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 331C8088294A63A400263BE5 /* Debug */,
+ 331C8089294A63A400263BE5 /* Release */,
+ 331C808A294A63A400263BE5 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147031CF9000F007C117D /* Debug */,
+ 97C147041CF9000F007C117D /* Release */,
+ 249021D3217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147061CF9000F007C117D /* Debug */,
+ 97C147071CF9000F007C117D /* Release */,
+ 249021D4217E4FDB00AE95B9 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 97C146E61CF9000F007C117D /* Project object */;
+}
diff --git a/design_system/design_system_gallery/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/design_system/design_system_gallery/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..f9b0d7c
--- /dev/null
+++ b/design_system/design_system_gallery/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/design_system/design_system_gallery/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/design_system/design_system_gallery/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
new file mode 100644
index 0000000..8e3ca5d
--- /dev/null
+++ b/design_system/design_system_gallery/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/design_system/design_system_gallery/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/design_system/design_system_gallery/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..f9b0d7c
--- /dev/null
+++ b/design_system/design_system_gallery/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/design_system/design_system_gallery/ios/Runner/AppDelegate.swift b/design_system/design_system_gallery/ios/Runner/AppDelegate.swift
new file mode 100644
index 0000000..70693e4
--- /dev/null
+++ b/design_system/design_system_gallery/ios/Runner/AppDelegate.swift
@@ -0,0 +1,13 @@
+import UIKit
+import Flutter
+
+@UIApplicationMain
+@objc class AppDelegate: FlutterAppDelegate {
+ override func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
+ ) -> Bool {
+ GeneratedPluginRegistrant.register(with: self)
+ return super.application(application, didFinishLaunchingWithOptions: launchOptions)
+ }
+}
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..d36b1fa
--- /dev/null
+++ b/design_system/design_system_gallery/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/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
new file mode 100644
index 0000000..c128468
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
new file mode 100644
index 0000000..477f9da
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
new file mode 100644
index 0000000..68ff5a7
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
new file mode 100644
index 0000000..6493d29
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
new file mode 100644
index 0000000..0755ff4
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
new file mode 100644
index 0000000..386b85f
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
new file mode 100644
index 0000000..036fadc
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
new file mode 100644
index 0000000..68ff5a7
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
new file mode 100644
index 0000000..ca15efc
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
new file mode 100644
index 0000000..2eb9175
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
new file mode 100644
index 0000000..13d67d7
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
new file mode 100644
index 0000000..16410e0
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
new file mode 100644
index 0000000..02ea451
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
new file mode 100644
index 0000000..f7d93f5
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
new file mode 100644
index 0000000..2eb9175
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
new file mode 100644
index 0000000..7f3ba37
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
new file mode 100644
index 0000000..ded940a
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
new file mode 100644
index 0000000..115501a
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
new file mode 100644
index 0000000..86bc78a
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
new file mode 100644
index 0000000..f9e9bde
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
new file mode 100644
index 0000000..923e02f
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json
new file mode 100644
index 0000000..9f447e1
--- /dev/null
+++ b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "background.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png
new file mode 100644
index 0000000..3107d37
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
new file mode 100644
index 0000000..00cabce
--- /dev/null
+++ b/design_system/design_system_gallery/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/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
new file mode 100644
index 0000000..2544b5c
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
new file mode 100644
index 0000000..ca38ed1
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
new file mode 100644
index 0000000..ee10389
Binary files /dev/null and b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ
diff --git a/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/design_system/design_system_gallery/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
new file mode 100644
index 0000000..89c2725
--- /dev/null
+++ b/design_system/design_system_gallery/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/design_system/design_system_gallery/ios/Runner/Base.lproj/LaunchScreen.storyboard b/design_system/design_system_gallery/ios/Runner/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..7994389
--- /dev/null
+++ b/design_system/design_system_gallery/ios/Runner/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/design_system/design_system_gallery/ios/Runner/Base.lproj/Main.storyboard b/design_system/design_system_gallery/ios/Runner/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..08dbc27
--- /dev/null
+++ b/design_system/design_system_gallery/ios/Runner/Base.lproj/Main.storyboard
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/design_system/design_system_gallery/ios/Runner/Info.plist b/design_system/design_system_gallery/ios/Runner/Info.plist
new file mode 100644
index 0000000..25d1dd4
--- /dev/null
+++ b/design_system/design_system_gallery/ios/Runner/Info.plist
@@ -0,0 +1,51 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ Design System Gallery
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ design_system_gallery
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ $(FLUTTER_BUILD_NAME)
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ $(FLUTTER_BUILD_NUMBER)
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ CADisableMinimumFrameDurationOnPhone
+
+ UIApplicationSupportsIndirectInputEvents
+
+ UIStatusBarHidden
+
+
+
diff --git a/design_system/design_system_gallery/ios/Runner/Runner-Bridging-Header.h b/design_system/design_system_gallery/ios/Runner/Runner-Bridging-Header.h
new file mode 100644
index 0000000..308a2a5
--- /dev/null
+++ b/design_system/design_system_gallery/ios/Runner/Runner-Bridging-Header.h
@@ -0,0 +1 @@
+#import "GeneratedPluginRegistrant.h"
diff --git a/design_system/design_system_gallery/ios/RunnerTests/RunnerTests.swift b/design_system/design_system_gallery/ios/RunnerTests/RunnerTests.swift
new file mode 100644
index 0000000..86a7c3b
--- /dev/null
+++ b/design_system/design_system_gallery/ios/RunnerTests/RunnerTests.swift
@@ -0,0 +1,12 @@
+import Flutter
+import UIKit
+import XCTest
+
+class RunnerTests: XCTestCase {
+
+ func testExample() {
+ // If you add code to the Runner application, consider adding tests here.
+ // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
+ }
+
+}
diff --git a/design_system/design_system_gallery/lib/gallery/gallery_app_button_screen.dart b/design_system/design_system_gallery/lib/gallery/gallery_app_button_screen.dart
new file mode 100644
index 0000000..33c18e1
--- /dev/null
+++ b/design_system/design_system_gallery/lib/gallery/gallery_app_button_screen.dart
@@ -0,0 +1,55 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:design_system/design_system.dart';
+import 'package:design_system/theme/app_buttons.dart';
+import 'package:design_system_gallery/gallery/gallery_scaffold_screen.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+@RoutePage()
+class GalleryAppButtonScreen extends StatelessWidget {
+ const GalleryAppButtonScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) => GalleryScaffold(
+ title: 'BUTTONS',
+ child: SingleChildScrollView(
+ child: Column(
+ children: [
+ const SizedBox(height: 10),
+ FilledButton(
+ onPressed: () => {},
+ child: const Text('PRIMARY FILLED BUTTON'),
+ ),
+ SizedBox(height: 10.h),
+ StrokeButton(
+ onPressed: () => {},
+ child: const Text('PRIMARY STROKE BUTTON'),
+ ),
+ SizedBox(height: 10.h),
+ GhostButton(
+ onPressed: () => {},
+ child: const Text('PRIMARY GHOST BUTTON'),
+ ),
+ SizedBox(height: 10.h),
+ FilledButton(
+ style: context.theme.buttonsStyle.secondaryFilledButton,
+ onPressed: () {},
+ child: const Text('SECONDARY FILLED BUTTON'),
+ ),
+ SizedBox(height: 10.h),
+ StrokeButton(
+ style: context.theme.buttonsStyle.secondaryOutlineButton,
+ onPressed: () {},
+ child: const Text('SECONDARY STROKE BUTTON'),
+ ),
+ SizedBox(height: 10.h),
+ GhostButton(
+ style: context.theme.buttonsStyle.secondaryTextButton,
+ onPressed: () {},
+ child: const Text('SECONDARY GHOST BUTTON'),
+ ),
+ ],
+ ),
+ ),
+ );
+}
diff --git a/design_system/design_system_gallery/lib/gallery/gallery_app_checkbox.dart b/design_system/design_system_gallery/lib/gallery/gallery_app_checkbox.dart
new file mode 100644
index 0000000..f037c9a
--- /dev/null
+++ b/design_system/design_system_gallery/lib/gallery/gallery_app_checkbox.dart
@@ -0,0 +1,27 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:design_system/widgets/app_checkbox.dart';
+import 'package:design_system_gallery/gallery/gallery_scaffold_screen.dart';
+import 'package:flutter/material.dart';
+
+@RoutePage()
+class GalleryAppCheckboxScreen extends StatelessWidget {
+ const GalleryAppCheckboxScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) => GalleryScaffold(
+ title: 'APP CHECKBOX',
+ child: AppCheckbox(
+ shrinkWrap: true,
+ initialValue: true,
+ onPressed: (bool? value) {},
+ items: const [
+ (value: false, title: 'Option 1', subtitle: null),
+ (value: false, title: 'Option 2', subtitle: null),
+ (value: false, title: 'Option 3', subtitle: null),
+ (value: false, title: 'Option 4', subtitle: null),
+ (value: false, title: 'Option 5', subtitle: null),
+ (value: false, title: 'Option 6', subtitle: null),
+ ],
+ ),
+ );
+}
diff --git a/design_system/design_system_gallery/lib/gallery/gallery_app_colors_screen.dart b/design_system/design_system_gallery/lib/gallery/gallery_app_colors_screen.dart
new file mode 100644
index 0000000..cf501cd
--- /dev/null
+++ b/design_system/design_system_gallery/lib/gallery/gallery_app_colors_screen.dart
@@ -0,0 +1,69 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:design_system/design_system.dart';
+import 'package:design_system_gallery/gallery/gallery_scaffold_screen.dart';
+import 'package:flutter/material.dart';
+
+@RoutePage()
+class GalleryAppColorsScreen extends StatelessWidget {
+ const GalleryAppColorsScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) => GalleryScaffold(
+ title: 'COLORS',
+ child: ListView.separated(
+ separatorBuilder: (BuildContext context, int index) =>
+ const Divider(),
+ itemCount: _GalleryColors.values.length,
+ itemBuilder: (BuildContext context, int index) {
+ final element = _GalleryColors.values[index];
+ return Row(
+ children: [
+ Expanded(
+ child: Container(
+ height: 50,
+ color: element.color(context),
+ child: Center(
+ child: Text(
+ element.name.toUpperCase(),
+ style: context.theme.textStyles.labelMedium,
+ ),
+ ),
+ ),
+ ),
+ ],
+ );
+ },
+ ),
+ );
+}
+
+enum _GalleryColors {
+ primary,
+ secondary,
+ success,
+ info,
+ warning,
+ danger,
+ text,
+}
+
+extension _GalleryScreenExtensions on _GalleryColors {
+ Color color(BuildContext context) {
+ switch (this) {
+ case _GalleryColors.primary:
+ return context.theme.colorScheme.primary;
+ case _GalleryColors.secondary:
+ return context.theme.colorScheme.secondary;
+ case _GalleryColors.success:
+ return context.theme.customColors.success;
+ case _GalleryColors.info:
+ return context.theme.customColors.info;
+ case _GalleryColors.warning:
+ return context.theme.customColors.warning;
+ case _GalleryColors.danger:
+ return context.theme.customColors.danger;
+ case _GalleryColors.text:
+ return context.theme.customColors.textColor;
+ }
+ }
+}
diff --git a/design_system/design_system_gallery/lib/gallery/gallery_app_dialog.dart b/design_system/design_system_gallery/lib/gallery/gallery_app_dialog.dart
new file mode 100644
index 0000000..798bef4
--- /dev/null
+++ b/design_system/design_system_gallery/lib/gallery/gallery_app_dialog.dart
@@ -0,0 +1,24 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:design_system/widgets/app_dialog.dart';
+import 'package:design_system_gallery/gallery/gallery_scaffold_screen.dart';
+import 'package:flutter/material.dart';
+
+@RoutePage()
+class GalleryDialogScreen extends StatelessWidget {
+ const GalleryDialogScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) => const GalleryScaffold(
+ title: 'DIALOG',
+ child: AppDialog(
+ title: 'Modal title',
+ content: 'This is place holder text. The basic dialog for modals '
+ 'should contain only valuable and relevant information. Simplify '
+ 'dialogs by removing unnecessary elements or content that does '
+ 'not support user tasks. If you find that the number of required '
+ 'elements for your design are making ',
+ cancelButtonText: 'Cancel',
+ actionButtonText: 'Confirm',
+ ),
+ );
+}
diff --git a/design_system/design_system_gallery/lib/gallery/gallery_app_dropdown_screen.dart b/design_system/design_system_gallery/lib/gallery/gallery_app_dropdown_screen.dart
new file mode 100644
index 0000000..36afda7
--- /dev/null
+++ b/design_system/design_system_gallery/lib/gallery/gallery_app_dropdown_screen.dart
@@ -0,0 +1,36 @@
+//ignore_for_file: unused-files, unused-code
+import 'package:auto_route/auto_route.dart';
+import 'package:design_system/widgets/app_select_dropdown.dart';
+import 'package:design_system_gallery/gallery/gallery_scaffold_screen.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+@RoutePage()
+class GalleryDropdownScreen extends StatelessWidget {
+ const GalleryDropdownScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) => GalleryScaffold(
+ title: 'DROPDOWN',
+ child: Container(
+ margin: const EdgeInsets.all(20),
+ child: Column(
+ children: [
+ SizedBox(height: 30.h),
+ AppSelectDropdown(
+ label: 'Select',
+ items: const [
+ (value: 1, label: 'Option 1'),
+ (value: 2, label: 'Option 2'),
+ (value: 3, label: 'Option 3'),
+ (value: 4, label: 'Option 4'),
+ (value: 5, label: 'Option 5'),
+ (value: 6, label: 'Option 6'),
+ ],
+ onChanged: (int? value) {},
+ ),
+ ],
+ ),
+ ),
+ );
+}
diff --git a/design_system/design_system_gallery/lib/gallery/gallery_app_radio_button.dart b/design_system/design_system_gallery/lib/gallery/gallery_app_radio_button.dart
new file mode 100644
index 0000000..4e863bd
--- /dev/null
+++ b/design_system/design_system_gallery/lib/gallery/gallery_app_radio_button.dart
@@ -0,0 +1,26 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:design_system/widgets/app_radio_button.dart';
+import 'package:design_system_gallery/gallery/gallery_scaffold_screen.dart';
+import 'package:flutter/material.dart';
+
+@RoutePage()
+class GalleryAppRadioButtonScreen extends StatelessWidget {
+ const GalleryAppRadioButtonScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) => GalleryScaffold(
+ title: 'APP RADIO BUTTON',
+ child: AppRadioButton(
+ initialValue: 1,
+ onPressed: (int? value) {},
+ items: const [
+ (value: 1, label: 'Option 1'),
+ (value: 2, label: 'Option 2'),
+ (value: 3, label: 'Option 3'),
+ (value: 4, label: 'Option 4'),
+ (value: 5, label: 'Option 5'),
+ (value: 6, label: 'Option 6'),
+ ],
+ ),
+ );
+}
diff --git a/design_system/design_system_gallery/lib/gallery/gallery_app_text_fields_screen.dart b/design_system/design_system_gallery/lib/gallery/gallery_app_text_fields_screen.dart
new file mode 100644
index 0000000..ef7bb10
--- /dev/null
+++ b/design_system/design_system_gallery/lib/gallery/gallery_app_text_fields_screen.dart
@@ -0,0 +1,66 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:design_system/design_system.dart';
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:design_system/widgets/app_text_fields.dart';
+import 'package:design_system_gallery/gallery/gallery_scaffold_screen.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+@RoutePage()
+class GalleryTextFieldsScreen extends StatefulWidget {
+ const GalleryTextFieldsScreen({super.key});
+
+ @override
+ State createState() =>
+ _GalleryTextFieldsScreenState();
+}
+
+class _GalleryTextFieldsScreenState extends State {
+ int _characterCount = 0;
+ final labelTextController = TextEditingController();
+ final textAreaTextController = TextEditingController();
+
+ @override
+ Widget build(BuildContext context) => GalleryScaffold(
+ title: 'TEXT FIELDS',
+ child: Container(
+ margin: const EdgeInsets.all(20),
+ child: Column(
+ children: [
+ AppTextField(
+ controller: labelTextController,
+ labelText: 'Label',
+ helperText: 'Helper text',
+ hintText: 'Text',
+ suffixIcon: Icon(
+ Icons.close,
+ color: context.theme.customColors.textColor.getShade(200),
+ ),
+ prefixIcon: Icon(
+ Icons.close,
+ color: context.theme.customColors.textColor.getShade(200),
+ ),
+ keyboardType: TextInputType.emailAddress,
+ ),
+ SizedBox(height: 10.h),
+ AppTextField(
+ keyboardType: TextInputType.multiline,
+ controller: textAreaTextController,
+ maxLength: 100,
+ labelText: 'Label',
+ hintText: 'Text',
+ currentLength: _characterCount,
+ onChange: (value) {
+ setState(() {
+ _characterCount = value.length;
+ });
+ },
+ minLines: 8,
+ maxLines: 10,
+ ),
+ SizedBox(height: 10.h),
+ ],
+ ),
+ ),
+ );
+}
diff --git a/design_system/design_system_gallery/lib/gallery/gallery_app_typography_screen.dart b/design_system/design_system_gallery/lib/gallery/gallery_app_typography_screen.dart
new file mode 100644
index 0000000..26e58c8
--- /dev/null
+++ b/design_system/design_system_gallery/lib/gallery/gallery_app_typography_screen.dart
@@ -0,0 +1,92 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:design_system/design_system.dart';
+import 'package:flutter/material.dart';
+import 'package:design_system_gallery/gallery/gallery_scaffold_screen.dart';
+
+@RoutePage()
+class GalleryAppTypographyScreen extends StatelessWidget {
+ const GalleryAppTypographyScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) => GalleryScaffold(
+ title: 'TYPOGRAPHY',
+ child: ListView.separated(
+ shrinkWrap: true,
+ separatorBuilder: (BuildContext context, int index) =>
+ const Divider(),
+ itemCount: _GalleryTypography.values.length,
+ itemBuilder: (BuildContext context, int index) {
+ final element = _GalleryTypography.values[index];
+ return Row(
+ children: [
+ Expanded(
+ child: Center(
+ child: Text(
+ element.name.toUpperCase(),
+ style: element.textStyle(context).copyWith(
+ color: context.theme.customColors.textColor,
+ ),
+ ),
+ ),
+ ),
+ ],
+ );
+ },
+ ),
+ );
+}
+
+enum _GalleryTypography {
+ headingLarge,
+ headingMedium,
+ headingSmall,
+ labelLarge,
+ labelMedium,
+ labelSmall,
+ bodyLarge,
+ bodyMedium,
+ bodySmall,
+ bodyXSmall,
+ buttonXLarge,
+ buttonLarge,
+ buttonMedium,
+ buttonSmall,
+ buttonXSmall,
+}
+
+extension _GalleryScreenExtensions on _GalleryTypography {
+ TextStyle textStyle(BuildContext context) {
+ switch (this) {
+ case _GalleryTypography.headingLarge:
+ return context.theme.textStyles.headlineLarge!;
+ case _GalleryTypography.headingMedium:
+ return context.theme.textStyles.headlineMedium!;
+ case _GalleryTypography.headingSmall:
+ return context.theme.textStyles.headlineSmall!;
+ case _GalleryTypography.labelLarge:
+ return context.theme.textStyles.labelLarge!;
+ case _GalleryTypography.labelMedium:
+ return context.theme.textStyles.labelMedium!;
+ case _GalleryTypography.labelSmall:
+ return context.theme.textStyles.labelSmall!;
+ case _GalleryTypography.bodyLarge:
+ return context.theme.textStyles.bodyLarge!;
+ case _GalleryTypography.bodyMedium:
+ return context.theme.textStyles.bodyMedium!;
+ case _GalleryTypography.bodySmall:
+ return context.theme.textStyles.bodySmall!;
+ case _GalleryTypography.bodyXSmall:
+ return context.theme.customTextStyles.bodyXSmall;
+ case _GalleryTypography.buttonXSmall:
+ return context.theme.customTextStyles.buttonXSmall;
+ case _GalleryTypography.buttonLarge:
+ return context.theme.customTextStyles.buttonLarge;
+ case _GalleryTypography.buttonMedium:
+ return context.theme.customTextStyles.buttonMedium;
+ case _GalleryTypography.buttonSmall:
+ return context.theme.customTextStyles.buttonSmall;
+ case _GalleryTypography.buttonXLarge:
+ return context.theme.customTextStyles.buttonXLarge;
+ }
+ }
+}
diff --git a/design_system/design_system_gallery/lib/gallery/gallery_scaffold_screen.dart b/design_system/design_system_gallery/lib/gallery/gallery_scaffold_screen.dart
new file mode 100644
index 0000000..c5284ca
--- /dev/null
+++ b/design_system/design_system_gallery/lib/gallery/gallery_scaffold_screen.dart
@@ -0,0 +1,40 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:design_system/design_system.dart';
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:flutter/material.dart';
+
+class GalleryScaffold extends StatelessWidget {
+ final Widget child;
+ final String title;
+ final bool? showBack;
+
+ const GalleryScaffold({
+ required this.child,
+ required this.title,
+ this.showBack = true,
+ super.key,
+ });
+
+ @override
+ Widget build(BuildContext context) => Scaffold(
+ appBar: AppBar(
+ leading: showBack ?? true
+ ? IconButton(
+ icon: Icon(
+ Icons.chevron_left,
+ color: context.theme.colorScheme.primary.getShade(100),
+ ),
+ onPressed: () => context.router.maybePop(),
+ )
+ : null,
+ title: Text(title),
+ ),
+ backgroundColor: context.theme.customColors.textColor.getShade(100),
+ body: SafeArea(
+ child: Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: child,
+ ),
+ ),
+ );
+}
diff --git a/design_system/design_system_gallery/lib/main.dart b/design_system/design_system_gallery/lib/main.dart
new file mode 100644
index 0000000..0b3d44f
--- /dev/null
+++ b/design_system/design_system_gallery/lib/main.dart
@@ -0,0 +1,35 @@
+import 'package:design_system/design_system.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:design_system_gallery/router/gallery_router.dart';
+
+void main() {
+ runApp(MyApp(GalleryRouter()));
+}
+
+class MyApp extends StatelessWidget {
+ final GalleryRouter _router;
+
+ const MyApp(this._router, {super.key});
+
+ @override
+ Widget build(BuildContext context) => ScreenUtilInit(
+ designSize: const Size(375, 812),
+ minTextAdapt: false,
+ splitScreenMode: true,
+ builder: (_, __) => _GalleryAppContentScreen(_router),
+ );
+}
+
+class _GalleryAppContentScreen extends StatelessWidget {
+ final GalleryRouter _router;
+
+ const _GalleryAppContentScreen(this._router, {super.key});
+
+ @override
+ Widget build(BuildContext context) => MaterialApp.router(
+ theme: AppTheme.provideAppTheme(context),
+ routerConfig: _router.config(),
+ builder: (context, child) => child!,
+ );
+}
diff --git a/design_system/design_system_gallery/lib/main/gallery_main_screen.dart b/design_system/design_system_gallery/lib/main/gallery_main_screen.dart
new file mode 100644
index 0000000..c3c7d09
--- /dev/null
+++ b/design_system/design_system_gallery/lib/main/gallery_main_screen.dart
@@ -0,0 +1,91 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:design_system/design_system.dart';
+import 'package:flutter/material.dart';
+import 'package:design_system_gallery/gallery/gallery_scaffold_screen.dart';
+import 'package:design_system_gallery/router/gallery_router.dart';
+
+@RoutePage()
+class GalleryMainScreen extends StatelessWidget {
+ const GalleryMainScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) => GalleryScaffold(
+ title: 'WIDGET CATALOG',
+ showBack: false,
+ child: ListView.separated(
+ shrinkWrap: true,
+ separatorBuilder: (BuildContext context, int index) => Divider(
+ color: context.theme.colorScheme.primary,
+ ),
+ itemCount: _GalleryScreen.values.length,
+ itemBuilder: (BuildContext context, int index) {
+ final element = _GalleryScreen.values[index];
+ return Row(
+ children: [
+ Expanded(
+ child: TextButton(
+ child: Text(element.title.toUpperCase()),
+ onPressed: () => context.router.push(element.route),
+ ),
+ ),
+ ],
+ );
+ },
+ ),
+ );
+}
+
+enum _GalleryScreen {
+ buttons,
+ textFields,
+ colors,
+ typography,
+ dropdown,
+ dialog,
+ radioButtons,
+ checkbox,
+}
+
+extension _GalleryScreenExtensions on _GalleryScreen {
+ String get title {
+ switch (this) {
+ case _GalleryScreen.buttons:
+ return 'Buttons';
+ case _GalleryScreen.textFields:
+ return 'Text Fields';
+ case _GalleryScreen.colors:
+ return 'Colors';
+ case _GalleryScreen.typography:
+ return 'Typography';
+ case _GalleryScreen.dropdown:
+ return 'Dropdown';
+ case _GalleryScreen.dialog:
+ return 'Dialog';
+ case _GalleryScreen.radioButtons:
+ return 'Radio Buttons';
+ case _GalleryScreen.checkbox:
+ return 'Checkbox';
+ }
+ }
+
+ PageRouteInfo get route {
+ switch (this) {
+ case _GalleryScreen.buttons:
+ return const GalleryAppButtonRoute();
+ case _GalleryScreen.textFields:
+ return const GalleryTextFieldsRoute();
+ case _GalleryScreen.colors:
+ return const GalleryAppColorsRoute();
+ case _GalleryScreen.typography:
+ return const GalleryAppTypographyRoute();
+ case _GalleryScreen.dropdown:
+ return const GalleryDropdownRoute();
+ case _GalleryScreen.dialog:
+ return const GalleryDialogRoute();
+ case _GalleryScreen.radioButtons:
+ return const GalleryAppRadioButtonRoute();
+ case _GalleryScreen.checkbox:
+ return const GalleryAppCheckboxRoute();
+ }
+ }
+}
diff --git a/design_system/design_system_gallery/lib/router/gallery_router.dart b/design_system/design_system_gallery/lib/router/gallery_router.dart
new file mode 100644
index 0000000..7f6f862
--- /dev/null
+++ b/design_system/design_system_gallery/lib/router/gallery_router.dart
@@ -0,0 +1,32 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:design_system_gallery/gallery/gallery_app_colors_screen.dart';
+import 'package:design_system_gallery/gallery/gallery_app_radio_button.dart';
+import 'package:design_system_gallery/gallery/gallery_app_typography_screen.dart';
+import 'package:design_system_gallery/gallery/gallery_app_checkbox.dart';
+import 'package:design_system_gallery/gallery/gallery_app_dropdown_screen.dart';
+import 'package:design_system_gallery/gallery/gallery_app_text_fields_screen.dart';
+import 'package:design_system_gallery/gallery/gallery_app_dialog.dart';
+import 'package:design_system_gallery/main/gallery_main_screen.dart';
+
+part 'gallery_router.gr.dart';
+
+@AutoRouterConfig(
+ replaceInRouteName: 'Page|Screen|Router,Route',
+)
+class GalleryRouter extends _$GalleryRouter {
+ @override
+ final List routes;
+
+ GalleryRouter()
+ : routes = [
+ AutoRoute(page: GalleryAppButtonRoute.page),
+ AutoRoute(initial: true, page: GalleryMainRoute.page),
+ AutoRoute(page: GalleryTextFieldsRoute.page),
+ AutoRoute(page: GalleryAppColorsRoute.page),
+ AutoRoute(page: GalleryAppTypographyRoute.page),
+ AutoRoute(page: GalleryDropdownRoute.page),
+ AutoRoute(page: GalleryDialogRoute.page),
+ AutoRoute(page: GalleryAppRadioButtonRoute.page),
+ AutoRoute(page: GalleryAppCheckboxRoute.page),
+ ];
+}
diff --git a/design_system/design_system_gallery/lib/router/gallery_router.gr.dart b/design_system/design_system_gallery/lib/router/gallery_router.gr.dart
new file mode 100644
index 0000000..78c7966
--- /dev/null
+++ b/design_system/design_system_gallery/lib/router/gallery_router.gr.dart
@@ -0,0 +1,199 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+// **************************************************************************
+// AutoRouterGenerator
+// **************************************************************************
+
+// ignore_for_file: type=lint
+// coverage:ignore-file
+
+part of 'gallery_router.dart';
+
+abstract class _$GalleryRouter extends RootStackRouter {
+ // ignore: unused_element
+ _$GalleryRouter({super.navigatorKey});
+
+ @override
+ final Map pagesMap = {
+ GalleryAppButtonRoute.name: (routeData) {
+ return AutoRoutePage(
+ routeData: routeData,
+ child: const GalleryAppButtonScreen(),
+ );
+ },
+ GalleryAppCheckboxRoute.name: (routeData) {
+ return AutoRoutePage(
+ routeData: routeData,
+ child: const GalleryAppCheckboxScreen(),
+ );
+ },
+ GalleryAppColorsRoute.name: (routeData) {
+ return AutoRoutePage(
+ routeData: routeData,
+ child: const GalleryAppColorsScreen(),
+ );
+ },
+ GalleryAppRadioButtonRoute.name: (routeData) {
+ return AutoRoutePage(
+ routeData: routeData,
+ child: const GalleryAppRadioButtonScreen(),
+ );
+ },
+ GalleryAppTypographyRoute.name: (routeData) {
+ return AutoRoutePage(
+ routeData: routeData,
+ child: const GalleryAppTypographyScreen(),
+ );
+ },
+ GalleryDialogRoute.name: (routeData) {
+ return AutoRoutePage(
+ routeData: routeData,
+ child: const GalleryDialogScreen(),
+ );
+ },
+ GalleryDropdownRoute.name: (routeData) {
+ return AutoRoutePage(
+ routeData: routeData,
+ child: const GalleryDropdownScreen(),
+ );
+ },
+ GalleryMainRoute.name: (routeData) {
+ return AutoRoutePage(
+ routeData: routeData,
+ child: const GalleryMainScreen(),
+ );
+ },
+ GalleryTextFieldsRoute.name: (routeData) {
+ return AutoRoutePage(
+ routeData: routeData,
+ child: const GalleryTextFieldsScreen(),
+ );
+ },
+ };
+}
+
+/// generated route for
+/// [GalleryAppButtonScreen]
+class GalleryAppButtonRoute extends PageRouteInfo {
+ const GalleryAppButtonRoute({List? children})
+ : super(
+ GalleryAppButtonRoute.name,
+ initialChildren: children,
+ );
+
+ static const String name = 'GalleryAppButtonRoute';
+
+ static const PageInfo page = PageInfo(name);
+}
+
+/// generated route for
+/// [GalleryAppCheckboxScreen]
+class GalleryAppCheckboxRoute extends PageRouteInfo {
+ const GalleryAppCheckboxRoute({List? children})
+ : super(
+ GalleryAppCheckboxRoute.name,
+ initialChildren: children,
+ );
+
+ static const String name = 'GalleryAppCheckboxRoute';
+
+ static const PageInfo page = PageInfo(name);
+}
+
+/// generated route for
+/// [GalleryAppColorsScreen]
+class GalleryAppColorsRoute extends PageRouteInfo {
+ const GalleryAppColorsRoute({List? children})
+ : super(
+ GalleryAppColorsRoute.name,
+ initialChildren: children,
+ );
+
+ static const String name = 'GalleryAppColorsRoute';
+
+ static const PageInfo page = PageInfo(name);
+}
+
+/// generated route for
+/// [GalleryAppRadioButtonScreen]
+class GalleryAppRadioButtonRoute extends PageRouteInfo {
+ const GalleryAppRadioButtonRoute({List? children})
+ : super(
+ GalleryAppRadioButtonRoute.name,
+ initialChildren: children,
+ );
+
+ static const String name = 'GalleryAppRadioButtonRoute';
+
+ static const PageInfo page = PageInfo(name);
+}
+
+/// generated route for
+/// [GalleryAppTypographyScreen]
+class GalleryAppTypographyRoute extends PageRouteInfo {
+ const GalleryAppTypographyRoute({List? children})
+ : super(
+ GalleryAppTypographyRoute.name,
+ initialChildren: children,
+ );
+
+ static const String name = 'GalleryAppTypographyRoute';
+
+ static const PageInfo page = PageInfo(name);
+}
+
+/// generated route for
+/// [GalleryDialogScreen]
+class GalleryDialogRoute extends PageRouteInfo {
+ const GalleryDialogRoute({List? children})
+ : super(
+ GalleryDialogRoute.name,
+ initialChildren: children,
+ );
+
+ static const String name = 'GalleryDialogRoute';
+
+ static const PageInfo page = PageInfo(name);
+}
+
+/// generated route for
+/// [GalleryDropdownScreen]
+class GalleryDropdownRoute extends PageRouteInfo {
+ const GalleryDropdownRoute({List? children})
+ : super(
+ GalleryDropdownRoute.name,
+ initialChildren: children,
+ );
+
+ static const String name = 'GalleryDropdownRoute';
+
+ static const PageInfo page = PageInfo(name);
+}
+
+/// generated route for
+/// [GalleryMainScreen]
+class GalleryMainRoute extends PageRouteInfo {
+ const GalleryMainRoute({List? children})
+ : super(
+ GalleryMainRoute.name,
+ initialChildren: children,
+ );
+
+ static const String name = 'GalleryMainRoute';
+
+ static const PageInfo page = PageInfo(name);
+}
+
+/// generated route for
+/// [GalleryTextFieldsScreen]
+class GalleryTextFieldsRoute extends PageRouteInfo {
+ const GalleryTextFieldsRoute({List? children})
+ : super(
+ GalleryTextFieldsRoute.name,
+ initialChildren: children,
+ );
+
+ static const String name = 'GalleryTextFieldsRoute';
+
+ static const PageInfo page = PageInfo(name);
+}
diff --git a/design_system/design_system_gallery/pubspec.lock b/design_system/design_system_gallery/pubspec.lock
new file mode 100644
index 0000000..7e98480
--- /dev/null
+++ b/design_system/design_system_gallery/pubspec.lock
@@ -0,0 +1,833 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+ _fe_analyzer_shared:
+ dependency: transitive
+ description:
+ name: _fe_analyzer_shared
+ sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a
+ url: "https://pub.dev"
+ source: hosted
+ version: "61.0.0"
+ analyzer:
+ dependency: transitive
+ description:
+ name: analyzer
+ sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.13.0"
+ archive:
+ dependency: transitive
+ description:
+ name: archive
+ sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.6.1"
+ args:
+ dependency: transitive
+ description:
+ name: args
+ sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.5.0"
+ async:
+ dependency: transitive
+ description:
+ name: async
+ sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.11.0"
+ auto_route:
+ dependency: "direct main"
+ description:
+ name: auto_route
+ sha256: "6cad3f408863ffff2b5757967c802b18415dac4acb1b40c5cdd45d0a26e5080f"
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.1.3"
+ auto_route_generator:
+ dependency: "direct dev"
+ description:
+ name: auto_route_generator
+ sha256: ba28133d3a3bf0a66772bcc98dade5843753cd9f1a8fb4802b842895515b67d3
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.0.0"
+ boolean_selector:
+ dependency: transitive
+ description:
+ name: boolean_selector
+ sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.1"
+ build:
+ dependency: transitive
+ description:
+ name: build
+ sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.1"
+ build_config:
+ dependency: transitive
+ description:
+ name: build_config
+ sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ build_daemon:
+ dependency: transitive
+ description:
+ name: build_daemon
+ sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.2"
+ build_resolvers:
+ dependency: transitive
+ description:
+ name: build_resolvers
+ sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.2"
+ build_runner:
+ dependency: "direct dev"
+ description:
+ name: build_runner
+ sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.6"
+ build_runner_core:
+ dependency: transitive
+ description:
+ name: build_runner_core
+ sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.3.1"
+ built_collection:
+ dependency: transitive
+ description:
+ name: built_collection
+ sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.1.1"
+ built_value:
+ dependency: transitive
+ description:
+ name: built_value
+ sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.9.2"
+ 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"
+ cli_util:
+ dependency: transitive
+ description:
+ name: cli_util
+ sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.4.1"
+ clock:
+ dependency: transitive
+ description:
+ name: clock
+ sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ code_builder:
+ dependency: transitive
+ description:
+ name: code_builder
+ sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.10.0"
+ collection:
+ dependency: transitive
+ description:
+ name: collection
+ sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.18.0"
+ color:
+ dependency: transitive
+ description:
+ name: color
+ sha256: ddcdf1b3badd7008233f5acffaf20ca9f5dc2cd0172b75f68f24526a5f5725cb
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.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"
+ csslib:
+ dependency: transitive
+ description:
+ name: csslib
+ sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.0"
+ dart_style:
+ dependency: transitive
+ description:
+ name: dart_style
+ sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.2"
+ dartx:
+ dependency: transitive
+ description:
+ name: dartx
+ sha256: "8b25435617027257d43e6508b5fe061012880ddfdaa75a71d607c3de2a13d244"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.0"
+ design_system:
+ dependency: "direct main"
+ description:
+ path: ".."
+ relative: true
+ source: path
+ version: "0.0.1"
+ 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: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ file:
+ dependency: transitive
+ description:
+ name: file
+ sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.0"
+ fixnum:
+ dependency: transitive
+ description:
+ name: fixnum
+ sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
+ flutter:
+ dependency: "direct main"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ flutter_flavorizr:
+ dependency: "direct dev"
+ description:
+ name: flutter_flavorizr
+ sha256: "54c799a467d2d5102d3e2ec9c999377ca11e30590b8d0ddd929ee9e69e26c0a0"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.1"
+ flutter_gen_core:
+ dependency: transitive
+ description:
+ name: flutter_gen_core
+ sha256: e8637dd6a59860f89e5e71be0a27101ec32dad1a0ed7fd879fd23b6e91d5004d
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.3.1"
+ flutter_gen_runner:
+ dependency: "direct dev"
+ description:
+ name: flutter_gen_runner
+ sha256: "7de1bf4fc0439be0fef3178b6423d5c7f1f9f3a38a7c6fafe75d7f70ff4856d7"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.3.1"
+ flutter_launcher_icons:
+ dependency: "direct dev"
+ description:
+ name: flutter_launcher_icons
+ sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.13.1"
+ flutter_lints:
+ dependency: "direct dev"
+ description:
+ name: flutter_lints
+ sha256: e2a421b7e59244faef694ba7b30562e489c2b489866e505074eb005cd7060db7
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.1"
+ flutter_native_splash:
+ dependency: "direct main"
+ description:
+ name: flutter_native_splash
+ sha256: ecff62b3b893f2f665de7e4ad3de89f738941fcfcaaba8ee601e749efafa4698
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.2"
+ flutter_screenutil:
+ dependency: "direct main"
+ description:
+ name: flutter_screenutil
+ sha256: "8239210dd68bee6b0577aa4a090890342d04a136ce1c81f98ee513fc0ce891de"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.9.3"
+ flutter_test:
+ dependency: "direct dev"
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ flutter_web_plugins:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ frontend_server_client:
+ dependency: transitive
+ description:
+ name: frontend_server_client
+ sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.0"
+ glob:
+ dependency: transitive
+ description:
+ name: glob
+ sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ google_fonts:
+ dependency: "direct main"
+ description:
+ name: google_fonts
+ sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.2.1"
+ graphs:
+ dependency: transitive
+ description:
+ name: graphs
+ sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.3.1"
+ html:
+ dependency: transitive
+ description:
+ name: html
+ sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.15.4"
+ http:
+ dependency: transitive
+ description:
+ name: http
+ sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.1"
+ http_multi_server:
+ dependency: transitive
+ description:
+ name: http_multi_server
+ sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.1"
+ http_parser:
+ dependency: transitive
+ description:
+ name: http_parser
+ sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.2"
+ image:
+ dependency: transitive
+ description:
+ name: image
+ sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.2.0"
+ intl:
+ dependency: transitive
+ description:
+ name: intl
+ sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.19.0"
+ io:
+ dependency: transitive
+ description:
+ name: io
+ sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
+ 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: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.9.0"
+ leak_tracker:
+ dependency: transitive
+ description:
+ name: leak_tracker
+ sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "10.0.4"
+ leak_tracker_flutter_testing:
+ dependency: transitive
+ description:
+ name: leak_tracker_flutter_testing
+ sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.3"
+ leak_tracker_testing:
+ dependency: transitive
+ description:
+ name: leak_tracker_testing
+ sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.1"
+ lints:
+ dependency: "direct dev"
+ description:
+ name: lints
+ sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.0"
+ 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: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.12.16+1"
+ material_color_generator:
+ dependency: "direct main"
+ description:
+ name: material_color_generator
+ sha256: fa0ffc12d7cf6f13c41e35ac7f4265a49ec2f201b41b268fd8061da3bcc41131
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
+ material_color_utilities:
+ dependency: transitive
+ description:
+ name: material_color_utilities
+ sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.8.0"
+ meta:
+ dependency: transitive
+ description:
+ name: meta
+ sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.12.0"
+ mime:
+ dependency: transitive
+ description:
+ name: mime
+ sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.5"
+ 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: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.9.0"
+ path_provider:
+ dependency: transitive
+ description:
+ name: path_provider
+ sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.3"
+ path_provider_android:
+ dependency: transitive
+ description:
+ name: path_provider_android
+ sha256: "9c96da072b421e98183f9ea7464898428e764bc0ce5567f27ec8693442e72514"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.5"
+ path_provider_foundation:
+ dependency: transitive
+ description:
+ name: path_provider_foundation
+ sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.0"
+ path_provider_linux:
+ dependency: transitive
+ description:
+ name: path_provider_linux
+ sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.1"
+ path_provider_platform_interface:
+ dependency: transitive
+ description:
+ name: path_provider_platform_interface
+ sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ path_provider_windows:
+ dependency: transitive
+ description:
+ name: path_provider_windows
+ sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.1"
+ petitparser:
+ dependency: transitive
+ description:
+ name: petitparser
+ sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.0.2"
+ platform:
+ dependency: transitive
+ description:
+ name: platform
+ sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.4"
+ plugin_platform_interface:
+ dependency: transitive
+ description:
+ name: plugin_platform_interface
+ sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.8"
+ pool:
+ dependency: transitive
+ description:
+ name: pool
+ sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.5.1"
+ 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: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.0"
+ shelf:
+ dependency: transitive
+ description:
+ name: shelf
+ sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.1"
+ shelf_web_socket:
+ dependency: transitive
+ description:
+ name: shelf_web_socket
+ sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
+ sky_engine:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.99"
+ source_gen:
+ dependency: transitive
+ description:
+ name: source_gen
+ sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.5.0"
+ 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: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.0"
+ time:
+ dependency: transitive
+ description:
+ name: time
+ sha256: ad8e018a6c9db36cb917a031853a1aae49467a93e0d464683e029537d848c221
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.4"
+ timing:
+ dependency: transitive
+ description:
+ name: timing
+ sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.1"
+ typed_data:
+ dependency: transitive
+ description:
+ name: typed_data
+ sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.2"
+ universal_io:
+ dependency: transitive
+ description:
+ name: universal_io
+ sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.2"
+ 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: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
+ url: "https://pub.dev"
+ source: hosted
+ version: "14.2.1"
+ 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: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.5.1"
+ web_socket_channel:
+ dependency: transitive
+ description:
+ name: web_socket_channel
+ sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.5"
+ win32:
+ dependency: transitive
+ description:
+ name: win32
+ sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.5.1"
+ xdg_directories:
+ dependency: transitive
+ description:
+ name: xdg_directories
+ sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
+ xml:
+ dependency: transitive
+ description:
+ name: xml
+ sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.5.0"
+ yaml:
+ dependency: transitive
+ description:
+ name: yaml
+ sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.2"
+sdks:
+ dart: ">=3.4.0 <4.0.0"
+ flutter: ">=3.22.1"
diff --git a/design_system/design_system_gallery/pubspec.yaml b/design_system/design_system_gallery/pubspec.yaml
new file mode 100644
index 0000000..7ea8fd5
--- /dev/null
+++ b/design_system/design_system_gallery/pubspec.yaml
@@ -0,0 +1,60 @@
+name: design_system_gallery
+description: A new Flutter project.
+publish_to: "none" # Remove this line if you wish to publish to pub.dev
+version: 1.0.0+1
+
+environment:
+ sdk: ">=3.0.0 <4.0.0"
+ flutter: 3.22.1
+
+# Dependencies specify other packages that your package needs in order to work.
+# To automatically upgrade your package dependencies to the latest versions
+# consider running `flutter pub upgrade --major-versions`. Alternatively,
+# dependencies can be manually updated by changing the version numbers below to
+# the latest version available on pub.dev. To see which dependencies have newer
+# versions available, run `flutter pub outdated`.
+dependencies:
+ flutter:
+ sdk: flutter
+ design_system:
+ path: ../
+
+ auto_route: 8.1.3
+ flutter_screenutil: 5.9.3
+ flutter_native_splash: 2.3.2
+ material_color_generator: 1.1.0
+ google_fonts: 6.2.1
+
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+ auto_route_generator: 8.0.0
+ flutter_lints: 3.0.1
+ flutter_gen_runner: 5.3.1
+ flutter_flavorizr: 2.2.1
+ flutter_launcher_icons: 0.13.1
+ build_runner: 2.4.6
+ lints: 3.0.0
+
+flutter:
+ uses-material-design: true
+
+flutter_launcher_icons:
+ android: true
+ ios: true
+ image_path: "icons/ic_launcher.png"
+ image_path_ios: "icons/ic_launcher_ios.png" # Transparency not supported on IOS
+ adaptive_icon_foreground: "icons/ic_launcher_foreground.png"
+ adaptive_icon_background: "#ee1a64"
+ remove_alpha_ios: true
+ web:
+ generate: false
+ windows:
+ generate: false
+
+flutter_native_splash:
+ color: "#ffffff"
+ image: "icons/splash_logo.png"
+ android_12:
+ image: "icons/splash_logo_android_12.png"
+ branding: "icons/splash_branding.png"
diff --git a/design_system/design_system_gallery/test/widget_test.dart b/design_system/design_system_gallery/test/widget_test.dart
new file mode 100644
index 0000000..faffa33
--- /dev/null
+++ b/design_system/design_system_gallery/test/widget_test.dart
@@ -0,0 +1,31 @@
+// 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:design_system_gallery/main.dart';
+import 'package:design_system_gallery/router/gallery_router.dart';
+
+void main() {
+ testWidgets('Counter increments smoke test', (WidgetTester tester) async {
+ // Build our app and trigger a frame.
+ await tester.pumpWidget(MyApp(GalleryRouter()));
+
+ // 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);
+ });
+}
diff --git a/design_system/design_system_gallery/web/favicon.png b/design_system/design_system_gallery/web/favicon.png
new file mode 100644
index 0000000..8aaa46a
Binary files /dev/null and b/design_system/design_system_gallery/web/favicon.png differ
diff --git a/design_system/design_system_gallery/web/icons/Icon-192.png b/design_system/design_system_gallery/web/icons/Icon-192.png
new file mode 100644
index 0000000..b749bfe
Binary files /dev/null and b/design_system/design_system_gallery/web/icons/Icon-192.png differ
diff --git a/design_system/design_system_gallery/web/icons/Icon-512.png b/design_system/design_system_gallery/web/icons/Icon-512.png
new file mode 100644
index 0000000..88cfd48
Binary files /dev/null and b/design_system/design_system_gallery/web/icons/Icon-512.png differ
diff --git a/design_system/design_system_gallery/web/icons/Icon-maskable-192.png b/design_system/design_system_gallery/web/icons/Icon-maskable-192.png
new file mode 100644
index 0000000..eb9b4d7
Binary files /dev/null and b/design_system/design_system_gallery/web/icons/Icon-maskable-192.png differ
diff --git a/design_system/design_system_gallery/web/icons/Icon-maskable-512.png b/design_system/design_system_gallery/web/icons/Icon-maskable-512.png
new file mode 100644
index 0000000..d69c566
Binary files /dev/null and b/design_system/design_system_gallery/web/icons/Icon-maskable-512.png differ
diff --git a/design_system/design_system_gallery/web/index.html b/design_system/design_system_gallery/web/index.html
new file mode 100644
index 0000000..d50793d
--- /dev/null
+++ b/design_system/design_system_gallery/web/index.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ design_system_gallery
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/design_system/design_system_gallery/web/manifest.json b/design_system/design_system_gallery/web/manifest.json
new file mode 100644
index 0000000..0c9ff26
--- /dev/null
+++ b/design_system/design_system_gallery/web/manifest.json
@@ -0,0 +1,35 @@
+{
+ "name": "design_system_gallery",
+ "short_name": "design_system_gallery",
+ "start_url": ".",
+ "display": "standalone",
+ "background_color": "#0175C2",
+ "theme_color": "#0175C2",
+ "description": "A new Flutter project.",
+ "orientation": "portrait-primary",
+ "prefer_related_applications": false,
+ "icons": [
+ {
+ "src": "icons/Icon-192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "icons/Icon-512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ },
+ {
+ "src": "icons/Icon-maskable-192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "maskable"
+ },
+ {
+ "src": "icons/Icon-maskable-512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "maskable"
+ }
+ ]
+}
diff --git a/design_system/design_system_gallery/web/splash/img/dark-1x.png b/design_system/design_system_gallery/web/splash/img/dark-1x.png
new file mode 100644
index 0000000..2544b5c
Binary files /dev/null and b/design_system/design_system_gallery/web/splash/img/dark-1x.png differ
diff --git a/design_system/design_system_gallery/web/splash/img/dark-2x.png b/design_system/design_system_gallery/web/splash/img/dark-2x.png
new file mode 100644
index 0000000..ca38ed1
Binary files /dev/null and b/design_system/design_system_gallery/web/splash/img/dark-2x.png differ
diff --git a/design_system/design_system_gallery/web/splash/img/dark-3x.png b/design_system/design_system_gallery/web/splash/img/dark-3x.png
new file mode 100644
index 0000000..ee10389
Binary files /dev/null and b/design_system/design_system_gallery/web/splash/img/dark-3x.png differ
diff --git a/design_system/design_system_gallery/web/splash/img/dark-4x.png b/design_system/design_system_gallery/web/splash/img/dark-4x.png
new file mode 100644
index 0000000..1b6630e
Binary files /dev/null and b/design_system/design_system_gallery/web/splash/img/dark-4x.png differ
diff --git a/design_system/design_system_gallery/web/splash/img/light-1x.png b/design_system/design_system_gallery/web/splash/img/light-1x.png
new file mode 100644
index 0000000..2544b5c
Binary files /dev/null and b/design_system/design_system_gallery/web/splash/img/light-1x.png differ
diff --git a/design_system/design_system_gallery/web/splash/img/light-2x.png b/design_system/design_system_gallery/web/splash/img/light-2x.png
new file mode 100644
index 0000000..ca38ed1
Binary files /dev/null and b/design_system/design_system_gallery/web/splash/img/light-2x.png differ
diff --git a/design_system/design_system_gallery/web/splash/img/light-3x.png b/design_system/design_system_gallery/web/splash/img/light-3x.png
new file mode 100644
index 0000000..ee10389
Binary files /dev/null and b/design_system/design_system_gallery/web/splash/img/light-3x.png differ
diff --git a/design_system/design_system_gallery/web/splash/img/light-4x.png b/design_system/design_system_gallery/web/splash/img/light-4x.png
new file mode 100644
index 0000000..1b6630e
Binary files /dev/null and b/design_system/design_system_gallery/web/splash/img/light-4x.png differ
diff --git a/design_system/l10n.yaml b/design_system/l10n.yaml
new file mode 100644
index 0000000..4254456
--- /dev/null
+++ b/design_system/l10n.yaml
@@ -0,0 +1,3 @@
+arb-dir: lib/l10n
+template-arb-file: intl_en.arb
+output-localization-file: app_localizations.dart
diff --git a/design_system/lib/common/helper.dart b/design_system/lib/common/helper.dart
new file mode 100644
index 0000000..ff780e7
--- /dev/null
+++ b/design_system/lib/common/helper.dart
@@ -0,0 +1,47 @@
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:flutter/material.dart';
+
+Color _getMaterialStatesColor(
+ WidgetState states,
+ Color baseColor, {
+ Color? customDisabledColor,
+ Color? defaultColor,
+ Color? customHoveredColor,
+ Color? customFocusedColor,
+}) =>
+ switch (states) {
+ WidgetState.disabled => customDisabledColor ?? baseColor.getShade(500),
+ WidgetState.focused => customFocusedColor ?? baseColor
+ ..getShade(400),
+ WidgetState.hovered => customHoveredColor ?? baseColor.getShade(300),
+ WidgetState.pressed => baseColor.getShade(400),
+ _ => defaultColor ?? Colors.transparent,
+ };
+
+WidgetStateColor getMaterialStatesColors(
+ Color baseColor, {
+ Color? customDisabledColor,
+ Color? defaultColor,
+ Color? customHoveredColor,
+ Color? customFocusedColor,
+}) =>
+ WidgetStateColor.resolveWith((Set states) {
+ for (final element in states) {
+ return _getMaterialStatesColor(element, baseColor);
+ }
+ return baseColor;
+ });
+
+WidgetStateProperty getBorderSidesStates(
+ Color baseColor, {
+ Color? customDisabledColor,
+ Color? defaultColor,
+ Color? customHoveredColor,
+ Color? customFocusedColor,
+}) =>
+ WidgetStateProperty.resolveWith((Set states) {
+ for (final element in states) {
+ return BorderSide(color: _getMaterialStatesColor(element, baseColor));
+ }
+ return BorderSide(color: baseColor);
+ });
diff --git a/design_system/lib/design_system.dart b/design_system/lib/design_system.dart
new file mode 100644
index 0000000..d7da8be
--- /dev/null
+++ b/design_system/lib/design_system.dart
@@ -0,0 +1,8 @@
+library design_system;
+
+export 'extensions/context_extensions.dart';
+export 'theme/app_dimensions.dart';
+export 'theme/app_text_styles.dart';
+export 'theme/app_theme.dart';
+export 'theme/custom_colors.dart';
+export 'widgets/app_select_dropdown.dart';
diff --git a/design_system/lib/extensions/color_extensions.dart b/design_system/lib/extensions/color_extensions.dart
new file mode 100644
index 0000000..33736b9
--- /dev/null
+++ b/design_system/lib/extensions/color_extensions.dart
@@ -0,0 +1,61 @@
+import 'dart:math';
+import 'package:flutter/material.dart';
+
+extension ColorExtension on Color {
+ Color getShade(int shade) => this is MaterialColor
+ ? (this as MaterialColor)[shade]!
+ : _generateMaterialColor();
+
+ MaterialColor _generateMaterialColor() => MaterialColor(value, {
+ 50: _tintColor(0.9),
+ 100: _tintColor(0.8),
+ 200: _tintColor(0.6),
+ 300: _tintColor(0.4),
+ 400: _tintColor(0.2),
+ 500: this,
+ 600: _shadeColor(0.1),
+ 700: _shadeColor(0.2),
+ 800: _shadeColor(0.3),
+ 900: _shadeColor(0.4),
+ });
+
+ int _tintValue(int value, double factor) =>
+ max(0, min((value + ((255 - value) * factor)).round(), 255));
+
+ Color _tintColor(double factor) => Color.fromRGBO(
+ _tintValue(red, factor),
+ _tintValue(green, factor),
+ _tintValue(blue, factor),
+ 1,
+ );
+
+ int _shadeValue(int value, double factor) =>
+ max(0, min(value - (value * factor).round(), 255));
+
+ Color _shadeColor(double factor) => Color.fromRGBO(
+ _shadeValue(red, factor),
+ _shadeValue(green, factor),
+ _shadeValue(blue, factor),
+ 1,
+ );
+
+ // Color? get shade100 => _getShade(100);
+ //
+ // Color? get shade200 => _getShade(200);
+ //
+ // Color? get shade300 => _getShade(300);
+ //
+ // Color? get shade400 => _getShade(400);
+ //
+ // Color? get shade500 => _getShade(500);
+ //
+ // Color? get shade600 => _getShade(600);
+ //
+ // Color? get shade700 => _getShade(700);
+ //
+ // Color? get shade800 => _getShade(800);
+ //
+ // Color? get shade900 => _getShade(900);
+ //
+ // Color? get shade1000 => _getShade(1000);
+}
diff --git a/design_system/lib/extensions/context_extensions.dart b/design_system/lib/extensions/context_extensions.dart
new file mode 100644
index 0000000..f7ce959
--- /dev/null
+++ b/design_system/lib/extensions/context_extensions.dart
@@ -0,0 +1,7 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_gen/gen_l10n/app_localizations.dart';
+
+extension ContextExtensions on BuildContext {
+ ThemeData get theme => Theme.of(this);
+ AppLocalizations get localizations => AppLocalizations.of(this)!;
+}
diff --git a/design_system/lib/gen/assets.gen.dart b/design_system/lib/gen/assets.gen.dart
new file mode 100644
index 0000000..555c846
--- /dev/null
+++ b/design_system/lib/gen/assets.gen.dart
@@ -0,0 +1,116 @@
+/// GENERATED CODE - DO NOT MODIFY BY HAND
+/// *****************************************************
+/// FlutterGen
+/// *****************************************************
+
+// coverage:ignore-file
+// ignore_for_file: type=lint
+// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use
+
+import 'package:flutter/widgets.dart';
+
+class $AssetsImagesGen {
+ const $AssetsImagesGen();
+
+ /// File path: assets/images/Check.png
+ AssetGenImage get check => const AssetGenImage('assets/images/Check.png');
+
+ /// File path: assets/images/Estrella.png
+ AssetGenImage get estrella =>
+ const AssetGenImage('assets/images/Estrella.png');
+
+ /// File path: assets/images/Reloj.png
+ AssetGenImage get reloj => const AssetGenImage('assets/images/Reloj.png');
+
+ /// File path: assets/images/background_green_prop.png
+ AssetGenImage get backgroundGreenProp =>
+ const AssetGenImage('assets/images/background_green_prop.png');
+
+ /// File path: assets/images/background_red_prop.png
+ AssetGenImage get backgroundRedProp =>
+ const AssetGenImage('assets/images/background_red_prop.png');
+
+ /// List of all assets
+ List get values =>
+ [check, estrella, reloj, backgroundGreenProp, backgroundRedProp];
+}
+
+class Assets {
+ Assets._();
+
+ static const $AssetsImagesGen images = $AssetsImagesGen();
+}
+
+class AssetGenImage {
+ const AssetGenImage(this._assetName);
+
+ final String _assetName;
+
+ Image image({
+ Key? key,
+ AssetBundle? bundle,
+ ImageFrameBuilder? frameBuilder,
+ ImageErrorWidgetBuilder? errorBuilder,
+ String? semanticLabel,
+ bool excludeFromSemantics = false,
+ double? scale,
+ double? width,
+ double? height,
+ Color? color,
+ Animation? opacity,
+ BlendMode? colorBlendMode,
+ BoxFit? fit,
+ AlignmentGeometry alignment = Alignment.center,
+ ImageRepeat repeat = ImageRepeat.noRepeat,
+ Rect? centerSlice,
+ bool matchTextDirection = false,
+ bool gaplessPlayback = false,
+ bool isAntiAlias = false,
+ String? package,
+ FilterQuality filterQuality = FilterQuality.low,
+ int? cacheWidth,
+ int? cacheHeight,
+ }) {
+ return Image.asset(
+ _assetName,
+ key: key,
+ bundle: bundle,
+ frameBuilder: frameBuilder,
+ errorBuilder: errorBuilder,
+ semanticLabel: semanticLabel,
+ excludeFromSemantics: excludeFromSemantics,
+ scale: scale,
+ width: width,
+ height: height,
+ color: color,
+ opacity: opacity,
+ colorBlendMode: colorBlendMode,
+ fit: fit,
+ alignment: alignment,
+ repeat: repeat,
+ centerSlice: centerSlice,
+ matchTextDirection: matchTextDirection,
+ gaplessPlayback: gaplessPlayback,
+ isAntiAlias: isAntiAlias,
+ package: package,
+ filterQuality: filterQuality,
+ cacheWidth: cacheWidth,
+ cacheHeight: cacheHeight,
+ );
+ }
+
+ ImageProvider provider({
+ AssetBundle? bundle,
+ String? package,
+ }) {
+ return AssetImage(
+ _assetName,
+ bundle: bundle,
+ package: package,
+ );
+ }
+
+ String get path => _assetName;
+
+ String get keyName => _assetName;
+}
diff --git a/design_system/lib/l10n/intl_en.arb b/design_system/lib/l10n/intl_en.arb
new file mode 100644
index 0000000..b9ba235
--- /dev/null
+++ b/design_system/lib/l10n/intl_en.arb
@@ -0,0 +1,22 @@
+{
+ "error": "Error: {text}",
+ "@error": {
+ "description": "Provides an explanation of the error",
+ "placeholders": {
+ "text": {
+ "type": "String",
+ "example": "Something went wrong, try again"
+ }
+ }
+ },
+ "error_button_ok": "Ok",
+ "error_button_retry": "Retry",
+ "error_no_internet_connection_error_description": "You have no internet connection",
+ "error_no_internet_connection_error_title": "Error",
+ "error_unknown_error_description": "Something went wrong!",
+ "error_unknown_error_title": "Oops!",
+ "gestures": "Gestures",
+ "points": "Score",
+ "skip": "Skip",
+ "time": "Time"
+}
\ No newline at end of file
diff --git a/design_system/lib/l10n/intl_es.arb b/design_system/lib/l10n/intl_es.arb
new file mode 100644
index 0000000..404ed14
--- /dev/null
+++ b/design_system/lib/l10n/intl_es.arb
@@ -0,0 +1,22 @@
+{
+ "error": "Error: {text}",
+ "@error": {
+ "description": "Da una explicación del error",
+ "placeholders": {
+ "text": {
+ "type": "String",
+ "example": "Algo salió mal, intenta de nuevo"
+ }
+ }
+ },
+ "error_button_ok": "Aceptar",
+ "error_button_retry": "Reintentar",
+ "error_no_internet_connection_error_description": "No tienes conexión a Internet",
+ "error_no_internet_connection_error_title": "Error",
+ "error_unknown_error_description": "¡Algo salió mal!",
+ "error_unknown_error_title": "¡Ops!",
+ "gestures": "Gestos",
+ "points": "Puntaje",
+ "skip": "Omitir",
+ "time": "Tiempo"
+}
\ No newline at end of file
diff --git a/design_system/lib/theme/app_buttons.dart b/design_system/lib/theme/app_buttons.dart
new file mode 100644
index 0000000..c9ddf7f
--- /dev/null
+++ b/design_system/lib/theme/app_buttons.dart
@@ -0,0 +1,118 @@
+import 'package:design_system/common/helper.dart';
+import 'package:design_system/design_system.dart';
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:design_system/theme/custom_text_styles.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+typedef StrokeButton = OutlinedButton;
+typedef GhostButton = TextButton;
+
+class AppButtonsStyle extends ThemeExtension {
+ final CustomColors _customColors;
+ final CustomTextStyles _customTextStyles;
+ final ColorScheme _colorScheme;
+
+ late final ButtonStyle filledButton;
+ late final ButtonStyle outlineButton;
+ late final ButtonStyle textButton;
+ late final ButtonStyle secondaryFilledButton;
+ late final ButtonStyle secondaryOutlineButton;
+ late final ButtonStyle secondaryTextButton;
+
+ AppButtonsStyle(
+ this._customColors,
+ this._customTextStyles,
+ this._colorScheme,
+ ) {
+ final circularRectangleBorder = RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(100.r),
+ );
+
+ filledButton = FilledButton.styleFrom(
+ shape: circularRectangleBorder,
+ textStyle: _customTextStyles.buttonLarge.bold(),
+ padding: EdgeInsets.symmetric(
+ vertical: 16.h,
+ horizontal: 12.w,
+ ),
+ elevation: 0.0,
+ backgroundColor: _colorScheme.onPrimary.getShade(500),
+ foregroundColor: _customColors.textColor.getShade(100),
+ );
+
+ outlineButton = OutlinedButton.styleFrom(
+ shape: circularRectangleBorder,
+ padding: EdgeInsets.symmetric(
+ vertical: 16.h,
+ horizontal: 12.w,
+ ),
+ side: BorderSide(
+ width: 2,
+ color: _customColors.textColor.getShade(500),
+ ),
+ textStyle: _customTextStyles.buttonLarge.bold(),
+ elevation: 0.0,
+ foregroundColor: _customColors.textColor.getShade(500),
+ );
+
+ textButton = TextButton.styleFrom(
+ shape: circularRectangleBorder,
+ textStyle: _customTextStyles.buttonLarge.bold(),
+ elevation: 0.0,
+ );
+
+ secondaryFilledButton = filledButton.copyWith(
+ backgroundColor:
+ getMaterialStatesColors(_customColors.textColor.getShade(300)),
+ foregroundColor: getMaterialStatesColors(
+ _customColors.textColor.getShade(100),
+ ),
+ );
+
+ secondaryOutlineButton = outlineButton.copyWith(
+ backgroundColor: getMaterialStatesColors(
+ _colorScheme.surface.getShade(100),
+ ),
+ foregroundColor: getMaterialStatesColors(
+ _customColors.textColor.getShade(300),
+ ),
+ side: getBorderSidesStates(_customColors.textColor.getShade(300)),
+ );
+
+ secondaryTextButton = textButton.copyWith(
+ backgroundColor: getMaterialStatesColors(
+ Colors.transparent,
+ ),
+ foregroundColor: getMaterialStatesColors(
+ _customColors.textColor.getShade(300),
+ ),
+ );
+ }
+
+ static AppButtonsStyle getDefaultButtonTheme(
+ CustomColors customColors,
+ CustomTextStyles customTextStyles,
+ ColorScheme colorScheme,
+ ) =>
+ AppButtonsStyle(customColors, customTextStyles, colorScheme);
+
+ @override
+ AppButtonsStyle copyWith() => AppButtonsStyle.getDefaultButtonTheme(
+ _customColors,
+ _customTextStyles,
+ _colorScheme,
+ );
+
+ @override
+ AppButtonsStyle lerp(AppButtonsStyle other, double t) {
+ if (other is! CustomTextStyles) {
+ return this;
+ }
+ return AppButtonsStyle(
+ _customColors,
+ _customTextStyles,
+ _colorScheme,
+ );
+ }
+}
diff --git a/design_system/lib/theme/app_color_scheme.dart b/design_system/lib/theme/app_color_scheme.dart
new file mode 100644
index 0000000..04c40f6
--- /dev/null
+++ b/design_system/lib/theme/app_color_scheme.dart
@@ -0,0 +1,158 @@
+// ignore_for_file: overridden_fields
+
+import 'package:flutter/material.dart';
+
+// Colors name extracted from https://www.color-name.com
+@immutable
+class AppColorScheme extends ColorScheme {
+ @override
+ final Color onPrimary;
+ @override
+ final MaterialColor primary;
+ @override
+ final MaterialColor secondary;
+ @override
+ final MaterialColor surface;
+ @override
+ final MaterialColor onSurface;
+
+ AppColorScheme({
+ required ColorScheme colorScheme,
+ required this.onPrimary,
+ required this.onSurface,
+ required this.secondary,
+ required this.primary,
+ required this.surface,
+ }) : super(
+ brightness: colorScheme.brightness,
+ primary: colorScheme.primary,
+ onPrimary: colorScheme.onPrimary,
+ primaryContainer: colorScheme.primaryContainer,
+ onPrimaryContainer: colorScheme.onPrimaryContainer,
+ secondary: colorScheme.secondary,
+ onSecondary: colorScheme.onSecondary,
+ secondaryContainer: colorScheme.secondaryContainer,
+ onSecondaryContainer: colorScheme.onSecondaryContainer,
+ tertiary: colorScheme.tertiary,
+ onTertiary: colorScheme.onTertiary,
+ tertiaryContainer: colorScheme.tertiaryContainer,
+ onTertiaryContainer: colorScheme.onTertiaryContainer,
+ error: colorScheme.error,
+ onError: colorScheme.onError,
+ errorContainer: colorScheme.errorContainer,
+ onErrorContainer: colorScheme.onErrorContainer,
+ surface: colorScheme.surface,
+ onSurface: colorScheme.onSurface,
+ surfaceContainerHighest: colorScheme.surfaceContainerHighest,
+ onSurfaceVariant: colorScheme.onSurfaceVariant,
+ outline: colorScheme.outline,
+ outlineVariant: colorScheme.outlineVariant,
+ shadow: colorScheme.shadow,
+ scrim: colorScheme.scrim,
+ inverseSurface: colorScheme.inverseSurface,
+ onInverseSurface: colorScheme.onInverseSurface,
+ inversePrimary: colorScheme.inversePrimary,
+ surfaceTint: colorScheme.surfaceTint,
+ );
+
+ static AppColorScheme getDefaultColorScheme() => AppColorScheme(
+ colorScheme: ColorScheme.fromSeed(
+ brightness: Brightness.light,
+ seedColor: const MaterialColor(
+ 0xffFA4C56,
+ {
+ 100: Color(0xffFCA5AA),
+ 200: Color(0xffFC949A),
+ 300: Color(0xffFC8289),
+ 400: Color(0xffFB7078),
+ 500: Color(0xffFB5E67),
+ 600: Color(0xffFA4C56),
+ 700: Color(0xffF91B28),
+ 800: Color(0xffDA0612),
+ 900: Color(0xffA9050E),
+ 1000: Color(0xff77030A),
+ },
+ ),
+ primaryContainer: const Color(0xffFA4C56),
+ onSecondary: Colors.black,
+ error: const MaterialColor(
+ 0xfff4642c,
+ {
+ 100: Color(0xfffeebd4),
+ 200: Color(0xfffbb37f),
+ 300: Color(0xfff4642c),
+ 400: Color(0xffd74824),
+ 500: Color(0xff750908),
+ },
+ ),
+ onError: Colors.black,
+ onSurface: const Color(0xffadadad),
+ surface: const Color(0xffF9F9FC),
+ surfaceBright: Colors.white,
+ ),
+ primary: const MaterialColor(
+ 0xffFA4C56,
+ {
+ 100: Color(0xffFCA5AA),
+ 200: Color(0xffFC949A),
+ 300: Color(0xffFC8289),
+ 400: Color(0xffFB7078),
+ 500: Color(0xffFB5E67),
+ 600: Color(0xffFA4C56),
+ 700: Color(0xffF91B28),
+ 800: Color(0xffDA0612),
+ 900: Color(0xffA9050E),
+ 1000: Color(0xff77030A),
+ },
+ ),
+ onPrimary: const MaterialColor(
+ 0xff414158,
+ {
+ 100: Color(0xffffffff),
+ 200: Color(0xffc2c2cc),
+ 300: Color(0xff8a8aa8),
+ 400: Color(0xff414158),
+ 500: Color(0xff1d1616),
+ },
+ ),
+ secondary: const MaterialColor(
+ 0xff00B294,
+ {
+ 100: Color(0xffCCF0EA),
+ 200: Color(0xff99E0D4),
+ 300: Color(0xff66D1BF),
+ 400: Color(0xff33C1A9),
+ 500: Color(0xff00B294),
+ 600: Color(0xff00997F),
+ 700: Color(0xff00806A),
+ 800: Color(0xff006655),
+ 900: Color(0xff004D40),
+ 1000: Color(0xff00332A),
+ },
+ ),
+ surface: const MaterialColor(
+ 0xfff7fafd,
+ {
+ 100: Color(0xffffffff),
+ 200: Color(0xffadadad),
+ 300: Color(0xff707070),
+ 400: Color(0xff1e1e1e),
+ 500: Color(0xff0f0f0f),
+ },
+ ),
+ onSurface: const MaterialColor(
+ 0xff5b5b5b,
+ {
+ 100: Color(0xffffffff),
+ 200: Color(0xffadadad),
+ 300: Color(0xff5b5b5b),
+ 400: Color(0xff1e1e1e),
+ 500: Color(0xff0f0f0f),
+ },
+ ),
+ );
+}
+
+extension MaterialExtensions on MaterialColor {
+ Color get shade1000 => this[1000]!;
+}
diff --git a/design_system/lib/theme/app_dimensions.dart b/design_system/lib/theme/app_dimensions.dart
new file mode 100644
index 0000000..52a1f82
--- /dev/null
+++ b/design_system/lib/theme/app_dimensions.dart
@@ -0,0 +1,54 @@
+import 'package:flutter/material.dart';
+
+class AppDimension extends ThemeExtension {
+ final int spacing2;
+ final int spacing4;
+ final int spacing8;
+ final int spacing12;
+ final int spacing16;
+ final int spacing20;
+ final int spacing24;
+
+ AppDimension({
+ required this.spacing2,
+ required this.spacing4,
+ required this.spacing8,
+ required this.spacing12,
+ required this.spacing16,
+ required this.spacing20,
+ required this.spacing24,
+ });
+
+ static AppDimension getDefaultDimensions() => AppDimension(
+ spacing2: 2,
+ spacing4: 4,
+ spacing8: 8,
+ spacing12: 12,
+ spacing16: 16,
+ spacing20: 20,
+ spacing24: 24,
+ );
+
+ @override
+ AppDimension copyWith({MaterialColor? primary}) =>
+ AppDimension.getDefaultDimensions();
+
+ @override
+ AppDimension lerp(AppDimension? other, double t) {
+ if (other is! AppDimension) {
+ return this;
+ }
+ return AppDimension(
+ spacing2: _lerpInt(spacing2, other.spacing2, t).toInt(),
+ spacing4: _lerpInt(spacing4, other.spacing4, t).toInt(),
+ spacing8: _lerpInt(spacing8, other.spacing8, t).toInt(),
+ spacing12: _lerpInt(spacing12, other.spacing12, t).toInt(),
+ spacing16: _lerpInt(spacing16, other.spacing16, t).toInt(),
+ spacing20: _lerpInt(spacing20, other.spacing20, t).toInt(),
+ spacing24: _lerpInt(spacing24, other.spacing24, t).toInt(),
+ );
+ }
+
+ double _lerpInt(int oldValue, int newValue, double factor) =>
+ oldValue + (newValue - oldValue) * factor;
+}
diff --git a/design_system/lib/theme/app_text_styles.dart b/design_system/lib/theme/app_text_styles.dart
new file mode 100644
index 0000000..e63447e
--- /dev/null
+++ b/design_system/lib/theme/app_text_styles.dart
@@ -0,0 +1,76 @@
+//ignore_for_file: unused-files, unused-code
+
+import 'package:flutter/material.dart';
+import 'package:google_fonts/google_fonts.dart';
+
+const FontWeight _semiboldWeight = FontWeight.w600;
+
+class AppTextStyles extends TextTheme {
+ const AppTextStyles({
+ super.headlineLarge,
+ super.headlineMedium,
+ super.headlineSmall,
+ super.bodyLarge,
+ super.bodyMedium,
+ super.bodySmall,
+ super.titleLarge,
+ super.titleMedium,
+ super.titleSmall,
+ super.labelLarge,
+ super.labelMedium,
+ super.labelSmall,
+ });
+
+ factory AppTextStyles.fromTextTheme({
+ required TextTheme textTheme,
+ }) =>
+ AppTextStyles(
+ headlineSmall: textTheme.headlineSmall,
+ headlineMedium: textTheme.headlineMedium,
+ headlineLarge: textTheme.headlineLarge,
+ bodyLarge: textTheme.bodyLarge,
+ bodyMedium: textTheme.bodyMedium,
+ bodySmall: textTheme.bodySmall,
+ titleLarge: textTheme.titleLarge,
+ titleMedium: textTheme.titleMedium,
+ titleSmall: textTheme.titleSmall,
+ labelLarge: textTheme.labelLarge,
+ labelMedium: textTheme.labelMedium,
+ labelSmall: textTheme.labelSmall,
+ );
+
+ static TextStyle _sourceSansTextStyle(
+ double fontSize,
+ FontWeight fontWeight,
+ ) =>
+ GoogleFonts.sourceSans3(
+ fontSize: fontSize,
+ fontWeight: fontWeight,
+ );
+
+ static AppTextStyles getDefaultAppStyles() => AppTextStyles.fromTextTheme(
+ textTheme: GoogleFonts.sourceSans3TextTheme().copyWith(
+ labelLarge: _sourceSansTextStyle(20, FontWeight.normal),
+ labelMedium: _sourceSansTextStyle(16, FontWeight.normal),
+ labelSmall: _sourceSansTextStyle(14, FontWeight.normal),
+ headlineMedium: _sourceSansTextStyle(20, FontWeight.bold),
+ headlineLarge: _sourceSansTextStyle(24, FontWeight.bold),
+ ),
+ );
+
+ TextTheme getThemeData() => getDefaultAppStyles();
+}
+
+extension TextStyleExtensions on TextStyle {
+ TextStyle links() => copyWith(
+ fontWeight: FontWeight.normal,
+ decoration: TextDecoration.underline,
+ decorationColor: color,
+ );
+
+ TextStyle semibold() => copyWith(fontWeight: _semiboldWeight);
+
+ TextStyle bold() => copyWith(fontWeight: FontWeight.bold);
+
+ TextStyle regular() => copyWith(fontWeight: FontWeight.normal);
+}
diff --git a/design_system/lib/theme/app_theme.dart b/design_system/lib/theme/app_theme.dart
new file mode 100644
index 0000000..9a16e3d
--- /dev/null
+++ b/design_system/lib/theme/app_theme.dart
@@ -0,0 +1,168 @@
+import 'package:design_system/common/helper.dart';
+import 'package:design_system/design_system.dart';
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:design_system/theme/app_buttons.dart';
+import 'package:design_system/theme/app_color_scheme.dart';
+import 'package:design_system/theme/custom_text_styles.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+class AppTheme {
+ static ThemeData provideAppTheme(BuildContext buildContext) {
+ // It can be changed based on the device
+ final textTheme = AppTextStyles.getDefaultAppStyles().getThemeData();
+ final colors = AppColorScheme.getDefaultColorScheme();
+ final customColors = CustomColors.getCustomColors();
+ final customTextStyles = CustomTextStyles.getCustomTextStyles(customColors);
+ final appDimension = AppDimension.getDefaultDimensions();
+ final buttonTheme = AppButtonsStyle.getDefaultButtonTheme(
+ customColors,
+ customTextStyles,
+ colors,
+ );
+
+ return ThemeData(
+ extensions: [customColors, customTextStyles, appDimension, buttonTheme],
+ primaryColor: colors.primary,
+ colorScheme: colors,
+ dialogTheme: DialogTheme(
+ backgroundColor: colors.surface.shade100,
+ elevation: 2,
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(8.r),
+ side: BorderSide(color: colors.surface.shade500),
+ ),
+ titleTextStyle: customTextStyles.customOverline
+ .copyWith(color: customColors.textColor.getShade(300))
+ .semibold(),
+ contentTextStyle: textTheme.bodyMedium
+ ?.copyWith(color: customColors.textColor.getShade(400)),
+ ),
+ inputDecorationTheme: InputDecorationTheme(
+ labelStyle: textTheme.bodyMedium
+ ?.copyWith(color: customColors.textColor.getShade(400)),
+ filled: true,
+ helperStyle: textTheme.bodySmall
+ ?.copyWith(color: customColors.textColor..getShade(300)),
+ hintStyle: textTheme.bodyMedium
+ ?.copyWith(color: customColors.textColor.getShade(300)),
+ border: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(12.r),
+ borderSide: BorderSide(
+ width: 1,
+ color: customColors.textColor.getShade(500),
+ ),
+ ),
+ fillColor: colors.surface.shade100,
+ enabledBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(12.r),
+ borderSide: BorderSide(
+ width: 1,
+ color: customColors.textColor.getShade(500),
+ ),
+ ),
+ errorBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(12.r),
+ borderSide: BorderSide(
+ width: 2,
+ color: customColors.danger.getShade(300),
+ ),
+ ),
+ focusedBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(12.r),
+ borderSide: BorderSide(
+ width: 2,
+ color: customColors.textColor.getShade(500),
+ ),
+ ),
+ disabledBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(12.r),
+ borderSide: BorderSide(
+ width: 2,
+ color: customColors.textColor.getShade(200),
+ ),
+ ),
+ focusedErrorBorder: OutlineInputBorder(
+ borderRadius: BorderRadius.circular(12.r),
+ borderSide: BorderSide(
+ width: 2,
+ color: colors.error,
+ ),
+ ),
+ errorStyle: textTheme.labelSmall?.copyWith(color: customColors.danger),
+ errorMaxLines: 2,
+ hoverColor: colors.primary.shade400,
+ focusColor: colors.primary.shade800,
+ ),
+ dropdownMenuTheme: DropdownMenuThemeData(
+ textStyle: textTheme.bodyMedium?.copyWith(
+ color: colors.primary.shade500,
+ ),
+ menuStyle: MenuStyle(
+ maximumSize: WidgetStateProperty.resolveWith(
+ (Set states) => Size(1.sw, 35.h * 6),
+ ),
+ ),
+ inputDecorationTheme: InputDecorationTheme(
+ filled: true,
+ enabledBorder: OutlineInputBorder(
+ borderSide: BorderSide(
+ color: colors.onSurface.shade200,
+ ),
+ borderRadius: BorderRadius.all(Radius.circular(4.r)),
+ ),
+ ),
+ ),
+ filledButtonTheme: FilledButtonThemeData(
+ style: buttonTheme.filledButton.copyWith(
+ textStyle: WidgetStatePropertyAll(customTextStyles.buttonMedium),
+ ),
+ ),
+ outlinedButtonTheme: OutlinedButtonThemeData(
+ style: buttonTheme.outlineButton,
+ ),
+ textButtonTheme: TextButtonThemeData(
+ style: buttonTheme.textButton,
+ ),
+ elevatedButtonTheme: ElevatedButtonThemeData(
+ style: buttonTheme.filledButton,
+ ),
+ textTheme: textTheme.apply(
+ bodyColor: CustomColors.getCustomColors().textColor,
+ displayColor: CustomColors.getCustomColors().textColor,
+ ),
+ appBarTheme: AppBarTheme(
+ backgroundColor: colors.primary.shade400,
+ titleTextStyle: TextStyle(
+ color: CustomColors.getCustomColors().textColor.getShade(500),
+ ),
+ ),
+ primaryTextTheme: textTheme,
+ checkboxTheme: CheckboxThemeData(
+ checkColor: getMaterialStatesColors(colors.primary.shade600),
+ fillColor:
+ getMaterialStatesColors(customColors.textColor..getShade(100)),
+ side: BorderSide(
+ width: 2,
+ color: customColors.textColor.getShade(400),
+ ),
+ ),
+ radioTheme: RadioThemeData(
+ fillColor:
+ getMaterialStatesColors(customColors.textColor.getShade(400)),
+ ),
+ );
+ }
+}
+
+extension ThemeExtensions on ThemeData {
+ CustomColors get customColors => extension()!;
+
+ AppDimension get dimensions => extension()!;
+
+ CustomTextStyles get customTextStyles => extension()!;
+
+ TextTheme get textStyles => primaryTextTheme;
+
+ AppButtonsStyle get buttonsStyle => extension()!;
+}
diff --git a/design_system/lib/theme/custom_colors.dart b/design_system/lib/theme/custom_colors.dart
new file mode 100644
index 0000000..6ef9733
--- /dev/null
+++ b/design_system/lib/theme/custom_colors.dart
@@ -0,0 +1,107 @@
+// ignore_for_file: overridden_fields
+
+import 'package:flutter/material.dart';
+
+@immutable
+class CustomColors extends ThemeExtension {
+ const CustomColors({
+ required this.textColor,
+ required this.info,
+ required this.success,
+ required this.warning,
+ required this.danger,
+ required this.lightSurfaceColor,
+ }) : super();
+
+ final Color textColor;
+ final Color info;
+ final Color success;
+ final Color warning;
+ final Color danger;
+ final Color lightSurfaceColor;
+
+ static CustomColors getCustomColors() => const CustomColors(
+ lightSurfaceColor: MaterialColor(
+ 0xffFAFCFD,
+ {
+ 100: Color(0xffffffff),
+ 200: Color(0xffFAFCFD),
+ 300: Color(0xffF5F7FA),
+ 400: Color(0xffEAEFF4),
+ 500: Color(0xffDCE1E5),
+ },
+ ),
+ textColor: MaterialColor(
+ 0xff414158,
+ {
+ 100: Color(0xffffffff),
+ 200: Color(0xffc2c2cc),
+ 300: Color(0xff8a8aa8),
+ 400: Color(0xff414158),
+ 500: Color(0xff1d1616),
+ },
+ ),
+ info: MaterialColor(
+ 0xff1169f7,
+ {
+ 100: Color(0xffcfe8fe),
+ 200: Color(0xff6fb0fc),
+ 300: Color(0xff1169f7),
+ 400: Color(0xff083cb1),
+ 500: Color(0xff031d76),
+ },
+ ),
+ success: MaterialColor(
+ 0xff8ec144,
+ {
+ 100: Color(0xffeaf4dd),
+ 200: Color(0xffc6dfa1),
+ 300: Color(0xff8ec144),
+ 400: Color(0xff5d7f2a),
+ 500: Color(0xff435c1f),
+ },
+ ),
+ warning: MaterialColor(
+ 0xffffbf00,
+ {
+ 100: Color(0xfffff2cc),
+ 200: Color(0xffffdc73),
+ 300: Color(0xffffbf00),
+ 400: Color(0xffe5b217),
+ 500: Color(0xff99770f),
+ },
+ ),
+ danger: MaterialColor(
+ 0xfff4642c,
+ {
+ 100: Color(0xfffeebd4),
+ 200: Color(0xfffbb37f),
+ 300: Color(0xfff4642c),
+ 400: Color(0xffd74824),
+ 500: Color(0xff750908),
+ },
+ ),
+ );
+
+ @override
+ CustomColors copyWith() => CustomColors.getCustomColors();
+
+ @override
+ CustomColors lerp(CustomColors? other, double t) {
+ if (other is! CustomColors) {
+ return this;
+ }
+ return CustomColors(
+ textColor: Color.lerp(textColor, other.textColor, t)!,
+ info: Color.lerp(info, other.info, t)!,
+ success: Color.lerp(success, other.success, t)!,
+ warning: Color.lerp(warning, other.warning, t)!,
+ danger: Color.lerp(danger, other.danger, t)!,
+ lightSurfaceColor:
+ Color.lerp(lightSurfaceColor, other.lightSurfaceColor, t)!,
+ );
+ }
+
+ @override
+ Object get type => CustomColors;
+}
diff --git a/design_system/lib/theme/custom_text_styles.dart b/design_system/lib/theme/custom_text_styles.dart
new file mode 100644
index 0000000..5b9c79d
--- /dev/null
+++ b/design_system/lib/theme/custom_text_styles.dart
@@ -0,0 +1,90 @@
+// ignore_for_file: overridden_fields
+
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:design_system/theme/custom_colors.dart';
+import 'package:flutter/material.dart';
+import 'package:google_fonts/google_fonts.dart';
+
+const FontWeight _semiboldWeight = FontWeight.w600;
+
+@immutable
+class CustomTextStyles extends ThemeExtension {
+ const CustomTextStyles({
+ required this.tinyText,
+ required this.customOverline,
+ required this.buttonXLarge,
+ required this.buttonLarge,
+ required this.buttonMedium,
+ required this.buttonSmall,
+ required this.buttonXSmall,
+ required this.buttonTiny,
+ required this.labelXSmall,
+ required this.bodyXSmall,
+ required this.customColors,
+ }) : super();
+
+ final TextStyle tinyText;
+ final TextStyle customOverline;
+ final TextStyle buttonXLarge;
+ final TextStyle buttonLarge;
+ final TextStyle buttonMedium;
+ final TextStyle buttonSmall;
+ final TextStyle buttonXSmall;
+ final TextStyle buttonTiny;
+ final TextStyle bodyXSmall;
+ final TextStyle labelXSmall;
+ final CustomColors customColors;
+
+ static CustomTextStyles getCustomTextStyles(CustomColors customColors) =>
+ CustomTextStyles(
+ tinyText: _robotoTextStyle(10, FontWeight.normal, customColors),
+ customOverline: _robotoTextStyle(10, FontWeight.normal, customColors),
+ buttonXLarge: _robotoTextStyle(24, _semiboldWeight, customColors),
+ buttonLarge: _robotoTextStyle(20, _semiboldWeight, customColors),
+ buttonMedium: _robotoTextStyle(16, _semiboldWeight, customColors),
+ buttonSmall: _robotoTextStyle(14, _semiboldWeight, customColors),
+ buttonXSmall: _robotoTextStyle(10, _semiboldWeight, customColors),
+ bodyXSmall: _robotoTextStyle(12, _semiboldWeight, customColors),
+ labelXSmall: _robotoTextStyle(12, _semiboldWeight, customColors),
+ buttonTiny: _robotoTextStyle(10, _semiboldWeight, customColors),
+ customColors: customColors,
+ );
+
+ static TextStyle _robotoTextStyle(
+ double fontSize,
+ FontWeight fontWeight,
+ CustomColors customColors,
+ ) =>
+ GoogleFonts.roboto(
+ fontSize: fontSize,
+ fontWeight: fontWeight,
+ color: customColors.textColor.getShade(500),
+ );
+
+ @override
+ CustomTextStyles copyWith({MaterialColor? primary}) =>
+ CustomTextStyles.getCustomTextStyles(customColors);
+
+ @override
+ CustomTextStyles lerp(CustomTextStyles? other, double t) {
+ if (other is! CustomTextStyles) {
+ return this;
+ }
+ return CustomTextStyles(
+ tinyText: TextStyle.lerp(tinyText, other.tinyText, t)!,
+ customOverline: TextStyle.lerp(customOverline, other.customOverline, t)!,
+ buttonXLarge: TextStyle.lerp(buttonXLarge, other.buttonXLarge, t)!,
+ buttonLarge: TextStyle.lerp(buttonLarge, other.buttonLarge, t)!,
+ buttonMedium: TextStyle.lerp(buttonMedium, other.buttonMedium, t)!,
+ buttonSmall: TextStyle.lerp(buttonSmall, other.buttonSmall, t)!,
+ buttonXSmall: TextStyle.lerp(buttonXSmall, other.buttonXSmall, t)!,
+ buttonTiny: TextStyle.lerp(buttonTiny, other.buttonTiny, t)!,
+ bodyXSmall: TextStyle.lerp(bodyXSmall, other.bodyXSmall, t)!,
+ labelXSmall: TextStyle.lerp(labelXSmall, other.labelXSmall, t)!,
+ customColors: customColors,
+ );
+ }
+
+ @override
+ Object get type => CustomTextStyles;
+}
diff --git a/design_system/lib/widgets/app_button.dart b/design_system/lib/widgets/app_button.dart
new file mode 100644
index 0000000..1b942d6
--- /dev/null
+++ b/design_system/lib/widgets/app_button.dart
@@ -0,0 +1,32 @@
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:design_system/extensions/context_extensions.dart';
+import 'package:design_system/theme/app_text_styles.dart';
+import 'package:design_system/theme/app_theme.dart';
+import 'package:flutter/material.dart';
+
+class AppButton extends StatelessWidget {
+ final String text;
+ final VoidCallback? onPressed;
+
+ const AppButton({
+ required this.text,
+ required this.onPressed,
+ super.key,
+ });
+
+ @override
+ Widget build(BuildContext context) => Container(
+ constraints: const BoxConstraints(
+ minWidth: 300,
+ ),
+ child: FilledButton(
+ onPressed: onPressed,
+ child: Text(
+ text,
+ style: context.theme.textStyles.bodyLarge!.bold().copyWith(
+ color: context.theme.customColors.textColor.getShade(100),
+ ),
+ ),
+ ),
+ );
+}
diff --git a/design_system/lib/widgets/app_checkbox.dart b/design_system/lib/widgets/app_checkbox.dart
new file mode 100644
index 0000000..93a01a5
--- /dev/null
+++ b/design_system/lib/widgets/app_checkbox.dart
@@ -0,0 +1,67 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+typedef CheckboxList = ({bool value, String title, String? subtitle});
+
+class AppCheckbox extends StatefulWidget {
+ final bool initialValue;
+ final List items;
+ final void Function(bool?) onPressed;
+ final bool? shrinkWrap;
+ final Axis? scrollDirection;
+
+ const AppCheckbox({
+ required this.onPressed,
+ required this.items,
+ required this.initialValue,
+ this.shrinkWrap = false,
+ this.scrollDirection = Axis.vertical,
+ super.key,
+ });
+
+ @override
+ State> createState() => _AppCheckboxState();
+}
+
+class _AppCheckboxState extends State> {
+ late List isCheckedList;
+ late bool shrinkWrap;
+ late Axis scrollDirection;
+
+ @override
+ void initState() {
+ isCheckedList = widget.items
+ .map(
+ (item) => item.value,
+ )
+ .toList();
+ shrinkWrap = widget.shrinkWrap!;
+ scrollDirection = widget.scrollDirection!;
+ super.initState();
+ }
+
+ @override
+ Widget build(BuildContext context) => ListView.builder(
+ scrollDirection: widget.scrollDirection!,
+ shrinkWrap: shrinkWrap,
+ itemCount: widget.items.length,
+ itemBuilder: (BuildContext context, int index) {
+ final element = widget.items[index];
+ return SizedBox(
+ width: 1.sw,
+ child: CheckboxListTile(
+ value: isCheckedList[index],
+ onChanged: (bool? value) {
+ setState(() {
+ isCheckedList[index] = value!;
+ });
+ widget.onPressed(value);
+ },
+ title: Text(element.title),
+ subtitle:
+ element.subtitle != null ? Text(element.subtitle!) : null,
+ ),
+ );
+ },
+ );
+}
diff --git a/design_system/lib/widgets/app_dialog.dart b/design_system/lib/widgets/app_dialog.dart
new file mode 100644
index 0000000..daca1ed
--- /dev/null
+++ b/design_system/lib/widgets/app_dialog.dart
@@ -0,0 +1,97 @@
+import 'package:design_system/design_system.dart';
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+class AppDialog extends StatelessWidget {
+ final String title;
+ final String? content;
+ final String? actionButtonText;
+ final VoidCallback? onActionPressed;
+ final String? cancelButtonText;
+
+ const AppDialog({
+ required this.title,
+ this.content,
+ this.cancelButtonText,
+ this.actionButtonText,
+ this.onActionPressed,
+ super.key,
+ });
+
+ @override
+ Widget build(BuildContext context) => AlertDialog(
+ title: Row(
+ children: [
+ Text(title),
+ const Spacer(),
+ IconButton(
+ onPressed: Navigator.of(context).pop,
+ icon: Icon(
+ Icons.close,
+ color: context.theme.customColors.textColor.getShade(300),
+ ),
+ ),
+ ],
+ ),
+ content: content != null ? Text(content!) : null,
+ actionsAlignment: _getAlignment(),
+ actions: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceAround,
+ children: [
+ if (cancelButtonText != null)
+ Expanded(
+ child: TextButton(
+ onPressed: Navigator.of(context).pop,
+ child: Text(
+ cancelButtonText!,
+ style:
+ context.theme.customTextStyles.buttonMedium.copyWith(
+ color:
+ context.theme.customColors.textColor.getShade(300),
+ ),
+ ),
+ ),
+ ),
+ if (actionButtonText != null)
+ Expanded(
+ child: FilledButton(
+ child: Text(
+ actionButtonText!,
+ style:
+ context.theme.customTextStyles.buttonMedium.copyWith(
+ color:
+ context.theme.customColors.textColor.getShade(100),
+ ),
+ ),
+ onPressed: () {
+ if (onActionPressed != null) {
+ onActionPressed!();
+ }
+ Navigator.of(context).pop();
+ },
+ ),
+ ),
+ ],
+ ),
+ ],
+ );
+
+ MainAxisAlignment _getAlignment() {
+ if (actionButtonText == null) {
+ return MainAxisAlignment.start;
+ } else if (cancelButtonText == null) {
+ return MainAxisAlignment.end;
+ } else {
+ return MainAxisAlignment.spaceAround;
+ }
+ }
+
+ double? _getActionButtonsWidth() {
+ if (actionButtonText == null || cancelButtonText == null) {
+ return 130.w;
+ }
+ return null;
+ }
+}
diff --git a/design_system/lib/widgets/app_dropdown.dart b/design_system/lib/widgets/app_dropdown.dart
new file mode 100644
index 0000000..19e1667
--- /dev/null
+++ b/design_system/lib/widgets/app_dropdown.dart
@@ -0,0 +1,54 @@
+import 'package:design_system/design_system.dart';
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:flutter/material.dart';
+
+typedef AppDropdownItems = ({T value, String label});
+
+class AppDropdownMenu extends StatefulWidget {
+ final List> dropdownMenuEntries;
+ final void Function(T?) onSelected;
+ final T? initialValue;
+
+ const AppDropdownMenu({
+ required this.dropdownMenuEntries,
+ required this.onSelected,
+ this.initialValue,
+ super.key,
+ });
+
+ @override
+ State> createState() => _AppDropdownMenuState();
+}
+
+class _AppDropdownMenuState extends State> {
+ final TextEditingController _controller = TextEditingController();
+
+ @override
+ Widget build(BuildContext context) => DropdownMenu(
+ initialSelection: widget.initialValue,
+ trailingIcon: Icon(
+ Icons.arrow_drop_down_outlined,
+ color: context.theme.customColors.textColor.getShade(200),
+ ),
+ controller: _controller,
+ onSelected: (T? value) => widget.onSelected(value),
+ dropdownMenuEntries: widget.dropdownMenuEntries
+ .map>(
+ (AppDropdownItems item) => DropdownMenuEntry(
+ value: item.value,
+ label: item.label,
+ style: ButtonStyle(
+ backgroundColor: WidgetStateColor.resolveWith(
+ (Set states) =>
+ context.theme.colorScheme.surface.getShade(100),
+ ),
+ foregroundColor: WidgetStateColor.resolveWith(
+ (Set states) =>
+ context.theme.customColors.textColor.getShade(400),
+ ),
+ ),
+ ),
+ )
+ .toList(),
+ );
+}
diff --git a/design_system/lib/widgets/app_radio_button.dart b/design_system/lib/widgets/app_radio_button.dart
new file mode 100644
index 0000000..b2fab83
--- /dev/null
+++ b/design_system/lib/widgets/app_radio_button.dart
@@ -0,0 +1,65 @@
+import 'package:design_system/design_system.dart';
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+typedef RadioButtonList = ({T value, String label});
+
+class AppRadioButton extends StatefulWidget {
+ final T initialValue;
+ final List items;
+ final void Function(T?) onPressed;
+ final bool? shrinkWrap;
+ final Axis? scrollDirection;
+
+ const AppRadioButton({
+ required this.onPressed,
+ required this.items,
+ required this.initialValue,
+ this.shrinkWrap = false,
+ this.scrollDirection = Axis.vertical,
+ super.key,
+ });
+
+ @override
+ State> createState() => _AppRadioButtonState();
+}
+
+class _AppRadioButtonState extends State> {
+ late T? selectedValue;
+ late bool shrinkWrap;
+ late Axis scrollDirection;
+
+ @override
+ void initState() {
+ selectedValue = widget.initialValue;
+ shrinkWrap = widget.shrinkWrap!;
+ scrollDirection = widget.scrollDirection!;
+ super.initState();
+ }
+
+ @override
+ Widget build(BuildContext context) => ListView.builder(
+ scrollDirection: widget.scrollDirection!,
+ shrinkWrap: shrinkWrap,
+ itemCount: widget.items.length,
+ itemBuilder: (BuildContext context, int index) {
+ final element = widget.items[index];
+ return SizedBox(
+ width: 1.sw,
+ child: RadioListTile(
+ activeColor: context.theme.colorScheme.primary.getShade(600),
+ title: Text(element.label),
+ value: element.value,
+ groupValue: selectedValue,
+ onChanged: (T? value) {
+ setState(() {
+ selectedValue = value;
+ });
+ widget.onPressed(value);
+ },
+ ),
+ );
+ },
+ );
+}
diff --git a/design_system/lib/widgets/app_scaffold.dart b/design_system/lib/widgets/app_scaffold.dart
new file mode 100644
index 0000000..f744cf1
--- /dev/null
+++ b/design_system/lib/widgets/app_scaffold.dart
@@ -0,0 +1,54 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:design_system/extensions/context_extensions.dart';
+import 'package:design_system/theme/app_theme.dart';
+import 'package:design_system/widgets/background.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+class AppScaffold extends StatelessWidget {
+ final Widget child;
+ final bool? showBackButton;
+ final bool resizeToAvoidBottomInset;
+
+ const AppScaffold({
+ required this.child,
+ this.showBackButton,
+ this.resizeToAvoidBottomInset = false,
+ super.key,
+ });
+
+ @override
+ Widget build(BuildContext context) => Scaffold(
+ resizeToAvoidBottomInset: resizeToAvoidBottomInset,
+ body: Stack(
+ children: [
+ const ScreenBackgroundContainer(),
+ SafeArea(
+ child: Container(
+ width: 1.sw,
+ height: 1.sh,
+ padding: const EdgeInsets.symmetric(
+ horizontal: 16,
+ vertical: 8,
+ ),
+ child: child,
+ ),
+ ),
+ if (showBackButton ?? context.router.canNavigateBack)
+ Positioned(
+ top: .07.sh,
+ left: .07.sw,
+ child: IconButton(
+ onPressed: () => Navigator.of(context).pop(),
+ icon: Icon(
+ Icons.arrow_back,
+ size: 32,
+ color: context.theme.customColors.textColor.getShade(500),
+ ),
+ ),
+ ),
+ ],
+ ),
+ );
+}
diff --git a/design_system/lib/widgets/app_select_dropdown.dart b/design_system/lib/widgets/app_select_dropdown.dart
new file mode 100644
index 0000000..1bce914
--- /dev/null
+++ b/design_system/lib/widgets/app_select_dropdown.dart
@@ -0,0 +1,167 @@
+import 'package:design_system/design_system.dart';
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+typedef MenuItems = ({T value, String label});
+
+const _kAnimationDuration = Duration(milliseconds: 200);
+
+class AppSelectDropdown extends StatefulWidget {
+ final double? width;
+ final String label;
+ final List> items;
+ final Function(T value)? onChanged;
+
+ const AppSelectDropdown({
+ required this.items,
+ required this.label,
+ this.onChanged,
+ this.width,
+ super.key,
+ });
+
+ @override
+ State> createState() => _AppSelectDropdownState();
+}
+
+class _AppSelectDropdownState extends State>
+ with SingleTickerProviderStateMixin {
+ late final FocusNode _buttonFocusNode;
+ final MenuController _menuController = MenuController();
+ final List> _selectedValues = [];
+ late AnimationController _animationController;
+ static final Animatable _easeInTween =
+ CurveTween(curve: Curves.easeIn);
+ static final Animatable _halfTween =
+ Tween(begin: 0.0, end: 0.5);
+
+ // ignore: unused_field
+ late Animation _iconTurns;
+ @override
+ void initState() {
+ _buttonFocusNode = FocusNode(debugLabel: 'Menu Button-${widget.label}');
+ super.initState();
+ _animationController = AnimationController(
+ duration: _kAnimationDuration,
+ vsync: this,
+ );
+
+ _iconTurns = _animationController.drive(_halfTween.chain(_easeInTween));
+ }
+
+ @override
+ void dispose() {
+ _buttonFocusNode.dispose();
+ _animationController.dispose();
+ super.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) => MenuAnchor(
+ childFocusNode: _buttonFocusNode,
+ menuChildren: widget.items
+ .map(
+ (elem) => CheckboxMenuButton(
+ closeOnActivate: false,
+ value: _selectedValues.contains(elem),
+ onChanged: (value) {
+ widget.onChanged?.call(elem.value);
+ setState(() {
+ if (value!) {
+ _selectedValues.add(elem);
+ } else {
+ _selectedValues.remove(elem);
+ }
+ });
+ },
+ child: Container(
+ width: _calculateWidth(),
+ constraints: BoxConstraints(
+ minWidth: 90.w,
+ ),
+ child: Text(
+ elem.label,
+ style: context.theme.textStyles.bodyMedium,
+ overflow: TextOverflow.ellipsis,
+ maxLines: 1,
+ ),
+ ),
+ ),
+ )
+ .toList(),
+ controller: _menuController,
+ builder: (
+ BuildContext context,
+ MenuController controller,
+ Widget? child,
+ ) =>
+ Container(
+ constraints: BoxConstraints(
+ minWidth: 90.w,
+ maxWidth: 1.sw,
+ ),
+ decoration: BoxDecoration(
+ color: context.theme.colorScheme.surface.getShade(100),
+ borderRadius: BorderRadius.circular(4.r),
+ border: Border.all(
+ color: context.theme.colorScheme.onSurface.getShade(200),
+ ),
+ ),
+ child: InkWell(
+ onTap: () {
+ if (controller.isOpen) {
+ controller.close();
+ _animationController.reverse();
+ } else {
+ controller.open();
+ _animationController.forward();
+ }
+ },
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Flexible(
+ child: Container(
+ width: widget.width ?? 1.sw,
+ padding: EdgeInsets.all(8.sp),
+ child: Text(
+ _selectedValues.isEmpty
+ ? widget.label
+ : _selectedValues.map((e) => e.label).join(', '),
+ overflow: TextOverflow.ellipsis,
+ maxLines: 1,
+ style: context.theme.textStyles.labelMedium,
+ ),
+ ),
+ ),
+ AnimatedBuilder(
+ animation: _animationController,
+ builder: (context, child) => Padding(
+ padding: EdgeInsets.all(8.sp),
+ child: RotationTransition(
+ turns: _iconTurns,
+ child: Icon(
+ Icons.expand_more,
+ color: context.theme.customColors.textColor,
+ ),
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ );
+
+ double _calculateWidth() {
+ final width = widget.width;
+ if (width == null) return 1.sw * .761;
+ if (width <= .3.sw) return width * .9;
+ if (width <= .5.sw) return width * .93;
+ if (width <= .8.sw) return width * .95;
+ if (width < 1.sw) return width * .8;
+ return width * .761;
+ }
+}
diff --git a/design_system/lib/widgets/app_text_fields.dart b/design_system/lib/widgets/app_text_fields.dart
new file mode 100644
index 0000000..3832091
--- /dev/null
+++ b/design_system/lib/widgets/app_text_fields.dart
@@ -0,0 +1,97 @@
+//ignore_for_file: prefer-moving-to-variable, unused-files, unused-code
+import 'package:design_system/design_system.dart';
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+class AppTextField extends StatefulWidget {
+ final TextEditingController controller;
+ final void Function(String value)? onChange;
+ final String? errorText;
+ final String? labelText;
+ final String? hintText;
+ final String? helperText;
+ final Widget? prefixIcon;
+ final Widget? suffixIcon;
+ final void Function()? onTrailingIconPress;
+ final TextInputType? keyboardType;
+ final bool enabled;
+ final bool obscureText;
+ final int? maxLength;
+ final int minLines;
+ final int maxLines;
+ final bool hasScreenBottomNavigation;
+ final int? currentLength;
+ final bool enableSuggestions;
+
+ const AppTextField({
+ required this.controller,
+ super.key,
+ this.onChange,
+ this.errorText,
+ this.labelText,
+ this.prefixIcon,
+ this.suffixIcon,
+ this.onTrailingIconPress,
+ this.keyboardType,
+ this.enabled = true,
+ this.obscureText = false,
+ this.maxLength,
+ this.minLines = 1,
+ this.helperText,
+ this.hintText,
+ this.maxLines = 1,
+ this.currentLength = 0,
+ this.hasScreenBottomNavigation = true,
+ this.enableSuggestions = true,
+ });
+
+ @override
+ State createState() => _AppTextFieldState();
+}
+
+class _AppTextFieldState extends State {
+ @override
+ Widget build(BuildContext context) {
+ final textColor = context.theme.customColors.textColor.getShade(400);
+ return Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ if (widget.labelText != null)
+ Padding(
+ padding: EdgeInsets.symmetric(vertical: 5.h),
+ child: Text(
+ widget.labelText!,
+ textAlign: TextAlign.left,
+ style: context.theme.textStyles.labelMedium!
+ .bold()
+ .copyWith(color: textColor),
+ ),
+ ),
+ SizedBox(height: 5.h),
+ TextField(
+ maxLength: widget.maxLength,
+ minLines: widget.minLines,
+ maxLines: widget.maxLines,
+ cursorHeight: 24,
+ textAlignVertical: TextAlignVertical.center,
+ controller: widget.controller,
+ onChanged: widget.onChange,
+ style:
+ context.theme.textStyles.bodyMedium?.copyWith(color: textColor),
+ decoration: InputDecoration(
+ helperText: widget.helperText,
+ hintText: widget.hintText,
+ prefixIcon: widget.prefixIcon,
+ suffixIcon: widget.suffixIcon,
+ errorText: widget.errorText,
+ ),
+ keyboardType: widget.keyboardType,
+ enabled: widget.enabled,
+ obscureText: widget.obscureText,
+ enableSuggestions: widget.enableSuggestions,
+ ),
+ ],
+ );
+ }
+}
diff --git a/design_system/lib/widgets/background.dart b/design_system/lib/widgets/background.dart
new file mode 100644
index 0000000..670ed3f
--- /dev/null
+++ b/design_system/lib/widgets/background.dart
@@ -0,0 +1,29 @@
+import 'package:design_system/extensions/context_extensions.dart';
+import 'package:design_system/gen/assets.gen.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+class ScreenBackgroundContainer extends StatelessWidget {
+ const ScreenBackgroundContainer({super.key});
+
+ @override
+ Widget build(BuildContext context) => Container(
+ color: context.theme.colorScheme.surface,
+ width: 1.sw,
+ height: 1.sh,
+ child: Stack(
+ children: [
+ Positioned(
+ top: 0,
+ left: 0,
+ child: Assets.images.backgroundGreenProp.image(),
+ ),
+ Positioned(
+ bottom: 0,
+ right: 0,
+ child: Assets.images.backgroundRedProp.image(),
+ ),
+ ],
+ ),
+ );
+}
diff --git a/design_system/lib/widgets/points_counter.dart b/design_system/lib/widgets/points_counter.dart
new file mode 100644
index 0000000..3c56a9f
--- /dev/null
+++ b/design_system/lib/widgets/points_counter.dart
@@ -0,0 +1,113 @@
+import 'package:design_system/extensions/context_extensions.dart';
+import 'package:design_system/gen/assets.gen.dart';
+import 'package:design_system/theme/app_text_styles.dart';
+import 'package:design_system/theme/app_theme.dart';
+import 'package:flutter/material.dart';
+
+class PointsCounter extends StatefulWidget {
+ const PointsCounter({
+ required this.points,
+ this.controller,
+ super.key,
+ });
+
+ final int points;
+ final AnimationController? controller;
+
+ @override
+ State createState() => _PointsCounterState();
+}
+
+class _PointsCounterState extends State
+ with SingleTickerProviderStateMixin {
+ late final AnimationController controller;
+ late final Animation scaleAnimation;
+
+ final duration = const Duration(milliseconds: 1500);
+
+ @override
+ void initState() {
+ const scaleDuration = Duration(milliseconds: 200);
+ controller = widget.controller ??
+ AnimationController(
+ vsync: this,
+ duration: scaleDuration,
+ );
+ scaleAnimation = Tween(begin: 1, end: 1.2).animate(
+ CurvedAnimation(
+ parent: controller,
+ curve: Curves.elasticOut,
+ ),
+ );
+
+ controller.forward();
+ super.initState();
+ }
+
+ @override
+ void dispose() {
+ if (widget.controller == null) {
+ controller.dispose();
+ }
+ super.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) => AnimatedBuilder(
+ animation: scaleAnimation,
+ builder: (context, child) => Container(
+ padding: const EdgeInsets.only(left: 4, right: 10, top: 4, bottom: 4),
+ transform: Matrix4.identity()..scale(scaleAnimation.value),
+ decoration: BoxDecoration(
+ color: context.theme.colorScheme.surfaceBright,
+ borderRadius: BorderRadius.circular(32),
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Assets.images.estrella.image(),
+ const SizedBox(width: 8),
+ AnimatedCount(
+ count: widget.points,
+ duration: duration,
+ curve: Curves.decelerate,
+ ),
+ ],
+ ),
+ ),
+ );
+}
+
+class AnimatedCount extends ImplicitlyAnimatedWidget {
+ final int count;
+
+ const AnimatedCount({
+ required this.count,
+ required super.duration,
+ super.key,
+ super.curve,
+ });
+
+ @override
+ ImplicitlyAnimatedWidgetState createState() =>
+ _AnimatedCountState();
+}
+
+class _AnimatedCountState extends AnimatedWidgetBaseState {
+ IntTween? _count;
+
+ @override
+ Widget build(BuildContext context) => Text(
+ _count!.evaluate(animation).toString(),
+ style: context.theme.textStyles.headlineSmall!.bold(),
+ );
+
+ @override
+ void forEachTween(TweenVisitor visitor) {
+ _count = visitor(
+ _count,
+ widget.count,
+ (dynamic value) => IntTween(begin: value as int),
+ ) as IntTween?;
+ }
+}
diff --git a/design_system/lib/widgets/summary_widget.dart b/design_system/lib/widgets/summary_widget.dart
new file mode 100644
index 0000000..5710c6b
--- /dev/null
+++ b/design_system/lib/widgets/summary_widget.dart
@@ -0,0 +1,210 @@
+import 'package:design_system/design_system.dart';
+import 'package:design_system/extensions/color_extensions.dart';
+import 'package:design_system/gen/assets.gen.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/widgets.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+class InformationSummary extends StatelessWidget {
+ const InformationSummary({
+ required this.type,
+ this.value = 0,
+ this.time = Duration.zero,
+ this.showBorder = false,
+ this.height,
+ this.width,
+ super.key,
+ });
+
+ final InformationSummaryType type;
+ final int value;
+ final bool showBorder;
+ final Duration time;
+ final double? height;
+ final double? width;
+
+ factory InformationSummary.points({
+ required int value,
+ bool showBorder = false,
+ double? height,
+ double? width,
+ }) =>
+ InformationSummary(
+ type: InformationSummaryType.points,
+ value: value,
+ showBorder: showBorder,
+ height: height,
+ width: width,
+ );
+ factory InformationSummary.gestures({
+ required int value,
+ bool showBorder = false,
+ double? height,
+ double? width,
+ }) =>
+ InformationSummary(
+ type: InformationSummaryType.gestures,
+ value: value,
+ showBorder: showBorder,
+ height: height,
+ width: width,
+ );
+
+ factory InformationSummary.time({
+ required Duration time,
+ bool showBorder = false,
+ double? height,
+ double? width,
+ }) =>
+ InformationSummary(
+ type: InformationSummaryType.time,
+ showBorder: showBorder,
+ time: time,
+ height: height,
+ width: width,
+ );
+
+ @override
+ Widget build(BuildContext context) {
+ final minutes = time.inMinutes.remainder(60).toString().padLeft(2, '0');
+ final seconds = time.inSeconds.remainder(60).toString().padLeft(2, '0');
+ return Container(
+ padding: const EdgeInsets.all(12),
+ height: height,
+ width: width,
+ decoration: BoxDecoration(
+ color: context.theme.customColors.lightSurfaceColor.getShade(300),
+ border: showBorder
+ ? Border.all(
+ color: context.theme.colorScheme.surface.getShade(500),
+ width: 2,
+ )
+ : null,
+ borderRadius: BorderRadius.circular(20.r),
+ ),
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ _Icon(type: type, value: value, minutes: minutes, seconds: seconds),
+ if (showBorder) _Subtitle(type: type),
+ ],
+ ),
+ );
+ }
+}
+
+class _Icon extends StatelessWidget {
+ const _Icon({
+ required this.type,
+ required this.value,
+ required this.minutes,
+ required this.seconds,
+ super.key,
+ });
+
+ final InformationSummaryType type;
+ final int value;
+ final String minutes;
+ final String seconds;
+
+ @override
+ Widget build(BuildContext context) => SizedBox(
+ child: switch (type) {
+ InformationSummaryType.points => Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Assets.images.estrella.image(
+ fit: BoxFit.fill,
+ filterQuality: FilterQuality.high,
+ ),
+ const SizedBox(width: 8),
+ Text(
+ '$value',
+ style:
+ context.theme.textStyles.headlineLarge!.bold().copyWith(
+ color: context.theme.customColors.textColor,
+ ),
+ ),
+ ],
+ ),
+ InformationSummaryType.gestures => Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Assets.images.check.image(
+ fit: BoxFit.fill,
+ filterQuality: FilterQuality.high,
+ ),
+ const SizedBox(width: 8),
+ Text(
+ '$value',
+ style:
+ context.theme.textStyles.headlineLarge!.bold().copyWith(
+ color: context.theme.customColors.textColor,
+ ),
+ ),
+ ],
+ ),
+ InformationSummaryType.time => Row(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Assets.images.reloj.image(
+ fit: BoxFit.fill,
+ filterQuality: FilterQuality.high,
+ ),
+ const SizedBox(width: 8),
+ Text(
+ '$minutes:'
+ '$seconds',
+ style:
+ context.theme.textStyles.headlineLarge!.bold().copyWith(
+ color: context.theme.customColors.textColor,
+ ),
+ ),
+ ],
+ )
+ },
+ );
+}
+
+class _Subtitle extends StatelessWidget {
+ const _Subtitle({
+ required this.type,
+ super.key,
+ });
+
+ final InformationSummaryType type;
+
+ @override
+ Widget build(BuildContext context) => Container(
+ child: switch (type) {
+ InformationSummaryType.points => Text(
+ context.localizations.points,
+ style:
+ context.theme.textStyles.headlineSmall!.semibold().copyWith(
+ color: context.theme.customColors.textColor,
+ ),
+ ),
+ InformationSummaryType.gestures => Text(
+ context.localizations.gestures,
+ style:
+ context.theme.textStyles.headlineSmall!.semibold().copyWith(
+ color: context.theme.customColors.textColor,
+ ),
+ ),
+ InformationSummaryType.time => Text(
+ context.localizations.time,
+ style:
+ context.theme.textStyles.headlineSmall!.semibold().copyWith(
+ color: context.theme.customColors.textColor,
+ ),
+ ),
+ },
+ );
+}
+
+enum InformationSummaryType {
+ points,
+ gestures,
+ time,
+}
diff --git a/design_system/pubspec.yaml b/design_system/pubspec.yaml
new file mode 100644
index 0000000..17dc29d
--- /dev/null
+++ b/design_system/pubspec.yaml
@@ -0,0 +1,32 @@
+name: design_system
+description: A new Flutter package project.
+version: 0.0.1
+publish_to: "none"
+
+environment:
+ sdk: ">=3.0.0 <4.0.0"
+ flutter: 3.22.1
+
+dependencies:
+ flutter:
+ sdk: flutter
+ auto_route: 8.1.3
+ flutter_screenutil: 5.9.3
+ material_color_generator: 1.1.0
+ google_fonts: 6.2.1
+ intl: 0.19.0
+
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+ flutter_lints: 3.0.1
+ auto_route_generator: 8.0.0
+ flutter_gen_runner: 5.3.1
+ build_runner: 2.4.6
+ lints: 3.0.0
+
+flutter:
+ generate: true
+ uses-material-design: true
+ assets:
+ - assets/images/
diff --git a/design_system/test/catalog_test.dart b/design_system/test/catalog_test.dart
new file mode 100644
index 0000000..ab73b3a
--- /dev/null
+++ b/design_system/test/catalog_test.dart
@@ -0,0 +1 @@
+void main() {}
diff --git a/devtools_options.yaml b/devtools_options.yaml
new file mode 100644
index 0000000..fa0b357
--- /dev/null
+++ b/devtools_options.yaml
@@ -0,0 +1,3 @@
+description: This file stores settings for Dart & Flutter DevTools.
+documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
+extensions:
diff --git a/environments/README.md b/environments/README.md
new file mode 100644
index 0000000..72d2bed
--- /dev/null
+++ b/environments/README.md
@@ -0,0 +1,8 @@
+Application environments are taken from the environments folder.
+This folder contains the environment variables used by the application, such as API keys, and other files.
+
+The default environment variables for all environments are defined in `default.env`.
+
+To specify environment variables for a specific environment, you can create a file with the name of the environment, for example, dev.env for development environment.
+To specify private environment variables for a specific environment, you can create a file with the name of the environment and the suffix .private, for example, dev.private.env for development environment.
+
diff --git a/fastlane/Fastfile b/fastlane/Fastfile
new file mode 100644
index 0000000..89bc8e7
--- /dev/null
+++ b/fastlane/Fastfile
@@ -0,0 +1,185 @@
+opt_out_usage
+fastlane_require 'dotenv'
+
+def compilation_envs
+ if File.file?("#{root_path}/.env")
+ Dotenv.parse("#{root_path}/.env")
+ .map { |key, value| "--dart-define=#{key}=#{value}" }
+ .join(' ')
+ else
+ ''
+ end
+end
+
+def root_path
+ Dir.pwd.sub(/.*\Kfastlane/, '').sub(/.*\Kandroid/, '').sub(/.*\Kios/, '').sub(/.*\K\/\//, '')
+end
+
+private_lane :sh_on_root do |options|
+ command = options[:command]
+ subdirectory = options[:subdirectory] || ''
+ full_path = File.join(root_path, subdirectory)
+
+ sh("cd #{full_path} && #{command}")
+end
+
+private_lane :flutter_command do |options|
+ command = options[:command]
+ subdirectory = options[:subdirectory]
+ sh_on_root(subdirectory: subdirectory, command: "fvm flutter #{command}")
+end
+
+private_lane :dart_command do |options|
+ command = options[:command]
+ sh_on_root(command: "fvm dart #{command}")
+end
+
+desc "**Clean project**"
+private_lane :clean do
+ flutter_command(command: "clean")
+end
+
+desc "**Fetch flutter dependencies**"
+lane :fetch_dependencies do
+ flutter_command(command: "pub get --suppress-analytics")
+ # Template does not depends on design_system_galerry
+ flutter_command(command: "pub get --suppress-analytics", subdirectory: "design_system/design_system_gallery")
+end
+
+desc "**Generate flutter generated code**"
+lane :build_autogenerated_code do
+ flutter_command(command: "pub run build_runner build --delete-conflicting-outputs")
+end
+
+desc "**Lint: Check code format**"
+lane :lint_format do
+ # https://github.com/dart-lang/dart_style/issues/864#issuecomment-1092199174
+ dart_command(command: "format --set-exit-if-changed lib")
+end
+
+desc "Lint: Check if English language file is sorted"
+lane :lint_check_english_sorting do
+ current_content = sh_on_root(command: "cat lib/l10n/intl_en.arb")
+ sh_on_root(command: "arb_utils sort lib/l10n/intl_en.arb")
+ new_content = sh_on_root(command: "cat lib/l10n/intl_en.arb")
+ unless current_content == new_content
+ UI.user_error!("English language file is not sorted")
+ end
+end
+
+desc "Lint: Check if Spanish language file is sorted"
+lane :lint_check_spanish_sorting do
+ current_content = sh_on_root(command: "cat lib/l10n/intl_es.arb")
+ sh_on_root(command: "arb_utils sort lib/l10n/intl_es.arb")
+ new_content = sh_on_root(command: "cat lib/l10n/intl_es.arb")
+ unless current_content == new_content
+ UI.user_error!("Spanish language file is not sorted")
+ end
+end
+
+desc "Lint: Check code format"
+lane :lint_check_language_sorting do
+ begin
+ lint_check_english_sorting
+ lint_check_spanish_sorting
+ rescue => e
+ UI.user_error!("Language file sorting check failed: #{e.message}")
+ end
+end
+
+desc "**Lint: Analyze code**"
+lane :lint_analyze do
+ flutter_command(command: "analyze lib")
+ flutter_command(command: "analyze design_system/design_system_gallery")
+ flutter_command(command: "analyze design_system")
+end
+
+desc "**Lint: Code metrics**"
+lane :lint_code_metrics do
+ result = flutter_command(command: "pub run dart_code_linter:metrics analyze lib --fatal-style --fatal-performance --fatal-warnings")
+ UI.message(result)
+ unless result.include? "✔ no issues found!"
+ UI.user_error!("Code metrics error happened")
+ end
+
+ flutter_command(command: "pub run dart_code_linter:metrics check-unused-code lib --fatal-unused")
+end
+
+
+desc "**Run linters**"
+lane :lints do
+ lint_format
+ lint_check_language_sorting
+ lint_analyze
+ lint_code_metrics
+end
+
+desc "**Check generated code is fine**"
+lane :ensure_no_change_in_generated_code do
+ build_autogenerated_code
+ ensure_git_status_clean(show_diff: true)
+end
+
+desc "**Run tests**"
+lane :tests do |options|
+ flutter_command(command: "test --no-pub --coverage --suppress-analytics")
+end
+
+desc "**Clean up project**"
+lane :clean_up do
+ clean
+ fetch_dependencies
+ build_autogenerated_code
+end
+
+lane :build_flutter do |options|
+ build_type = options[:build_type] || ''
+ if !build_type.empty?
+ build_type = "--#{build_type}"
+ end
+
+ sign_disabled = options[:sign_disabled] || false
+ sign_param = sign_disabled ? '--no-codesign' : ''
+
+ build_platform = options[:build_platform]
+
+ config_only = options[:config_only] || false
+ flavor = options[:flavor] || 'dev'
+ config_param = config_only ? '--config-only' : ''
+
+ version_name = calculate_version_name(
+ include_git_version_suffix: options[:include_git_version_suffix] || false
+ )
+
+ export_method = options[:export_method] || ''
+ if !export_method.empty?
+ export_method = "--export-method #{export_method}"
+ end
+
+ flutter_command(command: "build #{build_platform} #{build_type} --suppress-analytics #{sign_param} #{config_param} --flavor #{flavor} --dart-define=ENV=#{flavor} --build-name #{version_name} #{export_method} #{compilation_envs}")
+end
+
+private_lane :calculate_version_name do |options|
+ include_git_version_suffix = options[:include_git_version_suffix] || false
+ version_suffix = include_git_version_suffix ? "-#{last_git_commit[:abbreviated_commit_hash]}" : ''
+ version_name = flutter_version()["version_name"] + version_suffix
+end
+
+private_lane :generate_snapshot_changelog do
+ changelog_from_git_commits(
+ between: ["HEAD^", "HEAD"],
+ pretty: "%s%n%nAuthor: %an <%ae>",
+ date_format: "short",
+ )
+ header = Actions.lane_context[SharedValues::FL_CHANGELOG]
+ changelog_from_git_commits(
+ between: ["HEAD~10", "HEAD^"],
+ pretty: "• %s",
+ date_format: "short",
+ )
+ body = Actions.lane_context[SharedValues::FL_CHANGELOG]
+ .split("\n")[0..10]
+ .join("\n")
+ ENV["CHANGELOG"] = "#{header}\n\nLast changes:\n#{body}"
+ ENV["CHANGELOG"]
+end
diff --git a/fastlane/Pluginfile b/fastlane/Pluginfile
new file mode 100644
index 0000000..9f455d1
--- /dev/null
+++ b/fastlane/Pluginfile
@@ -0,0 +1,5 @@
+# Autogenerated by fastlane
+#
+# Ensure this file is checked in to source control!
+
+gem 'fastlane-plugin-flutter_version'
diff --git a/fastlane/README.md b/fastlane/README.md
new file mode 100644
index 0000000..13526d1
--- /dev/null
+++ b/fastlane/README.md
@@ -0,0 +1,126 @@
+fastlane documentation
+----
+
+# Installation
+
+Make sure you have the latest version of the Xcode command line tools installed:
+
+```sh
+xcode-select --install
+```
+
+For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)
+
+# Available Actions
+
+### fetch_dependencies
+
+```sh
+[bundle exec] fastlane fetch_dependencies
+```
+
+**Fetch flutter dependencies**
+
+### build_autogenerated_code
+
+```sh
+[bundle exec] fastlane build_autogenerated_code
+```
+
+**Generate flutter generated code**
+
+### lint_format
+
+```sh
+[bundle exec] fastlane lint_format
+```
+
+**Lint: Check code format**
+
+### lint_check_english_sorting
+
+```sh
+[bundle exec] fastlane lint_check_english_sorting
+```
+
+Lint: Check if English language file is sorted
+
+### lint_check_spanish_sorting
+
+```sh
+[bundle exec] fastlane lint_check_spanish_sorting
+```
+
+Lint: Check if Spanish language file is sorted
+
+### lint_check_language_sorting
+
+```sh
+[bundle exec] fastlane lint_check_language_sorting
+```
+
+Lint: Check code format
+
+### lint_analyze
+
+```sh
+[bundle exec] fastlane lint_analyze
+```
+
+**Lint: Analyze code**
+
+### lint_code_metrics
+
+```sh
+[bundle exec] fastlane lint_code_metrics
+```
+
+**Lint: Code metrics**
+
+### lints
+
+```sh
+[bundle exec] fastlane lints
+```
+
+**Run linters**
+
+### ensure_no_change_in_generated_code
+
+```sh
+[bundle exec] fastlane ensure_no_change_in_generated_code
+```
+
+**Check generated code is fine**
+
+### tests
+
+```sh
+[bundle exec] fastlane tests
+```
+
+**Run tests**
+
+### clean_up
+
+```sh
+[bundle exec] fastlane clean_up
+```
+
+**Clean up project**
+
+### build_flutter
+
+```sh
+[bundle exec] fastlane build_flutter
+```
+
+
+
+----
+
+This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
+
+More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools).
+
+The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
diff --git a/firebase.json b/firebase.json
new file mode 100644
index 0000000..15d66b1
--- /dev/null
+++ b/firebase.json
@@ -0,0 +1,31 @@
+{
+ "flutter": {
+ "platforms": {
+ "android": {
+ "default": {
+ "projectId": "simonai-37870",
+ "appId": "1:559870872327:android:09c4e525e96fc105c493a2",
+ "fileOutput": "android/app/google-services.json"
+ }
+ },
+ "ios": {
+ "default": {
+ "projectId": "simonai-37870",
+ "appId": "1:559870872327:ios:b26b8b37d473f6edc493a2",
+ "uploadDebugSymbols": false,
+ "fileOutput": "ios/Runner/GoogleService-Info.plist"
+ }
+ },
+ "dart": {
+ "lib/firebase_options.dart": {
+ "projectId": "simonai-37870",
+ "configurations": {
+ "android": "1:559870872327:android:09c4e525e96fc105c493a2",
+ "ios": "1:559870872327:ios:b26b8b37d473f6edc493a2",
+ "web": "1:559870872327:web:25d0e4245edf4997c493a2"
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/flavorizr.yaml b/flavorizr.yaml
new file mode 100644
index 0000000..91cb89c
--- /dev/null
+++ b/flavorizr.yaml
@@ -0,0 +1,40 @@
+flavors:
+ dev:
+ app:
+ name: "Simon AI Dev"
+ android:
+ applicationId: "com.xmartlabs.simonai.dev"
+ ios:
+ bundleId: "com.xmartlabs.simonai.dev"
+ variables:
+ FLUTTER_TARGET:
+ value: "lib/main.dart"
+ staging:
+ app:
+ name: "Simon AI Sta"
+ android:
+ applicationId: "com.xmartlabs.simonai.dev"
+ ios:
+ bundleId: "com.xmartlabs.simonai.dev"
+ variables:
+ FLUTTER_TARGET:
+ value: "lib/main.dart"
+ prod:
+ app:
+ name: "Simon AI"
+ android:
+ applicationId: "com.xmartlabs.simonai"
+ ios:
+ bundleId: "com.xmartlabs.simonai"
+ variables:
+ FLUTTER_TARGET:
+ value: "lib/main.dart"
+instructions:
+ - assets:download
+ - assets:extract
+ - android:buildGradle
+ - ios:xcconfig
+ - ios:buildTargets
+ - ios:schema
+ - ios:plist
+ - assets:clean
diff --git a/icons/ic_launcher.png b/icons/ic_launcher.png
new file mode 100644
index 0000000..16abf55
Binary files /dev/null and b/icons/ic_launcher.png differ
diff --git a/icons/ic_launcher_foreground.png b/icons/ic_launcher_foreground.png
new file mode 100644
index 0000000..3d8563b
Binary files /dev/null and b/icons/ic_launcher_foreground.png differ
diff --git a/icons/ic_launcher_ios.png b/icons/ic_launcher_ios.png
new file mode 100644
index 0000000..7af7f93
Binary files /dev/null and b/icons/ic_launcher_ios.png differ
diff --git a/icons/splash_branding.png b/icons/splash_branding.png
new file mode 100644
index 0000000..e126e4d
Binary files /dev/null and b/icons/splash_branding.png differ
diff --git a/icons/splash_logo.png b/icons/splash_logo.png
new file mode 100644
index 0000000..9df7387
Binary files /dev/null and b/icons/splash_logo.png differ
diff --git a/icons/splash_logo_android_12.png b/icons/splash_logo_android_12.png
new file mode 100644
index 0000000..0354018
Binary files /dev/null and b/icons/splash_logo_android_12.png differ
diff --git a/ios/.gitignore b/ios/.gitignore
new file mode 100644
index 0000000..7a7f987
--- /dev/null
+++ b/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/ios/.ruby-version b/ios/.ruby-version
new file mode 100644
index 0000000..be94e6f
--- /dev/null
+++ b/ios/.ruby-version
@@ -0,0 +1 @@
+3.2.2
diff --git a/ios/Config/GoogleService-Info-com.xmartlabs.simonai.dev.plist b/ios/Config/GoogleService-Info-com.xmartlabs.simonai.dev.plist
new file mode 100644
index 0000000..a2c75f7
--- /dev/null
+++ b/ios/Config/GoogleService-Info-com.xmartlabs.simonai.dev.plist
@@ -0,0 +1,30 @@
+
+
+
+
+ API_KEY
+ AIzaSyA7pbwZJHND-k5tcxFdsVx5EF92_7h74q4
+ GCM_SENDER_ID
+ 559870872327
+ PLIST_VERSION
+ 1
+ BUNDLE_ID
+ com.xmartlabs.simonai.dev
+ PROJECT_ID
+ simonai-37870
+ STORAGE_BUCKET
+ simonai-37870.appspot.com
+ IS_ADS_ENABLED
+
+ IS_ANALYTICS_ENABLED
+
+ IS_APPINVITE_ENABLED
+
+ IS_GCM_ENABLED
+
+ IS_SIGNIN_ENABLED
+
+ GOOGLE_APP_ID
+ 1:559870872327:ios:b26b8b37d473f6edc493a2
+
+
\ No newline at end of file
diff --git a/ios/Config/GoogleService-Info-com.xmartlabs.simonai.plist b/ios/Config/GoogleService-Info-com.xmartlabs.simonai.plist
new file mode 100644
index 0000000..8492087
--- /dev/null
+++ b/ios/Config/GoogleService-Info-com.xmartlabs.simonai.plist
@@ -0,0 +1,30 @@
+
+
+
+
+ API_KEY
+ AIzaSyA7pbwZJHND-k5tcxFdsVx5EF92_7h74q4
+ GCM_SENDER_ID
+ 559870872327
+ PLIST_VERSION
+ 1
+ BUNDLE_ID
+ com.xmartlabs.simonai
+ PROJECT_ID
+ simonai-37870
+ STORAGE_BUCKET
+ simonai-37870.appspot.com
+ IS_ADS_ENABLED
+
+ IS_ANALYTICS_ENABLED
+
+ IS_APPINVITE_ENABLED
+
+ IS_GCM_ENABLED
+
+ IS_SIGNIN_ENABLED
+
+ GOOGLE_APP_ID
+ 1:559870872327:ios:2bbe3647954c17d8c493a2
+
+
\ No newline at end of file
diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
new file mode 100644
index 0000000..7c56964
--- /dev/null
+++ b/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
+ 12.0
+
+
diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig
new file mode 100644
index 0000000..ec97fc6
--- /dev/null
+++ b/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/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig
new file mode 100644
index 0000000..c4855bf
--- /dev/null
+++ b/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/ios/Flutter/devDebug.xcconfig b/ios/Flutter/devDebug.xcconfig
new file mode 100644
index 0000000..951d3a7
--- /dev/null
+++ b/ios/Flutter/devDebug.xcconfig
@@ -0,0 +1,7 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
+#include "Generated.xcconfig"
+
+FLUTTER_TARGET=lib/main.dart
+ASSET_PREFIX=dev
+BUNDLE_NAME=Simon AI Dev
+BUNDLE_DISPLAY_NAME=Simon AI Dev
diff --git a/ios/Flutter/devProfile.xcconfig b/ios/Flutter/devProfile.xcconfig
new file mode 100644
index 0000000..645538b
--- /dev/null
+++ b/ios/Flutter/devProfile.xcconfig
@@ -0,0 +1,7 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include "Generated.xcconfig"
+
+FLUTTER_TARGET=lib/main.dart
+ASSET_PREFIX=dev
+BUNDLE_NAME=Simon AI Dev
+BUNDLE_DISPLAY_NAME=Simon AI Dev
diff --git a/ios/Flutter/devRelease.xcconfig b/ios/Flutter/devRelease.xcconfig
new file mode 100644
index 0000000..645538b
--- /dev/null
+++ b/ios/Flutter/devRelease.xcconfig
@@ -0,0 +1,7 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include "Generated.xcconfig"
+
+FLUTTER_TARGET=lib/main.dart
+ASSET_PREFIX=dev
+BUNDLE_NAME=Simon AI Dev
+BUNDLE_DISPLAY_NAME=Simon AI Dev
diff --git a/ios/Flutter/prodDebug.xcconfig b/ios/Flutter/prodDebug.xcconfig
new file mode 100644
index 0000000..cb6ca54
--- /dev/null
+++ b/ios/Flutter/prodDebug.xcconfig
@@ -0,0 +1,7 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
+#include "Generated.xcconfig"
+
+FLUTTER_TARGET=lib/main.dart
+ASSET_PREFIX=prod
+BUNDLE_NAME=Simon AI
+BUNDLE_DISPLAY_NAME=Simon AI
diff --git a/ios/Flutter/prodProfile.xcconfig b/ios/Flutter/prodProfile.xcconfig
new file mode 100644
index 0000000..b64ec03
--- /dev/null
+++ b/ios/Flutter/prodProfile.xcconfig
@@ -0,0 +1,7 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include "Generated.xcconfig"
+
+FLUTTER_TARGET=lib/main.dart
+ASSET_PREFIX=prod
+BUNDLE_NAME=Simon AI
+BUNDLE_DISPLAY_NAME=Simon AI
diff --git a/ios/Flutter/prodRelease.xcconfig b/ios/Flutter/prodRelease.xcconfig
new file mode 100644
index 0000000..b64ec03
--- /dev/null
+++ b/ios/Flutter/prodRelease.xcconfig
@@ -0,0 +1,7 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include "Generated.xcconfig"
+
+FLUTTER_TARGET=lib/main.dart
+ASSET_PREFIX=prod
+BUNDLE_NAME=Simon AI
+BUNDLE_DISPLAY_NAME=Simon AI
diff --git a/ios/Flutter/stagingDebug.xcconfig b/ios/Flutter/stagingDebug.xcconfig
new file mode 100644
index 0000000..4516e55
--- /dev/null
+++ b/ios/Flutter/stagingDebug.xcconfig
@@ -0,0 +1,7 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
+#include "Generated.xcconfig"
+
+FLUTTER_TARGET=lib/main.dart
+ASSET_PREFIX=staging
+BUNDLE_NAME=Simon AI Sta
+BUNDLE_DISPLAY_NAME=Simon AI Sta
diff --git a/ios/Flutter/stagingProfile.xcconfig b/ios/Flutter/stagingProfile.xcconfig
new file mode 100644
index 0000000..e336ec6
--- /dev/null
+++ b/ios/Flutter/stagingProfile.xcconfig
@@ -0,0 +1,7 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include "Generated.xcconfig"
+
+FLUTTER_TARGET=lib/main.dart
+ASSET_PREFIX=staging
+BUNDLE_NAME=Simon AI Sta
+BUNDLE_DISPLAY_NAME=Simon AI Sta
diff --git a/ios/Flutter/stagingRelease.xcconfig b/ios/Flutter/stagingRelease.xcconfig
new file mode 100644
index 0000000..e336ec6
--- /dev/null
+++ b/ios/Flutter/stagingRelease.xcconfig
@@ -0,0 +1,7 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include "Generated.xcconfig"
+
+FLUTTER_TARGET=lib/main.dart
+ASSET_PREFIX=staging
+BUNDLE_NAME=Simon AI Sta
+BUNDLE_DISPLAY_NAME=Simon AI Sta
diff --git a/ios/Podfile b/ios/Podfile
new file mode 100644
index 0000000..8a5de9a
--- /dev/null
+++ b/ios/Podfile
@@ -0,0 +1,49 @@
+# Uncomment this line to define a global platform for your project
+platform :ios, '13.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!
+
+ 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)
+
+ target.build_configurations.each do |config|
+ config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
+ '$(inherited)',
+ ## dart: PermissionGroup.camera
+ 'PERMISSION_CAMERA=1',
+ ]
+ end
+ end
+end
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
new file mode 100644
index 0000000..45fc2c0
--- /dev/null
+++ b/ios/Podfile.lock
@@ -0,0 +1,1599 @@
+PODS:
+ - abseil/algorithm (1.20240116.2):
+ - abseil/algorithm/algorithm (= 1.20240116.2)
+ - abseil/algorithm/container (= 1.20240116.2)
+ - abseil/algorithm/algorithm (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/algorithm/container (1.20240116.2):
+ - abseil/algorithm/algorithm
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/base (1.20240116.2):
+ - abseil/base/atomic_hook (= 1.20240116.2)
+ - abseil/base/base (= 1.20240116.2)
+ - abseil/base/base_internal (= 1.20240116.2)
+ - abseil/base/config (= 1.20240116.2)
+ - abseil/base/core_headers (= 1.20240116.2)
+ - abseil/base/cycleclock_internal (= 1.20240116.2)
+ - abseil/base/dynamic_annotations (= 1.20240116.2)
+ - abseil/base/endian (= 1.20240116.2)
+ - abseil/base/errno_saver (= 1.20240116.2)
+ - abseil/base/fast_type_id (= 1.20240116.2)
+ - abseil/base/log_severity (= 1.20240116.2)
+ - abseil/base/malloc_internal (= 1.20240116.2)
+ - abseil/base/no_destructor (= 1.20240116.2)
+ - abseil/base/nullability (= 1.20240116.2)
+ - abseil/base/prefetch (= 1.20240116.2)
+ - abseil/base/pretty_function (= 1.20240116.2)
+ - abseil/base/raw_logging_internal (= 1.20240116.2)
+ - abseil/base/spinlock_wait (= 1.20240116.2)
+ - abseil/base/strerror (= 1.20240116.2)
+ - abseil/base/throw_delegate (= 1.20240116.2)
+ - abseil/base/atomic_hook (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/base/base (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/cycleclock_internal
+ - abseil/base/dynamic_annotations
+ - abseil/base/log_severity
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/base/spinlock_wait
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/base/base_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/base/config (1.20240116.2):
+ - abseil/xcprivacy
+ - abseil/base/core_headers (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/cycleclock_internal (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/dynamic_annotations (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/base/endian (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/xcprivacy
+ - abseil/base/errno_saver (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/fast_type_id (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/log_severity (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/base/malloc_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/base/no_destructor (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/nullability (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/base/prefetch (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/base/pretty_function (1.20240116.2):
+ - abseil/xcprivacy
+ - abseil/base/raw_logging_internal (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/errno_saver
+ - abseil/base/log_severity
+ - abseil/xcprivacy
+ - abseil/base/spinlock_wait (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/core_headers
+ - abseil/base/errno_saver
+ - abseil/xcprivacy
+ - abseil/base/strerror (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/errno_saver
+ - abseil/xcprivacy
+ - abseil/base/throw_delegate (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/cleanup/cleanup (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/cleanup/cleanup_internal
+ - abseil/xcprivacy
+ - abseil/cleanup/cleanup_internal (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/core_headers
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/common (1.20240116.2):
+ - abseil/meta/type_traits
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/container/common_policy_traits (1.20240116.2):
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/container/compressed_tuple (1.20240116.2):
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/container_memory (1.20240116.2):
+ - abseil/base/config
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/fixed_array (1.20240116.2):
+ - abseil/algorithm/algorithm
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/throw_delegate
+ - abseil/container/compressed_tuple
+ - abseil/memory/memory
+ - abseil/xcprivacy
+ - abseil/container/flat_hash_map (1.20240116.2):
+ - abseil/algorithm/container
+ - abseil/base/core_headers
+ - abseil/container/container_memory
+ - abseil/container/hash_function_defaults
+ - abseil/container/raw_hash_map
+ - abseil/memory/memory
+ - abseil/xcprivacy
+ - abseil/container/flat_hash_set (1.20240116.2):
+ - abseil/algorithm/container
+ - abseil/base/core_headers
+ - abseil/container/container_memory
+ - abseil/container/hash_function_defaults
+ - abseil/container/raw_hash_set
+ - abseil/memory/memory
+ - abseil/xcprivacy
+ - abseil/container/hash_function_defaults (1.20240116.2):
+ - abseil/base/config
+ - abseil/hash/hash
+ - abseil/strings/cord
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/container/hash_policy_traits (1.20240116.2):
+ - abseil/container/common_policy_traits
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/container/hashtable_debug_hooks (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/container/hashtablez_sampler (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/stacktrace
+ - abseil/memory/memory
+ - abseil/profiling/exponential_biased
+ - abseil/profiling/sample_recorder
+ - abseil/synchronization/synchronization
+ - abseil/time/time
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/inlined_vector (1.20240116.2):
+ - abseil/algorithm/algorithm
+ - abseil/base/core_headers
+ - abseil/base/throw_delegate
+ - abseil/container/inlined_vector_internal
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/container/inlined_vector_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/container/compressed_tuple
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/container/layout (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/debugging/demangle_internal
+ - abseil/meta/type_traits
+ - abseil/strings/strings
+ - abseil/types/span
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/raw_hash_map (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/throw_delegate
+ - abseil/container/container_memory
+ - abseil/container/raw_hash_set
+ - abseil/xcprivacy
+ - abseil/container/raw_hash_set (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/endian
+ - abseil/base/prefetch
+ - abseil/base/raw_logging_internal
+ - abseil/container/common
+ - abseil/container/compressed_tuple
+ - abseil/container/container_memory
+ - abseil/container/hash_policy_traits
+ - abseil/container/hashtable_debug_hooks
+ - abseil/container/hashtablez_sampler
+ - abseil/hash/hash
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/crc/cpu_detect (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/crc/crc32c (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/prefetch
+ - abseil/crc/cpu_detect
+ - abseil/crc/crc_internal
+ - abseil/crc/non_temporal_memcpy
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/crc/crc_cord_state (1.20240116.2):
+ - abseil/base/config
+ - abseil/crc/crc32c
+ - abseil/numeric/bits
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/crc/crc_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/prefetch
+ - abseil/base/raw_logging_internal
+ - abseil/crc/cpu_detect
+ - abseil/memory/memory
+ - abseil/numeric/bits
+ - abseil/xcprivacy
+ - abseil/crc/non_temporal_arm_intrinsics (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/crc/non_temporal_memcpy (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/crc/non_temporal_arm_intrinsics
+ - abseil/xcprivacy
+ - abseil/debugging/debugging_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/errno_saver
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/debugging/demangle_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/debugging/examine_stack (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/stacktrace
+ - abseil/debugging/symbolize
+ - abseil/xcprivacy
+ - abseil/debugging/stacktrace (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/debugging_internal
+ - abseil/xcprivacy
+ - abseil/debugging/symbolize (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/malloc_internal
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/debugging_internal
+ - abseil/debugging/demangle_internal
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/flags/commandlineflag (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/fast_type_id
+ - abseil/flags/commandlineflag_internal
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/flags/commandlineflag_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/fast_type_id
+ - abseil/xcprivacy
+ - abseil/flags/config (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/flags/path_util
+ - abseil/flags/program_name
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/xcprivacy
+ - abseil/flags/flag (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/flags/config
+ - abseil/flags/flag_internal
+ - abseil/flags/reflection
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/flags/flag_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/flags/commandlineflag
+ - abseil/flags/commandlineflag_internal
+ - abseil/flags/config
+ - abseil/flags/marshalling
+ - abseil/flags/reflection
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/flags/marshalling (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/numeric/int128
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/flags/path_util (1.20240116.2):
+ - abseil/base/config
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/flags/private_handle_accessor (1.20240116.2):
+ - abseil/base/config
+ - abseil/flags/commandlineflag
+ - abseil/flags/commandlineflag_internal
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/flags/program_name (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/flags/path_util
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/xcprivacy
+ - abseil/flags/reflection (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/no_destructor
+ - abseil/container/flat_hash_map
+ - abseil/flags/commandlineflag
+ - abseil/flags/commandlineflag_internal
+ - abseil/flags/config
+ - abseil/flags/private_handle_accessor
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/xcprivacy
+ - abseil/functional/any_invocable (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/functional/bind_front (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/container/compressed_tuple
+ - abseil/meta/type_traits
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/functional/function_ref (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/core_headers
+ - abseil/functional/any_invocable
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/hash/city (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/xcprivacy
+ - abseil/hash/hash (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/container/fixed_array
+ - abseil/functional/function_ref
+ - abseil/hash/city
+ - abseil/hash/low_level_hash
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/variant
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/hash/low_level_hash (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/endian
+ - abseil/base/prefetch
+ - abseil/numeric/int128
+ - abseil/xcprivacy
+ - abseil/log/absl_check (1.20240116.2):
+ - abseil/log/internal/check_impl
+ - abseil/xcprivacy
+ - abseil/log/absl_log (1.20240116.2):
+ - abseil/log/internal/log_impl
+ - abseil/xcprivacy
+ - abseil/log/absl_vlog_is_on (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/log/internal/vlog_config
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/check (1.20240116.2):
+ - abseil/log/internal/check_impl
+ - abseil/log/internal/check_op
+ - abseil/log/internal/conditions
+ - abseil/log/internal/log_message
+ - abseil/log/internal/strip
+ - abseil/xcprivacy
+ - abseil/log/globals (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/base/raw_logging_internal
+ - abseil/hash/hash
+ - abseil/log/internal/vlog_config
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/internal/append_truncated (1.20240116.2):
+ - abseil/base/config
+ - abseil/strings/strings
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/check_impl (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/log/internal/check_op
+ - abseil/log/internal/conditions
+ - abseil/log/internal/log_message
+ - abseil/log/internal/strip
+ - abseil/xcprivacy
+ - abseil/log/internal/check_op (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/log/internal/nullguard
+ - abseil/log/internal/nullstream
+ - abseil/log/internal/strip
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/internal/conditions (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/log/internal/voidify
+ - abseil/xcprivacy
+ - abseil/log/internal/config (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/log/internal/fnmatch (1.20240116.2):
+ - abseil/base/config
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/internal/format (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/log/internal/append_truncated
+ - abseil/log/internal/config
+ - abseil/log/internal/globals
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/time/time
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/globals (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/base/raw_logging_internal
+ - abseil/strings/strings
+ - abseil/time/time
+ - abseil/xcprivacy
+ - abseil/log/internal/log_impl (1.20240116.2):
+ - abseil/log/absl_vlog_is_on
+ - abseil/log/internal/conditions
+ - abseil/log/internal/log_message
+ - abseil/log/internal/strip
+ - abseil/xcprivacy
+ - abseil/log/internal/log_message (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/errno_saver
+ - abseil/base/log_severity
+ - abseil/base/raw_logging_internal
+ - abseil/base/strerror
+ - abseil/container/inlined_vector
+ - abseil/debugging/examine_stack
+ - abseil/log/globals
+ - abseil/log/internal/append_truncated
+ - abseil/log/internal/format
+ - abseil/log/internal/globals
+ - abseil/log/internal/log_sink_set
+ - abseil/log/internal/nullguard
+ - abseil/log/internal/proto
+ - abseil/log/log_entry
+ - abseil/log/log_sink
+ - abseil/log/log_sink_registry
+ - abseil/memory/memory
+ - abseil/strings/strings
+ - abseil/time/time
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/log_sink_set (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/base/no_destructor
+ - abseil/base/raw_logging_internal
+ - abseil/cleanup/cleanup
+ - abseil/log/globals
+ - abseil/log/internal/config
+ - abseil/log/internal/globals
+ - abseil/log/log_entry
+ - abseil/log/log_sink
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/nullguard (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/log/internal/nullstream (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/internal/proto (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/strings/strings
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/strip (1.20240116.2):
+ - abseil/base/log_severity
+ - abseil/log/internal/log_message
+ - abseil/log/internal/nullstream
+ - abseil/xcprivacy
+ - abseil/log/internal/vlog_config (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/no_destructor
+ - abseil/log/internal/fnmatch
+ - abseil/memory/memory
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/log/internal/voidify (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/log/log (1.20240116.2):
+ - abseil/log/internal/log_impl
+ - abseil/log/vlog_is_on
+ - abseil/xcprivacy
+ - abseil/log/log_entry (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/log/internal/config
+ - abseil/strings/strings
+ - abseil/time/time
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/log_sink (1.20240116.2):
+ - abseil/base/config
+ - abseil/log/log_entry
+ - abseil/xcprivacy
+ - abseil/log/log_sink_registry (1.20240116.2):
+ - abseil/base/config
+ - abseil/log/internal/log_sink_set
+ - abseil/log/log_sink
+ - abseil/xcprivacy
+ - abseil/log/vlog_is_on (1.20240116.2):
+ - abseil/log/absl_vlog_is_on
+ - abseil/xcprivacy
+ - abseil/memory (1.20240116.2):
+ - abseil/memory/memory (= 1.20240116.2)
+ - abseil/memory/memory (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/meta (1.20240116.2):
+ - abseil/meta/type_traits (= 1.20240116.2)
+ - abseil/meta/type_traits (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/numeric/bits (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/numeric/int128 (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/numeric/bits
+ - abseil/xcprivacy
+ - abseil/numeric/representation (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/profiling/exponential_biased (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/profiling/sample_recorder (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/synchronization/synchronization
+ - abseil/time/time
+ - abseil/xcprivacy
+ - abseil/random/bit_gen_ref (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/base/fast_type_id
+ - abseil/meta/type_traits
+ - abseil/random/internal/distribution_caller
+ - abseil/random/internal/fast_uniform_bits
+ - abseil/random/random
+ - abseil/xcprivacy
+ - abseil/random/distributions (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/random/internal/distribution_caller
+ - abseil/random/internal/fast_uniform_bits
+ - abseil/random/internal/fastmath
+ - abseil/random/internal/generate_real
+ - abseil/random/internal/iostream_state_saver
+ - abseil/random/internal/traits
+ - abseil/random/internal/uniform_helper
+ - abseil/random/internal/wide_multiply
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/random/internal/distribution_caller (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/fast_type_id
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/random/internal/fast_uniform_bits (1.20240116.2):
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/random/internal/traits
+ - abseil/xcprivacy
+ - abseil/random/internal/fastmath (1.20240116.2):
+ - abseil/numeric/bits
+ - abseil/xcprivacy
+ - abseil/random/internal/generate_real (1.20240116.2):
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/random/internal/fastmath
+ - abseil/random/internal/traits
+ - abseil/xcprivacy
+ - abseil/random/internal/iostream_state_saver (1.20240116.2):
+ - abseil/meta/type_traits
+ - abseil/numeric/int128
+ - abseil/xcprivacy
+ - abseil/random/internal/nonsecure_base (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/container/inlined_vector
+ - abseil/meta/type_traits
+ - abseil/random/internal/pool_urbg
+ - abseil/random/internal/salted_seed_seq
+ - abseil/random/internal/seed_material
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/random/internal/pcg_engine (1.20240116.2):
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/random/internal/fastmath
+ - abseil/random/internal/iostream_state_saver
+ - abseil/xcprivacy
+ - abseil/random/internal/platform (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/random/internal/pool_urbg (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/raw_logging_internal
+ - abseil/random/internal/randen
+ - abseil/random/internal/seed_material
+ - abseil/random/internal/traits
+ - abseil/random/seed_gen_exception
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/random/internal/randen (1.20240116.2):
+ - abseil/base/raw_logging_internal
+ - abseil/random/internal/platform
+ - abseil/random/internal/randen_hwaes
+ - abseil/random/internal/randen_slow
+ - abseil/xcprivacy
+ - abseil/random/internal/randen_engine (1.20240116.2):
+ - abseil/base/endian
+ - abseil/meta/type_traits
+ - abseil/random/internal/iostream_state_saver
+ - abseil/random/internal/randen
+ - abseil/xcprivacy
+ - abseil/random/internal/randen_hwaes (1.20240116.2):
+ - abseil/base/config
+ - abseil/random/internal/platform
+ - abseil/random/internal/randen_hwaes_impl
+ - abseil/xcprivacy
+ - abseil/random/internal/randen_hwaes_impl (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/numeric/int128
+ - abseil/random/internal/platform
+ - abseil/xcprivacy
+ - abseil/random/internal/randen_slow (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/numeric/int128
+ - abseil/random/internal/platform
+ - abseil/xcprivacy
+ - abseil/random/internal/salted_seed_seq (1.20240116.2):
+ - abseil/container/inlined_vector
+ - abseil/meta/type_traits
+ - abseil/random/internal/seed_material
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/random/internal/seed_material (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/raw_logging_internal
+ - abseil/random/internal/fast_uniform_bits
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/random/internal/traits (1.20240116.2):
+ - abseil/base/config
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/xcprivacy
+ - abseil/random/internal/uniform_helper (1.20240116.2):
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/numeric/int128
+ - abseil/random/internal/traits
+ - abseil/xcprivacy
+ - abseil/random/internal/wide_multiply (1.20240116.2):
+ - abseil/base/config
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/random/internal/traits
+ - abseil/xcprivacy
+ - abseil/random/random (1.20240116.2):
+ - abseil/random/distributions
+ - abseil/random/internal/nonsecure_base
+ - abseil/random/internal/pcg_engine
+ - abseil/random/internal/pool_urbg
+ - abseil/random/internal/randen_engine
+ - abseil/random/seed_sequences
+ - abseil/xcprivacy
+ - abseil/random/seed_gen_exception (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/random/seed_sequences (1.20240116.2):
+ - abseil/base/config
+ - abseil/random/internal/pool_urbg
+ - abseil/random/internal/salted_seed_seq
+ - abseil/random/internal/seed_material
+ - abseil/random/seed_gen_exception
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/status/status (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/no_destructor
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/base/strerror
+ - abseil/container/inlined_vector
+ - abseil/debugging/stacktrace
+ - abseil/debugging/symbolize
+ - abseil/functional/function_ref
+ - abseil/memory/memory
+ - abseil/strings/cord
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/status/statusor (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/meta/type_traits
+ - abseil/status/status
+ - abseil/strings/has_ostream_operator
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/types/variant
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/strings/charset (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/strings/string_view
+ - abseil/xcprivacy
+ - abseil/strings/cord (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/container/inlined_vector
+ - abseil/crc/crc32c
+ - abseil/crc/crc_cord_state
+ - abseil/functional/function_ref
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/strings/cord_internal
+ - abseil/strings/cordz_functions
+ - abseil/strings/cordz_info
+ - abseil/strings/cordz_statistics
+ - abseil/strings/cordz_update_scope
+ - abseil/strings/cordz_update_tracker
+ - abseil/strings/internal
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/strings/cord_internal (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/raw_logging_internal
+ - abseil/base/throw_delegate
+ - abseil/container/compressed_tuple
+ - abseil/container/container_memory
+ - abseil/container/inlined_vector
+ - abseil/container/layout
+ - abseil/crc/crc_cord_state
+ - abseil/functional/function_ref
+ - abseil/meta/type_traits
+ - abseil/strings/strings
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/strings/cordz_functions (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/profiling/exponential_biased
+ - abseil/xcprivacy
+ - abseil/strings/cordz_handle (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/synchronization/synchronization
+ - abseil/xcprivacy
+ - abseil/strings/cordz_info (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/container/inlined_vector
+ - abseil/debugging/stacktrace
+ - abseil/strings/cord_internal
+ - abseil/strings/cordz_functions
+ - abseil/strings/cordz_handle
+ - abseil/strings/cordz_statistics
+ - abseil/strings/cordz_update_tracker
+ - abseil/synchronization/synchronization
+ - abseil/time/time
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/strings/cordz_statistics (1.20240116.2):
+ - abseil/base/config
+ - abseil/strings/cordz_update_tracker
+ - abseil/xcprivacy
+ - abseil/strings/cordz_update_scope (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/strings/cord_internal
+ - abseil/strings/cordz_info
+ - abseil/strings/cordz_update_tracker
+ - abseil/xcprivacy
+ - abseil/strings/cordz_update_tracker (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/strings/has_ostream_operator (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/strings/internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/raw_logging_internal
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/strings/str_format (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/strings/str_format_internal
+ - abseil/strings/string_view
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/strings/str_format_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/container/fixed_array
+ - abseil/container/inlined_vector
+ - abseil/functional/function_ref
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/numeric/representation
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/strings/string_view (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/base/throw_delegate
+ - abseil/xcprivacy
+ - abseil/strings/strings (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/base/throw_delegate
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/strings/charset
+ - abseil/strings/internal
+ - abseil/strings/string_view
+ - abseil/xcprivacy
+ - abseil/synchronization/graphcycles_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/malloc_internal
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/synchronization/kernel_timeout_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/time/time
+ - abseil/xcprivacy
+ - abseil/synchronization/synchronization (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/base
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/malloc_internal
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/stacktrace
+ - abseil/debugging/symbolize
+ - abseil/synchronization/graphcycles_internal
+ - abseil/synchronization/kernel_timeout_internal
+ - abseil/time/time
+ - abseil/xcprivacy
+ - abseil/time (1.20240116.2):
+ - abseil/time/internal (= 1.20240116.2)
+ - abseil/time/time (= 1.20240116.2)
+ - abseil/time/internal (1.20240116.2):
+ - abseil/time/internal/cctz (= 1.20240116.2)
+ - abseil/time/internal/cctz (1.20240116.2):
+ - abseil/time/internal/cctz/civil_time (= 1.20240116.2)
+ - abseil/time/internal/cctz/time_zone (= 1.20240116.2)
+ - abseil/time/internal/cctz/civil_time (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/time/internal/cctz/time_zone (1.20240116.2):
+ - abseil/base/config
+ - abseil/time/internal/cctz/civil_time
+ - abseil/xcprivacy
+ - abseil/time/time (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/numeric/int128
+ - abseil/strings/strings
+ - abseil/time/internal/cctz/civil_time
+ - abseil/time/internal/cctz/time_zone
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/types (1.20240116.2):
+ - abseil/types/any (= 1.20240116.2)
+ - abseil/types/bad_any_cast (= 1.20240116.2)
+ - abseil/types/bad_any_cast_impl (= 1.20240116.2)
+ - abseil/types/bad_optional_access (= 1.20240116.2)
+ - abseil/types/bad_variant_access (= 1.20240116.2)
+ - abseil/types/compare (= 1.20240116.2)
+ - abseil/types/optional (= 1.20240116.2)
+ - abseil/types/span (= 1.20240116.2)
+ - abseil/types/variant (= 1.20240116.2)
+ - abseil/types/any (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/fast_type_id
+ - abseil/meta/type_traits
+ - abseil/types/bad_any_cast
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/types/bad_any_cast (1.20240116.2):
+ - abseil/base/config
+ - abseil/types/bad_any_cast_impl
+ - abseil/xcprivacy
+ - abseil/types/bad_any_cast_impl (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/types/bad_optional_access (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/types/bad_variant_access (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/types/compare (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/types/optional (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/types/bad_optional_access
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/types/span (1.20240116.2):
+ - abseil/algorithm/algorithm
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/base/throw_delegate
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/types/variant (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/types/bad_variant_access
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/utility/utility (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/xcprivacy (1.20240116.2)
+ - app_settings (5.1.1):
+ - Flutter
+ - audioplayers_darwin (0.0.1):
+ - Flutter
+ - BoringSSL-GRPC (0.0.36):
+ - BoringSSL-GRPC/Implementation (= 0.0.36)
+ - BoringSSL-GRPC/Interface (= 0.0.36)
+ - BoringSSL-GRPC/Implementation (0.0.36):
+ - BoringSSL-GRPC/Interface (= 0.0.36)
+ - BoringSSL-GRPC/Interface (0.0.36)
+ - camera_avfoundation (0.0.1):
+ - Flutter
+ - cloud_firestore (5.1.0):
+ - Firebase/Firestore (= 11.0.0)
+ - firebase_core
+ - Flutter
+ - Firebase/Auth (11.0.0):
+ - Firebase/CoreOnly
+ - FirebaseAuth (~> 11.0.0)
+ - Firebase/CoreOnly (11.0.0):
+ - FirebaseCore (= 11.0.0)
+ - Firebase/Crashlytics (11.0.0):
+ - Firebase/CoreOnly
+ - FirebaseCrashlytics (~> 11.0.0)
+ - Firebase/Firestore (11.0.0):
+ - Firebase/CoreOnly
+ - FirebaseFirestore (~> 11.0.0)
+ - Firebase/RemoteConfig (11.0.0):
+ - Firebase/CoreOnly
+ - FirebaseRemoteConfig (~> 11.0.0)
+ - firebase_auth (5.3.0):
+ - Firebase/Auth (= 11.0.0)
+ - firebase_core
+ - Flutter
+ - firebase_core (3.5.0):
+ - Firebase/CoreOnly (= 11.0.0)
+ - Flutter
+ - firebase_crashlytics (4.1.1):
+ - Firebase/Crashlytics (= 11.0.0)
+ - firebase_core
+ - Flutter
+ - firebase_remote_config (5.0.3):
+ - Firebase/RemoteConfig (= 11.0.0)
+ - firebase_core
+ - Flutter
+ - FirebaseABTesting (11.2.0):
+ - FirebaseCore (~> 11.0)
+ - FirebaseAppCheckInterop (11.2.0)
+ - FirebaseAuth (11.0.0):
+ - FirebaseAppCheckInterop (~> 11.0)
+ - FirebaseAuthInterop (~> 11.0)
+ - FirebaseCore (~> 11.0)
+ - FirebaseCoreExtension (~> 11.0)
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.0)
+ - GoogleUtilities/Environment (~> 8.0)
+ - GTMSessionFetcher/Core (~> 3.4)
+ - RecaptchaInterop (~> 100.0)
+ - FirebaseAuthInterop (11.2.0)
+ - FirebaseCore (11.0.0):
+ - FirebaseCoreInternal (~> 11.0)
+ - GoogleUtilities/Environment (~> 8.0)
+ - GoogleUtilities/Logger (~> 8.0)
+ - FirebaseCoreExtension (11.2.0):
+ - FirebaseCore (~> 11.0)
+ - FirebaseCoreInternal (11.2.0):
+ - "GoogleUtilities/NSData+zlib (~> 8.0)"
+ - FirebaseCrashlytics (11.0.0):
+ - FirebaseCore (~> 11.0)
+ - FirebaseInstallations (~> 11.0)
+ - FirebaseRemoteConfigInterop (~> 11.0)
+ - FirebaseSessions (~> 11.0)
+ - GoogleDataTransport (~> 10.0)
+ - GoogleUtilities/Environment (~> 8.0)
+ - nanopb (~> 3.30910.0)
+ - PromisesObjC (~> 2.4)
+ - FirebaseFirestore (11.0.0):
+ - FirebaseCore (~> 11.0)
+ - FirebaseCoreExtension (~> 11.0)
+ - FirebaseFirestoreInternal (= 11.0.0)
+ - FirebaseSharedSwift (~> 11.0)
+ - FirebaseFirestoreInternal (11.0.0):
+ - abseil/algorithm (~> 1.20240116.1)
+ - abseil/base (~> 1.20240116.1)
+ - abseil/container/flat_hash_map (~> 1.20240116.1)
+ - abseil/memory (~> 1.20240116.1)
+ - abseil/meta (~> 1.20240116.1)
+ - abseil/strings/strings (~> 1.20240116.1)
+ - abseil/time (~> 1.20240116.1)
+ - abseil/types (~> 1.20240116.1)
+ - FirebaseAppCheckInterop (~> 11.0)
+ - FirebaseCore (~> 11.0)
+ - "gRPC-C++ (~> 1.65.0)"
+ - gRPC-Core (~> 1.65.0)
+ - leveldb-library (~> 1.22)
+ - nanopb (~> 3.30910.0)
+ - FirebaseInstallations (11.2.0):
+ - FirebaseCore (~> 11.0)
+ - GoogleUtilities/Environment (~> 8.0)
+ - GoogleUtilities/UserDefaults (~> 8.0)
+ - PromisesObjC (~> 2.4)
+ - FirebaseRemoteConfig (11.0.0):
+ - FirebaseABTesting (~> 11.0)
+ - FirebaseCore (~> 11.0)
+ - FirebaseInstallations (~> 11.0)
+ - FirebaseRemoteConfigInterop (~> 11.0)
+ - FirebaseSharedSwift (~> 11.0)
+ - GoogleUtilities/Environment (~> 8.0)
+ - "GoogleUtilities/NSData+zlib (~> 8.0)"
+ - FirebaseRemoteConfigInterop (11.2.0)
+ - FirebaseSessions (11.2.0):
+ - FirebaseCore (~> 11.0)
+ - FirebaseCoreExtension (~> 11.0)
+ - FirebaseInstallations (~> 11.0)
+ - GoogleDataTransport (~> 10.0)
+ - GoogleUtilities/Environment (~> 8.0)
+ - GoogleUtilities/UserDefaults (~> 8.0)
+ - nanopb (~> 3.30910.0)
+ - PromisesSwift (~> 2.1)
+ - FirebaseSharedSwift (11.2.0)
+ - Flutter (1.0.0)
+ - flutter_email_sender (0.0.1):
+ - Flutter
+ - flutter_native_splash (0.0.1):
+ - Flutter
+ - flutter_secure_storage (6.0.0):
+ - Flutter
+ - flutter_web_browser (0.17.1):
+ - Flutter
+ - GoogleDataTransport (10.1.0):
+ - nanopb (~> 3.30910.0)
+ - PromisesObjC (~> 2.4)
+ - GoogleUtilities/AppDelegateSwizzler (8.0.2):
+ - GoogleUtilities/Environment
+ - GoogleUtilities/Logger
+ - GoogleUtilities/Network
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Environment (8.0.2):
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Logger (8.0.2):
+ - GoogleUtilities/Environment
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Network (8.0.2):
+ - GoogleUtilities/Logger
+ - "GoogleUtilities/NSData+zlib"
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Reachability
+ - "GoogleUtilities/NSData+zlib (8.0.2)":
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Privacy (8.0.2)
+ - GoogleUtilities/Reachability (8.0.2):
+ - GoogleUtilities/Logger
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/UserDefaults (8.0.2):
+ - GoogleUtilities/Logger
+ - GoogleUtilities/Privacy
+ - "gRPC-C++ (1.65.5)":
+ - "gRPC-C++/Implementation (= 1.65.5)"
+ - "gRPC-C++/Interface (= 1.65.5)"
+ - "gRPC-C++/Implementation (1.65.5)":
+ - abseil/algorithm/container (~> 1.20240116.2)
+ - abseil/base/base (~> 1.20240116.2)
+ - abseil/base/config (~> 1.20240116.2)
+ - abseil/base/core_headers (~> 1.20240116.2)
+ - abseil/base/log_severity (~> 1.20240116.2)
+ - abseil/base/no_destructor (~> 1.20240116.2)
+ - abseil/cleanup/cleanup (~> 1.20240116.2)
+ - abseil/container/flat_hash_map (~> 1.20240116.2)
+ - abseil/container/flat_hash_set (~> 1.20240116.2)
+ - abseil/container/inlined_vector (~> 1.20240116.2)
+ - abseil/flags/flag (~> 1.20240116.2)
+ - abseil/flags/marshalling (~> 1.20240116.2)
+ - abseil/functional/any_invocable (~> 1.20240116.2)
+ - abseil/functional/bind_front (~> 1.20240116.2)
+ - abseil/functional/function_ref (~> 1.20240116.2)
+ - abseil/hash/hash (~> 1.20240116.2)
+ - abseil/log/absl_check (~> 1.20240116.2)
+ - abseil/log/absl_log (~> 1.20240116.2)
+ - abseil/log/check (~> 1.20240116.2)
+ - abseil/log/globals (~> 1.20240116.2)
+ - abseil/log/log (~> 1.20240116.2)
+ - abseil/memory/memory (~> 1.20240116.2)
+ - abseil/meta/type_traits (~> 1.20240116.2)
+ - abseil/random/bit_gen_ref (~> 1.20240116.2)
+ - abseil/random/distributions (~> 1.20240116.2)
+ - abseil/random/random (~> 1.20240116.2)
+ - abseil/status/status (~> 1.20240116.2)
+ - abseil/status/statusor (~> 1.20240116.2)
+ - abseil/strings/cord (~> 1.20240116.2)
+ - abseil/strings/str_format (~> 1.20240116.2)
+ - abseil/strings/strings (~> 1.20240116.2)
+ - abseil/synchronization/synchronization (~> 1.20240116.2)
+ - abseil/time/time (~> 1.20240116.2)
+ - abseil/types/optional (~> 1.20240116.2)
+ - abseil/types/span (~> 1.20240116.2)
+ - abseil/types/variant (~> 1.20240116.2)
+ - abseil/utility/utility (~> 1.20240116.2)
+ - "gRPC-C++/Interface (= 1.65.5)"
+ - "gRPC-C++/Privacy (= 1.65.5)"
+ - gRPC-Core (= 1.65.5)
+ - "gRPC-C++/Interface (1.65.5)"
+ - "gRPC-C++/Privacy (1.65.5)"
+ - gRPC-Core (1.65.5):
+ - gRPC-Core/Implementation (= 1.65.5)
+ - gRPC-Core/Interface (= 1.65.5)
+ - gRPC-Core/Implementation (1.65.5):
+ - abseil/algorithm/container (~> 1.20240116.2)
+ - abseil/base/base (~> 1.20240116.2)
+ - abseil/base/config (~> 1.20240116.2)
+ - abseil/base/core_headers (~> 1.20240116.2)
+ - abseil/base/log_severity (~> 1.20240116.2)
+ - abseil/base/no_destructor (~> 1.20240116.2)
+ - abseil/cleanup/cleanup (~> 1.20240116.2)
+ - abseil/container/flat_hash_map (~> 1.20240116.2)
+ - abseil/container/flat_hash_set (~> 1.20240116.2)
+ - abseil/container/inlined_vector (~> 1.20240116.2)
+ - abseil/flags/flag (~> 1.20240116.2)
+ - abseil/flags/marshalling (~> 1.20240116.2)
+ - abseil/functional/any_invocable (~> 1.20240116.2)
+ - abseil/functional/bind_front (~> 1.20240116.2)
+ - abseil/functional/function_ref (~> 1.20240116.2)
+ - abseil/hash/hash (~> 1.20240116.2)
+ - abseil/log/check (~> 1.20240116.2)
+ - abseil/log/globals (~> 1.20240116.2)
+ - abseil/log/log (~> 1.20240116.2)
+ - abseil/memory/memory (~> 1.20240116.2)
+ - abseil/meta/type_traits (~> 1.20240116.2)
+ - abseil/random/bit_gen_ref (~> 1.20240116.2)
+ - abseil/random/distributions (~> 1.20240116.2)
+ - abseil/random/random (~> 1.20240116.2)
+ - abseil/status/status (~> 1.20240116.2)
+ - abseil/status/statusor (~> 1.20240116.2)
+ - abseil/strings/cord (~> 1.20240116.2)
+ - abseil/strings/str_format (~> 1.20240116.2)
+ - abseil/strings/strings (~> 1.20240116.2)
+ - abseil/synchronization/synchronization (~> 1.20240116.2)
+ - abseil/time/time (~> 1.20240116.2)
+ - abseil/types/optional (~> 1.20240116.2)
+ - abseil/types/span (~> 1.20240116.2)
+ - abseil/types/variant (~> 1.20240116.2)
+ - abseil/utility/utility (~> 1.20240116.2)
+ - BoringSSL-GRPC (= 0.0.36)
+ - gRPC-Core/Interface (= 1.65.5)
+ - gRPC-Core/Privacy (= 1.65.5)
+ - gRPC-Core/Interface (1.65.5)
+ - gRPC-Core/Privacy (1.65.5)
+ - GTMSessionFetcher/Core (3.5.0)
+ - leveldb-library (1.22.5)
+ - nanopb (3.30910.0):
+ - nanopb/decode (= 3.30910.0)
+ - nanopb/encode (= 3.30910.0)
+ - nanopb/decode (3.30910.0)
+ - nanopb/encode (3.30910.0)
+ - package_info_plus (0.4.5):
+ - Flutter
+ - path_provider_foundation (0.0.1):
+ - Flutter
+ - FlutterMacOS
+ - permission_handler_apple (9.3.0):
+ - Flutter
+ - PromisesObjC (2.4.0)
+ - PromisesSwift (2.4.0):
+ - PromisesObjC (= 2.4.0)
+ - RecaptchaInterop (100.0.0)
+ - sensors_plus (0.0.1):
+ - Flutter
+ - shared_preferences_foundation (0.0.1):
+ - Flutter
+ - FlutterMacOS
+ - sqflite (0.0.3):
+ - Flutter
+ - FlutterMacOS
+ - TensorFlowLiteC (2.12.0):
+ - TensorFlowLiteC/Core (= 2.12.0)
+ - TensorFlowLiteC/Core (2.12.0)
+ - TensorFlowLiteC/CoreML (2.12.0):
+ - TensorFlowLiteC/Core
+ - TensorFlowLiteC/Metal (2.12.0):
+ - TensorFlowLiteC/Core
+ - TensorFlowLiteSwift (2.12.0):
+ - TensorFlowLiteSwift/Core (= 2.12.0)
+ - TensorFlowLiteSwift/Core (2.12.0):
+ - TensorFlowLiteC (= 2.12.0)
+ - TensorFlowLiteSwift/CoreML (2.12.0):
+ - TensorFlowLiteC/CoreML (= 2.12.0)
+ - TensorFlowLiteSwift/Core (= 2.12.0)
+ - TensorFlowLiteSwift/Metal (2.12.0):
+ - TensorFlowLiteC/Metal (= 2.12.0)
+ - TensorFlowLiteSwift/Core (= 2.12.0)
+ - tflite_flutter (0.0.1):
+ - Flutter
+ - TensorFlowLiteSwift (= 2.12.0)
+ - TensorFlowLiteSwift/CoreML (= 2.12.0)
+ - TensorFlowLiteSwift/Metal (= 2.12.0)
+ - tflite_flutter_helper (0.1.0):
+ - Flutter
+
+DEPENDENCIES:
+ - app_settings (from `.symlinks/plugins/app_settings/ios`)
+ - audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`)
+ - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`)
+ - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
+ - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`)
+ - firebase_core (from `.symlinks/plugins/firebase_core/ios`)
+ - firebase_crashlytics (from `.symlinks/plugins/firebase_crashlytics/ios`)
+ - firebase_remote_config (from `.symlinks/plugins/firebase_remote_config/ios`)
+ - Flutter (from `Flutter`)
+ - flutter_email_sender (from `.symlinks/plugins/flutter_email_sender/ios`)
+ - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
+ - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
+ - flutter_web_browser (from `.symlinks/plugins/flutter_web_browser/ios`)
+ - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
+ - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
+ - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
+ - sensors_plus (from `.symlinks/plugins/sensors_plus/ios`)
+ - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
+ - sqflite (from `.symlinks/plugins/sqflite/darwin`)
+ - tflite_flutter (from `.symlinks/plugins/tflite_flutter/ios`)
+ - tflite_flutter_helper (from `.symlinks/plugins/tflite_flutter_helper/ios`)
+
+SPEC REPOS:
+ trunk:
+ - abseil
+ - BoringSSL-GRPC
+ - Firebase
+ - FirebaseABTesting
+ - FirebaseAppCheckInterop
+ - FirebaseAuth
+ - FirebaseAuthInterop
+ - FirebaseCore
+ - FirebaseCoreExtension
+ - FirebaseCoreInternal
+ - FirebaseCrashlytics
+ - FirebaseFirestore
+ - FirebaseFirestoreInternal
+ - FirebaseInstallations
+ - FirebaseRemoteConfig
+ - FirebaseRemoteConfigInterop
+ - FirebaseSessions
+ - FirebaseSharedSwift
+ - GoogleDataTransport
+ - GoogleUtilities
+ - "gRPC-C++"
+ - gRPC-Core
+ - GTMSessionFetcher
+ - leveldb-library
+ - nanopb
+ - PromisesObjC
+ - PromisesSwift
+ - RecaptchaInterop
+ - TensorFlowLiteC
+ - TensorFlowLiteSwift
+
+EXTERNAL SOURCES:
+ app_settings:
+ :path: ".symlinks/plugins/app_settings/ios"
+ audioplayers_darwin:
+ :path: ".symlinks/plugins/audioplayers_darwin/ios"
+ camera_avfoundation:
+ :path: ".symlinks/plugins/camera_avfoundation/ios"
+ cloud_firestore:
+ :path: ".symlinks/plugins/cloud_firestore/ios"
+ firebase_auth:
+ :path: ".symlinks/plugins/firebase_auth/ios"
+ firebase_core:
+ :path: ".symlinks/plugins/firebase_core/ios"
+ firebase_crashlytics:
+ :path: ".symlinks/plugins/firebase_crashlytics/ios"
+ firebase_remote_config:
+ :path: ".symlinks/plugins/firebase_remote_config/ios"
+ Flutter:
+ :path: Flutter
+ flutter_email_sender:
+ :path: ".symlinks/plugins/flutter_email_sender/ios"
+ flutter_native_splash:
+ :path: ".symlinks/plugins/flutter_native_splash/ios"
+ flutter_secure_storage:
+ :path: ".symlinks/plugins/flutter_secure_storage/ios"
+ flutter_web_browser:
+ :path: ".symlinks/plugins/flutter_web_browser/ios"
+ package_info_plus:
+ :path: ".symlinks/plugins/package_info_plus/ios"
+ path_provider_foundation:
+ :path: ".symlinks/plugins/path_provider_foundation/darwin"
+ permission_handler_apple:
+ :path: ".symlinks/plugins/permission_handler_apple/ios"
+ sensors_plus:
+ :path: ".symlinks/plugins/sensors_plus/ios"
+ shared_preferences_foundation:
+ :path: ".symlinks/plugins/shared_preferences_foundation/darwin"
+ sqflite:
+ :path: ".symlinks/plugins/sqflite/darwin"
+ tflite_flutter:
+ :path: ".symlinks/plugins/tflite_flutter/ios"
+ tflite_flutter_helper:
+ :path: ".symlinks/plugins/tflite_flutter_helper/ios"
+
+SPEC CHECKSUMS:
+ abseil: d121da9ef7e2ff4cab7666e76c5a3e0915ae08c3
+ app_settings: 017320c6a680cdc94c799949d95b84cb69389ebc
+ audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40
+ BoringSSL-GRPC: ca6a8e5d04812fce8ffd6437810c2d46f925eaeb
+ camera_avfoundation: 759172d1a77ae7be0de08fc104cfb79738b8a59e
+ cloud_firestore: 3f3395f245d7c0818519f94585b368224726b56b
+ Firebase: 9f574c08c2396885b5e7e100ed4293d956218af9
+ firebase_auth: f27287630c4d9e2c3c63e64d9240822ad6b07e5b
+ firebase_core: 2ec6b789859c7c24766344ec71fdf78639402d56
+ firebase_crashlytics: 4111f8198b78c99471c955af488cecd8224967e6
+ firebase_remote_config: 730cce6bb1c8c42708fc7dce9031a88026b8b87b
+ FirebaseABTesting: 2104d957ce33888a3d6f3bde298cdee376dde8f1
+ FirebaseAppCheckInterop: ea21450529cf0ebd132788dd8916a0269abc684f
+ FirebaseAuth: d5cf28be74d7e82257f6a3f717509eff70d3cf4a
+ FirebaseAuthInterop: 47c09558af5d1b31f16fb352387c72d4804f4a24
+ FirebaseCore: 3cf438f431f18c12cdf2aaf64434648b63f7e383
+ FirebaseCoreExtension: cda74ddfb001224bd8fd1d6e74698b4ed07803de
+ FirebaseCoreInternal: 0c569513412da9f3b31bd0b340013bbee8f295c5
+ FirebaseCrashlytics: 745d8f0221fe49c62865391d1bf56f5a12eeec0b
+ FirebaseFirestore: a1758850668dbb503537b7780a2a1fdc5e37c6ce
+ FirebaseFirestoreInternal: 9fcc0ccb987ab73163f2249444e4bfd9eac63748
+ FirebaseInstallations: 771177d89d6c451dc6e50085ec82e2fc77ed0a4a
+ FirebaseRemoteConfig: fe8b7e6d6770fefbde27b0cac3f3deffba6e7326
+ FirebaseRemoteConfigInterop: 477b26fdeb8fb5fbaf22fa9db5343b42289dc7db
+ FirebaseSessions: adcec8b72d0066a385e3affcd1bcb1ebb3908ce6
+ FirebaseSharedSwift: 7a0d78d155ede78407f0fdc89fbc914014c7c540
+ Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
+ flutter_email_sender: 10a22605f92809a11ef52b2f412db806c6082d40
+ flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778
+ flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
+ flutter_web_browser: 7bccaafbb0c5b8862afe7bcd158f15557109f61f
+ GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
+ GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
+ "gRPC-C++": 2fa52b3141e7789a28a737f251e0c45b4cb20a87
+ gRPC-Core: a27c294d6149e1c39a7d173527119cfbc3375ce4
+ GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
+ leveldb-library: e8eadf9008a61f9e1dde3978c086d2b6d9b9dc28
+ nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
+ package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
+ path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
+ permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
+ PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
+ PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851
+ RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21
+ sensors_plus: 5717760720f7e6acd96fdbd75b7428f5ad755ec2
+ shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
+ sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
+ TensorFlowLiteC: 20785a69299185a379ba9852b6625f00afd7984a
+ TensorFlowLiteSwift: 3a4928286e9e35bdd3e17970f48e53c80d25e793
+ tflite_flutter: 9433d086a3060431bbc9f3c7c20d017db0e72d08
+ tflite_flutter_helper: 6db9cadeb89c6d6468acb5faf5d06d289252ce1b
+
+PODFILE CHECKSUM: f78dd2483182dea10382b361f51daf312ce67029
+
+COCOAPODS: 1.15.2
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..b9f2fa0
--- /dev/null
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -0,0 +1,1576 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 54;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 0F022876DB8B3E624FC177D2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C458858B5300F49D541B4F5 /* Pods_Runner.framework */; };
+ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 58AF3F242C99DE3B00F8E312 /* GoogleService-Info-com.xmartlabs.simonai.plist in Resources */ = {isa = PBXBuildFile; fileRef = 58AF3F222C99DE3A00F8E312 /* GoogleService-Info-com.xmartlabs.simonai.plist */; };
+ 58AF3F252C99DE3B00F8E312 /* GoogleService-Info-com.xmartlabs.simonai.dev.plist in Resources */ = {isa = PBXBuildFile; fileRef = 58AF3F232C99DE3B00F8E312 /* GoogleService-Info-com.xmartlabs.simonai.dev.plist */; };
+ 58AF3F272C99EDAF00F8E312 /* firebase_app_id_file.json in Resources */ = {isa = PBXBuildFile; fileRef = 58AF3F262C99EDAF00F8E312 /* firebase_app_id_file.json */; };
+ 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 */; };
+/* End PBXBuildFile 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 */
+ 045628E67404FC3D3264165A /* 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 = ""; };
+ 0F61C30367B528751CF07EEA /* 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 = ""; };
+ 113F326E4F1DD43142CE6D30 /* stagingDebug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = stagingDebug.xcconfig; path = Flutter/stagingDebug.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 = ""; };
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 51B5A3EF356677109FE751EB /* prodRelease.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = prodRelease.xcconfig; path = Flutter/prodRelease.xcconfig; sourceTree = ""; };
+ 5626E2C804EE32F56C2D8F06 /* prodDebug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = prodDebug.xcconfig; path = Flutter/prodDebug.xcconfig; sourceTree = ""; };
+ 58AF3F222C99DE3A00F8E312 /* GoogleService-Info-com.xmartlabs.simonai.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GoogleService-Info-com.xmartlabs.simonai.plist"; path = "Config/GoogleService-Info-com.xmartlabs.simonai.plist"; sourceTree = SOURCE_ROOT; };
+ 58AF3F232C99DE3B00F8E312 /* GoogleService-Info-com.xmartlabs.simonai.dev.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GoogleService-Info-com.xmartlabs.simonai.dev.plist"; path = "Config/GoogleService-Info-com.xmartlabs.simonai.dev.plist"; sourceTree = SOURCE_ROOT; };
+ 58AF3F262C99EDAF00F8E312 /* firebase_app_id_file.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = firebase_app_id_file.json; sourceTree = ""; };
+ 5E53384ECDE90D9AB6D94BF9 /* 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 = ""; };
+ 6385798E0669B8B8718DC6E5 /* 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 = ""; };
+ 6C37016DF19997B0AAD05FAF /* prodProfile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = prodProfile.xcconfig; path = Flutter/prodProfile.xcconfig; sourceTree = ""; };
+ 6FDB199135CD3B7AA1089B3A /* 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 = ""; };
+ 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 = ""; };
+ 78DFC5A53E53B9D74505FF20 /* devDebug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = devDebug.xcconfig; path = Flutter/devDebug.xcconfig; sourceTree = ""; };
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
+ 80109106EB6767E197FE449D /* Pods-Runner.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-staging.xcconfig"; sourceTree = ""; };
+ 88E5BF823EFA5E676B35C189 /* 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 = ""; };
+ 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 = ""; };
+ 9A18873A6F5691DFC0F65C94 /* Pods-Runner.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-staging.xcconfig"; sourceTree = ""; };
+ 9C458858B5300F49D541B4F5 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ A3AB8244AB723079F65EC266 /* 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 = ""; };
+ B04CCE1BCBF0146BE5A9D6FB /* Pods-Runner.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-staging.xcconfig"; sourceTree = ""; };
+ BF41E84758AF984855B34375 /* devProfile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = devProfile.xcconfig; path = Flutter/devProfile.xcconfig; sourceTree = ""; };
+ C1CD6FC1EE841DA0AA44F9E2 /* 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 = ""; };
+ C27A67EA37312C860CC4A775 /* 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 = ""; };
+ D7BA5182467EB92CA3E895F1 /* stagingRelease.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = stagingRelease.xcconfig; path = Flutter/stagingRelease.xcconfig; sourceTree = ""; };
+ ED9BFBD52F04E77F2174E192 /* devRelease.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = devRelease.xcconfig; path = Flutter/devRelease.xcconfig; sourceTree = ""; };
+ FA08A5EF6F6A019FEADEFC1B /* stagingProfile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = stagingProfile.xcconfig; path = Flutter/stagingProfile.xcconfig; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 97C146EB1CF9000F007C117D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0F022876DB8B3E624FC177D2 /* Pods_Runner.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 480F66D8B0E93701AD77E0B3 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 9C458858B5300F49D541B4F5 /* Pods_Runner.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 4F5AE2277FAA80AD31FBBBAB /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 0F61C30367B528751CF07EEA /* Pods-Runner.debug.xcconfig */,
+ 9A18873A6F5691DFC0F65C94 /* Pods-Runner.debug-staging.xcconfig */,
+ C27A67EA37312C860CC4A775 /* Pods-Runner.debug-dev.xcconfig */,
+ 6385798E0669B8B8718DC6E5 /* Pods-Runner.release.xcconfig */,
+ B04CCE1BCBF0146BE5A9D6FB /* Pods-Runner.release-staging.xcconfig */,
+ 5E53384ECDE90D9AB6D94BF9 /* Pods-Runner.release-dev.xcconfig */,
+ C1CD6FC1EE841DA0AA44F9E2 /* Pods-Runner.profile.xcconfig */,
+ 80109106EB6767E197FE449D /* Pods-Runner.profile-staging.xcconfig */,
+ 045628E67404FC3D3264165A /* Pods-Runner.profile-dev.xcconfig */,
+ 88E5BF823EFA5E676B35C189 /* Pods-Runner.debug-prod.xcconfig */,
+ A3AB8244AB723079F65EC266 /* Pods-Runner.profile-prod.xcconfig */,
+ 6FDB199135CD3B7AA1089B3A /* Pods-Runner.release-prod.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+ 58AF3F212C99DD8F00F8E312 /* Config */ = {
+ isa = PBXGroup;
+ children = (
+ 58AF3F232C99DE3B00F8E312 /* GoogleService-Info-com.xmartlabs.simonai.dev.plist */,
+ 58AF3F222C99DE3A00F8E312 /* GoogleService-Info-com.xmartlabs.simonai.plist */,
+ );
+ path = Config;
+ sourceTree = "";
+ };
+ 9740EEB11CF90186004384FC /* Flutter */ = {
+ isa = PBXGroup;
+ children = (
+ 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
+ 9740EEB21CF90195004384FC /* Debug.xcconfig */,
+ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
+ 9740EEB31CF90195004384FC /* Generated.xcconfig */,
+ 78DFC5A53E53B9D74505FF20 /* devDebug.xcconfig */,
+ BF41E84758AF984855B34375 /* devProfile.xcconfig */,
+ ED9BFBD52F04E77F2174E192 /* devRelease.xcconfig */,
+ 5626E2C804EE32F56C2D8F06 /* prodDebug.xcconfig */,
+ 6C37016DF19997B0AAD05FAF /* prodProfile.xcconfig */,
+ 51B5A3EF356677109FE751EB /* prodRelease.xcconfig */,
+ 113F326E4F1DD43142CE6D30 /* stagingDebug.xcconfig */,
+ FA08A5EF6F6A019FEADEFC1B /* stagingProfile.xcconfig */,
+ D7BA5182467EB92CA3E895F1 /* stagingRelease.xcconfig */,
+ );
+ name = Flutter;
+ sourceTree = "";
+ };
+ 97C146E51CF9000F007C117D = {
+ isa = PBXGroup;
+ children = (
+ 58AF3F262C99EDAF00F8E312 /* firebase_app_id_file.json */,
+ 58AF3F212C99DD8F00F8E312 /* Config */,
+ 9740EEB11CF90186004384FC /* Flutter */,
+ 97C146F01CF9000F007C117D /* Runner */,
+ 97C146EF1CF9000F007C117D /* Products */,
+ 4F5AE2277FAA80AD31FBBBAB /* Pods */,
+ 480F66D8B0E93701AD77E0B3 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ 97C146EF1CF9000F007C117D /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 97C146EE1CF9000F007C117D /* Runner.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 97C146F01CF9000F007C117D /* Runner */ = {
+ isa = PBXGroup;
+ children = (
+ 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 = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 97C146ED1CF9000F007C117D /* Runner */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
+ buildPhases = (
+ 40DD2751CB86D3895202E985 /* [CP] Check Pods Manifest.lock */,
+ 9740EEB61CF901F6004384FC /* Run Script */,
+ 97C146EA1CF9000F007C117D /* Sources */,
+ 97C146EB1CF9000F007C117D /* Frameworks */,
+ 97C146EC1CF9000F007C117D /* Resources */,
+ 9705A1C41CF9048500538489 /* Embed Frameworks */,
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ 582E65802C99B44C00EAB89E /* [firebase] Init GoogleService-Info.plist */,
+ 58AF3F282C99EE2300F8E312 /* [firebase_crashlytics] Crashlytics Upload Symbols */,
+ B1013926B427540B949CCE4D /* [CP] Embed Pods Frameworks */,
+ 56891F39E187E49D5A8CCBB0 /* [CP] Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Runner;
+ productName = Runner;
+ productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 97C146E61CF9000F007C117D /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1510;
+ ORGANIZATIONNAME = "";
+ TargetAttributes = {
+ 97C146ED1CF9000F007C117D = {
+ CreatedOnToolsVersion = 7.3.1;
+ LastSwiftMigration = 1100;
+ };
+ };
+ };
+ 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 */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 97C146EC1CF9000F007C117D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
+ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
+ 58AF3F272C99EDAF00F8E312 /* firebase_app_id_file.json in Resources */,
+ 58AF3F242C99DE3B00F8E312 /* GoogleService-Info-com.xmartlabs.simonai.plist in Resources */,
+ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
+ 58AF3F252C99DE3B00F8E312 /* GoogleService-Info-com.xmartlabs.simonai.dev.plist in Resources */,
+ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 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";
+ };
+ 40DD2751CB86D3895202E985 /* [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;
+ };
+ 56891F39E187E49D5A8CCBB0 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 582E65802C99B44C00EAB89E /* [firebase] Init GoogleService-Info.plist */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ );
+ name = "[firebase] Init GoogleService-Info.plist";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "PATH_TO_CONFIG=$SRCROOT/Config/GoogleService-Info-$PRODUCT_BUNDLE_IDENTIFIER.plist\nFILENAME_IN_BUNDLE=GoogleService-Info.plist\nBUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app\necho cp $PATH_TO_CONFIG \"$BUILD_APP_DIR/$FILENAME_IN_BUNDLE\"\ncp $PATH_TO_CONFIG \"$BUILD_APP_DIR/$FILENAME_IN_BUNDLE\"\n\n";
+ };
+ 58AF3F282C99EE2300F8E312 /* [firebase_crashlytics] Crashlytics Upload Symbols */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}\"",
+ "\"$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)\"",
+ );
+ name = "[firebase_crashlytics] Crashlytics Upload Symbols";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"$PODS_ROOT/FirebaseCrashlytics/upload-symbols\" --flutter-project \"$PROJECT_DIR/firebase_app_id_file.json\" \n";
+ };
+ 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\n";
+ };
+ B1013926B427540B949CCE4D /* [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;
+ };
+/* 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;
+ };
+/* End PBXSourcesBuildPhase 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 */
+ 166C1E4228CCF69700BF4C53 /* Debug-prod */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 88E5BF823EFA5E676B35C189 /* Pods-Runner.debug-prod.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 6F2G55XL63;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.arcade-games";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ PRODUCT_NAME = Runner;
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ STRIP_STYLE = "non-global";
+ };
+ name = "Debug-prod";
+ };
+ 166C1E4328CCF69700BF4C53 /* Profile-prod */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = A3AB8244AB723079F65EC266 /* Pods-Runner.profile-prod.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 6F2G55XL63;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.arcade-games";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ PRODUCT_NAME = Runner;
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ STRIP_STYLE = "non-global";
+ };
+ name = "Profile-prod";
+ };
+ 166C1E4428CCF69700BF4C53 /* Release-prod */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 6FDB199135CD3B7AA1089B3A /* Pods-Runner.release-prod.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 6F2G55XL63;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.arcade-games";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ PRODUCT_NAME = Runner;
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ STRIP_STYLE = "non-global";
+ };
+ name = "Release-prod";
+ };
+ 21BCA9812292A07E3CD79BE9 /* Profile-prod */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 6C37016DF19997B0AAD05FAF /* prodProfile.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = "$(ASSET_PREFIX)AppIcon";
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ 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;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ 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;
+ INFOPLIST_FILE = Runner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.simonai;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = "Profile-prod";
+ };
+ 249021D3217E4FDB00AE95B9 /* Profile */ = {
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ 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 = 12.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Profile;
+ };
+ 249021D4217E4FDB00AE95B9 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 6F2G55XL63;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.arcade-games";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.simonai.dev;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ STRIP_STYLE = "non-global";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Profile;
+ };
+ 647ACBA639CA63794C0508BB /* Release-prod */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 51B5A3EF356677109FE751EB /* prodRelease.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = "$(ASSET_PREFIX)AppIcon";
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ 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;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ 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;
+ INFOPLIST_FILE = Runner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.simonai;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = "Release-prod";
+ };
+ 6A4688566FA7E43E7902F706 /* Debug-prod */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 5626E2C804EE32F56C2D8F06 /* prodDebug.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = "$(ASSET_PREFIX)AppIcon";
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ 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;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ 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;
+ INFOPLIST_FILE = Runner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.simonai;
+ SDKROOT = iphoneos;
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = "Debug-prod";
+ };
+ 97C147031CF9000F007C117D /* Debug */ = {
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ 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 = 12.0;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 97C147041CF9000F007C117D /* Release */ = {
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ 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 = 12.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;
+ };
+ 97C147061CF9000F007C117D /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 6F2G55XL63;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.arcade-games";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.simonai.dev;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ STRIP_STYLE = "non-global";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 97C147071CF9000F007C117D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 6F2G55XL63;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.arcade-games";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.simonai.dev;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ STRIP_STYLE = "non-global";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+ EF77F547277A2EB9002382BD /* Debug-dev */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 78DFC5A53E53B9D74505FF20 /* devDebug.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = "$(ASSET_PREFIX)AppIcon";
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ 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;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ 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;
+ INFOPLIST_FILE = Runner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.simonai.dev;
+ SDKROOT = iphoneos;
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = "Debug-dev";
+ };
+ EF77F548277A2EB9002382BD /* Debug-dev */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 6F2G55XL63;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.arcade-games";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ STRIP_STYLE = "non-global";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = "Debug-dev";
+ };
+ EF77F549277A2ECA002382BD /* Debug-staging */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 113F326E4F1DD43142CE6D30 /* stagingDebug.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = "$(ASSET_PREFIX)AppIcon";
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ 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;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ 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;
+ INFOPLIST_FILE = Runner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.simonai.dev;
+ SDKROOT = iphoneos;
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = "Debug-staging";
+ };
+ EF77F54A277A2ECA002382BD /* Debug-staging */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 6F2G55XL63;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.arcade-games";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ STRIP_STYLE = "non-global";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = "Debug-staging";
+ };
+ EF77F54D277A2EE3002382BD /* Release-dev */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = ED9BFBD52F04E77F2174E192 /* devRelease.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = "$(ASSET_PREFIX)AppIcon";
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ 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;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ 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;
+ INFOPLIST_FILE = Runner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.simonai.dev;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = "Release-dev";
+ };
+ EF77F54E277A2EE3002382BD /* Release-dev */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 6F2G55XL63;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.arcade-games";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ STRIP_STYLE = "non-global";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = "Release-dev";
+ };
+ EF77F54F277A2EEF002382BD /* Release-staging */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = D7BA5182467EB92CA3E895F1 /* stagingRelease.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = "$(ASSET_PREFIX)AppIcon";
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ 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;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ 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;
+ INFOPLIST_FILE = Runner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.simonai.dev;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = "Release-staging";
+ };
+ EF77F550277A2EEF002382BD /* Release-staging */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 6F2G55XL63;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.arcade-games";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ STRIP_STYLE = "non-global";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = "Release-staging";
+ };
+ EF77F551277A2EF9002382BD /* Profile-dev */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = BF41E84758AF984855B34375 /* devProfile.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = "$(ASSET_PREFIX)AppIcon";
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ 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;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ 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;
+ INFOPLIST_FILE = Runner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.simonai.dev;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = "Profile-dev";
+ };
+ EF77F552277A2EF9002382BD /* Profile-dev */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 6F2G55XL63;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.arcade-games";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ STRIP_STYLE = "non-global";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = "Profile-dev";
+ };
+ EF77F553277A2F00002382BD /* Profile-staging */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = FA08A5EF6F6A019FEADEFC1B /* stagingProfile.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_APPICON_NAME = "$(ASSET_PREFIX)AppIcon";
+ 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ 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;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ 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;
+ INFOPLIST_FILE = Runner/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "$(inherited)",
+ "$(PROJECT_DIR)/Flutter",
+ );
+ MTL_ENABLE_DEBUG_INFO = NO;
+ PRODUCT_BUNDLE_IDENTIFIER = com.xmartlabs.simonai.dev;
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = iphoneos;
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = "Profile-staging";
+ };
+ EF77F554277A2F00002382BD /* Profile-staging */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 6F2G55XL63;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = Runner/Info.plist;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.arcade-games";
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ STRIP_STYLE = "non-global";
+ SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = "Profile-staging";
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147031CF9000F007C117D /* Debug */,
+ EF77F549277A2ECA002382BD /* Debug-staging */,
+ EF77F547277A2EB9002382BD /* Debug-dev */,
+ 97C147041CF9000F007C117D /* Release */,
+ EF77F54F277A2EEF002382BD /* Release-staging */,
+ EF77F54D277A2EE3002382BD /* Release-dev */,
+ 249021D3217E4FDB00AE95B9 /* Profile */,
+ EF77F553277A2F00002382BD /* Profile-staging */,
+ EF77F551277A2EF9002382BD /* Profile-dev */,
+ 6A4688566FA7E43E7902F706 /* Debug-prod */,
+ 21BCA9812292A07E3CD79BE9 /* Profile-prod */,
+ 647ACBA639CA63794C0508BB /* Release-prod */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 97C147061CF9000F007C117D /* Debug */,
+ EF77F54A277A2ECA002382BD /* Debug-staging */,
+ EF77F548277A2EB9002382BD /* Debug-dev */,
+ 97C147071CF9000F007C117D /* Release */,
+ EF77F550277A2EEF002382BD /* Release-staging */,
+ EF77F54E277A2EE3002382BD /* Release-dev */,
+ 249021D4217E4FDB00AE95B9 /* Profile */,
+ EF77F554277A2F00002382BD /* Profile-staging */,
+ EF77F552277A2EF9002382BD /* Profile-dev */,
+ 166C1E4228CCF69700BF4C53 /* Debug-prod */,
+ 166C1E4328CCF69700BF4C53 /* Profile-prod */,
+ 166C1E4428CCF69700BF4C53 /* Release-prod */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 97C146E61CF9000F007C117D /* Project object */;
+}
diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..f9b0d7c
--- /dev/null
+++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme
new file mode 100644
index 0000000..663ebac
--- /dev/null
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme
new file mode 100644
index 0000000..54abb5a
--- /dev/null
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/prod.xcscheme
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme
new file mode 100644
index 0000000..75b469c
--- /dev/null
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
new file mode 100644
index 0000000..f9b0d7c
--- /dev/null
+++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
@@ -0,0 +1,8 @@
+
+
+
+
+ PreviewsEnabled
+
+
+
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
new file mode 100644
index 0000000..70693e4
--- /dev/null
+++ b/ios/Runner/AppDelegate.swift
@@ -0,0 +1,13 @@
+import UIKit
+import Flutter
+
+@UIApplicationMain
+@objc class AppDelegate: FlutterAppDelegate {
+ override func application(
+ _ application: UIApplication,
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
+ ) -> Bool {
+ GeneratedPluginRegistrant.register(with: self)
+ return super.application(application, didFinishLaunchingWithOptions: launchOptions)
+ }
+}
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..d36b1fa
--- /dev/null
+++ b/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/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
new file mode 100644
index 0000000..c128468
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
new file mode 100644
index 0000000..477f9da
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
new file mode 100644
index 0000000..68ff5a7
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
new file mode 100644
index 0000000..6493d29
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
new file mode 100644
index 0000000..0755ff4
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
new file mode 100644
index 0000000..386b85f
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
new file mode 100644
index 0000000..036fadc
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
new file mode 100644
index 0000000..68ff5a7
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
new file mode 100644
index 0000000..ca15efc
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
new file mode 100644
index 0000000..2eb9175
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
new file mode 100644
index 0000000..13d67d7
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
new file mode 100644
index 0000000..16410e0
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
new file mode 100644
index 0000000..02ea451
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
new file mode 100644
index 0000000..f7d93f5
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
new file mode 100644
index 0000000..2eb9175
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
new file mode 100644
index 0000000..7f3ba37
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
new file mode 100644
index 0000000..ded940a
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
new file mode 100644
index 0000000..115501a
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
new file mode 100644
index 0000000..86bc78a
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
new file mode 100644
index 0000000..f9e9bde
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
new file mode 100644
index 0000000..923e02f
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json
new file mode 100644
index 0000000..9f447e1
--- /dev/null
+++ b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "background.png",
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png
new file mode 100644
index 0000000..3107d37
Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
new file mode 100644
index 0000000..00cabce
--- /dev/null
+++ b/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/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
new file mode 100644
index 0000000..2544b5c
Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
new file mode 100644
index 0000000..ca38ed1
Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
new file mode 100644
index 0000000..ee10389
Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
new file mode 100644
index 0000000..89c2725
--- /dev/null
+++ b/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/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..7994389
--- /dev/null
+++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard
new file mode 100644
index 0000000..f3c2851
--- /dev/null
+++ b/ios/Runner/Base.lproj/Main.storyboard
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
new file mode 100644
index 0000000..9ae18b0
--- /dev/null
+++ b/ios/Runner/Info.plist
@@ -0,0 +1,59 @@
+
+
+
+
+ CADisableMinimumFrameDurationOnPhone
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ $(BUNDLE_DISPLAY_NAME)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(BUNDLE_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ $(FLUTTER_BUILD_NAME)
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ $(FLUTTER_BUILD_NUMBER)
+ LSRequiresIPhoneOS
+
+ NSCameraUsageDescription
+ SimonAI needs to use your camera.
+ NSMicrophoneUsageDescription
+ SimonAI needs to use your microphone.
+ NSPhotoLibraryUsageDescription
+ SimonAI needs access to your photos.
+ UIApplicationSupportsIndirectInputEvents
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIStatusBarHidden
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIViewControllerBasedStatusBarAppearance
+
+
+
diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h
new file mode 100644
index 0000000..308a2a5
--- /dev/null
+++ b/ios/Runner/Runner-Bridging-Header.h
@@ -0,0 +1 @@
+#import "GeneratedPluginRegistrant.h"
diff --git a/ios/build/.last_build_id b/ios/build/.last_build_id
new file mode 100644
index 0000000..483ebdf
--- /dev/null
+++ b/ios/build/.last_build_id
@@ -0,0 +1 @@
+5ee8c12991117be9d8a1e19adeebbc6a
\ No newline at end of file
diff --git a/ios/fastlane/Appfile b/ios/fastlane/Appfile
new file mode 100644
index 0000000..6a26f53
--- /dev/null
+++ b/ios/fastlane/Appfile
@@ -0,0 +1,3 @@
+app_identifier("com.xmartlabs.template") # The bundle identifier of your app
+
+team_id(ENV['TEAM_ID']) # Developer Portal Team ID
diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile
new file mode 100644
index 0000000..74f26fb
--- /dev/null
+++ b/ios/fastlane/Fastfile
@@ -0,0 +1,197 @@
+import "../../fastlane/Fastfile"
+
+PROD_ENV = 'prod'
+DEV_ENV = 'dev'
+DEFAULT_ENV = PROD_ENV
+PROD_BUNDLE_ID = "com.xmartlabs.template"
+DEV_BUNDLE_ID = "#{PROD_BUNDLE_ID}.dev"
+
+default_platform(:ios)
+
+provisioning_name = 'FastlaneXL'
+
+platform :ios do
+
+ desc "Creates a temporal keystore and import the distribution certificate"
+ desc "#### Envs\n" +
+ "* **`TEMP_KEYCHAIN_NAME`**: The temporal keychain name\n" +
+ "* **`TEMP_KEYCHAIN_PASSWORD`**: The temporal keychain password\n" +
+ "* **`DIST_CERTIFICATE_PATH`**: The distribution certificate file path.\n" +
+ "* **`DIST_CERTIFICATE_PASSWORD`**: The distribution certificate file password. If you are using a cert file this file is not necessary."
+ lane :set_signing do
+ safe_delete_keychain
+ create_keychain(
+ name: ENV['TEMP_KEYCHAIN_NAME'],
+ password: ENV['TEMP_KEYCHAIN_PASSWORD'],
+ unlock: true,
+ timeout: 3600,
+ lock_when_sleeps: true
+ )
+ import_certificate(
+ keychain_name: ENV['TEMP_KEYCHAIN_NAME'],
+ keychain_password: ENV['TEMP_KEYCHAIN_PASSWORD'],
+ certificate_path: ENV['DIST_CERTIFICATE_PATH'],
+ certificate_password: ENV['DIST_CERTIFICATE_PASSWORD'],
+ )
+ end
+
+ desc "Gets or creates the provisioning profiles and setup the project to use manual signing."
+ desc "#### Envs:\n" +
+ "* **`APPLE_TEAM_ID`**: The apple team id"
+ private_lane :setup_provisioning do |options|
+ env = options[:env] || DEFAULT_ENV
+ app_identifier = options[:env] == DEV_ENV ? DEV_BUNDLE_ID : PROD_BUNDLE_ID
+ build_export_method = options[:build_export_method] || 'app-store'
+ adhoc = build_export_method == 'ad-hoc'
+ profile_type_name = adhoc ? 'AdHoc' : 'AppStore'
+
+ get_provisioning_profile(
+ adhoc: adhoc,
+ team_id: ENV['APPLE_TEAM_ID'],
+ force: true,
+ include_all_certificates: true,
+ provisioning_name: "#{provisioning_name}-#{profile_type_name}-#{env}",
+ app_identifier: app_identifier,
+ )
+ update_code_signing_settings(
+ use_automatic_signing: false,
+ path: "Runner.xcodeproj",
+ team_id: ENV['APPLE_TEAM_ID'],
+ build_configurations: "Release-#{env}",
+ )
+ update_project_team(
+ path: "Runner.xcodeproj",
+ teamid: ENV['APPLE_TEAM_ID'],
+ )
+
+ update_project_provisioning(
+ xcodeproj: "Runner.xcodeproj",
+ build_configuration: "Release-#{env}",
+ profile: "./#{profile_type_name}_#{app_identifier}.mobileprovision",
+ code_signing_identity: "Apple Distribution"
+ )
+ end
+
+ private_lane :rollback_provisioning_setup do |options|
+ env = options[:env] || DEFAULT_ENV
+ update_code_signing_settings(
+ use_automatic_signing: true,
+ path: "Runner.xcodeproj",
+ team_id: ENV['APPLE_TEAM_ID'],
+ build_configurations: "Release-#{env}",
+ profile_uuid: '',
+ code_sign_identity: 'Apple Development',
+ )
+ end
+
+ desc "Build deploy version"
+ desc "#### Envs:\n" +
+ "* **`env`**: Environment to build. Default 'prod'\n" +
+ "* **`build_export_method`**: Export metod to generate the ipa. Default 'app-store'.\n" +
+ "* **`setup_signing`**: if true, `set_signing` is called.\n" +
+ "* **`APPLE_TEAM_ID`**: The apple team id\n" +
+ "* **`APPSTORE_CONNECT_API_KEY_ID`**: The connect api key id\n" +
+ "* **`APPSTORE_CONNECT_API_KEY_ISSUER_ID`**: The connect api key issuer id\n" +
+ "* **`APPSTORE_CONNECT_API_KEY_BASE_64_CONTENT`**: The api key base64 content"
+ lane :generate_release_ipa do |options|
+ upload_symbols = options[:upload_symbols] || true
+ sign_enabled = options[:setup_signing] || true
+ if sign_enabled
+ set_signing
+ end
+
+ env = options[:env] || DEFAULT_ENV
+ build_export_method = options[:build_export_method] || 'app-store'
+ begin
+ api_key = app_store_connect_api_key(
+ key_id: ENV['APPSTORE_CONNECT_API_KEY_ID'],
+ issuer_id: ENV["APPSTORE_CONNECT_API_KEY_ISSUER_ID"],
+ key_content: ENV['APPSTORE_CONNECT_API_KEY_BASE_64_CONTENT'],
+ is_key_content_base64: true,
+ in_house: false,
+ )
+
+ setup_provisioning(
+ env: env,
+ build_export_method: build_export_method,
+ )
+ build_flutter(
+ build_platform: 'ipa',
+ build_type: 'release',
+ flavor: env,
+ include_git_version_suffix: true,
+ export_method: build_export_method,
+ )
+
+ app_identifier = options[:env] == DEV_ENV ? DEV_BUNDLE_ID : PROD_BUNDLE_ID
+ build_ios_app(
+ clean: false,
+ scheme: env,
+ export_team_id: ENV['APPLE_TEAM_ID'],
+ export_method: build_export_method,
+ xcargs: "-allowProvisioningUpdates",
+ export_options: {
+ compileBitcode: true,
+ uploadBitcode: true,
+ uploadSymbols: true,
+ signingStyle: "manual",
+ },
+ )
+ if upload_symbols
+ upload_symbols_to_crashlytics(app_id: options[:firebase_app_id], debug: true)
+ end
+ ensure
+ rollback_provisioning_setup(env: env)
+ safe_delete_keychain
+ end
+ end
+
+ desc "Push a new beta build to Firebase"
+ desc "#### Envs:\n" +
+ "* **`setup_signing`**: if true, `set_signing` is called.\n" +
+ "* **`APPLE_TEAM_ID`**: The apple team id\n" +
+ "* **`APPSTORE_CONNECT_API_KEY_ID`**: The connect api key id\n" +
+ "* **`APPSTORE_CONNECT_API_KEY_ISSUER_ID`**: The connect api key issuer id\n" +
+ "* **`APPSTORE_CONNECT_API_KEY_BASE_64_CONTENT`**: The api key base64 content"
+ lane :publish_dev_firebase do |options|
+ generate_release_ipa(
+ env: 'dev',
+ build_export_method: 'ad-hoc',
+ firebase_app_id: ENV['FIREBASE_APP_ID_DEV'],
+ )
+
+ firebase_app_distribution(
+ app: ENV['FIREBASE_APP_ID_DEV'],
+ service_credentials_file: ENV["FIREBASE_SERVICE_ACCOUNT_FILE"],
+ testers: ENV["FIREBASE_TESTERS"],
+ groups: ENV["FIREBASE_TESTER_GROUPS"],
+ release_notes: generate_snapshot_changelog,
+ apk_path: "../Runner.ipa",
+ )
+ end
+
+
+ desc "Push a new beta build to TestFlight"
+ desc "#### Envs:\n" +
+ "* **`setup_signing`**: if true, `set_signing` is called.\n" +
+ "* **`APPLE_TEAM_ID`**: The apple team id\n" +
+ "* **`APPSTORE_CONNECT_API_KEY_ID`**: The connect api key id\n" +
+ "* **`APPSTORE_CONNECT_API_KEY_ISSUER_ID`**: The connect api key issuer id\n" +
+ "* **`APPSTORE_CONNECT_API_KEY_BASE_64_CONTENT`**: The api key base64 content"
+ lane :publish_prod_testflight do |options|
+ generate_release_ipa(
+ env: 'prod',
+ build_export_method: 'app-store',
+ )
+ upload_to_testflight(skip_waiting_for_build_processing: true)
+ end
+
+ private_lane :safe_delete_keychain do
+ begin
+ FastlaneCore::Helper.keychain_path(ENV['TEMP_KEYCHAIN_NAME'])
+ delete_keychain(name: ENV['TEMP_KEYCHAIN_NAME'])
+ rescue => ex
+ UI.important('Keystore not found')
+ end
+ end
+end
diff --git a/ios/fastlane/Pluginfile b/ios/fastlane/Pluginfile
new file mode 100644
index 0000000..9f455d1
--- /dev/null
+++ b/ios/fastlane/Pluginfile
@@ -0,0 +1,5 @@
+# Autogenerated by fastlane
+#
+# Ensure this file is checked in to source control!
+
+gem 'fastlane-plugin-flutter_version'
diff --git a/ios/fastlane/README.md b/ios/fastlane/README.md
new file mode 100644
index 0000000..e777105
--- /dev/null
+++ b/ios/fastlane/README.md
@@ -0,0 +1,176 @@
+fastlane documentation
+----
+
+# Installation
+
+Make sure you have the latest version of the Xcode command line tools installed:
+
+```sh
+xcode-select --install
+```
+
+For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)
+
+# Available Actions
+
+### fetch_dependencies
+
+```sh
+[bundle exec] fastlane fetch_dependencies
+```
+
+**Fetch flutter dependencies**
+
+### build_autogenerated_code
+
+```sh
+[bundle exec] fastlane build_autogenerated_code
+```
+
+**Generate flutter generated code**
+
+### lint_format
+
+```sh
+[bundle exec] fastlane lint_format
+```
+
+**Lint: Check code format**
+
+### lint_check_language_sorting
+
+```sh
+[bundle exec] fastlane lint_check_language_sorting
+```
+
+**Lint: Check code format**
+
+### lint_analyze
+
+```sh
+[bundle exec] fastlane lint_analyze
+```
+
+**Lint: Analyze code**
+
+### lint_code_metrics
+
+```sh
+[bundle exec] fastlane lint_code_metrics
+```
+
+**Lint: Code metrics**
+
+### lints
+
+```sh
+[bundle exec] fastlane lints
+```
+
+**Run linters**
+
+### ensure_no_change_in_generated_code
+
+```sh
+[bundle exec] fastlane ensure_no_change_in_generated_code
+```
+
+**Check generated code is fine**
+
+### tests
+
+```sh
+[bundle exec] fastlane tests
+```
+
+**Run tests**
+
+### clean_up
+
+```sh
+[bundle exec] fastlane clean_up
+```
+
+**Clean up project**
+
+### build_flutter
+
+```sh
+[bundle exec] fastlane build_flutter
+```
+
+
+
+----
+
+
+## iOS
+
+### ios set_signing
+
+```sh
+[bundle exec] fastlane ios set_signing
+```
+
+Creates a temporal keystore and import the distribution certificate
+
+#### Envs
+* **`TEMP_KEYCHAIN_NAME`**: The temporal keychain name
+* **`TEMP_KEYCHAIN_PASSWORD`**: The temporal keychain password
+* **`DIST_CERTIFICATE_PATH`**: The distribution certificate file path.
+* **`DIST_CERTIFICATE_PASSWORD`**: The distribution certificate file password. If you are using a cert file this file is not necessary.
+
+### ios generate_release_ipa
+
+```sh
+[bundle exec] fastlane ios generate_release_ipa
+```
+
+Build deploy version
+
+#### Envs:
+* **`env`**: Environment to build. Default 'prod'
+* **`build_export_method`**: Export metod to generate the ipa. Default 'app-store'.
+* **`setup_signing`**: if true, `set_signing` is called.
+* **`APPLE_TEAM_ID`**: The apple team id
+* **`APPSTORE_CONNECT_API_KEY_ID`**: The connect api key id
+* **`APPSTORE_CONNECT_API_KEY_ISSUER_ID`**: The connect api key issuer id
+* **`APPSTORE_CONNECT_API_KEY_BASE_64_CONTENT`**: The api key base64 content
+
+### ios publish_dev_firebase
+
+```sh
+[bundle exec] fastlane ios publish_dev_firebase
+```
+
+Push a new beta build to Firebase
+
+#### Envs:
+* **`setup_signing`**: if true, `set_signing` is called.
+* **`APPLE_TEAM_ID`**: The apple team id
+* **`APPSTORE_CONNECT_API_KEY_ID`**: The connect api key id
+* **`APPSTORE_CONNECT_API_KEY_ISSUER_ID`**: The connect api key issuer id
+* **`APPSTORE_CONNECT_API_KEY_BASE_64_CONTENT`**: The api key base64 content
+
+### ios publish_prod_testflight
+
+```sh
+[bundle exec] fastlane ios publish_prod_testflight
+```
+
+Push a new beta build to TestFlight
+
+#### Envs:
+* **`setup_signing`**: if true, `set_signing` is called.
+* **`APPLE_TEAM_ID`**: The apple team id
+* **`APPSTORE_CONNECT_API_KEY_ID`**: The connect api key id
+* **`APPSTORE_CONNECT_API_KEY_ISSUER_ID`**: The connect api key issuer id
+* **`APPSTORE_CONNECT_API_KEY_BASE_64_CONTENT`**: The api key base64 content
+
+----
+
+This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
+
+More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools).
+
+The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
diff --git a/ios/firebase_app_id_file.json b/ios/firebase_app_id_file.json
new file mode 100644
index 0000000..abdaf91
--- /dev/null
+++ b/ios/firebase_app_id_file.json
@@ -0,0 +1,7 @@
+{
+ "file_generated_by": "FlutterFire CLI",
+ "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
+ "GOOGLE_APP_ID": "1:559870872327:ios:2bbe3647954c17d8c493a2",
+ "FIREBASE_PROJECT_ID": "simonai-37870",
+ "GCM_SENDER_ID": "559870872327"
+}
diff --git a/ios/l10n_errors.txt b/ios/l10n_errors.txt
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/ios/l10n_errors.txt
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/l10n.yaml b/l10n.yaml
new file mode 100644
index 0000000..6124dfe
--- /dev/null
+++ b/l10n.yaml
@@ -0,0 +1,4 @@
+arb-dir: lib/l10n
+template-arb-file: intl_en.arb
+output-localization-file: app_localizations.dart
+untranslated-messages-file: l10n_errors.txt
diff --git a/l10n_errors.txt b/l10n_errors.txt
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/l10n_errors.txt
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/lib/core/common/config.dart b/lib/core/common/config.dart
new file mode 100644
index 0000000..b59609c
--- /dev/null
+++ b/lib/core/common/config.dart
@@ -0,0 +1,74 @@
+// ignore_for_file: constant_identifier_names
+
+import 'dart:async';
+
+import 'package:camera/camera.dart';
+import 'package:flutter/foundation.dart';
+import 'package:package_info_plus/package_info_plus.dart';
+import 'package:simon_ai/core/common/environments.dart';
+import 'package:simon_ai/core/common/extension/string_extensions.dart';
+import 'package:simon_ai/core/common/helper/enum_helpers.dart';
+import 'package:simon_ai/core/common/helper/env_helper.dart';
+
+interface class Config {
+ static const String environmentFolder = 'environments';
+ static const String prodBundleId = 'com.xmartlabs.simonai';
+ static const String feedbackEmail = 'simonai@xmartlabs.com';
+
+ static const debugMode = kDebugMode;
+ static const crashlyticsEnabled = !kIsWeb && !debugMode;
+
+ static late String apiBaseUrl;
+ static late String supabaseApiKey;
+
+ static const String userCollection = 'users';
+
+ static const cameraResolutionPreset = ResolutionPreset.medium;
+
+ static final _environment = enumFromString(
+ Environments.values,
+ const String.fromEnvironment('ENV'),
+ ) ??
+ Environments.dev;
+
+ static Future initialize() async {
+ await _EnvConfig._setupEnv(_environment);
+ _initializeEnvVariables();
+ }
+
+ static void _initializeEnvVariables() {
+ apiBaseUrl =
+ _EnvConfig.getEnvVariable(_EnvConfig.ENV_KEY_API_BASE_URL) ?? '';
+ supabaseApiKey =
+ _EnvConfig.getEnvVariable(_EnvConfig.ENV_KEY_SUPABASE_API_KEY) ?? '';
+ }
+
+ static Future getEnvFromBundleId() async {
+ final packageInfo = await PackageInfo.fromPlatform();
+ return packageInfo.packageName == prodBundleId
+ ? Environments.prod
+ : Environments.dev;
+ }
+}
+
+abstract class _EnvConfig {
+ static const ENV_KEY_API_BASE_URL = 'API_BASE_URL';
+ static const ENV_KEY_SUPABASE_API_KEY = 'SUPABASE_API_KEY';
+
+ static const systemEnv = {
+ ENV_KEY_API_BASE_URL: String.fromEnvironment(ENV_KEY_API_BASE_URL),
+ ENV_KEY_SUPABASE_API_KEY: String.fromEnvironment(ENV_KEY_SUPABASE_API_KEY),
+ };
+
+ static final Map _envFileEnv = {};
+
+ static String? getEnvVariable(String key) =>
+ _EnvConfig.systemEnv[key].ifNullOrBlank(() => _envFileEnv[key]);
+
+ static Future _setupEnv(Environments env) async {
+ _envFileEnv
+ ..addAll(await loadEnvs('${Config.environmentFolder}/default.env'))
+ ..addAll(await loadEnvs('${env.path}.env'))
+ ..addAll(await loadEnvs('${env.path}.private.env'));
+ }
+}
diff --git a/lib/core/common/crash_report_tool.dart b/lib/core/common/crash_report_tool.dart
new file mode 100644
index 0000000..0ae7027
--- /dev/null
+++ b/lib/core/common/crash_report_tool.dart
@@ -0,0 +1,51 @@
+import 'package:firebase_crashlytics/firebase_crashlytics.dart';
+import 'package:flutter/foundation.dart';
+import 'package:logger/logger.dart';
+import 'package:simon_ai/core/common/config.dart';
+
+// An example of crashlytics impl can be found https://gist.github.com/mirland/70fa48154e56ae9b16279dcffc7ac4ba
+abstract interface class CrashReportTool {
+ Future init();
+
+ Future logNonFatal(LogEvent event);
+
+ Future logFatal(dynamic error, StackTrace? stackTrace);
+}
+
+final class NoOpsCrashReportTool extends CrashReportTool {
+ @override
+ // ignore: no-empty-block, avoid-redundant-async
+ Future init() async {}
+
+ @override
+ // ignore: no-empty-block, avoid-redundant-async
+ Future logFatal(error, StackTrace? stackTrace) async {}
+
+ @override
+ // ignore: no-empty-block, avoid-redundant-async
+ Future logNonFatal(LogEvent event) async {}
+}
+
+final class CrashlyticsCrashReportTool extends CrashReportTool {
+ @override
+ Future init() async {
+ FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
+ await FirebaseCrashlytics.instance
+ .setCrashlyticsCollectionEnabled(Config.crashlyticsEnabled);
+ }
+
+ @override
+ Future logFatal(error, StackTrace? stackTrace) =>
+ FirebaseCrashlytics.instance.recordError(error, stackTrace, fatal: true);
+
+ @override
+ Future logNonFatal(LogEvent event) async {
+ await FirebaseCrashlytics.instance.setCustomKey('level', event.level.name);
+ await FirebaseCrashlytics.instance.recordError(
+ event.error ?? FlutterError(event.message),
+ event.stackTrace,
+ reason: event.message,
+ fatal: false,
+ );
+ }
+}
diff --git a/lib/core/common/environments.dart b/lib/core/common/environments.dart
new file mode 100644
index 0000000..4b151c1
--- /dev/null
+++ b/lib/core/common/environments.dart
@@ -0,0 +1,17 @@
+import 'package:simon_ai/core/common/config.dart';
+
+enum Environments {
+ dev,
+ staging,
+ prod,
+}
+
+extension EnvironmentPath on Environments {
+ String get fileName => switch (this) {
+ Environments.dev => 'dev',
+ Environments.staging => 'staging',
+ Environments.prod => 'prod',
+ };
+
+ String get path => '${Config.environmentFolder}/$fileName';
+}
diff --git a/lib/core/common/extension/app_router_extensions.dart b/lib/core/common/extension/app_router_extensions.dart
new file mode 100644
index 0000000..8013247
--- /dev/null
+++ b/lib/core/common/extension/app_router_extensions.dart
@@ -0,0 +1,5 @@
+import 'package:simon_ai/ui/router/app_router.dart';
+
+extension AppRouterExtensions on AppRouter {
+ Future popTopMost() => topMostRouter().maybePop();
+}
diff --git a/lib/core/common/extension/interpreter_extensions.dart b/lib/core/common/extension/interpreter_extensions.dart
new file mode 100644
index 0000000..5c5d7bd
--- /dev/null
+++ b/lib/core/common/extension/interpreter_extensions.dart
@@ -0,0 +1,25 @@
+import 'dart:io';
+
+import 'package:tflite_flutter/tflite_flutter.dart';
+
+extension InterpreterExtensions on List {
+ Interpreter get handDetectorInterpreter => this[1];
+ Interpreter get handTrackingInterpreter => first;
+ Interpreter get handGestureEmbedderInterpreter => this[2];
+ Interpreter get handCannedGestureInterpreter => this[3];
+}
+
+extension InterpreterOptionsExtensions on InterpreterOptions {
+ void defaultOptions() {
+ if (Platform.isAndroid) {
+ addDelegate(
+ GpuDelegateV2(
+ options: GpuDelegateOptionsV2(
+ isPrecisionLossAllowed: false,
+ inferencePriority1: 2,
+ ),
+ ),
+ );
+ }
+ }
+}
diff --git a/lib/core/common/extension/stock_extensions.dart b/lib/core/common/extension/stock_extensions.dart
new file mode 100644
index 0000000..2641695
--- /dev/null
+++ b/lib/core/common/extension/stock_extensions.dart
@@ -0,0 +1,26 @@
+//ignore_for_file: unused-files, unused-code
+import 'package:rxdart/rxdart.dart';
+import 'package:simon_ai/core/common/result.dart';
+import 'package:stock/stock.dart';
+
+extension StockStreamExtensions on Stream> {
+ Stream> flatMapToResult() => flatMap((response) async* {
+ if (response.isData) {
+ yield Result.success(response.requireData());
+ } else if (response.isError) {
+ yield Result.failure((response as StockResponseError).error);
+ }
+ });
+
+ Stream filterSuccessStockResponseData([
+ Function(Object?, StackTrace?)? errorHandler,
+ ]) =>
+ flatMap((response) async* {
+ if (response.isData) {
+ yield response.requireData();
+ } else if (response.isError) {
+ final stockError = response as StockResponseError;
+ errorHandler?.call(stockError.error, stockError.stackTrace);
+ }
+ });
+}
diff --git a/lib/core/common/extension/stream_future_extensions.dart b/lib/core/common/extension/stream_future_extensions.dart
new file mode 100644
index 0000000..c70ccd7
--- /dev/null
+++ b/lib/core/common/extension/stream_future_extensions.dart
@@ -0,0 +1,40 @@
+// ignore_for_file: unused-code
+
+import 'package:rxdart/rxdart.dart';
+import 'package:simon_ai/core/common/logger.dart';
+import 'package:simon_ai/core/common/result.dart';
+
+extension StreamExtensions on Stream {
+ Stream> mapToResult() =>
+ map(Result.success).onErrorReturnWith((error, stacktrace) {
+ Logger.w('Stream error', error, stacktrace);
+ return Result.failure(error);
+ });
+
+ Stream filterSuccess([Function(Object?)? errorHandler]) =>
+ handleError((error, stacktrace) {
+ Logger.w('Stream error', error, stacktrace);
+ errorHandler?.call(error);
+ });
+}
+
+extension FutureExtensions on Future {
+ Future> mapToResult() async {
+ try {
+ return Result.success(await this);
+ } catch (error, stacktrace) {
+ Logger.w('Future error', error, stacktrace);
+ return Result.failure(error);
+ }
+ }
+
+ Future filterSuccess([Function(Object?)? errorHandler]) async {
+ try {
+ return await this;
+ } catch (error, stacktrace) {
+ Logger.w('Future error', error, stacktrace);
+ errorHandler?.call(error);
+ return null;
+ }
+ }
+}
diff --git a/lib/core/common/extension/string_extensions.dart b/lib/core/common/extension/string_extensions.dart
new file mode 100644
index 0000000..ba0dd68
--- /dev/null
+++ b/lib/core/common/extension/string_extensions.dart
@@ -0,0 +1,52 @@
+extension StringExtensions on String {
+ bool get isUpperCase => contains(RegExp(r'^[A-Z]+$'));
+
+ bool get isNumber => contains(RegExp(r'^[0-9]+$'));
+
+ bool get isValidEmail =>
+ contains(RegExp(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'));
+
+ String get camelCaseToSnakeCase {
+ final sb = StringBuffer();
+ var first = true;
+ for (final rune in runes) {
+ final char = String.fromCharCode(rune);
+ if (char.isUpperCase && !first) {
+ if (char != '_') {
+ sb.write('_');
+ }
+ sb.write(char.toLowerCase());
+ } else {
+ first = false;
+ sb.write(char.toLowerCase());
+ }
+ }
+ return sb.toString();
+ }
+
+ String get addUnderscoreBeforeNumbers {
+ final sb = StringBuffer();
+ var first = true;
+ var prev = '';
+ for (final rune in runes) {
+ final char = String.fromCharCode(rune);
+ if (char.isNumber && !first && !prev.isNumber) {
+ sb.write('_');
+ }
+ first = false;
+ sb.write(char);
+ prev = char;
+ }
+ return sb.toString();
+ }
+
+ String capitalize() =>
+ '${this[0].toUpperCase()}${substring(1).toLowerCase()}';
+}
+
+extension NullableStringExtensions on String? {
+ bool get isNullOrEmpty => this?.isEmpty ?? true;
+
+ String? ifNullOrBlank(String? Function() func) =>
+ this == null || this!.isEmpty ? func() : this;
+}
diff --git a/lib/core/common/extension/user_extensions.dart b/lib/core/common/extension/user_extensions.dart
new file mode 100644
index 0000000..f83f97e
--- /dev/null
+++ b/lib/core/common/extension/user_extensions.dart
@@ -0,0 +1,8 @@
+import 'package:simon_ai/core/model/user.dart';
+
+extension UserExtensions on User {
+ String getEmailUsername() {
+ final atIndex = email.indexOf('@');
+ return (atIndex != -1) ? email.substring(0, atIndex) : email;
+ }
+}
diff --git a/lib/core/common/helper/enum_helpers.dart b/lib/core/common/helper/enum_helpers.dart
new file mode 100644
index 0000000..b88b846
--- /dev/null
+++ b/lib/core/common/helper/enum_helpers.dart
@@ -0,0 +1,4 @@
+import 'package:dartx/dartx.dart';
+
+T? enumFromString(Iterable values, String value) =>
+ values.firstOrNullWhere((type) => type.toString().split('.').last == value);
diff --git a/lib/core/common/helper/env_helper.dart b/lib/core/common/helper/env_helper.dart
new file mode 100644
index 0000000..a6bc3ae
--- /dev/null
+++ b/lib/core/common/helper/env_helper.dart
@@ -0,0 +1,12 @@
+import 'dart:async';
+
+import 'package:flutter_dotenv/flutter_dotenv.dart';
+
+Future