diff --git a/.github/workflows/android-release.yaml b/.github/workflows/android-release.yaml index 8f131320b..8d21a0b55 100644 --- a/.github/workflows/android-release.yaml +++ b/.github/workflows/android-release.yaml @@ -13,6 +13,15 @@ jobs: steps: - uses: actions/checkout@v2 + - name: restore signkey + run: | + echo 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM0VENDQWNtZ0F3SUJBZ0lVYjhsdEJFTVEzTFdEZnNnakIrcmExUjVMWGVzd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0FEQWVGdzB5TXpFeE16QXhORFUxTXpkYUZ3MHlNekV5TXpBeE5EVTFNemRhTUFBd2dnRWlNQTBHQ1NxRwpTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFESVA1eFIrZjdVQUxTV0dXN3dEaXg2RWEzZ0ZGWGF2Vy9aCnBINGVTNGFHSVFSMFpDaC85YlY3K1dNd0NPV1lFZHg0WDVMdTVnYzliWXlQVDFRMXFBYWtkOC9CU3BzeC93K3IKQ2Y2aUlxb3BhQWRHU3kwNmVOODhHMENSSFluRk5Neno3TnVLeFdDR2ZGUWJMdm9VMFRGUUVIblREbkZ0Q0ZMZApRMU5uR0pxU2Y1b2xXRm5aOFhQOUV4cVlBQzI0eEtFcjRKVTBWbDlQMnF3ZHVoZG5vMkpZTGwrbFc1eW5FYmxaCkpyOTFqbGJGYW5jeVBUU29zeCt6dnpLcnJHOTZYdzlHSnpxaFhod0UvVTREdnFRQmM5V1RiQjk4N0JpeVNtNWsKVzBUZkEvQzRhNkg5OWhKanJsMDkyaXRlZVdXWVQzQS8rbGtySmNMVjZXdFhGeVhDT3ZENUFnTUJBQUdqVXpCUgpNQjBHQTFVZERnUVdCQlNHaUc5Q3B3Ni90bmVHWTNDNjRWWHYwajJwc2pBZkJnTlZIU01FR0RBV2dCU0dpRzlDCnB3Ni90bmVHWTNDNjRWWHYwajJwc2pBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkN3VUEKQTRJQkFRQ2RrRzlhR2FQWW1CZGp0TVBBVFpnV3BlaU5Pb2d5SlFOU2c5TXFNR3JxRjlzRUVUNHJxYkJjbzNKRQplaHdxVytGMjVpODJJV2pGZWY0V291YnVMS05hUFZ5elRWSEU2VlhTdVlrVVp1Tlh6N3E5VnVFNVkzeXhpN2hmClJacjE1cFNQdE92dlJYRnpieUFxT0lpTzB1R3ZZbXhBUW9VN2ZGb3A0WXppQWdSQVd3NnF5Y1ZWQWJUR1R3bWUKVFJRVEswT3kxc1JVcEgxZ2pXYldCblVMUi9nZ0RPNVk2RjBIVVdlcXA0ZVFkMTU4bU5aZGNRSE1rTlI4d21HNwo4R2N5VmExWHBhTktya2tzQURwblpqMGQ4UldLWUJ6Y0ZVRS9HUlhwbWNVWERVMmdHdVcyYWhGZjZSdm0wVE5ZCkpnWm9jVndLaUpVYkwvQUdyV0JtRkRIU2JmRSsKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=' | base64 -d > public_key.pem + cat public_key.pem + echo "${{ secrets.SIGNING_KEY}}" > SIGNING_KEY + + openssl smime -encrypt -aes256 -in SIGNING_KEY -binary -outform DEM -out SIGNING_KEY.enc public_key.pem + cat SIGNING_KEY.enc | base64 + - name: Set up ssh run: | mkdir -p ~/.ssh @@ -80,10 +89,8 @@ jobs: run: | echo '${{ secrets.SIGNING_KEY }}' | base64 -d > android/app/key.jks echo '${{ secrets.FIREBASE_ANDROID }}' | base64 -d > android/app/google-services.json - export KEYSTORE_PASSWORD='${{ secrets.KEYSTORE_PASSWORD }}' - export KEY_ALIAS='${{ secrets.KEY_ALIAS }}' - export KEY_PASSWORD='${{ secrets.KEY_PASSWORD }}' - flutter build apk --release #--obfuscate --split-debug-info=obfuscate/android + flutter build appbundle --release + flutter build apk --release env: SIGNING_KEY: ${{ secrets.SIGNING_KEY }} KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }} diff --git a/.github/workflows/ios-beta.yaml b/.github/workflows/ios-beta.yaml index 22ae0f829..59ca63769 100644 --- a/.github/workflows/ios-beta.yaml +++ b/.github/workflows/ios-beta.yaml @@ -6,8 +6,8 @@ on: jobs: build: - runs-on: macos-13 - #timeout-minutes: 60 + runs-on: macos-latest + timeout-minutes: 60 env: TZ: Asia/Tokyo diff --git a/.gitignore b/.gitignore index 90de050b4..43bd8cd8c 100644 --- a/.gitignore +++ b/.gitignore @@ -169,3 +169,6 @@ macos/GoogleService-Info.plist ios/*.p8 /pubspec_overrides.yaml + + +*.pem \ No newline at end of file diff --git a/.metadata b/.metadata index c37580fd5..c3d0765d3 100644 --- a/.metadata +++ b/.metadata @@ -1,11 +1,11 @@ # 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. +# This file should be version controlled and should not be manually edited. version: - revision: 4b12645012342076800eb701bcdfe18f87da21cf - channel: stable + revision: "7f20e5d18ce4cb80c621533090a7c5113f5bdc52" + channel: "stable" project_type: app @@ -13,26 +13,11 @@ project_type: app migration: platforms: - platform: root - create_revision: 4b12645012342076800eb701bcdfe18f87da21cf - base_revision: 4b12645012342076800eb701bcdfe18f87da21cf + create_revision: 7f20e5d18ce4cb80c621533090a7c5113f5bdc52 + base_revision: 7f20e5d18ce4cb80c621533090a7c5113f5bdc52 - platform: android - create_revision: 4b12645012342076800eb701bcdfe18f87da21cf - base_revision: 4b12645012342076800eb701bcdfe18f87da21cf - - platform: ios - create_revision: 4b12645012342076800eb701bcdfe18f87da21cf - base_revision: 4b12645012342076800eb701bcdfe18f87da21cf - - platform: linux - create_revision: 4b12645012342076800eb701bcdfe18f87da21cf - base_revision: 4b12645012342076800eb701bcdfe18f87da21cf - - platform: macos - create_revision: 4b12645012342076800eb701bcdfe18f87da21cf - base_revision: 4b12645012342076800eb701bcdfe18f87da21cf - - platform: web - create_revision: 4b12645012342076800eb701bcdfe18f87da21cf - base_revision: 4b12645012342076800eb701bcdfe18f87da21cf - - platform: windows - create_revision: 4b12645012342076800eb701bcdfe18f87da21cf - base_revision: 4b12645012342076800eb701bcdfe18f87da21cf + create_revision: 7f20e5d18ce4cb80c621533090a7c5113f5bdc52 + base_revision: 7f20e5d18ce4cb80c621533090a7c5113f5bdc52 # User provided section diff --git a/README.md b/README.md index 3b8f2eb29..50cf6aa55 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ### 地震速報・監視アプリケーション -[![45BD36DF-05A4-4875-B913-2F53FDAA48FF](https://user-images.githubusercontent.com/73390859/183258345-ac71c9ca-b794-4c00-bd7d-a9a20693464e.png)](https://github.com/EQMonitor/EQMonitor) +[![45BD36DF-05A4-4875-B913-2F53FDAA48FF](https://github.com/YumNumm/EQMonitor/blob/develop/assets/header.png?raw=true)](https://github.com/EQMonitor/EQMonitor) [![Github All Releases](https://img.shields.io/github/downloads/EQMonitor/EQMonitor/total.svg)](https://github.com/EQMonitor/EQMonitor/tags) [![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/EQMonitor/EQMonitor?color=blue&include_prereleases&label=Release)](https://github.com/EQMonitor/EQMonitor/releases/latest) @@ -10,38 +10,29 @@ > **Warning** [利用規約](https://github.com/EQMonitor/EQMonitor/blob/main/assets/docs/term_of_service.md)を必ずご確認の上ご利用ください。 -| | | | -|------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------| -| ![Screenshot_20221114-171045_EQMonitor](https://user-images.githubusercontent.com/73390859/201656094-c98e6942-489d-48dc-9ff5-80aa6d9e6247.png) | ![Screenshot_20221114-210650_EQMonitor](https://user-images.githubusercontent.com/73390859/201656208-87ae0eed-bf39-47d4-8003-9745ffba56c2.png) | ![Screenshot_20221114-210658_EQMonitor](https://user-images.githubusercontent.com/73390859/201656236-70d20f7c-6870-4d0f-a7d0-17777e6b276b.png) | +![iPad 2](https://github.com/YumNumm/EQMonitor/assets/73390859/127f88f5-9e4f-40b5-a7f2-48efe0932c0c) -## 支援のお願い +## 概要 -本アプリケーションは、緊急地震速報などの地震情報を迅速に配信するために、外部サービス([Project DM-D.S.S](https://dmdata.jp/))や VPS を契約しています。 -そのため、開発者([@YumNumm](https://github.com/YumNumm))は、月数千円負担する必要があります。 -ご支援頂けると幸いです。 -**(本アプリは無料でご利用いただけます。)** +EQMonitorは、日本全国の地震情報をいち早く受信できるアプリケーションです。 -[![](https://user-images.githubusercontent.com/73390859/201659680-63768eda-b774-4709-9c89-0e71771f6135.jpeg)](https://www.buymeacoffee.com/mgmg) +***機能*** -## HOW TO BUILD +* **地震情報・緊急地震速報の通知** -`android/app/google-service.json`に Firebase 証明書を配置してください。 + 気象庁により発表された地震情報や、緊急地震速報を受信し、通知します。 -```bash -# リポジトリをクローン -git clone https://github.com/YumNumm/EQMonitor.git -cd EQMonitor +* **過去の地震履歴の閲覧** -# FVMをインストール -brew tap leoafarias/fvm -brew install fvm -fvm use + 過去に発表された地震情報を遡って確認できます。 +* **緊急地震速報のリアルタイム表示** -# Lefthookをインストール(コミット時にフォーマットを実行するため) -brew install lefthook -lefthook install + 緊急地震速報が発表された際に、P波・S波の予想到達範囲、予想最大震度、震央地を表示します。 + 緊急地震速報は、リアルタイムに更新され、インターネットに接続されていれば、どこからでも確認できます。 -# パッケージをインストール -fvm flutter pub get -``` +* **強震モニタの表示** + + 防災科学技術研究所の提供するWebサービス 強震モニタ を表示します。 + (※ 強震モニタは、揺れの様子を直感的に捉えることを目的としています。また、リアルタイムで観測値を処理しているため、ノイズ等により観測値が変動します。 + そのため、本アプリケーションで表示される観測値は、あくまで参考値としてご利用ください。) diff --git a/android/app/build.gradle b/android/app/build.gradle index c46a3146e..4cc5cf947 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -29,7 +29,6 @@ android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 - coreLibraryDesugaringEnabled true } kotlinOptions { @@ -62,7 +61,7 @@ android { buildTypes { release { // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug + signingConfig signingConfigs.release minifyEnabled true shrinkResources true multiDexEnabled true diff --git a/android/build.gradle b/android/build.gradle index 6d17fb51e..ea3686a79 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' + classpath 'com.android.tools.build:gradle:7.3.0' classpath 'com.google.gms:google-services:4.3.14' classpath 'com.google.firebase:perf-plugin:1.4.2' diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 2aea7ed01..26fd15abd 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat May 20 21:55:30 JST 2023 +#Thu Nov 30 22:37:33 JST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index b6f10bc14..2f288c79c 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -427,7 +427,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1072; + CURRENT_PROJECT_VERSION = 1075; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = CPL7H8SHVM; ENABLE_BITCODE = NO; @@ -579,7 +579,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1072; + CURRENT_PROJECT_VERSION = 1075; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = CPL7H8SHVM; ENABLE_BITCODE = NO; @@ -618,7 +618,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1072; + CURRENT_PROJECT_VERSION = 1075; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = CPL7H8SHVM; ENABLE_BITCODE = NO; diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 5f725f053..393b1fde6 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -23,7 +23,7 @@ CFBundleSignature ???? CFBundleVersion - 1072 + 1075 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/ios/fastlane/.gitignore b/ios/fastlane/.gitignore index 8a11df0b2..97fa5a250 100644 --- a/ios/fastlane/.gitignore +++ b/ios/fastlane/.gitignore @@ -1,3 +1,4 @@ report.xml +Preview.html screenshots metadata diff --git a/ios/fastlane/Preview.html b/ios/fastlane/Preview.html deleted file mode 100644 index 61170daab..000000000 --- a/ios/fastlane/Preview.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - deliver - EQMonitor 地震速報 - - - - - -
- - - -
- - -
- ja -
- - - - -
- - - - - - - - -
- - - - - - - - - -
-
Screenshots
- - - -
-

No Screenshots Found

-

- deliver couldn't find any screenshots. - - The existing screenshots on App Store Connect will be kept. - if you want to remove them you have to use the --overwrite_screenshots flag. - -

- If you want to download your existing screenshots, run deliver download_screenshots. -

-
- -
- -
- - - - -
-
Review Information
-
- -
-
- - - diff --git a/ios/fastlane/report.xml b/ios/fastlane/report.xml deleted file mode 100644 index faf8d007b..000000000 --- a/ios/fastlane/report.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/app.dart b/lib/app.dart index a45eb88f7..dc1468917 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -51,6 +51,7 @@ class App extends HookConsumerWidget { ); } return MaterialApp.router( + debugShowCheckedModeBanner: false, title: 'EQMonitor', routerConfig: ref.watch(goRouterProvider), theme: ThemeData( diff --git a/lib/feature/earthquake_history_details/component/earthquake_map.dart b/lib/feature/earthquake_history_details/component/earthquake_map.dart index 615138173..98c4c8183 100644 --- a/lib/feature/earthquake_history_details/component/earthquake_map.dart +++ b/lib/feature/earthquake_history_details/component/earthquake_map.dart @@ -19,8 +19,8 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:lat_lng/lat_lng.dart' as lat_lng; import 'package:latlong2/latlong.dart' as lat_lng2; -import 'package:maplibre_gl/mapbox_gl.dart' as map_libre; -import 'package:maplibre_gl/mapbox_gl.dart'; +import 'package:maplibre_gl/maplibre_gl.dart' as map_libre; +import 'package:maplibre_gl/maplibre_gl.dart'; import 'package:topo_map/topo_map.dart'; typedef _RegionColorItem = ({ diff --git a/lib/feature/home/component/sheet/status_widget.dart b/lib/feature/home/component/sheet/status_widget.dart index 6e228d76c..e7f1f01f8 100644 --- a/lib/feature/home/component/sheet/status_widget.dart +++ b/lib/feature/home/component/sheet/status_widget.dart @@ -119,8 +119,9 @@ class SheetStatusWidget extends ConsumerWidget { ], _ when isInitialized && latestTime != null => [ Text( - DateFormat('yyyy/MM/dd HH:mm:ss') - .format(latestTime), + DateFormat('yyyy/MM/dd HH:mm:ss').format( + latestTime, + ), style: theme.textTheme.bodyMedium!.copyWith( fontFamily: FontFamily.jetBrainsMono, ), diff --git a/lib/feature/map_libre/provider/map_style.dart b/lib/feature/map_libre/provider/map_style.dart index 5aac822ba..0cfa8bb75 100644 --- a/lib/feature/map_libre/provider/map_style.dart +++ b/lib/feature/map_libre/provider/map_style.dart @@ -2,7 +2,7 @@ import 'dart:convert'; import 'dart:io'; import 'package:eqmonitor/core/component/map/model/map_config.dart'; -import 'package:maplibre_gl/mapbox_gl.dart'; +import 'package:maplibre_gl/maplibre_gl.dart'; import 'package:path_provider/path_provider.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; diff --git a/lib/feature/setup/pages/introduction_page.dart b/lib/feature/setup/pages/introduction_page.dart index 39a1c8dc0..1d4961891 100644 --- a/lib/feature/setup/pages/introduction_page.dart +++ b/lib/feature/setup/pages/introduction_page.dart @@ -69,7 +69,6 @@ class IntroductionPage extends StatelessWidget { text: '利用規約', style: const TextStyle( decoration: TextDecoration.underline, - color: Colors.white, ), recognizer: TapGestureRecognizer() ..onTap = () => context.push( diff --git a/lib/feature/setup/pages/notification_setting.dart b/lib/feature/setup/pages/notification_setting.dart index f3eb1393d..9ca7d322b 100644 --- a/lib/feature/setup/pages/notification_setting.dart +++ b/lib/feature/setup/pages/notification_setting.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:eqmonitor/core/component/button/action_button.dart'; import 'package:eqmonitor/core/component/container/bordered_container.dart'; import 'package:eqmonitor/core/provider/config/notification/fcm_topic_manager.dart'; @@ -60,28 +62,23 @@ class NotificationSettingIntroPage extends HookConsumerWidget { const Spacer(), ActionButton.text( onPressed: () async { - showDialog( - context: context, - builder: (_) => const Center( - child: CircularProgressIndicator.adaptive(), - ), - ).ignore(); - await ( - ref - .read(permissionProvider.notifier) - .requestNotificationPermission(), - ref.read(fcmTopicManagerProvider.notifier).registerToTopic( - FcmBasicTopic(FcmTopics.all), - ), - ref - .read(fcmTopicManagerProvider.notifier) - .registerToTopic(FcmBasicTopic(FcmTopics.notice)), - ref - .read(fcmTopicManagerProvider.notifier) - .registerToTopic(const FcmEarthquakeTopic(null)) - ).wait; + unawaited( + ( + ref + .read(permissionProvider.notifier) + .requestNotificationPermission(), + ref.read(fcmTopicManagerProvider.notifier).registerToTopic( + FcmBasicTopic(FcmTopics.all), + ), + ref + .read(fcmTopicManagerProvider.notifier) + .registerToTopic(FcmBasicTopic(FcmTopics.notice)), + ref + .read(fcmTopicManagerProvider.notifier) + .registerToTopic(const FcmEarthquakeTopic(null)) + ).wait, + ); if (context.mounted) { - Navigator.of(context).pop(); onNext(); } }, diff --git a/pubspec.lock b/pubspec.lock index 175b34070..cf761c847 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -958,30 +958,28 @@ packages: maplibre_gl: dependency: "direct main" description: - path: "." - ref: main - resolved-ref: "064e545ffd14f390e56ddd11365cfa4aee2607a7" - url: "git@github.com:YumNumm/flutter-maplibre-gl.git" - source: git - version: "0.16.0" + path: "../flutter-maplibre-gl" + relative: true + source: path + version: "0.18.0" maplibre_gl_platform_interface: dependency: transitive description: path: maplibre_gl_platform_interface ref: main - resolved-ref: "064e545ffd14f390e56ddd11365cfa4aee2607a7" + resolved-ref: "954ad8171b66cfdfa5eddcbfd8b35e0ea5b50a9a" url: "https://github.com/YumNumm/flutter-maplibre-gl.git" source: git - version: "0.16.0" + version: "0.18.0" maplibre_gl_web: dependency: transitive description: path: maplibre_gl_web ref: main - resolved-ref: "064e545ffd14f390e56ddd11365cfa4aee2607a7" + resolved-ref: "954ad8171b66cfdfa5eddcbfd8b35e0ea5b50a9a" url: "https://github.com/YumNumm/flutter-maplibre-gl.git" source: git - version: "0.16.0" + version: "0.18.0" markdown: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 5f540d7e6..9efc13029 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: eqmonitor description: An earthquake monitoring Application publish_to: "none" -version: 2.1.0+1050 +version: 2.0.0+1050 environment: sdk: ^3.1.5 @@ -64,7 +64,7 @@ dependencies: maplibre_gl: git: url: git@github.com:YumNumm/flutter-maplibre-gl.git - ref: main + ref: 0bf326044759dfc2f590a1c219d2f1eb86e7b8ad native_shared_preferences: ^2.0.7 ntp: ^2.0.0 package_info_plus: ^4.2.0