From 6208bc47e60cad65df39074f0bdec0cabaaaa4ab Mon Sep 17 00:00:00 2001 From: Bruce Liu Date: Sun, 17 Jan 2021 15:07:37 +0800 Subject: [PATCH] initial commit --- .gitignore | 42 ++ .metadata | 10 + .vscode/launch.json | 14 + README.md | 16 + android/.gitignore | 11 + android/app/build.gradle | 63 ++ android/app/src/debug/AndroidManifest.xml | 7 + android/app/src/main/AndroidManifest.xml | 51 ++ .../fluent_reader_lite/MainActivity.kt | 6 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 7 + android/build.gradle | 31 + android/gradle.properties | 4 + .../gradle/wrapper/gradle-wrapper.properties | 6 + android/settings.gradle | 11 + assets/article/article.css | 129 ++++ assets/article/article.html | 16 + assets/article/article.js | 52 ++ assets/article/mercury.web.js | 1 + assets/icons/logo-outline-dark.png | Bin 0 -> 23904 bytes assets/icons/logo-outline.png | Bin 0 -> 23776 bytes assets/icons/logo.png | Bin 0 -> 55309 bytes ios/.gitignore | 32 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 2 + ios/Flutter/Release.xcconfig | 2 + ios/Podfile | 41 ++ ios/Podfile.lock | 67 ++ ios/Runner.xcodeproj/project.pbxproj | 578 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 91 +++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/100.png | Bin 0 -> 6808 bytes .../AppIcon.appiconset/1024.png | Bin 0 -> 264268 bytes .../AppIcon.appiconset/114.png | Bin 0 -> 8057 bytes .../AppIcon.appiconset/120.png | Bin 0 -> 8719 bytes .../AppIcon.appiconset/144.png | Bin 0 -> 11395 bytes .../AppIcon.appiconset/152.png | Bin 0 -> 12321 bytes .../AppIcon.appiconset/167.png | Bin 0 -> 14195 bytes .../AppIcon.appiconset/180.png | Bin 0 -> 15781 bytes .../Assets.xcassets/AppIcon.appiconset/20.png | Bin 0 -> 795 bytes .../Assets.xcassets/AppIcon.appiconset/29.png | Bin 0 -> 1224 bytes .../Assets.xcassets/AppIcon.appiconset/40.png | Bin 0 -> 1906 bytes .../Assets.xcassets/AppIcon.appiconset/50.png | Bin 0 -> 2484 bytes .../Assets.xcassets/AppIcon.appiconset/57.png | Bin 0 -> 3076 bytes .../Assets.xcassets/AppIcon.appiconset/58.png | Bin 0 -> 3121 bytes .../Assets.xcassets/AppIcon.appiconset/60.png | Bin 0 -> 3260 bytes .../Assets.xcassets/AppIcon.appiconset/72.png | Bin 0 -> 4280 bytes .../Assets.xcassets/AppIcon.appiconset/76.png | Bin 0 -> 4633 bytes .../Assets.xcassets/AppIcon.appiconset/80.png | Bin 0 -> 4912 bytes .../Assets.xcassets/AppIcon.appiconset/87.png | Bin 0 -> 5529 bytes .../AppIcon.appiconset/Contents.json | 1 + .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 ++ ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 57 ++ ios/Runner/Runner-Bridging-Header.h | 1 + lib/components/article_item.dart | 268 ++++++++ lib/components/badge.dart | 29 + lib/components/cupertino_toolbar.dart | 136 +++++ lib/components/dismissible_background.dart | 25 + lib/components/favicon.dart | 36 ++ lib/components/list_tile_group.dart | 60 ++ lib/components/mark_all_action_sheet.dart | 52 ++ lib/components/my_list_tile.dart | 100 +++ lib/components/responsive_action_sheet.dart | 22 + lib/components/subscription_item.dart | 129 ++++ lib/components/sync_control.dart | 30 + lib/components/time_text.dart | 75 +++ lib/l10n/intl_en.arb | 80 +++ lib/l10n/intl_zh.arb | 80 +++ lib/main.dart | 123 ++++ lib/models/feed.dart | 121 ++++ lib/models/feeds_model.dart | 89 +++ lib/models/global_model.dart | 47 ++ lib/models/groups_model.dart | 13 + lib/models/item.dart | 57 ++ lib/models/items_model.dart | 124 ++++ lib/models/service.dart | 20 + lib/models/services/fever.dart | 233 +++++++ lib/models/source.dart | 56 ++ lib/models/sources_model.dart | 192 ++++++ lib/models/sync_model.dart | 64 ++ lib/pages/article_page.dart | 229 +++++++ lib/pages/group_list_page.dart | 103 ++++ lib/pages/home_page.dart | 121 ++++ lib/pages/item_list_page.dart | 376 ++++++++++++ lib/pages/settings/about_page.dart | 58 ++ lib/pages/settings/feed_page.dart | 107 ++++ lib/pages/settings/general_page.dart | 108 ++++ lib/pages/settings/reading_page.dart | 47 ++ lib/pages/settings/services/fever_page.dart | 234 +++++++ lib/pages/settings/source_edit_page.dart | 107 ++++ lib/pages/settings/sources_page.dart | 35 ++ lib/pages/settings/text_editor_page.dart | 99 +++ lib/pages/settings_page.dart | 70 +++ lib/pages/setup_page.dart | 59 ++ lib/pages/subscription_list_page.dart | 212 +++++++ lib/pages/tablet_base_page.dart | 22 + lib/utils/colors.dart | 31 + lib/utils/db.dart | 48 ++ lib/utils/global.dart | 82 +++ lib/utils/store.dart | 93 +++ lib/utils/utils.dart | 61 ++ pubspec.lock | 570 +++++++++++++++++ pubspec.yaml | 98 +++ test/widget_test.dart | 30 + 122 files changed, 6819 insertions(+) create mode 100644 .gitignore create mode 100644 .metadata create mode 100644 .vscode/launch.json create mode 100644 README.md create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/kotlin/com/example/fluent_reader_lite/MainActivity.kt create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle create mode 100644 assets/article/article.css create mode 100644 assets/article/article.html create mode 100644 assets/article/article.js create mode 100644 assets/article/mercury.web.js create mode 100644 assets/icons/logo-outline-dark.png create mode 100644 assets/icons/logo-outline.png create mode 100644 assets/icons/logo.png create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Podfile create mode 100644 ios/Podfile.lock create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png create mode 100755 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 lib/components/article_item.dart create mode 100644 lib/components/badge.dart create mode 100644 lib/components/cupertino_toolbar.dart create mode 100644 lib/components/dismissible_background.dart create mode 100644 lib/components/favicon.dart create mode 100644 lib/components/list_tile_group.dart create mode 100644 lib/components/mark_all_action_sheet.dart create mode 100644 lib/components/my_list_tile.dart create mode 100644 lib/components/responsive_action_sheet.dart create mode 100644 lib/components/subscription_item.dart create mode 100644 lib/components/sync_control.dart create mode 100644 lib/components/time_text.dart create mode 100644 lib/l10n/intl_en.arb create mode 100644 lib/l10n/intl_zh.arb create mode 100644 lib/main.dart create mode 100644 lib/models/feed.dart create mode 100644 lib/models/feeds_model.dart create mode 100644 lib/models/global_model.dart create mode 100644 lib/models/groups_model.dart create mode 100644 lib/models/item.dart create mode 100644 lib/models/items_model.dart create mode 100644 lib/models/service.dart create mode 100644 lib/models/services/fever.dart create mode 100644 lib/models/source.dart create mode 100644 lib/models/sources_model.dart create mode 100644 lib/models/sync_model.dart create mode 100644 lib/pages/article_page.dart create mode 100644 lib/pages/group_list_page.dart create mode 100644 lib/pages/home_page.dart create mode 100644 lib/pages/item_list_page.dart create mode 100644 lib/pages/settings/about_page.dart create mode 100644 lib/pages/settings/feed_page.dart create mode 100644 lib/pages/settings/general_page.dart create mode 100644 lib/pages/settings/reading_page.dart create mode 100644 lib/pages/settings/services/fever_page.dart create mode 100644 lib/pages/settings/source_edit_page.dart create mode 100644 lib/pages/settings/sources_page.dart create mode 100644 lib/pages/settings/text_editor_page.dart create mode 100644 lib/pages/settings_page.dart create mode 100644 lib/pages/setup_page.dart create mode 100644 lib/pages/subscription_list_page.dart create mode 100644 lib/pages/tablet_base_page.dart create mode 100644 lib/utils/colors.dart create mode 100644 lib/utils/db.dart create mode 100644 lib/utils/global.dart create mode 100644 lib/utils/store.dart create mode 100644 lib/utils/utils.dart create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 test/widget_test.dart diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6b3aa20 --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# 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/ +lib/generated/ + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..182ccca --- /dev/null +++ b/.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: 78910062997c3a836feee883712c241a5fd22983 + channel: stable + +project_type: app diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..7e461cb --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + // 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": "Flutter", + "request": "launch", + "type": "dart", + "flutterMode": "debug" + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..f321e59 --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# fluent_reader_lite + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) + +For help getting started with Flutter, view our +[online documentation](https://flutter.dev/docs), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..0a741cb --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,11 @@ +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 diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..9760fb7 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,63 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion 29 + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + lintOptions { + disable 'InvalidPackage' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "me.hyliu.fluent_reader_lite" + minSdkVersion 16 + targetSdkVersion 29 + 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 { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..696e7d1 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..87c17bc --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/example/fluent_reader_lite/MainActivity.kt b/android/app/src/main/kotlin/com/example/fluent_reader_lite/MainActivity.kt new file mode 100644 index 0000000..902cefd --- /dev/null +++ b/android/app/src/main/kotlin/com/example/fluent_reader_lite/MainActivity.kt @@ -0,0 +1,6 @@ +package me.hyliu.fluent_reader_lite + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} 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..304732f --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/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 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 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..1f83a33 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..696e7d1 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..3100ad2 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.3.50' + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:3.5.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..a673820 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,4 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true +android.enableR8=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..296b146 --- /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-5.6.2-all.zip 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/article/article.css b/assets/article/article.css new file mode 100644 index 0000000..1a21f73 --- /dev/null +++ b/assets/article/article.css @@ -0,0 +1,129 @@ +html, body { + font-family: sans-serif; +} +html { + overflow: hidden scroll; + margin: 16px 24px 32px; +} +@media (min-width: 440px) { + html { + margin: 16px 36px 32px; + } +} +body { + margin: 0; +} +:root { + --gray: #484644; + --primary: #007aff; +} +@media (prefers-color-scheme: dark) { + :root { + color: #f8f8f8; + --gray: #a19f9d; + --primary:#0a84ff; + } + + html { + background-color: #000; + }; +} +html.dark { + color: #f8f8f8; + --gray: #a19f9d; + --primary:#0a84ff; + background-color: #000; +} +html.light { + color: #000; + --gray: #484644; + --primary: #007aff; + background-color: #fff; +} + +h1, h2, h3, h4, h5, h6, b, strong { + font-weight: 600; +} +a, a:hover, a:active { + color: var(--primary); + text-decoration: none; +} + +@keyframes fadeIn { + 0% { + opacity: 0; + transform: translateY(10px); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} +#main { + max-width: 700px; + margin: 0 auto; + display: none; +} +#main.show { + display: block; + animation-name: fadeIn; + animation-duration: 0.367s; + animation-timing-function: cubic-bezier(0.1, 0.9, 0.2, 1); + animation-fill-mode: both; +} + +#main > p#source { + color: var(--gray); + font-size: .875rem; + margin-block-end: .5rem; +} +#main > p#title { + font-size: 1.375rem; + line-height: 1.75rem; + font-weight: 600; + margin: 0; +} +#main > p#date { + color: var(--gray); + font-size: .875rem; + margin-block-start: .5rem; +} + +article { + line-height: 1.6; +} +article * { + max-width: 100%; + overflow: hidden; +} +article img { + height: auto; +} +article figure { + margin: 16px 0; + text-align: center; +} +article figure figcaption { + font-size: .875rem; + color: var(--gray); + -webkit-user-modify: read-only; +} +article iframe { + width: 100%; +} +article code { + font-family: Monaco, Consolas, monospace; + font-size: .875rem; + line-height: 1; +} +article blockquote { + border-left: 2px solid var(--gray); + margin: 1em 0; + padding: 0 16px; +} +article ul, article menu, article dir { + padding-inline-start: 24px; +} +article li { + overflow: visible; +} \ No newline at end of file diff --git a/assets/article/article.html b/assets/article/article.html new file mode 100644 index 0000000..454f883 --- /dev/null +++ b/assets/article/article.html @@ -0,0 +1,16 @@ + + + + + + + Article + + + + +
+ + + \ No newline at end of file diff --git a/assets/article/article.js b/assets/article/article.js new file mode 100644 index 0000000..b71bc03 --- /dev/null +++ b/assets/article/article.js @@ -0,0 +1,52 @@ +function get(name) { + if (name = (new RegExp('[?&]' + encodeURIComponent(name) + '=([^&]*)')).exec(location.search)) + return decodeURIComponent(name[1]) + return null +} +async function getArticle(url) { + let article = get("a") + if (get("m") === "1") { + return (await Mercury.parse(url, {html: article})).content || "" + } else { + return article + } +} +document.documentElement.style.fontSize = get("s") + "px" +let theme = get("t") +if (theme !== null) document.documentElement.classList.add(theme === "1" ? "light" : "dark") +let url = get("u") +getArticle(url).then(article => { + let domParser = new DOMParser() + let dom = domParser.parseFromString(get("h"), "text/html") + dom.getElementsByTagName("article")[0].innerHTML = article + let baseUrl = url.split("/").slice(0, 3).join("/") + for (let s of dom.getElementsByTagName("script")) { + s.parentNode.removeChild(s) + } + for (let e of dom.querySelectorAll("*[src]")) { + if (e.src && !e.src.startsWith("http")) { + if (e.src.startsWith("/")) { + e.src = baseUrl + e.src + } else if (e.src.startsWith(":")) { + e.src = "http" + e.src + } else { + e.src = baseUrl + "/" + e.src + } + } + } + for (let e of dom.querySelectorAll("*[href]")) { + if (e.href && !e.href.startsWith("http")) { + if (e.href.startsWith("/")) { + e.href = baseUrl + e.href + } else if (e.href.startsWith(":")) { + e.href = "http" + e.href + } else { + e.href = baseUrl + "/" + e.href + } + } + } + let main = document.getElementById("main") + main.innerHTML = dom.body.innerHTML + main.classList.add("show") +}) + diff --git a/assets/article/mercury.web.js b/assets/article/mercury.web.js new file mode 100644 index 0000000..ef63ec1 --- /dev/null +++ b/assets/article/mercury.web.js @@ -0,0 +1 @@ +var Mercury=function(){"use strict";function $n(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}function e(e,t){return e(t={exports:{}},t.exports),t.exports}var t=e(function(O){!function(e){var u,t=Object.prototype,c=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},a=n.iterator||"@@iterator",r=n.asyncIterator||"@@asyncIterator",i=n.toStringTag||"@@toStringTag",o=e.regeneratorRuntime;if(o)O.exports=o;else{(o=e.regeneratorRuntime=O.exports).wrap=y;var f="suspendedStart",h="suspendedYield",d="executing",p="completed",m={},s={};s[a]=function(){return this};var l=Object.getPrototypeOf,g=l&&l(l(C([])));g&&g!==t&&c.call(g,a)&&(s=g);var v=A.prototype=b.prototype=Object.create(s);w.prototype=v.constructor=A,A.constructor=w,A[i]=w.displayName="GeneratorFunction",o.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===w||"GeneratorFunction"===(t.displayName||t.name))},o.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,A):(e.__proto__=A,i in e||(e[i]="GeneratorFunction")),e.prototype=Object.create(v),e},o.awrap=function(e){return{__await:e}},x(k.prototype),k.prototype[r]=function(){return this},o.AsyncIterator=k,o.async=function(e,t,n,r){var a=new k(y(e,t,n,r));return o.isGeneratorFunction(t)?a:a.next().then(function(e){return e.done?e.value:a.next()})},x(v),v[i]="Generator",v[a]=function(){return this},v.toString=function(){return"[object Generator]"},o.keys=function(n){var r=[];for(var e in n)r.push(e);return r.reverse(),function e(){for(;r.length;){var t=r.pop();if(t in n)return e.value=t,e.done=!1,e}return e.done=!0,e}},o.values=C,T.prototype={constructor:T,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=u,this.done=!1,this.delegate=null,this.method="next",this.arg=u,this.tryEntries.forEach(M),!e)for(var t in this)"t"===t.charAt(0)&&c.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=u)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(n){if(this.done)throw n;var r=this;function e(e,t){return i.type="throw",i.arg=n,r.next=e,t&&(r.method="next",r.arg=u),!!t}for(var t=this.tryEntries.length-1;0<=t;--t){var a=this.tryEntries[t],i=a.completion;if("root"===a.tryLoc)return e("end");if(a.tryLoc<=this.prev){var o=c.call(a,"catchLoc"),s=c.call(a,"finallyLoc");if(o&&s){if(this.preva;)m(r,n=t[a++])&&(~le(i,n)||i.push(n));return i},de="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),pe=Object.keys||function(e){return he(e,de)},me={f:Object.getOwnPropertySymbols},ge=Array.isArray||function(e){return"Array"==s(e)},ve=v?Object.defineProperties:function(e,t){D(e);for(var n,r=pe(t),a=r.length,i=0;idocument.F=Object<\/script>"),e.close(),xe=e.F;n--;)delete xe[Ae][de[n]];return xe()},ke=Object.create||function(e,t){var n;return null!==e?(we[Ae]=D(e),n=new we,we[Ae]=null,n[be]=e):n=xe(),void 0===t?n:ve(n,t)},Ee=de.concat("length","prototype"),Se={f:Object.getOwnPropertyNames||function(e){return he(e,Ee)}},Me=Se.f,Te={}.toString,Ce="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],De={f:function(e){return Ce&&"[object Window]"==Te.call(e)?function(e){try{return Me(e)}catch(e){return Ce.slice()}}(e):Me(c(e))}},Oe=U.KEY,je=E.f,Ne=j.f,ze=De.f,Pe=y.Symbol,Le=y.JSON,Re=Le&&Le.stringify,Ye="prototype",We=V("_hidden"),qe=V("toPrimitive"),Ie={}.propertyIsEnumerable,He=$("symbol-registry"),Fe=$("symbols"),Be=$("op-symbols"),Ge=Object[Ye],Ue="function"==typeof Pe,$e=y.QObject,Ve=!$e||!$e[Ye]||!$e[Ye].findChild,Je=v&&g(function(){return 7!=ke(Ne({},"a",{get:function(){return Ne(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=je(Ge,t);r&&delete Ge[t],Ne(e,t,n),r&&e!==Ge&&Ne(Ge,t,r)}:Ne,Ke=function(e){var t=Fe[e]=ke(Pe[Ye]);return t._k=e,t},Xe=Ue&&"symbol"==typeof Pe.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof Pe},Ze=function(e,t,n){return e===Ge&&Ze(Be,t,n),D(e),t=f(t,!0),D(n),m(Fe,t)?(n.enumerable?(m(e,We)&&e[We][t]&&(e[We][t]=!1),n=ke(n,{enumerable:A(0,!1)})):(m(e,We)||Ne(e,We,A(1,{})),e[We][t]=!0),Je(e,t,n)):Ne(e,t,n)},Qe=function(e,t){D(e);for(var n,r=function(e){var t=pe(e),n=me.f;if(n)for(var r,a=n(e),i=d.f,o=0;a.length>o;)i.call(e,r=a[o++])&&t.push(r);return t}(t=c(t)),a=0,i=r.length;aa;)m(Fe,t=n[a++])||t==We||t==Oe||r.push(t);return r},rt=function(e){for(var t,n=e===Ge,r=ze(n?Be:c(e)),a=[],i=0;r.length>i;)!m(Fe,t=r[i++])||n&&!m(Ge,t)||a.push(Fe[t]);return a};Ue||(H((Pe=function(){if(this instanceof Pe)throw TypeError("Symbol is not a constructor!");var t=G(0it;)V(at[it++]);for(var ot=pe(V.store),st=0;ot.length>st;)ee(ot[st++]);L(L.S+L.F*!Ue,"Symbol",{for:function(e){return m(He,e+="")?He[e]:He[e]=Pe(e)},keyFor:function(e){if(!Xe(e))throw TypeError(e+" is not a symbol!");for(var t in He)if(He[t]===e)return t},useSetter:function(){Ve=!0},useSimple:function(){Ve=!1}}),L(L.S+L.F*!Ue,"Object",{create:function(e,t){return void 0===t?ke(e):Qe(ke(e),t)},defineProperty:Ze,defineProperties:Qe,getOwnPropertyDescriptor:tt,getOwnPropertyNames:nt,getOwnPropertySymbols:rt}),Le&&L(L.S+L.F*(!Ue||g(function(){var e=Pe();return"[null]"!=Re([e])||"{}"!=Re({a:e})||"{}"!=Re(Object(e))})),"JSON",{stringify:function(e){for(var t,n,r=[e],a=1;arguments.length>a;)r.push(arguments[a++]);if(n=t=r[1],(l(t)||void 0!==e)&&!Xe(e))return ge(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!Xe(t))return t}),r[1]=t,Re.apply(Le,r)}}),Pe[Ye][qe]||N(Pe[Ye],qe,Pe[Ye].valueOf),X(Pe,"Symbol"),X(Math,"Math",!0),X(y.JSON,"JSON",!0);var ut=M.Object.getOwnPropertySymbols,ct=function(e){return Object(u(e))};R("keys",function(){return function(e){return pe(ct(e))}});var lt=M.Object.keys;L(L.S+L.F*!v,"Object",{defineProperty:j.f});var ft=M.Object,ht=function(e,t,n){return ft.defineProperty(e,t,n)};var dt=function(e,t,n){return t in e?ht(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e};var pt=function(t){for(var e=1;e=t.length?{value:void 0,done:!0}:(e=Tt(t,n),this._i+=e.length,{value:e,done:!1})});var Ct=function(e,t){return{value:t,done:!!e}};Mt(Array,"Array",function(e,t){this._t=c(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,Ct(1)):Ct(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values");vt.Arguments=vt.Array;for(var Dt=V("toStringTag"),Ot="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),jt=0;jtn;)t.push(arguments[n++]);return an[++rn]=function(){!function(e,t,n){var r=void 0===n;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}e.apply(n,t)}("function"==typeof e?e:Function(e),t)},Lt(rn),rn},en=function(e){delete an[e]},"process"==s(Zt)?Lt=function(e){Zt.nextTick(C(sn,e,1))}:nn&&nn.now?Lt=function(e){nn.now(C(sn,e,1))}:tn?(Yt=(Rt=new tn).port2,Rt.port1.onmessage=un,Lt=C(Yt.postMessage,Yt,1)):y.addEventListener&&"function"==typeof postMessage&&!y.importScripts?(Lt=function(e){y.postMessage(e+"","*")},y.addEventListener("message",un,!1)):Lt=on in w("script")?function(e){_e.appendChild(w("script"))[on]=function(){_e.removeChild(this),sn.call(e)}}:function(e){setTimeout(C(sn,e,1),0)});var cn={set:Qt,clear:en},ln=cn.set,fn=y.MutationObserver||y.WebKitMutationObserver,hn=y.process,dn=y.Promise,pn="process"==s(hn);function mn(e){var n,r;this.promise=new e(function(e,t){if(void 0!==n||void 0!==r)throw TypeError("Bad Promise constructor");n=e,r=t}),this.resolve=T(n),this.reject=T(r)}var gn={f:function(e){return new mn(e)}},vn=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}},yn=y.navigator,_n=yn&&yn.userAgent||"",bn=function(e,t){if(D(e),l(t)&&t.constructor===e)return t;var n=gn.f(e);return(0,n.resolve)(t),n.promise},wn=function(e,t,n){for(var r in t)n&&e[r]?e[r]=t[r]:N(e,r,t[r]);return e},An=V("species"),xn=function(e){var t="function"==typeof M[e]?M[e]:y[e];v&&t&&!t[An]&&j.f(t,An,{configurable:!0,get:function(){return this}})},kn=V("iterator"),En=!1;try{[7][kn]().return=function(){En=!0}}catch(e){}var Sn,Mn,Tn,Cn,Dn=function(e,t){if(!t&&!En)return!1;var n=!1;try{var r=[7],a=r[kn]();a.next=function(){return{done:n=!0}},r[kn]=function(){return a},e(r)}catch(e){}return n},On=cn.set,jn=function(){var n,r,a,e=function(){var e,t;for(pn&&(e=hn.domain)&&e.exit();n;){t=n.fn,n=n.next;try{t()}catch(e){throw n?a():r=void 0,e}}r=void 0,e&&e.enter()};if(pn)a=function(){hn.nextTick(e)};else if(!fn||y.navigator&&y.navigator.standalone)if(dn&&dn.resolve){var t=dn.resolve(void 0);a=function(){t.then(e)}}else a=function(){ln.call(y,e)};else{var i=!0,o=document.createTextNode("");new fn(e).observe(o,{characterData:!0}),a=function(){o.data=i=!i}}return function(e){var t={fn:e,next:void 0};r&&(r.next=t),n||(n=t,a()),r=t}}(),Nn="Promise",zn=y.TypeError,Pn=y.process,Ln=Pn&&Pn.versions,Rn=Ln&&Ln.v8||"",Yn=y[Nn],Wn="process"==It(Pn),qn=function(){},In=Mn=gn.f,Hn=!!function(){try{var e=Yn.resolve(1),t=(e.constructor={})[V("species")]=function(e){e(qn,qn)};return(Wn||"function"==typeof PromiseRejectionEvent)&&e.then(qn)instanceof t&&0!==Rn.indexOf("6.6")&&-1===_n.indexOf("Chrome/66")}catch(e){}}(),Fn=function(e){var t;return!(!l(e)||"function"!=typeof(t=e.then))&&t},Bn=function(l,n){if(!l._n){l._n=!0;var r=l._c;jn(function(){for(var u=l._v,c=1==l._s,e=0,t=function(e){var t,n,r,a=c?e.ok:e.fail,i=e.resolve,o=e.reject,s=e.domain;try{a?(c||(2==l._h&&Vn(l),l._h=1),!0===a?t=u:(s&&s.enter(),t=a(u),s&&(s.exit(),r=!0)),t===e.promise?o(zn("Promise-chain cycle")):(n=Fn(t))?n.call(t,i,o):i(t)):o(u)}catch(e){s&&!r&&s.exit(),o(e)}};r.length>e;)t(r[e++]);l._c=[],l._n=!1,n&&!l._h&&Gn(l)})}},Gn=function(i){On.call(y,function(){var e,t,n,r=i._v,a=Un(i);if(a&&(e=vn(function(){Wn?Pn.emit("unhandledRejection",r,i):(t=y.onunhandledrejection)?t({promise:i,reason:r}):(n=y.console)&&n.error&&n.error("Unhandled promise rejection",r)}),i._h=Wn||Un(i)?2:1),i._a=void 0,a&&e.e)throw e.v})},Un=function(e){return 1!==e._h&&0===(e._a||e._c).length},Vn=function(t){On.call(y,function(){var e;Wn?Pn.emit("rejectionHandled",t):(e=y.onrejectionhandled)&&e({promise:t,reason:t._v})})},Jn=function(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),Bn(t,!0))},Kn=function(e){var n,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===e)throw zn("Promise can't be resolved itself");(n=Fn(e))?jn(function(){var t={_w:r,_d:!1};try{n.call(e,C(Kn,t,1),C(Jn,t,1))}catch(e){Jn.call(t,e)}}):(r._v=e,r._s=1,Bn(r,!1))}catch(e){Jn.call({_w:r,_d:!1},e)}}};Hn||(Yn=function(e){Ht(this,Yn,Nn,"_h"),T(e),Sn.call(this);try{e(C(Kn,this,1),C(Jn,this,1))}catch(e){Jn.call(this,e)}},(Sn=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=wn(Yn.prototype,{then:function(e,t){var n=In(Xt(this,Yn));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=Wn?Pn.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&Bn(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),Tn=function(){var e=new Sn;this.promise=e,this.resolve=C(Kn,e,1),this.reject=C(Jn,e,1)},gn.f=In=function(e){return e===Yn||e===Cn?new Tn(e):Mn(e)}),L(L.G+L.W+L.F*!Hn,{Promise:Yn}),X(Yn,Nn),xn(Nn),Cn=M[Nn],L(L.S+L.F*!Hn,Nn,{reject:function(e){var t=In(this);return(0,t.reject)(e),t.promise}}),L(L.S+!0*L.F,Nn,{resolve:function(e){return bn(this===Cn?Yn:this,e)}}),L(L.S+L.F*!(Hn&&Dn(function(e){Yn.all(e).catch(qn)})),Nn,{all:function(e){var o=this,t=In(o),s=t.resolve,u=t.reject,n=vn(function(){var r=[],a=0,i=1;Jt(e,!1,function(e){var t=a++,n=!1;r.push(void 0),i++,o.resolve(e).then(function(e){n||(n=!0,r[t]=e,--i||s(r))},u)}),--i||s(r)});return n.e&&u(n.v),t.promise},race:function(e){var t=this,n=In(t),r=n.reject,a=vn(function(){Jt(e,!1,function(e){t.resolve(e).then(n.resolve,r)})});return a.e&&r(a.v),n.promise}}),L(L.P+L.R,"Promise",{finally:function(t){var n=Xt(this,M.Promise||y.Promise),e="function"==typeof t;return this.then(e?function(e){return bn(n,t()).then(function(){return e})}:t,e?function(e){return bn(n,t()).then(function(){throw e})}:t)}}),L(L.S,"Promise",{try:function(e){var t=gn.f(this),n=vn(e);return(n.e?t.reject:t.resolve)(n.v),t.promise}});var Xn=M.Promise;function Zn(e,t,n,r,a,i,o){try{var s=e[i](o),u=s.value}catch(e){return void n(e)}s.done?t(u):Xn.resolve(u).then(r,a)}var Qn=function(s){return function(){var e=this,o=arguments;return new Xn(function(t,n){var r=s.apply(e,o);function a(e){Zn(r,t,n,a,i,"next",e)}function i(e){Zn(r,t,n,a,i,"throw",e)}a(void 0)})}},er="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},tr=e(function(O,j){!function(e){var t=j&&!j.nodeType&&j,n=O&&!O.nodeType&&O,r="object"==typeof er&&er;r.global!==r&&r.window!==r&&r.self!==r||(e=r);var a,i,v=2147483647,y=36,_=1,b=26,o=38,s=700,w=72,A=128,x="-",u=/^xn--/,c=/[^\x20-\x7E]/,l=/[\x2E\u3002\uFF0E\uFF61]/g,f={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=y-_,k=Math.floor,E=String.fromCharCode;function S(e){throw RangeError(f[e])}function d(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function p(e,t){var n=e.split("@"),r="";return 1>>10&1023|55296),e=56320|1023&e),t+=E(e)}).join("")}function C(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function D(e,t,n){var r=0;for(e=n?k(e/s):e>>1,e+=k(e/t);h*b>>1k((v-p)/o))&&S("overflow"),p+=u*o,!(u<(c=s<=g?_:g+b<=s?b:s-g));s+=y)o>k(v/(l=y-c))&&S("overflow"),o*=l;g=D(p-i,t=h.length+1,0==i),k(p/t)>v-m&&S("overflow"),m+=k(p/t),p%=t,h.splice(p++,0,m)}return T(h)}function g(e){var t,n,r,a,i,o,s,u,c,l,f,h,d,p,m,g=[];for(h=(e=M(e)).length,t=A,i=w,o=n=0;ok((v-n)/(d=r+1))&&S("overflow"),n+=(s-t)*d,t=s,o=0;ov&&S("overflow"),f==t){for(u=n,c=y;!(u<(l=c<=i?_:i+b<=c?b:c-i));c+=y)m=u-l,p=y-l,g.push(E(C(l+m%p,0))),u=k(m/p);g.push(E(C(u,0))),i=D(n,d,r==a),n=0,++r}++n,++t}return g.join("")}if(a={version:"1.3.2",ucs2:{decode:M,encode:T},decode:m,encode:g,toASCII:function(e){return p(e,function(e){return c.test(e)?"xn--"+g(e):e})},toUnicode:function(e){return p(e,function(e){return u.test(e)?m(e.slice(4).toLowerCase()):e})}},t&&n)if(O.exports==t)n.exports=a;else for(i in a)a.hasOwnProperty(i)&&(t[i]=a[i]);else e.punycode=a}(this)}),nr={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}};var rr=function(e,t,n,r){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var i=/\+/g;e=e.split(t);var o=1e3;r&&"number"==typeof r.maxKeys&&(o=r.maxKeys);var s,u,c=e.length;0",'"',"`"," ","\r","\n","\t"]),vr=["'"].concat(gr),yr=["%","/","?",";","#"].concat(vr),_r=["/","?","#"],br=/^[+a-z0-9A-Z_-]{0,63}$/,wr=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,Ar={javascript:!0,"javascript:":!0},xr={javascript:!0,"javascript:":!0},kr={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function Er(e,t,n){if(e&&nr.isObject(e)&&e instanceof hr)return e;var r=new hr;return r.parse(e,t,n),r}hr.prototype.parse=function(e,t,n){if(!nr.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var r=e.indexOf("?"),a=-1!==r&&r+~]|"+R+")"+R+"*"),G=new RegExp(R+"|>"),U=new RegExp(q),$=new RegExp("^"+Y+"$"),V={ID:new RegExp("^#("+Y+")"),CLASS:new RegExp("^\\.("+Y+")"),TAG:new RegExp("^("+Y+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},J=/HTML$/i,K=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,Q=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+R+"?|("+R+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ae=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ie=function(){A()},oe=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{N.apply(t=z.call(y.childNodes),y.childNodes),t[y.childNodes.length].nodeType}catch(e){N={apply:t.length?function(e,t){j.apply(e,z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,n,r){var a,i,o,s,u,c,l,f=t&&t.ownerDocument,h=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==h&&9!==h&&11!==h)return n;if(!r&&((t?t.ownerDocument||t:y)!==x&&A(t),t=t||x,k)){if(11!==h&&(u=Q.exec(e)))if(a=u[1]){if(9===h){if(!(o=t.getElementById(a)))return n;if(o.id===a)return n.push(o),n}else if(f&&(o=f.getElementById(a))&&v(t,o)&&o.id===a)return n.push(o),n}else{if(u[2])return N.apply(n,t.getElementsByTagName(e)),n;if((a=u[3])&&d.getElementsByClassName&&t.getElementsByClassName)return N.apply(n,t.getElementsByClassName(a)),n}if(d.qsa&&!T[e+" "]&&(!g||!g.test(e))&&(1!==h||"object"!==t.nodeName.toLowerCase())){if(l=e,f=t,1===h&&G.test(e)){for((s=t.getAttribute("id"))?s=s.replace(re,ae):t.setAttribute("id",s=E),i=(c=p(e)).length;i--;)c[i]="#"+s+" "+_e(c[i]);l=c.join(","),f=ee.test(e)&&ve(t.parentNode)||t}try{return N.apply(n,f.querySelectorAll(l)),n}catch(t){T(e,!0)}finally{s===E&&t.removeAttribute("id")}}}return m(e.replace(H,"$1"),t,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function ce(e){return e[E]=!0,e}function le(e){var t=x.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function he(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function pe(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function me(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&oe(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ge(o){return ce(function(i){return i=+i,ce(function(e,t){for(var n,r=o([],e.length,i),a=r.length;a--;)e[n=r[a]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in d=se.support={},a=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!J.test(t||n&&n.nodeName||"HTML")},A=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:y;return r!==x&&9===r.nodeType&&r.documentElement&&(o=(x=r).documentElement,k=!a(x),y!==x&&(n=x.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",ie,!1):n.attachEvent&&n.attachEvent("onunload",ie)),d.attributes=le(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=le(function(e){return e.appendChild(x.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=Z.test(x.getElementsByClassName),d.getById=le(function(e){return o.appendChild(e).id=E,!x.getElementsByName||!x.getElementsByName(E).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&k){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&k){var n,r,a,i=t.getElementById(e);if(i){if((n=i.getAttributeNode("id"))&&n.value===e)return[i];for(a=t.getElementsByName(e),r=0;i=a[r++];)if((n=i.getAttributeNode("id"))&&n.value===e)return[i]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],a=0,i=t.getElementsByTagName(e);if("*"!==e)return i;for(;n=i[a++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&k)return t.getElementsByClassName(e)},s=[],g=[],(d.qsa=Z.test(x.querySelectorAll))&&(le(function(e){o.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+R+"*(?:value|"+L+")"),e.querySelectorAll("[id~="+E+"-]").length||g.push("~="),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||g.push(".#.+[+~]")}),le(function(e){e.innerHTML="";var t=x.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),o.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(d.matchesSelector=Z.test(l=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&le(function(e){d.disconnectedMatch=l.call(e,"*"),l.call(e,"[s!='']:x"),s.push("!=",q)}),g=g.length&&new RegExp(g.join("|")),s=s.length&&new RegExp(s.join("|")),t=Z.test(o.compareDocumentPosition),v=t||Z.test(o.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},C=t?function(e,t){if(e===t)return c=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===x||e.ownerDocument===y&&v(y,e)?-1:t===x||t.ownerDocument===y&&v(y,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return c=!0,0;var n,r=0,a=e.parentNode,i=t.parentNode,o=[e],s=[t];if(!a||!i)return e===x?-1:t===x?1:a?-1:i?1:u?P(u,e)-P(u,t):0;if(a===i)return he(e,t);for(n=e;n=n.parentNode;)o.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;o[r]===s[r];)r++;return r?he(o[r],s[r]):o[r]===y?-1:s[r]===y?1:0}),x},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==x&&A(e),d.matchesSelector&&k&&!T[t+" "]&&(!s||!s.test(t))&&(!g||!g.test(t)))try{var n=l.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){T(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&U.test(n)&&(t=p(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=h[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&h(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,a){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===a:"!="===r?t!==a:"^="===r?a&&0===t.indexOf(a):"*="===r?a&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function C(e,n,r){return y(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,a;if(!e)return this;if(n=n||D,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):y(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this);if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:O.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:k,!0)),T.test(r[1])&&E.isPlainObject(t))for(r in t)y(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(a=k.getElementById(r[2]))&&(this[0]=a,this.length=1),this}).prototype=E.fn,D=E(k);var j=/^(?:parents|prev(?:Until|All))/,N={children:!0,contents:!0,next:!0,prev:!0};function z(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,de=/^$|^module$|\/(?:java|ecma)script/i,pe={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function me(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&M(e,t)?E.merge([e],n):n}function ge(e,t){for(var n=0,r=e.length;nx",v.noCloneChecked=!!ve.cloneNode(!0).lastChild.defaultValue;var we=/^key/,Ae=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,xe=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return k.activeElement}catch(e){}}()==("focus"===t)}function Me(e,t,n,r,a,i){var o,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Me(e,s,n,r,t[s],i);return e}if(null==r&&null==a?(a=n,r=n=void 0):null==a&&("string"==typeof n?(a=r,r=void 0):(a=r,r=n,n=void 0)),!1===a)a=Ee;else if(!a)return e;return 1===i&&(o=a,(a=function(e){return E().off(e),o.apply(this,arguments)}).guid=o.guid||(o.guid=E.guid++)),e.each(function(){E.event.add(this,t,a,r,n)})}function Te(e,a,i){i?(J.set(e,a,!1),E.event.add(e,a,{namespace:!1,handler:function(e){var t,n,r=J.get(this,a);if(1&e.isTrigger&&this[a]){if(r.length)(E.event.special[a]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),J.set(this,a,r),t=i(this,a),this[a](),r!==(n=J.get(this,a))||t?J.set(this,a,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(J.set(this,a,{value:E.event.trigger(E.extend(r[0],E.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===J.get(e,a)&&E.event.add(e,a,ke)}E.event={global:{},add:function(t,e,n,r,a){var i,o,s,u,c,l,f,h,d,p,m,g=J.get(t);if(g)for(n.handler&&(n=(i=n).handler,a=i.selector),a&&E.find.matchesSelector(re,a),n.guid||(n.guid=E.guid++),(u=g.events)||(u=g.events={}),(o=g.handle)||(o=g.handle=function(e){return void 0!==E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),c=(e=(e||"").match(P)||[""]).length;c--;)d=m=(s=xe.exec(e[c])||[])[1],p=(s[2]||"").split(".").sort(),d&&(f=E.event.special[d]||{},d=(a?f.delegateType:f.bindType)||d,f=E.event.special[d]||{},l=E.extend({type:d,origType:m,data:r,handler:n,guid:n.guid,selector:a,needsContext:a&&E.expr.match.needsContext.test(a),namespace:p.join(".")},i),(h=u[d])||((h=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,p,o)||t.addEventListener&&t.addEventListener(d,o)),f.add&&(f.add.call(t,l),l.handler.guid||(l.handler.guid=n.guid)),a?h.splice(h.delegateCount++,0,l):h.push(l),E.event.global[d]=!0)},remove:function(e,t,n,r,a){var i,o,s,u,c,l,f,h,d,p,m,g=J.hasData(e)&&J.get(e);if(g&&(u=g.events)){for(c=(t=(t||"").match(P)||[""]).length;c--;)if(d=m=(s=xe.exec(t[c])||[])[1],p=(s[2]||"").split(".").sort(),d){for(f=E.event.special[d]||{},h=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),o=i=h.length;i--;)l=h[i],!a&&m!==l.origType||n&&n.guid!==l.guid||s&&!s.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(h.splice(i,1),l.selector&&h.delegateCount--,f.remove&&f.remove.call(e,l));o&&!h.length&&(f.teardown&&!1!==f.teardown.call(e,p,g.handle)||E.removeEvent(e,d,g.handle),delete u[d])}else for(d in u)E.event.remove(e,d+t[c],n,r,!0);E.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t,n,r,a,i,o,s=E.event.fix(e),u=new Array(arguments.length),c=(J.get(this,"events")||{})[s.type]||[],l=E.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,De=/\s*$/g;function Ne(e,t){return M(e,"table")&&M(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function ze(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Pe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,a,i,o,s,u,c;if(1===t.nodeType){if(J.hasData(e)&&(i=J.access(e),o=J.set(t,i),c=i.events))for(a in delete o.handle,o.events={},c)for(n=0,r=c[a].length;n")},clone:function(e,t,n){var r,a,i,o,s,u,c,l=e.cloneNode(!0),f=ae(e);if(!(v.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(o=me(l),r=0,a=(i=me(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",a=function(e){r.remove(),a=null,e&&t("error"===e.type?404:200,e.type)}),k.head.appendChild(r[0])},abort:function(){a&&a()}}});var Ut,$t=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=$t.pop()||E.expando+"_"+kt++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,a,i,o=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(o||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=y(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,o?e[o]=e[o].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return i||E.error(r+" was not called"),i[0]},e.dataTypes[0]="json",a=x[r],x[r]=function(){i=arguments},n.always(function(){void 0===a?E(x).removeProp(r):x[r]=a,e[r]&&(e.jsonpCallback=t.jsonpCallback,$t.push(r)),i&&y(a)&&a(i[0]),i=a=void 0}),"script"}),v.createHTMLDocument=((Ut=k.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=k.implementation.createHTMLDocument("")).createElement("base")).href=k.location.href,t.head.appendChild(r)):t=k),i=!n&&[],(a=T.exec(e))?[t.createElement(a[1])]:(a=be([e],t,i),i&&i.length&&E(i).remove(),E.merge([],a.childNodes)));var r,a,i},E.fn.load=function(e,t,n){var r,a,i,o=this,s=e.indexOf(" ");return-1").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){o.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,a,i,o,s,u,c=E.css(e,"position"),l=E(e),f={};"static"===c&&(e.style.position="relative"),s=l.offset(),i=E.css(e,"top"),u=E.css(e,"left"),a=("absolute"===c||"fixed"===c)&&-1<(i+u).indexOf("auto")?(o=(r=l.position()).top,r.left):(o=parseFloat(i)||0,parseFloat(u)||0),y(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+o),null!=t.left&&(f.left=t.left-s.left+a),"using"in t?t.using.call(e,f):l.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],a={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((a=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),a.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-a.top-E.css(r,"marginTop",!0),left:t.left-a.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===E.css(e,"position");)e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,a){var i="pageYOffset"===a;E.fn[t]=function(e){return H(this,function(e,t,n){var r;if(_(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[a]:e[t];r?r.scrollTo(i?r.pageXOffset:n,i?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=Fe(v.pixelPosition,function(e,t){if(t)return t=He(e,n),We.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(o,s){E.each({padding:"inner"+o,content:s,"":"outer"+o},function(r,i){E.fn[i]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),a=r||(!0===e||!0===t?"margin":"border");return H(this,function(e,t,n){var r;return _(e)?0===i.indexOf("outer")?e["inner"+o]:e.document.documentElement["client"+o]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+o],r["scroll"+o],e.body["offset"+o],r["offset"+o],r["client"+o])):void 0===n?E.css(e,t,a):E.style(e,t,n,a)},s,n?e:void 0,n)}})}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0").wrap("
")},Cr.root=function(){return Cr("*").first()},Cr.browser=!0;var Or=function(e){var t=e.get(0);return!(!t||!t.tagName)&&"container"===t.tagName.toLowerCase()};function jr(e,t){return Array(t+1).join(e)}Cr.html=function(e){if(e)return Or(e)||Or(e.children("container"))?e.children("container").html()||e.html():Cr("
").append(e.eq(0).clone()).html();var t=Dr(Cr("body",null,null,!1).clone()),n=Dr(Cr("head",null,null,!1).clone());return Sr&&0").append(Cr("".concat(n.html(),""))).append(Cr("".concat(t.html(),""))).wrap("").parent().html()},Cr.load=function(e){var t=2").html(e):Cr.cloneHtml(),Sr=Sr||Cr('");return c.parent().children().each(function(e,t){var n=f(t);if(Yi.test(t.tagName))return null;var r,a=Zi(n);if(a)if(n.get(0)===c.get(0))d.append(n);else{var i=0,o=$o(n);if(o<.05&&(i+=20),.5<=o&&(i-=20),n.attr("class")===c.attr("class")&&(i+=.2*l),h<=a+i)return d.append(n);if("p"===t.tagName){var s=n.text(),u=Uo(s);if(80t)&&void 0===e.parents().toArray().find(function(e){var t=ns(e),n=t.class,r=t.id,a="".concat(n," ").concat(r);return a.includes("comment")})}function Qo(e,t){var n=2".concat(e,"")).text();return""===n?e:n}function ts(e){return 100<=e.text().trim().length}function ns(e){var t=e.attribs,r=e.attributes;return t||!r?t:si(r).reduce(function(e,t){var n=r[t];return n.name&&n.value&&(e[n.name]=n.value),e},{})}function rs(e,t,n){return e.attribs?e.attribs[t]=n:e.attributes&&e.setAttribute(t,n),e}var as=new RegExp("https?://","i"),is=".(png|gif|jpe?g)",os=new RegExp("".concat(is),"i"),ss=new RegExp("".concat(is,"(\\?\\S+)?(\\s*[\\d.]+[wx])"),"i"),us=["script","style","form"].join(",");function cs(e,t){return"comment"===t.type}function ls(e){var t;return e(us).remove(),(t=e).root().find("*").contents().filter(cs).remove(),e=t}var fs,hs={create:(fs=Qn(S.mark(function e(t,n,r){var a,i,o=arguments;return S.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=3").attr("src",n);e.replaceWith(r)}},clean:[]},date_published:{selectors:[[".PostByline__timestamp[datetime]","datetime"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},dek:{selectors:[]},next_page_url:{selectors:[]},excerpt:{selectors:[]}},Es={domain:"medium.com",title:{selectors:["h1",['meta[name="og:title"]',"value"]]},author:{selectors:[['meta[name="author"]',"value"]]},content:{selectors:["article"],transforms:{iframe:function(e){var t=/https:\/\/i.embed.ly\/.+url=https:\/\/i\.ytimg\.com\/vi\/(\w+)\//,n=decodeURIComponent(e.attr("data-thumbnail")),r=e.parents("figure");if(t.test(n)){var a=n.match(t),i=ja(a,2),o=(i[0],i[1]);e.attr("src","https://www.youtube.com/embed/".concat(o));var s=r.find("figcaption");r.empty().append([e,s])}else r.remove()},figure:function(e){if(!(0'))}},clean:[]}},Ms={domain:"genius.com",title:{selectors:["h1"]},author:{selectors:["h2 a"]},date_published:{selectors:[["meta[itemprop=page_data]","value",function(e){return JSON.parse(e).song.release_date}]]},dek:{selectors:[]},lead_image_url:{selectors:[["meta[itemprop=page_data]","value",function(e){return JSON.parse(e).song.album.cover_art_url}]]},content:{selectors:[".lyrics"],transforms:{},clean:[]}},Ts={domain:"wired.jp",title:{selectors:["h1.post-title"]},author:{selectors:['p[itemprop="author"]']},date_published:{selectors:[["time","datetime"]]},dek:{selectors:[".post-intro"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["article.article-detail"],transforms:{"img[data-original]":function(e){var t=e.attr("data-original"),n=e.attr("src"),r=Mr.resolve(n,t);e.attr("src",r)}},clean:[".post-category","time","h1.post-title",".social-area-syncer"]}},Cs=Object.freeze({BloggerExtractor:As,NYMagExtractor:xs,WikipediaExtractor:{domain:"wikipedia.org",content:{selectors:["#mw-content-text"],defaultCleaner:!1,transforms:{".infobox img":function(e){var t=e.parents(".infobox");0===t.children("img").length&&t.prepend(e)},".infobox caption":"figcaption",".infobox":"figure"},clean:[".mw-editsection","figure tr, figure td, figure tbody","#toc",".navbox"]},author:"Wikipedia Contributors",title:{selectors:["h2.title"]},date_published:{selectors:["#footer-info-lastmod"]}},TwitterExtractor:{domain:"twitter.com",content:{transforms:{".permalink[role=main]":function(e,t){var n=e.find(".tweet"),r=t('
');r.append(n),e.replaceWith(r)},s:"span"},selectors:[".permalink[role=main]"],defaultCleaner:!1,clean:[".stream-item-footer","button",".tweet-details-fixer"]},author:{selectors:[".tweet.permalink-tweet .username"]},date_published:{selectors:[[".permalink-tweet ._timestamp[data-time-ms]","data-time-ms"]]}},NYTimesExtractor:{domain:"www.nytimes.com",title:{selectors:["h1.g-headline",'h1[itemprop="headline"]',"h1.headline"]},author:{selectors:[['meta[name="author"]',"value"],".g-byline",".byline"]},content:{selectors:["div.g-blocks","article#story"],transforms:{"img.g-lazy":function(e){var t=e.attr("src");t=t.replace("{{size}}",640),e.attr("src",t)}},clean:[".ad","header#story-header",".story-body-1 .lede.video",".visually-hidden","#newsletter-promo",".promo",".comments-button",".hidden",".comments",".supplemental",".nocontent",".story-footer-links"]},date_published:{selectors:[['meta[name="article:published"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},dek:null,next_page_url:null,excerpt:null},TheAtlanticExtractor:{domain:"www.theatlantic.com",title:{selectors:["h1",".c-article-header__hed"]},author:{selectors:[['meta[name="author"]',"value"],".c-byline__author"]},content:{selectors:["article",".article-body"],transforms:[],clean:[".partner-box",".callout",".c-article-writer__image",".c-article-writer__content",".c-letters-cta__text",".c-footer__logo",".c-recirculation-link",".twitter-tweet"]},dek:{selectors:[['meta[name="description"]',"value"]]},date_published:{selectors:[['time[itemprop="datePublished"]',"datetime"]]},lead_image_url:{selectors:[['img[itemprop="url"]',"src"]]},next_page_url:null,excerpt:null},NewYorkerExtractor:{domain:"www.newyorker.com",title:{selectors:['h1[class^="ArticleHeader__hed"]',['meta[name="og:title"]',"value"]]},author:{selectors:['div[class^="ArticleContributors"] a[rel="author"]','article header div[class*="Byline__multipleContributors"]']},content:{selectors:['main[class^="Layout__content"]'],transforms:[],clean:['footer[class^="ArticleFooter__footer"]']},date_published:{selectors:[['meta[name="pubdate"]',"value"]],format:"YYYYMMDD",timezone:"America/New_York"},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},dek:{selectors:['h2[class^="ArticleHeader__dek"]']},next_page_url:null,excerpt:null},WiredExtractor:{domain:"www.wired.com",title:{selectors:["h1.post-title"]},author:{selectors:['a[rel="author"]']},content:{selectors:["article.content"],transforms:[],clean:[".visually-hidden","figcaption img.photo"]},date_published:{selectors:[['meta[itemprop="datePublished"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},dek:{selectors:[]},next_page_url:null,excerpt:null},MSNExtractor:{domain:"www.msn.com",title:{selectors:["h1"]},author:{selectors:["span.authorname-txt"]},content:{selectors:["div.richtext"],transforms:[],clean:["span.caption"]},date_published:{selectors:["span.time"]},lead_image_url:{selectors:[]},dek:{selectors:[]},next_page_url:null,excerpt:null},YahooExtractor:{domain:"www.yahoo.com",title:{selectors:["header.canvas-header"]},author:{selectors:["span.provider-name"]},content:{selectors:[".content-canvas"],transforms:[],clean:[".figure-caption"]},date_published:{selectors:[["time.date[datetime]","datetime"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},dek:{selectors:[]},next_page_url:null,excerpt:null},BuzzfeedExtractor:{domain:"www.buzzfeed.com",title:{selectors:['h1[id="post-title"]']},author:{selectors:['a[data-action="user/username"]',"byline__author"]},content:{selectors:[[".longform_custom_header_media","#buzz_sub_buzz"],"#buzz_sub_buzz"],defaultCleaner:!1,transforms:{h2:"b","div.longform_custom_header_media":function(e){return e.has("img")&&e.has(".longform_header_image_source")?"figure":null},"figure.longform_custom_header_media .longform_header_image_source":"figcaption"},clean:[".instapaper_ignore",".suplist_list_hide .buzz_superlist_item .buzz_superlist_number_inline",".share-box",".print"]},date_published:{selectors:[".buzz-datetime"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},dek:{selectors:[]},next_page_url:null,excerpt:null},WikiaExtractor:{domain:"fandom.wikia.com",title:{selectors:["h1.entry-title"]},author:{selectors:[".author vcard",".fn"]},content:{selectors:[".grid-content",".entry-content"],transforms:[],clean:[]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},dek:{selectors:[]},next_page_url:null,excerpt:null},LittleThingsExtractor:{domain:"www.littlethings.com",title:{selectors:["h1.post-title"]},author:{selectors:[['meta[name="author"]',"value"]]},content:{selectors:[".mainContentIntro",".content-wrapper"],transforms:[],clean:[]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},next_page_url:null,excerpt:null},PoliticoExtractor:{domain:"www.politico.com",title:{selectors:[['meta[name="og:title"]',"value"]]},author:{selectors:[".story-main-content .byline .vcard"]},content:{selectors:[".story-main-content",".content-group",".story-core",".story-text"],transforms:[],clean:["figcaption"]},date_published:{selectors:[[".story-main-content .timestamp time[datetime]","datetime"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},dek:{selectors:[]},next_page_url:null,excerpt:null},DeadspinExtractor:{domain:"deadspin.com",supportedDomains:["jezebel.com","lifehacker.com","kotaku.com","gizmodo.com","jalopnik.com","kinja.com","avclub.com","clickhole.com","splinternews.com","theonion.com","theroot.com","thetakeout.com","theinventory.com"],title:{selectors:["h1.headline"]},author:{selectors:[".author"]},content:{selectors:[".post-content",".entry-content"],transforms:{'iframe.lazyload[data-recommend-id^="youtube://"]':function(e){var t=e.attr("id").split("youtube-")[1];e.attr("src","https://www.youtube.com/embed/".concat(t))}},clean:[".magnifier",".lightbox"]},date_published:{selectors:[["time.updated[datetime]","datetime"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},dek:{selectors:[]},next_page_url:{selectors:[]},excerpt:{selectors:[]}},BroadwayWorldExtractor:{domain:"www.broadwayworld.com",title:{selectors:["h1.article-title"]},author:{selectors:["span[itemprop=author]"]},content:{selectors:["div[itemprop=articlebody]"],transforms:{},clean:[]},date_published:{selectors:[["meta[itemprop=datePublished]","value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},dek:{selectors:[]},next_page_url:{selectors:[]},excerpt:{selectors:[]}},ApartmentTherapyExtractor:ks,MediumExtractor:Es,WwwTmzComExtractor:{domain:"www.tmz.com",title:{selectors:[".post-title-breadcrumb","h1",".headline"]},author:"TMZ STAFF",date_published:{selectors:[".article-posted-date"],timezone:"America/Los_Angeles"},dek:{selectors:[]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".article-content",".all-post-body"],transforms:{},clean:[".lightbox-link"]}},WwwWashingtonpostComExtractor:{domain:"www.washingtonpost.com",title:{selectors:["h1","#topper-headline-wrapper"]},author:{selectors:[".pb-author-name"]},date_published:{selectors:[['.author-timestamp[itemprop="datePublished"]',"content"]]},dek:{selectors:[]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".article-body"],transforms:{"div.inline-content":function(e){return 0'))}},clean:[]}},WwwTheguardianComExtractor:{domain:"www.theguardian.com",title:{selectors:[".content__headline"]},author:{selectors:["p.byline"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:[".content__standfirst"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".content__article-body"],transforms:{},clean:[".hide-on-mobile",".inline-icon"]}},WwwSbnationComExtractor:{domain:"www.sbnation.com",title:{selectors:["h1.c-page-title"]},author:{selectors:[['meta[name="author"]',"value"]]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:["h2.c-entry-summary.p-dek"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.c-entry-content"],transforms:{},clean:[]}},WwwBloombergComExtractor:{domain:"www.bloomberg.com",title:{selectors:[".lede-headline","h1.article-title","h1.lede-text-only__hed"]},author:{selectors:[['meta[name="parsely-author"]',"value"],".byline-details__link",".bydek",".author"]},date_published:{selectors:[["time.published-at","datetime"],["time[datetime]","datetime"],['meta[name="date"]',"value"],['meta[name="parsely-pub-date"]',"value"]]},dek:{selectors:[]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".article-body__content",["section.copy-block"],".body-copy"],transforms:{},clean:[".inline-newsletter",".page-ad"]}},WwwBustleComExtractor:{domain:"www.bustle.com",title:{selectors:["h1.post-page__title"]},author:{selectors:["div.content-meta__author"]},date_published:{selectors:[["time.content-meta__published-date[datetime]","datetime"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".post-page__body"],transforms:{},clean:[]}},WwwNprOrgExtractor:{domain:"www.npr.org",title:{selectors:["h1",".storytitle"]},author:{selectors:["p.byline__name.byline__name--block"]},date_published:{selectors:[[".dateblock time[datetime]","datetime"],['meta[name="date"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"],['meta[name="twitter:image:src"]',"value"]]},content:{selectors:[".storytext"],transforms:{".bucketwrap.image":"figure",".bucketwrap.image .credit-caption":"figcaption"},clean:["div.enlarge_measure"]}},WwwRecodeNetExtractor:{domain:"www.recode.net",title:{selectors:["h1.c-page-title"]},author:{selectors:[['meta[name="author"]',"value"]]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:["h2.c-entry-summary.p-dek"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[["figure.e-image--hero",".c-entry-content"],".c-entry-content"],transforms:{},clean:[]}},QzComExtractor:{domain:"qz.com",title:{selectors:["header.item-header.content-width-responsive"]},author:{selectors:[['meta[name="author"]',"value"]]},date_published:{selectors:[".timestamp"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[["figure.featured-image",".item-body"],".item-body"],transforms:{},clean:[".article-aside",".progressive-image-thumbnail"]}},WwwDmagazineComExtractor:{domain:"www.dmagazine.com",title:{selectors:["h1.story__title"]},author:{selectors:[".story__info .story__info__item:first-child"]},date_published:{selectors:[".story__info"],timezone:"America/Chicago"},dek:{selectors:[".story__subhead"]},lead_image_url:{selectors:[["article figure a:first-child","href"]]},content:{selectors:[".story__content"],transforms:{},clean:[]}},WwwReutersComExtractor:{domain:"www.reuters.com",title:{selectors:["h1.article-headline"]},author:{selectors:[".author"]},date_published:{selectors:[['meta[name="og:article:published_time"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["#article-text"],transforms:{".article-subtitle":"h4"},clean:["#article-byline .author"]}},MashableComExtractor:{domain:"mashable.com",title:{selectors:["h1.title"]},author:{selectors:["span.author_name a"]},date_published:{selectors:[['meta[name="og:article:published_time"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["section.article-content.blueprint"],transforms:{".image-credit":"figcaption"},clean:[]}},WwwChicagotribuneComExtractor:{domain:"www.chicagotribune.com",title:{selectors:["h1.trb_ar_hl_t"]},author:{selectors:["span.trb_ar_by_nm_au"]},date_published:{selectors:[['meta[itemprop="datePublished"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.trb_ar_page"],transforms:{},clean:[]}},WwwVoxComExtractor:{domain:"www.vox.com",title:{selectors:["h1.c-page-title"]},author:{selectors:[['meta[name="author"]',"value"]]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:[".p-dek"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[["figure.e-image--hero",".c-entry-content"],".c-entry-content"],transforms:{"figure .e-image__image noscript":function(e){var t=e.html();e.parents(".e-image__image").find(".c-dynamic-image").replaceWith(t)},"figure .e-image__meta":"figcaption"},clean:[]}},NewsNationalgeographicComExtractor:{domain:"news.nationalgeographic.com",title:{selectors:["h1","h1.main-title"]},author:{selectors:[".byline-component__contributors b span"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]],format:"ddd MMM DD HH:mm:ss zz YYYY",timezone:"EST"},dek:{selectors:[".article__deck"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[[".parsys.content",".__image-lead__"],".content"],transforms:{".parsys.content":function(e,t){var n=e.find(".image.parbase.section").find(".picturefill").first().data("platform-src");n&&e.prepend(t('')))}},clean:[".pull-quote.pull-quote--large"]}},WwwNationalgeographicComExtractor:{domain:"www.nationalgeographic.com",title:{selectors:["h1","h1.main-title"]},author:{selectors:[".byline-component__contributors b span"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:[".article__deck"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[[".parsys.content",".__image-lead__"],".content"],transforms:{".parsys.content":function(e,t){var n=e.children().first();if(n.hasClass("imageGroup")){var r=n.find(".media--medium__container").children().first(),a=r.data("platform-image1-path"),i=r.data("platform-image2-path");i&&a&&e.prepend(t('
\n \n \n
')))}else{var o=e.find(".image.parbase.section").find(".picturefill").first().data("platform-src");o&&e.prepend(t('')))}}},clean:[".pull-quote.pull-quote--small"]}},WwwLatimesComExtractor:{domain:"www.latimes.com",title:{selectors:[".trb_ar_hl"]},author:{selectors:[['meta[name="author"]',"value"]]},date_published:{selectors:[['meta[itemprop="datePublished"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".trb_ar_main"],transforms:{".trb_ar_la":function(e){var t=e.find("figure");e.replaceWith(t)}},clean:[".trb_ar_by",".trb_ar_cr"]}},PagesixComExtractor:{domain:"pagesix.com",supportedDomains:["nypost.com"],title:{selectors:["h1 a"]},author:{selectors:[".byline"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:[['meta[name="description"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[["#featured-image-wrapper",".entry-content"],".entry-content"],transforms:{"#featured-image-wrapper":"figure",".wp-caption-text":"figcaption"},clean:[".modal-trigger"]}},ThefederalistpapersOrgExtractor:{domain:"thefederalistpapers.org",title:{selectors:["h1.entry-title"]},author:{selectors:["main span.entry-author-name"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".entry-content"],transforms:{},clean:[["p[style]"]]}},WwwCbssportsComExtractor:{domain:"www.cbssports.com",title:{selectors:[".article-headline"]},author:{selectors:[".author-name"]},date_published:{selectors:[[".date-original-reading-time time","datetime"]],timezone:"UTC"},dek:{selectors:[".article-subline"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".article"],transforms:{},clean:[]}},WwwMsnbcComExtractor:Ss,WwwThepoliticalinsiderComExtractor:{domain:"www.thepoliticalinsider.com",title:{selectors:[['meta[name="sailthru.title"]',"value"]]},author:{selectors:[['meta[name="sailthru.author"]',"value"]]},date_published:{selectors:[['meta[name="sailthru.date"]',"value"]],timezone:"America/New_York"},dek:{selectors:[]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div#article-body"],transforms:{},clean:[]}},WwwMentalflossComExtractor:{domain:"www.mentalfloss.com",title:{selectors:["h1.title",".title-group",".inner"]},author:{selectors:[".field-name-field-enhanced-authors"]},date_published:{selectors:[".date-display-single"],timezone:"America/New_York"},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.field.field-name-body"],transforms:{},clean:[]}},AbcnewsGoComExtractor:{domain:"abcnews.go.com",title:{selectors:[".article-header h1"]},author:{selectors:[".authors"],clean:[".author-overlay",".by-text"]},date_published:{selectors:[".timestamp"],timezone:"America/New_York"},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".article-copy"],transforms:{},clean:[]}},WwwNydailynewsComExtractor:{domain:"www.nydailynews.com",title:{selectors:["h1#ra-headline"]},author:{selectors:[['meta[name="parsely-author"]',"value"]]},date_published:{selectors:[['meta[name="sailthru.date"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["article#ra-body"],transforms:{},clean:["dl#ra-tags",".ra-related","a.ra-editor","dl#ra-share-bottom"]}},WwwCnbcComExtractor:{domain:"www.cnbc.com",title:{selectors:["h1.title","h1.ArticleHeader-headline"]},author:{selectors:[['meta[name="author"]',"value"]]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div#article_body.content","div.story","div.ArticleBody-articleBody"],transforms:{},clean:[]}},WwwPopsugarComExtractor:{domain:"www.popsugar.com",title:{selectors:["h2.post-title","title-text"]},author:{selectors:[['meta[name="article:author"]',"value"]]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["#content"],transforms:{},clean:[".share-copy-title",".post-tags",".reactions"]}},ObserverComExtractor:{domain:"observer.com",title:{selectors:["h1.entry-title"]},author:{selectors:[".author",".vcard"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:["h2.dek"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.entry-content"],transforms:{},clean:[]}},PeopleComExtractor:{domain:"people.com",title:{selectors:[['meta[name="og:title"]',"value"]]},author:{selectors:["a.author.url.fn"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.article-body__inner"],transforms:{},clean:[]}},WwwUsmagazineComExtractor:{domain:"www.usmagazine.com",title:{selectors:["header h1"]},author:{selectors:["a.article-byline.tracked-offpage"]},date_published:{timezone:"America/New_York",selectors:["time.article-published-date"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.article-body-inner"],transforms:{},clean:[".module-related"]}},WwwRollingstoneComExtractor:{domain:"www.rollingstone.com",title:{selectors:["h1.content-title"]},author:{selectors:["a.content-author.tracked-offpage"]},date_published:{selectors:["time.content-published-date"],timezone:"America/New_York"},dek:{selectors:[".content-description"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[[".lead-container",".article-content"],".article-content"],transforms:{},clean:[".module-related"]}},twofortysevensportsComExtractor:{domain:"247sports.com",title:{selectors:["title","article header h1"]},author:{selectors:[".author"]},date_published:{selectors:[["time[data-published]","data-published"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["section.body.article"],transforms:{},clean:[]}},UproxxComExtractor:{domain:"uproxx.com",title:{selectors:["div.post-top h1"]},author:{selectors:[".post-top .authorname"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".post-body"],transforms:{"div.image":"figure","div.image .wp-media-credit":"figcaption"},clean:[]}},WwwEonlineComExtractor:{domain:"www.eonline.com",title:{selectors:["h1.article__title"]},author:{selectors:[".entry-meta__author a"]},date_published:{selectors:[['meta[itemprop="datePublished"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[[".post-content section, .post-content div.post-content__image"]],transforms:{"div.post-content__image":"figure","div.post-content__image .image__credits":"figcaption"},clean:[]}},WwwMiamiheraldComExtractor:{domain:"www.miamiherald.com",title:{selectors:["h1.title"]},date_published:{selectors:["p.published-date"],timezone:"America/New_York"},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.dateline-storybody"],transforms:{},clean:[]}},WwwRefinery29ComExtractor:{domain:"www.refinery29.com",title:{selectors:["h1.title"]},author:{selectors:[".contributor"]},date_published:{selectors:[['meta[name="sailthru.date"]',"value"]],timezone:"America/New_York"},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[[".full-width-opener",".article-content"],".article-content",".body"],transforms:{"div.loading noscript":function(e){var t=e.html();e.parents(".loading").replaceWith(t)},".section-image":"figure",".section-image .content-caption":"figcaption",".section-text":"p"},clean:[".story-share"]}},WwwMacrumorsComExtractor:{domain:"www.macrumors.com",title:{selectors:["h1","h1.title"]},author:{selectors:[".author-url"]},date_published:{selectors:[".article .byline"],format:"dddd MMMM D, YYYY h:mm A zz",timezone:"America/Los_Angeles"},dek:{selectors:[['meta[name="description"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".article"],transforms:{},clean:[]}},WwwAndroidcentralComExtractor:{domain:"www.androidcentral.com",title:{selectors:["h1","h1.main-title"]},author:{selectors:[".meta-by"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:[['meta[name="og:description"]',"value"]]},lead_image_url:{selectors:[[".image-large","src"]]},content:{selectors:[".article-body"],transforms:{},clean:[".intro","blockquote"]}},WwwSiComExtractor:{domain:"www.si.com",title:{selectors:["h1","h1.headline"]},author:{selectors:[['meta[name="author"]',"value"]]},date_published:{selectors:[".timestamp"],timezone:"America/New_York"},dek:{selectors:[".quick-hit ul"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[["p",".marquee_large_2x",".component.image"]],transforms:{noscript:function(e){var t=e.children();return 1===t.length&&"img"===t.get(0).tagName?"figure":null}},clean:[[".inline-thumb",".primary-message",".description",".instructions"]]}},WwwRawstoryComExtractor:{domain:"www.rawstory.com",title:{selectors:[".blog-title"]},author:{selectors:[".blog-author a:first-of-type"]},date_published:{selectors:[".blog-author a:last-of-type"],timezone:"EST"},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".blog-content"],transforms:{},clean:[]}},WwwCnetComExtractor:{domain:"www.cnet.com",title:{selectors:[['meta[name="og:title"]',"value"]]},author:{selectors:["a.author"]},date_published:{selectors:["time"],timezone:"America/Los_Angeles"},dek:{selectors:[".article-dek"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[["img.__image-lead__",".article-main-body"],".article-main-body"],transforms:{"figure.image":function(e){var t=e.find("img");t.attr("width","100%"),t.attr("height","100%"),t.addClass("__image-lead__"),e.remove(".imgContainer").prepend(t)}},clean:[]}},WwwCinemablendComExtractor:{domain:"www.cinemablend.com",title:{selectors:[".story_title"]},author:{selectors:[".author"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]],timezone:"EST"},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div#wrap_left_content"],transforms:{},clean:[]}},WwwTodayComExtractor:{domain:"www.today.com",title:{selectors:["h1.entry-headline"]},author:{selectors:[['meta[name="author"]',"value"]]},date_published:{selectors:[['meta[name="DC.date.issued"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".entry-container"],transforms:{},clean:[".label-comment"]}},WwwHowtogeekComExtractor:{domain:"www.howtogeek.com",title:{selectors:["title"]},author:{selectors:["#authorinfobox a"]},date_published:{selectors:["#authorinfobox + div li"],timezone:"GMT"},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".thecontent"],transforms:{},clean:[]}},WwwAlComExtractor:{domain:"www.al.com",title:{selectors:[['meta[name="title"]',"value"]]},author:{selectors:[['meta[name="article_author"]',"value"]]},date_published:{selectors:[['meta[name="article_date_original"]',"value"]],timezone:"EST"},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".entry-content"],transforms:{},clean:[]}},WwwThepennyhoarderComExtractor:{domain:"www.thepennyhoarder.com",title:{selectors:[['meta[name="dcterms.title"]',"value"]]},author:{selectors:[['link[rel="author"]',"title"]]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[[".post-img",".post-text"],".post-text"],transforms:{},clean:[]}},WwwWesternjournalismComExtractor:{domain:"www.westernjournalism.com",title:{selectors:["title","h1.entry-title"]},author:{selectors:[['meta[name="author"]',"value"]]},date_published:{selectors:[['meta[name="DC.date.issued"]',"value"]]},dek:{selectors:[".subtitle"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.article-sharing.top + div"],transforms:{},clean:[".ad-notice-small"]}},FusionNetExtractor:{domain:"fusion.net",title:{selectors:[".post-title",".single-title",".headline"]},author:{selectors:[".show-for-medium .byline"]},date_published:{selectors:[["time.local-time","datetime"]]},dek:{selectors:[]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[[".post-featured-media",".article-content"],".article-content"],transforms:{".fusion-youtube-oembed":"figure"},clean:[]}},WwwAmericanowComExtractor:{domain:"www.americanow.com",title:{selectors:[".title",['meta[name="title"]',"value"]]},author:{selectors:[".byline"]},date_published:{selectors:[['meta[name="publish_date"]',"value"]]},dek:{selectors:[]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[[".article-content",".image",".body"],".body"],transforms:{},clean:[".article-video-wrapper",".show-for-small-only"]}},ScienceflyComExtractor:{domain:"sciencefly.com",title:{selectors:[".entry-title",".cb-entry-title",".cb-single-title"]},author:{selectors:["div.cb-author","div.cb-author-title"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:[]},lead_image_url:{selectors:[["div.theiaPostSlider_slides img","src"]]},content:{selectors:["div.theiaPostSlider_slides"],transforms:{},clean:[]}},HellogigglesComExtractor:{domain:"hellogiggles.com",title:{selectors:[".title"]},author:{selectors:[".author-link"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".entry-content"],transforms:{},clean:[]}},ThoughtcatalogComExtractor:{domain:"thoughtcatalog.com",title:{selectors:["h1.title",['meta[name="og:title"]',"value"]]},author:{selectors:["div.col-xs-12.article_header div.writer-container.writer-container-inline.writer-no-avatar h4.writer-name","h1.writer-name"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".entry.post"],transforms:{},clean:[".tc_mark"]}},WwwNjComExtractor:{domain:"www.nj.com",title:{selectors:[['meta[name="title"]',"value"]]},author:{selectors:[['meta[name="article_author"]',"value"]]},date_published:{selectors:[['meta[name="article_date_original"]',"value"]],timezone:"America/New_York"},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".entry-content"],transforms:{},clean:[]}},WwwInquisitrComExtractor:{domain:"www.inquisitr.com",title:{selectors:["h1.entry-title.story--header--title"]},author:{selectors:["div.story--header--author"]},date_published:{selectors:[['meta[name="datePublished"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["article.story",".entry-content."],transforms:{},clean:[".post-category",".story--header--socials",".story--header--content"]}},WwwNbcnewsComExtractor:{domain:"www.nbcnews.com",title:{selectors:["div.article-hed h1"]},author:{selectors:["span.byline_author"]},date_published:{selectors:[[".flag_article-wrapper time.timestamp_article[datetime]","datetime"],".flag_article-wrapper time"],timezone:"America/New_York"},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.article-body"],transforms:{},clean:[]}},FortuneComExtractor:{domain:"fortune.com",title:{selectors:["h1"]},author:{selectors:[['meta[name="author"]',"value"]]},date_published:{selectors:[".MblGHNMJ"],timezone:"UTC"},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[["picture","article.row"],"article.row"],transforms:{},clean:[]}},WwwLinkedinComExtractor:{domain:"www.linkedin.com",title:{selectors:[".article-title","h1"]},author:{selectors:[['meta[name="article:author"]',"value"],".entity-name a[rel=author]"]},date_published:{selectors:[['time[itemprop="datePublished"]',"datetime"]],timezone:"America/Los_Angeles"},dek:{selectors:[]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[["header figure",".prose"],".prose"],transforms:{},clean:[".entity-image"]}},ObamawhitehouseArchivesGovExtractor:{domain:"obamawhitehouse.archives.gov",supportedDomains:["whitehouse.gov"],title:{selectors:["h1",".pane-node-title"]},author:{selectors:[".blog-author-link",".node-person-name-link"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:[".field-name-field-forall-summary"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{defaultCleaner:!1,selectors:["div#content-start",".pane-node-field-forall-body"],transforms:{},clean:[".pane-node-title",".pane-custom.pane-1"]}},WwwOpposingviewsComExtractor:{domain:"www.opposingviews.com",title:{selectors:["h1.title"]},author:{selectors:["div.date span span a"]},date_published:{selectors:[['meta[name="publish_date"]',"value"]]},dek:{selectors:[]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".article-content"],transforms:{},clean:[".show-for-small-only"]}},WwwProspectmagazineCoUkExtractor:{domain:"www.prospectmagazine.co.uk",title:{selectors:[".page-title"]},author:{selectors:[".aside_author .title"]},date_published:{selectors:[".post-info"],timezone:"Europe/London"},dek:{selectors:[".page-subtitle"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["article .post_content"],transforms:{},clean:[]}},ForwardComExtractor:{domain:"forward.com",title:{selectors:[['meta[name="og:title"]',"value"]]},author:{selectors:[".author-name",['meta[name="sailthru.author"]',"value"]]},date_published:{selectors:[['meta[name="date"]',"value"]]},dek:{selectors:[]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[[".post-item-media-wrap",".post-item p"]],transforms:{},clean:[".donate-box",".message",".subtitle"]}},WwwQdailyComExtractor:{domain:"www.qdaily.com",title:{selectors:["h2","h2.title"]},author:{selectors:[".name"]},date_published:{selectors:[[".date.smart-date","data-origindate"]]},dek:{selectors:[".excerpt"]},lead_image_url:{selectors:[[".article-detail-hd img","src"]]},content:{selectors:[".detail"],transforms:{},clean:[".lazyload",".lazylad",".lazylood"]}},GothamistComExtractor:{domain:"gothamist.com",supportedDomains:["chicagoist.com","laist.com","sfist.com","shanghaiist.com","dcist.com"],title:{selectors:["h1",".entry-header h1"]},author:{selectors:[".author"]},date_published:{selectors:["abbr","abbr.published"],timezone:"America/New_York"},dek:{selectors:[null]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".entry-body"],transforms:{"div.image-none":"figure",".image-none i":"figcaption","div.image-left":"figure",".image-left i":"figcaption","div.image-right":"figure",".image-right i":"figcaption"},clean:[".image-none br",".image-left br",".image-right br",".galleryEase"]}},WwwFoolComExtractor:{domain:"www.fool.com",title:{selectors:["h1"]},author:{selectors:[".author-inline .author-name"]},date_published:{selectors:[['meta[name="date"]',"value"]]},dek:{selectors:["header h2"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".article-content"],transforms:{".caption img":function(e){var t=e.attr("src");e.parent().replaceWith('
'))},".caption":"figcaption"},clean:["#pitch"]}},WwwSlateComExtractor:{domain:"www.slate.com",title:{selectors:[".hed","h1"]},author:{selectors:["a[rel=author]"]},date_published:{selectors:[".pub-date"],timezone:"America/New_York"},dek:{selectors:[".dek"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".body"],transforms:{},clean:[".about-the-author",".pullquote",".newsletter-signup-component",".top-comment"]}},IciRadioCanadaCaExtractor:{domain:"ici.radio-canada.ca",title:{selectors:["h1"]},author:{selectors:[['meta[name="dc.creator"]',"value"]]},date_published:{selectors:[['meta[name="dc.date.created"]',"value"]],timezone:"America/New_York"},dek:{selectors:[".bunker-component.lead"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[[".main-multimedia-item",".news-story-content"]],transforms:{},clean:[]}},WwwFortinetComExtractor:{domain:"www.fortinet.com",title:{selectors:["h1"]},author:{selectors:[".b15-blog-meta__author"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.responsivegrid.aem-GridColumn.aem-GridColumn--default--12"],transforms:{noscript:function(e){var t=e.children();return 1===t.length&&"img"===t.get(0).tagName?"figure":null}}}},WwwFastcompanyComExtractor:{domain:"www.fastcompany.com",title:{selectors:["h1"]},author:{selectors:[".post__by"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:[".post__deck"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".post__article"]}},BlisterreviewComExtractor:{domain:"blisterreview.com",title:{selectors:[['meta[name="og:title"]',"value"],"h1.entry-title"]},author:{selectors:["span.author-name"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"],["time.entry-date","datetime"],['meta[itemprop="datePublished"]',"content"]]},dek:{selectors:[]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"],['meta[property="og:image"]',"content"],['meta[itemprop="image"]',"content"],['meta[name="twitter:image"]',"content"],["img.attachment-large","src"]]},content:{selectors:[[".elementor-section-wrap",".elementor-text-editor > p, .elementor-text-editor > ul > li, .attachment-large, .wp-caption-text"]],transforms:{figcaption:"p"},clean:[".comments-area"]}},NewsMynaviJpExtractor:{domain:"news.mynavi.jp",title:{selectors:[['meta[name="og:title"]',"value"]]},author:{selectors:["main div.article-author a.article-author__name"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:[['meta[name="og:description"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["main article div"],transforms:{img:function(e){var t=e.attr("data-original");""!==t&&e.attr("src",t)}},clean:[]}},ClinicaltrialsGovExtractor:{domain:"clinicaltrials.gov",title:{selectors:["h1.tr-solo_record"]},author:{selectors:["div#sponsor.tr-info-text"]},date_published:{selectors:['div:has(> span.term[data-term="Last Update Posted"])']},content:{selectors:["div#tab-body"],transforms:{},clean:[".usa-alert> img"]}},GithubComExtractor:{domain:"github.com",title:{selectors:[['meta[name="og:title"]',"value"]]},author:{selectors:[]},date_published:{selectors:[['span[itemprop="dateModified"] relative-time',"datetime"]]},dek:{selectors:['span[itemprop="about"]']},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[["#readme article"]],transforms:{},clean:[]}},WwwRedditComExtractor:{domain:"www.reddit.com",title:{selectors:['div[data-test-id="post-content"] h2']},author:{selectors:['div[data-test-id="post-content"] a[href*="user/"]']},date_published:{selectors:['div[data-test-id="post-content"] a[data-click-id="timestamp"]']},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[['div[data-test-id="post-content"] p'],['div[data-test-id="post-content"] a[target="_blank"]:not([data-click-id="timestamp"])','div[data-test-id="post-content"] div[data-click-id="media"]'],['div[data-test-id="post-content"] div[data-click-id="media"]'],['div[data-test-id="post-content"] a[target="_blank"]:not([data-click-id="timestamp"])'],'div[data-test-id="post-content"]'],transforms:{'div[role="img"]':function(e){var t=e.find("img"),n=e.css("background-image");return 1===t.length&&n?(t.attr("src",n.match(/\((.*?)\)/)[1].replace(/('|")/g,"")),t):e}},clean:[".icon"]}},OtrsComExtractor:{domain:"otrs.com",title:{selectors:["#main article h1"]},author:{selectors:["div.dateplusauthor a"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:{selectors:[['meta[name="og:description"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["#main article"],defaultCleaner:!1,transforms:{},clean:["div.dateplusauthor","div.gr-12.push-6.footershare","#atftbx","div.category-modul"]}},WwwOssnewsJpExtractor:{domain:"www.ossnews.jp",title:{selectors:["#alpha-block h1.hxnewstitle"]},author:null,date_published:{selectors:["p.fs12"],format:"YYYY年MM月DD日 HH:mm",timezone:"Asia/Tokyo"},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["#alpha-block .section:has(h1.hxnewstitle)"],defaultCleaner:!1,transforms:{},clean:[]}},BuzzapJpExtractor:{domain:"buzzap.jp",title:{selectors:["h1.entry-title"]},author:null,date_published:{selectors:[["time.entry-date","datetime"]]},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.ctiframe"],defaultCleaner:!1,transforms:{},clean:[]}},WwwAsahiComExtractor:{domain:"www.asahi.com",title:{selectors:[".ArticleTitle h1"]},author:{selectors:[['meta[name="article:author"]',"value"]]},date_published:{selectors:[['meta[name="pubdate"]',"value"]]},dek:null,excerpt:{selectors:[['meta[name="og:description"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["#MainInner div.ArticleBody"],defaultCleaner:!1,transforms:{},clean:["div.AdMod","div.LoginSelectArea"]}},WwwSanwaCoJpExtractor:{domain:"www.sanwa.co.jp",title:{selectors:["#newsContent h1"]},author:null,date_published:{selectors:["p.date"],format:"YYYY.MM.DD",timezone:"Asia/Tokyo"},dek:{selectors:[['meta[name="og:description"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["#newsContent"],defaultCleaner:!1,transforms:{},clean:["#smartphone","div.sns_box","div.contentFoot"]}},WwwElecomCoJpExtractor:{domain:"www.elecom.co.jp",title:{selectors:["title"]},author:null,date_published:{selectors:["p.section-last"],format:"YYYY.MM.DD",timezone:"Asia/Tokyo"},dek:null,lead_image_url:null,content:{selectors:["td.TableMain2"],defaultCleaner:!1,transforms:{table:function(e){e.attr("width","auto")}},clean:[]}},ScanNetsecurityNeJpExtractor:{domain:"scan.netsecurity.ne.jp",title:{selectors:["header.arti-header h1.head"]},author:null,date_published:{selectors:[['meta[name="article:modified_time"]',"value"]]},dek:{selectors:["header.arti-header p.arti-summary"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.arti-content.arti-content--thumbnail"],defaultCleaner:!1,transforms:{},clean:["aside.arti-giga"]}},JvndbJvnJpExtractor:{domain:"jvndb.jvn.jp",title:{selectors:["title"]},author:null,date_published:{selectors:["div.modifytxt:nth-child(2)"],format:"YYYY/MM/DD",timezone:"Asia/Tokyo"},dek:null,lead_image_url:null,content:{selectors:["#news-list"],defaultCleaner:!1,transforms:{},clean:[]}},GeniusComExtractor:Ms,WwwJnsaOrgExtractor:{domain:"www.jnsa.org",title:{selectors:["#wgtitle h2"]},author:null,date_published:null,dek:null,excerpt:{selectors:[['meta[name="og:description"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["#main_area"],transforms:{},clean:["#pankuzu","#side"]}},PhpspotOrgExtractor:{domain:"phpspot.org",title:{selectors:["h3.hl"]},author:null,date_published:{selectors:["h4.hl"],format:"YYYY年MM月DD日",timezone:"Asia/Tokyo"},dek:null,lead_image_url:null,content:{selectors:["div.entrybody"],defaultCleaner:!1,transforms:{},clean:[]}},WwwInfoqComExtractor:{domain:"www.infoq.com",title:{selectors:["h1.heading"]},author:{selectors:["div.widget.article__authors"]},date_published:{selectors:[".article__readTime.date"],format:"YYYY年MM月DD日",timezone:"Asia/Tokyo"},dek:{selectors:[['meta[name="og:description"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.article__data"],defaultCleaner:!1,transforms:{},clean:[]}},WwwMoongiftJpExtractor:{domain:"www.moongift.jp",title:{selectors:["h1.title a"]},author:null,date_published:{selectors:["ul.meta li:not(.social):first-of-type"],timezone:"Asia/Tokyo"},dek:{selectors:[['meta[name="og:description"]',"value"]]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["#main"],transforms:{},clean:["ul.mg_service.cf"]}},WwwItmediaCoJpExtractor:{domain:"www.itmedia.co.jp",supportedDomains:["www.atmarkit.co.jp","techtarget.itmedia.co.jp","nlab.itmedia.co.jp"],title:{selectors:["#cmsTitle h1"]},author:{selectors:["#byline"]},date_published:{selectors:[['meta[name="article:modified_time"]',"value"]]},dek:{selectors:["#cmsAbstract h2"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["#cmsBody"],defaultCleaner:!1,transforms:{},clean:["#snsSharebox"]}},WwwPublickey1JpExtractor:{domain:"www.publickey1.jp",title:{selectors:["h1"]},author:{selectors:["#subcol p:has(img)"]},date_published:{selectors:["div.pubdate"],format:"YYYY年MM月DD日",timezone:"Asia/Tokyo"},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["#maincol"],defaultCleaner:!1,transforms:{},clean:["#breadcrumbs","div.sbm","div.ad_footer"]}},TakagihiromitsuJpExtractor:{domain:"takagi-hiromitsu.jp",title:{selectors:["h3"]},author:{selectors:[['meta[name="author"]',"value"]]},date_published:{selectors:[['meta[http-equiv="Last-Modified"]',"value"]]},dek:null,lead_image_url:null,content:{selectors:["div.body"],defaultCleaner:!1,transforms:{},clean:[]}},BookwalkerJpExtractor:{domain:"bookwalker.jp",title:{selectors:["h1.main-heading"]},author:{selectors:["div.authors"]},date_published:{selectors:[".work-info .work-detail:first-of-type .work-detail-contents:last-of-type"],timezone:"Asia/Tokyo"},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[["div.main-info","div.main-cover-inner"]],defaultCleaner:!1,transforms:{},clean:["span.label.label--trial","dt.info-head.info-head--coin","dd.info-contents.info-contents--coin","div.info-notice.fn-toggleClass"]}},WwwYomiuriCoJpExtractor:{domain:"www.yomiuri.co.jp",title:{selectors:["h1.title-article.c-article-title"]},author:null,date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.p-main-contents"],transforms:{},clean:[]}},JapanCnetComExtractor:{domain:"japan.cnet.com",title:{selectors:[".leaf-headline-ttl"]},author:{selectors:[".writer"]},date_published:{selectors:[".date"],format:"YYYY年MM月DD日 HH時mm分",timezone:"Asia/Tokyo"},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.article_body"],transforms:{},clean:[]}},DeadlineComExtractor:{domain:"deadline.com",title:{selectors:["h1"]},author:{selectors:["section.author h3"]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.a-article-grid__main.pmc-a-grid article.pmc-a-grid-item"],transforms:{".embed-twitter":function(e){var t=e.html();e.replaceWith(t)}},clean:[]}},WwwGizmodoJpExtractor:{domain:"www.gizmodo.jp",title:{selectors:["h1.p-post-title"]},author:{selectors:["li.p-post-AssistAuthor"]},date_published:{selectors:[["li.p-post-AssistTime time","datetime"]]},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["article.p-post"],transforms:{"img.p-post-thumbnailImage":function(e){var t=e.attr("src");e.attr("src",t.replace(/^.*=%27/,"").replace(/%27;$/,""))}},clean:["h1.p-post-title","ul.p-post-Assist"]}},GetnewsJpExtractor:{domain:"getnews.jp",title:{selectors:["article h1"]},author:{selectors:["span.prof"]},date_published:{selectors:[["ul.cattag-top time","datetime"]]},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.post-bodycopy"],transforms:{},clean:[]}},WwwLifehackerJpExtractor:{domain:"www.lifehacker.jp",title:{selectors:["h1.lh-summary-title"]},author:{selectors:["p.lh-entryDetailInner--credit"]},date_published:{selectors:[["div.lh-entryDetail-header time","datetime"]]},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.lh-entryDetail-body"],transforms:{"img.lazyload":function(e){var t=e.attr("src");e.attr("src",t.replace(/^.*=%27/,"").replace(/%27;$/,""))}},clean:["p.lh-entryDetailInner--credit"]}},SectIijAdJpExtractor:{domain:"sect.iij.ad.jp",title:{selectors:["h3"]},author:{selectors:["dl.entrydate dd"]},date_published:{selectors:["dl.entrydate dd"],format:"YYYY年MM月DD日",timezone:"Asia/Tokyo"},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["#article"],transforms:{},clean:["dl.entrydate"]}},WwwOreillyCoJpExtractor:{domain:"www.oreilly.co.jp",title:{selectors:["h3"]},author:{selectors:['li[itemprop="author"]']},date_published:{selectors:[['meta[itemprop="datePublished"]',"value"]],timezone:"Asia/Tokyo"},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["#content"],defaultCleaner:!1,transforms:{},clean:[".social-tools"]}},WwwIpaGoJpExtractor:{domain:"www.ipa.go.jp",title:{selectors:["h1"]},author:null,date_published:{selectors:["p.ipar_text_right"],format:"YYYY年M月D日",timezone:"Asia/Tokyo"},dek:null,lead_image_url:null,content:{selectors:["#ipar_main"],defaultCleaner:!1,transforms:{},clean:["p.ipar_text_right"]}},WeeklyAsciiJpExtractor:{domain:"weekly.ascii.jp",title:{selectors:['h1[itemprop="headline"]']},author:{selectors:["p.author"]},date_published:{selectors:[['meta[name="odate"]',"value"]]},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.article"],transforms:{},clean:[]}},TechlogIijAdJpExtractor:{domain:"techlog.iij.ad.jp",title:{selectors:["h1.entry-title"]},author:{selectors:['a[rel="author"]']},date_published:{selectors:[["time.entry-date","datetime"]]},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.entry-content"],defaultCleaner:!1,transforms:{},clean:[]}},WiredJpExtractor:Ts,JapanZdnetComExtractor:{domain:"japan.zdnet.com",title:{selectors:["h1"]},author:{selectors:[['meta[name="cXenseParse:author"]',"value"]]},date_published:{selectors:[['meta[name="article:published_time"]',"value"]]},dek:null,lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:["div.article_body"],transforms:{},clean:[]}},WwwRbbtodayComExtractor:{domain:"www.rbbtoday.com",title:{selectors:["h1"]},author:{selectors:[".writer.writer-name"]},date_published:{selectors:[["header time","datetime"]]},dek:{selectors:[".arti-summary"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".arti-content"],transforms:{},clean:[".arti-giga"]}},WwwLemondeFrExtractor:{domain:"www.lemonde.fr",title:{selectors:["h1.article__title"]},author:{selectors:[".author__name"]},date_published:{selectors:[['meta[name="og:article:published_time"]',"value"]]},dek:{selectors:[".article__desc"]},lead_image_url:{selectors:[['meta[name="og:image"]',"value"]]},content:{selectors:[".article__content"],transforms:{},clean:[]}},WwwPhoronixComExtractor:{domain:"www.phoronix.com",title:{selectors:["article header"]},author:{selectors:[".author a:first-child"]},date_published:{selectors:[".author"],format:"D MMMM YYYY at hh:mm",timezone:"America/New_York"},dek:null,lead_image_url:null,content:{selectors:[".content"],transforms:{},clean:[]}},PitchforkComExtractor:{domain:"pitchfork.com",title:{selectors:["title"]},author:{selectors:[".authors-detail__display-name"]},date_published:{selectors:[[".pub-date","datetime"]]},dek:{selectors:[".review-detail__abstract"]},lead_image_url:{selectors:[[".single-album-tombstone__art img","src"]]},content:{selectors:[".review-detail__text"]},extend:{score:{selectors:[".score"]}}},BiorxivOrgExtractor:{domain:"biorxiv.org",title:{selectors:["h1#page-title"]},author:{selectors:["div.highwire-citation-biorxiv-article-top > div.highwire-cite-authors"]},content:{selectors:["div#abstract-1"],transforms:{},clean:[]}},EpaperZeitDeExtractor:{domain:"epaper.zeit.de",title:{selectors:["p.title"]},author:{selectors:[".article__author"]},date_published:null,excerpt:{selectors:["subtitle"]},lead_image_url:null,content:{selectors:[".article"],transforms:{"p.title":"h1",".article__author":"p",byline:"p",linkbox:"p"},clean:["image-credits","box[type=citation]"]}}}),Ds=lt(Cs).reduce(function(e,t){var n=Cs[t];return pt({},e,_s(n))},{}),Os=e(function(e,t){(function(){var r="‎",a="‏",m="ltr",g="rtl",i="bidi",o="",v={Hebrew:["0590","05FF"],Arabic:["0600","06FF"],NKo:["07C0","07FF"],Syriac:["0700","074F"],Thaana:["0780","07BF"],Tifinagh:["2D30","2D7F"]};function e(e){if(void 0===e)throw new Error("TypeError missing argument");if("string"!=typeof e)throw new Error("TypeError getDirection expects strings");if(""===e)return o;if(-1>>0,r=0;rke(e)?(i=e+1,c-ke(e)):(i=e,c),{year:i,dayOfYear:o}}function Be(e,t,n){var r,a,i=He(e.year(),t,n),o=Math.floor((e.dayOfYear()-i-1)/7)+1;return o<1?(a=e.year()-1,r=o+Ge(a,t,n)):o>Ge(e.year(),t,n)?(r=o-Ge(e.year(),t,n),a=e.year()+1):(a=e.year(),r=o),{week:r,year:a}}function Ge(e,t,n){var r=He(e,t,n),a=He(e+1,t,n);return(ke(e)-r+a)/7}F("w",["ww",2],"wo","week"),F("W",["WW",2],"Wo","isoWeek"),j("week","w"),j("isoWeek","W"),L("week",5),L("isoWeek",5),ce("w",X),ce("ww",X,$),ce("W",X),ce("WW",X,$),pe(["w","ww","W","WW"],function(e,t,n,r){t[r.substr(0,1)]=x(e)}),F("d",0,"do","day"),F("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),F("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),F("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),F("e",0,0,"weekday"),F("E",0,0,"isoWeekday"),j("day","d"),j("weekday","e"),j("isoWeekday","E"),L("day",11),L("weekday",11),L("isoWeekday",11),ce("d",X),ce("e",X),ce("E",X),ce("dd",function(e,t){return t.weekdaysMinRegex(e)}),ce("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ce("dddd",function(e,t){return t.weekdaysRegex(e)}),pe(["dd","ddd","dddd"],function(e,t,n,r){var a=n._locale.weekdaysParse(e,r,n._strict);null!=a?t.d=a:y(n).invalidWeekday=e}),pe(["d","e","E"],function(e,t,n,r){t[r]=x(e)});var Ue="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),$e="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ve="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Je(e,t,n){var r,a,i,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)i=h([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(i,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(i,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(i,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(a=Se.call(this._weekdaysParse,o))?a:null:"ddd"===t?-1!==(a=Se.call(this._shortWeekdaysParse,o))?a:null:-1!==(a=Se.call(this._minWeekdaysParse,o))?a:null:"dddd"===t?-1!==(a=Se.call(this._weekdaysParse,o))?a:-1!==(a=Se.call(this._shortWeekdaysParse,o))?a:-1!==(a=Se.call(this._minWeekdaysParse,o))?a:null:"ddd"===t?-1!==(a=Se.call(this._shortWeekdaysParse,o))?a:-1!==(a=Se.call(this._weekdaysParse,o))?a:-1!==(a=Se.call(this._minWeekdaysParse,o))?a:null:-1!==(a=Se.call(this._minWeekdaysParse,o))?a:-1!==(a=Se.call(this._weekdaysParse,o))?a:-1!==(a=Se.call(this._shortWeekdaysParse,o))?a:null}var Ke=se,Xe=se,Ze=se;function Qe(){function e(e,t){return t.length-e.length}var t,n,r,a,i,o=[],s=[],u=[],c=[];for(t=0;t<7;t++)n=h([2e3,1]).day(t),r=this.weekdaysMin(n,""),a=this.weekdaysShort(n,""),i=this.weekdays(n,""),o.push(r),s.push(a),u.push(i),c.push(r),c.push(a),c.push(i);for(o.sort(e),s.sort(e),u.sort(e),c.sort(e),t=0;t<7;t++)s[t]=fe(s[t]),u[t]=fe(u[t]),c[t]=fe(c[t]);this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function et(){return this.hours()%12||12}function tt(e,t){F(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function nt(e,t){return t._meridiemParse}F("H",["HH",2],0,"hour"),F("h",["hh",2],0,et),F("k",["kk",2],0,function(){return this.hours()||24}),F("hmm",0,0,function(){return""+et.apply(this)+Y(this.minutes(),2)}),F("hmmss",0,0,function(){return""+et.apply(this)+Y(this.minutes(),2)+Y(this.seconds(),2)}),F("Hmm",0,0,function(){return""+this.hours()+Y(this.minutes(),2)}),F("Hmmss",0,0,function(){return""+this.hours()+Y(this.minutes(),2)+Y(this.seconds(),2)}),tt("a",!0),tt("A",!1),j("hour","h"),L("hour",13),ce("a",nt),ce("A",nt),ce("H",X),ce("h",X),ce("k",X),ce("HH",X,$),ce("hh",X,$),ce("kk",X,$),ce("hmm",Z),ce("hmmss",Q),ce("Hmm",Z),ce("Hmmss",Q),de(["H","HH"],ye),de(["k","kk"],function(e,t,n){var r=x(e);t[ye]=24===r?0:r}),de(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),de(["h","hh"],function(e,t,n){t[ye]=x(e),y(n).bigHour=!0}),de("hmm",function(e,t,n){var r=e.length-2;t[ye]=x(e.substr(0,r)),t[_e]=x(e.substr(r)),y(n).bigHour=!0}),de("hmmss",function(e,t,n){var r=e.length-4,a=e.length-2;t[ye]=x(e.substr(0,r)),t[_e]=x(e.substr(r,2)),t[be]=x(e.substr(a)),y(n).bigHour=!0}),de("Hmm",function(e,t,n){var r=e.length-2;t[ye]=x(e.substr(0,r)),t[_e]=x(e.substr(r))}),de("Hmmss",function(e,t,n){var r=e.length-4,a=e.length-2;t[ye]=x(e.substr(0,r)),t[_e]=x(e.substr(r,2)),t[be]=x(e.substr(a))});var rt,at=Te("Hours",!0),it={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ne,monthsShort:ze,week:{dow:0,doy:6},weekdays:Ue,weekdaysMin:Ve,weekdaysShort:$e,meridiemParse:/[ap]\.?m?\.?/i},ot={},st={};function ut(e){return e?e.toLowerCase().replace("_","-"):e}function ct(e){var t=null;if(!ot[e]&&Un&&Un.exports)try{t=rt._abbr;var n=$n;n("./locale/"+e),lt(t)}catch(e){}return ot[e]}function lt(e,t){var n;return e&&((n=i(t)?ht(e):ft(e,t))?rt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),rt._abbr}function ft(e,t){if(null===t)return delete ot[e],null;var n,r=it;if(t.abbr=e,null!=ot[e])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=ot[e]._config;else if(null!=t.parentLocale)if(null!=ot[t.parentLocale])r=ot[t.parentLocale]._config;else{if(null==(n=ct(t.parentLocale)))return st[t.parentLocale]||(st[t.parentLocale]=[]),st[t.parentLocale].push({name:e,config:t}),null;r=n._config}return ot[e]=new D(C(r,t)),st[e]&&st[e].forEach(function(e){ft(e.name,e.config)}),lt(e),ot[e]}function ht(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return rt;if(!s(e)){if(t=ct(e))return t;e=[e]}return function(e){for(var t,n,r,a,i=0;i=t&&k(a,n,!0)>=t-1)break;t--}i++}return rt}(e)}function dt(e){var t,n=e._a;return n&&-2===y(e).overflow&&(t=n[ge]<0||11Oe(n[me],n[ge])?ve:n[ye]<0||24Ge(n,i,o)?y(e)._overflowWeeks=!0:null!=u?y(e)._overflowWeekday=!0:(s=Fe(n,r,a,i,o),e._a[me]=s.year,e._dayOfYear=s.dayOfYear)}(e),null!=e._dayOfYear&&(i=pt(e._a[me],r[me]),(e._dayOfYear>ke(i)||0===e._dayOfYear)&&(y(e)._overflowDayOfYear=!0),n=Ie(i,0,e._dayOfYear),e._a[ge]=n.getUTCMonth(),e._a[ve]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=u[t]=r[t];for(;t<7;t++)e._a[t]=u[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ye]&&0===e._a[_e]&&0===e._a[be]&&0===e._a[we]&&(e._nextDay=!0,e._a[ye]=0),e._d=(e._useUTC?Ie:function(e,t,n,r,a,i,o){var s=new Date(e,t,n,r,a,i,o);return e<100&&0<=e&&isFinite(s.getFullYear())&&s.setFullYear(e),s}).apply(null,u),a=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ye]=24),e._w&&void 0!==e._w.d&&e._w.d!==a&&(y(e).weekdayMismatch=!0)}}var gt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,vt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,yt=/Z|[+-]\d\d(?::?\d\d)?/,_t=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],bt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],wt=/^\/?Date\((\-?\d+)/i;function At(e){var t,n,r,a,i,o,s=e._i,u=gt.exec(s)||vt.exec(s);if(u){for(y(e).iso=!0,t=0,n=_t.length;tn.valueOf():n.valueOf()this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},hn.isLocal=function(){return!!this.isValid()&&!this._isUTC},hn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},hn.isUtc=Ft,hn.isUTC=Ft,hn.zoneAbbr=function(){return this._isUTC?"UTC":""},hn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},hn.dates=n("dates accessor is deprecated. Use date instead.",on),hn.months=n("months accessor is deprecated. Use month instead",Re),hn.years=n("years accessor is deprecated. Use year instead",Me),hn.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),hn.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!i(this._isDSTShifted))return this._isDSTShifted;var e={};if(_(e,this),(e=Tt(e))._a){var t=e._isUTC?h(e._a):Dt(e._a);this._isDSTShifted=this.isValid()&&0= 2.6.0. You are using Moment.js "+i.version+". See momentjs.com"),p.prototype={_set:function(e){this.name=e.name,this.abbrs=e.abbrs,this.untils=e.untils,this.offsets=e.offsets,this.population=e.population},_index:function(e){var t,n=+e,r=this.untils;for(t=0;t= 2.9.0. You are using Moment.js "+i.version+"."),i.defaultZone=e?A(e):null,i};var j=i.momentProperties;return"[object Array]"===Object.prototype.toString.call(j)?(j.push("_z"),j.push("_a")):j&&(j._z=null),k({version:"2019b",zones:["Africa/Abidjan|GMT|0|0||48e5","Africa/Nairobi|EAT|-30|0||47e5","Africa/Algiers|CET|-10|0||26e5","Africa/Lagos|WAT|-10|0||17e6","Africa/Maputo|CAT|-20|0||26e5","Africa/Cairo|EET EEST|-20 -30|01010|1M2m0 gL0 e10 mn0|15e6","Africa/Casablanca|+00 +01|0 -10|010101010101010101010101010101010101|1H3C0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 e00 28M0 e00 2600 gM0|32e5","Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|11e6","Africa/Johannesburg|SAST|-20|0||84e5","Africa/Khartoum|EAT CAT|-30 -20|01|1Usl0|51e5","Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00","Africa/Tripoli|EET CET CEST|-20 -10 -20|0120|1IlA0 TA0 1o00|11e5","Africa/Windhoek|CAT WAT|-20 -10|0101010101010|1GQo0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|HST HDT|a0 90|01010101010101010101010|1GIc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|326","America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1GIb0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|30e4","America/Santo_Domingo|AST|40|0||29e5","America/Araguaina|-03 -02|30 20|010|1IdD0 Lz0|14e4","America/Fortaleza|-03|30|0||34e5","America/Asuncion|-03 -04|30 40|01010101010101010101010|1GTf0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0|28e5","America/Panama|EST|50|0||15e5","America/Mexico_City|CST CDT|60 50|01010101010101010101010|1GQw0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6","America/Bahia|-02 -03|20 30|01|1GCq0|27e5","America/Managua|CST|60|0||22e5","America/La_Paz|-04|40|0||19e5","America/Lima|-05|50|0||11e6","America/Denver|MST MDT|70 60|01010101010101010101010|1GI90 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|26e5","America/Campo_Grande|-03 -04|30 40|0101010101010101|1GCr0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4","America/Cancun|CST CDT EST|60 50 50|01010102|1GQw0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|-0430 -04|4u 40|01|1QMT0|29e5","America/Chicago|CST CDT|60 50|01010101010101010101010|1GI80 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|92e5","America/Chihuahua|MST MDT|70 60|01010101010101010101010|1GQx0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4","America/Phoenix|MST|70|0||42e5","America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1GIa0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|15e6","America/New_York|EST EDT|50 40|01010101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|21e6","America/Rio_Branco|-04 -05|40 50|01|1KLE0|31e4","America/Fort_Nelson|PST PDT MST|80 70 70|01010102|1GIa0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Halifax|AST ADT|40 30|01010101010101010101010|1GI60 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|39e4","America/Godthab|-03 -02|30 20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|17e3","America/Grand_Turk|EST EDT AST|50 40 40|0101010121010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|37e2","America/Havana|CST CDT|50 40|01010101010101010101010|1GQt0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0|21e5","America/Metlakatla|PST AKST AKDT|80 90 80|01212120121212121|1PAa0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|14e2","America/Miquelon|-03 -02|30 20|01010101010101010101010|1GI50 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|61e2","America/Montevideo|-02 -03|20 30|01010101|1GI40 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Noronha|-02|20|0||30e2","America/Port-au-Prince|EST EDT|50 40|010101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|23e5","Antarctica/Palmer|-03 -04|30 40|010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40","America/Santiago|-03 -04|30 40|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|62e5","America/Sao_Paulo|-02 -03|20 30|0101010101010101|1GCq0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6","Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e4","America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1GI5u 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|11e4","Antarctica/Casey|+11 +08|-b0 -80|0101|1GAF0 blz0 3m10|10","Antarctica/Davis|+05 +07|-50 -70|01|1GAI0|70","Pacific/Port_Moresby|+10|-a0|0||25e4","Pacific/Guadalcanal|+11|-b0|0||11e4","Asia/Tashkent|+05|-50|0||23e5","Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5","Asia/Baghdad|+03|-30|0||66e5","Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|40","Asia/Dhaka|+06|-60|0||16e6","Asia/Amman|EET EEST|-20 -30|010101010101010101010|1GPy0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00|25e5","Asia/Kamchatka|+12|-c0|0||18e4","Asia/Baku|+04 +05|-40 -50|010101010|1GNA0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|+07|-70|0||15e6","Asia/Barnaul|+07 +06|-70 -60|010|1N7v0 3rd0","Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1GNy0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|22e5","Asia/Kuala_Lumpur|+08|-80|0||71e5","Asia/Kolkata|IST|-5u|0||15e6","Asia/Chita|+10 +08 +09|-a0 -80 -90|012|1N7s0 3re0|33e4","Asia/Ulaanbaatar|+08 +09|-80 -90|01010|1O8G0 1cJ0 1cP0 1cJ0|12e5","Asia/Shanghai|CST|-80|0||23e6","Asia/Colombo|+0530|-5u|0||22e5","Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1GPy0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5","Asia/Dili|+09|-90|0||19e4","Asia/Dubai|+04|-40|0||39e5","Asia/Famagusta|EET EEST +03|-20 -30 -30|0101010101201010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0","Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1GPy0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0|18e5","Asia/Hong_Kong|HKT|-80|0||73e5","Asia/Hovd|+07 +08|-70 -80|01010|1O8H0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|+09 +08|-90 -80|01|1N7t0|60e4","Europe/Istanbul|EET EEST +03|-20 -30 -30|01010101012|1GNB0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|WIB|-70|0||31e6","Asia/Jayapura|WIT|-90|0||26e4","Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1GPA0 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0|81e4","Asia/Kabul|+0430|-4u|0||46e5","Asia/Karachi|PKT|-50|0||24e6","Asia/Kathmandu|+0545|-5J|0||12e5","Asia/Yakutsk|+10 +09|-a0 -90|01|1N7s0|28e4","Asia/Krasnoyarsk|+08 +07|-80 -70|01|1N7u0|10e5","Asia/Magadan|+12 +10 +11|-c0 -a0 -b0|012|1N7q0 3Cq0|95e3","Asia/Makassar|WITA|-80|0||15e5","Asia/Manila|PST|-80|0||24e6","Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|35e5","Asia/Novosibirsk|+07 +06|-70 -60|010|1N7v0 4eN0|15e5","Asia/Omsk|+07 +06|-70 -60|01|1N7v0|12e5","Asia/Pyongyang|KST KST|-90 -8u|010|1P4D0 6BA0|29e5","Asia/Qyzylorda|+06 +05|-60 -50|01|1Xei0|73e4","Asia/Rangoon|+0630|-6u|0||48e5","Asia/Sakhalin|+11 +10|-b0 -a0|010|1N7r0 3rd0|58e4","Asia/Seoul|KST|-90|0||23e6","Asia/Srednekolymsk|+12 +11|-c0 -b0|01|1N7q0|35e2","Asia/Tehran|+0330 +0430|-3u -4u|01010101010101010101010|1GLUu 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6","Asia/Tokyo|JST|-90|0||38e6","Asia/Tomsk|+07 +06|-70 -60|010|1N7v0 3Qp0|10e5","Asia/Vladivostok|+11 +10|-b0 -a0|01|1N7r0|60e4","Asia/Yekaterinburg|+06 +05|-60 -50|01|1N7w0|14e5","Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|27e5","Atlantic/Cape_Verde|-01|10|0||50e4","Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1GQg0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1GQgu 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST|-a0|0||20e5","Australia/Darwin|ACST|-9u|0||12e4","Australia/Eucla|+0845|-8J|0||368","Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1GQf0 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347","Australia/Perth|AWST|-80|0||18e5","Pacific/Easter|-05 -06|50 60|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|30e2","Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|12e5","Etc/GMT-1|+01|-10|0|","Pacific/Fakaofo|+13|-d0|0||483","Pacific/Kiritimati|+14|-e0|0||51e2","Etc/GMT-2|+02|-20|0|","Pacific/Tahiti|-10|a0|0||18e4","Pacific/Niue|-11|b0|0||12e2","Etc/GMT+12|-12|c0|0|","Pacific/Galapagos|-06|60|0||25e3","Etc/GMT+7|-07|70|0|","Pacific/Pitcairn|-08|80|0||56","Pacific/Gambier|-09|90|0||125","Etc/UTC|UTC|0|0|","Europe/Ulyanovsk|+04 +03|-40 -30|010|1N7y0 3rd0|13e5","Europe/London|GMT BST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|10e6","Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1GNA0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|67e4","Europe/Kaliningrad|+03 EET|-30 -20|01|1N7z0|44e4","Europe/Kirov|+04 +03|-40 -30|01|1N7y0|48e4","Europe/Moscow|MSK MSK|-40 -30|01|1N7y0|16e6","Europe/Saratov|+04 +03|-40 -30|010|1N7y0 5810","Europe/Simferopol|EET EEST MSK MSK|-20 -30 -40 -30|0101023|1GNB0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Volgograd|+04 +03|-40 -30|010|1N7y0 9Jd0|10e5","Pacific/Honolulu|HST|a0|0||37e4","MET|MET MEST|-10 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0","Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|+14 +13|-e0 -d0|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|37e3","Pacific/Bougainville|+10 +11|-a0 -b0|01|1NwE0|18e4","Pacific/Fiji|+13 +12|-d0 -c0|01010101010101010101010|1Goe0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1VA0 s00 1VA0|88e4","Pacific/Guam|ChST|-a0|0||17e4","Pacific/Marquesas|-0930|9u|0||86e2","Pacific/Pago_Pago|SST|b0|0||37e2","Pacific/Norfolk|+1130 +11|-bu -b0|01|1PoCu|25e4","Pacific/Tongatapu|+13 +14|-d0 -e0|010|1S4d0 s00|75e3"],links:["Africa/Abidjan|Africa/Accra","Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Bissau","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Monrovia","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|America/Danmarkshavn","Africa/Abidjan|Atlantic/Reykjavik","Africa/Abidjan|Atlantic/St_Helena","Africa/Abidjan|Etc/GMT","Africa/Abidjan|Etc/GMT+0","Africa/Abidjan|Etc/GMT-0","Africa/Abidjan|Etc/GMT0","Africa/Abidjan|Etc/Greenwich","Africa/Abidjan|GMT","Africa/Abidjan|GMT+0","Africa/Abidjan|GMT-0","Africa/Abidjan|GMT0","Africa/Abidjan|Greenwich","Africa/Abidjan|Iceland","Africa/Algiers|Africa/Tunis","Africa/Cairo|Egypt","Africa/Casablanca|Africa/El_Aaiun","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Ndjamena","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Juba","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|America/Juneau","America/Anchorage|America/Nome","America/Anchorage|America/Sitka","America/Anchorage|America/Yakutat","America/Anchorage|US/Alaska","America/Campo_Grande|America/Cuiaba","America/Chicago|America/Indiana/Knox","America/Chicago|America/Indiana/Tell_City","America/Chicago|America/Knox_IN","America/Chicago|America/Matamoros","America/Chicago|America/Menominee","America/Chicago|America/North_Dakota/Beulah","America/Chicago|America/North_Dakota/Center","America/Chicago|America/North_Dakota/New_Salem","America/Chicago|America/Rainy_River","America/Chicago|America/Rankin_Inlet","America/Chicago|America/Resolute","America/Chicago|America/Winnipeg","America/Chicago|CST6CDT","America/Chicago|Canada/Central","America/Chicago|US/Central","America/Chicago|US/Indiana-Starke","America/Chihuahua|America/Mazatlan","America/Chihuahua|Mexico/BajaSur","America/Denver|America/Boise","America/Denver|America/Cambridge_Bay","America/Denver|America/Edmonton","America/Denver|America/Inuvik","America/Denver|America/Ojinaga","America/Denver|America/Shiprock","America/Denver|America/Yellowknife","America/Denver|Canada/Mountain","America/Denver|MST7MDT","America/Denver|Navajo","America/Denver|US/Mountain","America/Fortaleza|America/Argentina/Buenos_Aires","America/Fortaleza|America/Argentina/Catamarca","America/Fortaleza|America/Argentina/ComodRivadavia","America/Fortaleza|America/Argentina/Cordoba","America/Fortaleza|America/Argentina/Jujuy","America/Fortaleza|America/Argentina/La_Rioja","America/Fortaleza|America/Argentina/Mendoza","America/Fortaleza|America/Argentina/Rio_Gallegos","America/Fortaleza|America/Argentina/Salta","America/Fortaleza|America/Argentina/San_Juan","America/Fortaleza|America/Argentina/San_Luis","America/Fortaleza|America/Argentina/Tucuman","America/Fortaleza|America/Argentina/Ushuaia","America/Fortaleza|America/Belem","America/Fortaleza|America/Buenos_Aires","America/Fortaleza|America/Catamarca","America/Fortaleza|America/Cayenne","America/Fortaleza|America/Cordoba","America/Fortaleza|America/Jujuy","America/Fortaleza|America/Maceio","America/Fortaleza|America/Mendoza","America/Fortaleza|America/Paramaribo","America/Fortaleza|America/Recife","America/Fortaleza|America/Rosario","America/Fortaleza|America/Santarem","America/Fortaleza|Antarctica/Rothera","America/Fortaleza|Atlantic/Stanley","America/Fortaleza|Etc/GMT+3","America/Halifax|America/Glace_Bay","America/Halifax|America/Goose_Bay","America/Halifax|America/Moncton","America/Halifax|America/Thule","America/Halifax|Atlantic/Bermuda","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/La_Paz|America/Boa_Vista","America/La_Paz|America/Guyana","America/La_Paz|America/Manaus","America/La_Paz|America/Porto_Velho","America/La_Paz|Brazil/West","America/La_Paz|Etc/GMT+4","America/Lima|America/Bogota","America/Lima|America/Guayaquil","America/Lima|Etc/GMT+5","America/Los_Angeles|America/Dawson","America/Los_Angeles|America/Ensenada","America/Los_Angeles|America/Santa_Isabel","America/Los_Angeles|America/Tijuana","America/Los_Angeles|America/Vancouver","America/Los_Angeles|America/Whitehorse","America/Los_Angeles|Canada/Pacific","America/Los_Angeles|Canada/Yukon","America/Los_Angeles|Mexico/BajaNorte","America/Los_Angeles|PST8PDT","America/Los_Angeles|US/Pacific","America/Los_Angeles|US/Pacific-New","America/Managua|America/Belize","America/Managua|America/Costa_Rica","America/Managua|America/El_Salvador","America/Managua|America/Guatemala","America/Managua|America/Regina","America/Managua|America/Swift_Current","America/Managua|America/Tegucigalpa","America/Managua|Canada/Saskatchewan","America/Mexico_City|America/Bahia_Banderas","America/Mexico_City|America/Merida","America/Mexico_City|America/Monterrey","America/Mexico_City|Mexico/General","America/New_York|America/Detroit","America/New_York|America/Fort_Wayne","America/New_York|America/Indiana/Indianapolis","America/New_York|America/Indiana/Marengo","America/New_York|America/Indiana/Petersburg","America/New_York|America/Indiana/Vevay","America/New_York|America/Indiana/Vincennes","America/New_York|America/Indiana/Winamac","America/New_York|America/Indianapolis","America/New_York|America/Iqaluit","America/New_York|America/Kentucky/Louisville","America/New_York|America/Kentucky/Monticello","America/New_York|America/Louisville","America/New_York|America/Montreal","America/New_York|America/Nassau","America/New_York|America/Nipigon","America/New_York|America/Pangnirtung","America/New_York|America/Thunder_Bay","America/New_York|America/Toronto","America/New_York|Canada/Eastern","America/New_York|EST5EDT","America/New_York|US/East-Indiana","America/New_York|US/Eastern","America/New_York|US/Michigan","America/Noronha|Atlantic/South_Georgia","America/Noronha|Brazil/DeNoronha","America/Noronha|Etc/GMT+2","America/Panama|America/Atikokan","America/Panama|America/Cayman","America/Panama|America/Coral_Harbour","America/Panama|America/Jamaica","America/Panama|EST","America/Panama|Jamaica","America/Phoenix|America/Creston","America/Phoenix|America/Dawson_Creek","America/Phoenix|America/Hermosillo","America/Phoenix|MST","America/Phoenix|US/Arizona","America/Rio_Branco|America/Eirunepe","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Chile/Continental","America/Santo_Domingo|America/Anguilla","America/Santo_Domingo|America/Antigua","America/Santo_Domingo|America/Aruba","America/Santo_Domingo|America/Barbados","America/Santo_Domingo|America/Blanc-Sablon","America/Santo_Domingo|America/Curacao","America/Santo_Domingo|America/Dominica","America/Santo_Domingo|America/Grenada","America/Santo_Domingo|America/Guadeloupe","America/Santo_Domingo|America/Kralendijk","America/Santo_Domingo|America/Lower_Princes","America/Santo_Domingo|America/Marigot","America/Santo_Domingo|America/Martinique","America/Santo_Domingo|America/Montserrat","America/Santo_Domingo|America/Port_of_Spain","America/Santo_Domingo|America/Puerto_Rico","America/Santo_Domingo|America/St_Barthelemy","America/Santo_Domingo|America/St_Kitts","America/Santo_Domingo|America/St_Lucia","America/Santo_Domingo|America/St_Thomas","America/Santo_Domingo|America/St_Vincent","America/Santo_Domingo|America/Tortola","America/Santo_Domingo|America/Virgin","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","Antarctica/Palmer|America/Punta_Arenas","Asia/Baghdad|Antarctica/Syowa","Asia/Baghdad|Asia/Aden","Asia/Baghdad|Asia/Bahrain","Asia/Baghdad|Asia/Kuwait","Asia/Baghdad|Asia/Qatar","Asia/Baghdad|Asia/Riyadh","Asia/Baghdad|Etc/GMT-3","Asia/Baghdad|Europe/Minsk","Asia/Bangkok|Asia/Ho_Chi_Minh","Asia/Bangkok|Asia/Novokuznetsk","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Saigon","Asia/Bangkok|Asia/Vientiane","Asia/Bangkok|Etc/GMT-7","Asia/Bangkok|Indian/Christmas","Asia/Dhaka|Antarctica/Vostok","Asia/Dhaka|Asia/Almaty","Asia/Dhaka|Asia/Bishkek","Asia/Dhaka|Asia/Dacca","Asia/Dhaka|Asia/Kashgar","Asia/Dhaka|Asia/Qostanay","Asia/Dhaka|Asia/Thimbu","Asia/Dhaka|Asia/Thimphu","Asia/Dhaka|Asia/Urumqi","Asia/Dhaka|Etc/GMT-6","Asia/Dhaka|Indian/Chagos","Asia/Dili|Etc/GMT-9","Asia/Dili|Pacific/Palau","Asia/Dubai|Asia/Muscat","Asia/Dubai|Asia/Tbilisi","Asia/Dubai|Asia/Yerevan","Asia/Dubai|Etc/GMT-4","Asia/Dubai|Europe/Samara","Asia/Dubai|Indian/Mahe","Asia/Dubai|Indian/Mauritius","Asia/Dubai|Indian/Reunion","Asia/Gaza|Asia/Hebron","Asia/Hong_Kong|Hongkong","Asia/Jakarta|Asia/Pontianak","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kamchatka|Asia/Anadyr","Asia/Kamchatka|Etc/GMT-12","Asia/Kamchatka|Kwajalein","Asia/Kamchatka|Pacific/Funafuti","Asia/Kamchatka|Pacific/Kwajalein","Asia/Kamchatka|Pacific/Majuro","Asia/Kamchatka|Pacific/Nauru","Asia/Kamchatka|Pacific/Tarawa","Asia/Kamchatka|Pacific/Wake","Asia/Kamchatka|Pacific/Wallis","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Brunei","Asia/Kuala_Lumpur|Asia/Kuching","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Etc/GMT-8","Asia/Kuala_Lumpur|Singapore","Asia/Makassar|Asia/Ujung_Pandang","Asia/Rangoon|Asia/Yangon","Asia/Rangoon|Indian/Cocos","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|Asia/Macao","Asia/Shanghai|Asia/Macau","Asia/Shanghai|Asia/Taipei","Asia/Shanghai|PRC","Asia/Shanghai|ROC","Asia/Tashkent|Antarctica/Mawson","Asia/Tashkent|Asia/Aqtau","Asia/Tashkent|Asia/Aqtobe","Asia/Tashkent|Asia/Ashgabat","Asia/Tashkent|Asia/Ashkhabad","Asia/Tashkent|Asia/Atyrau","Asia/Tashkent|Asia/Dushanbe","Asia/Tashkent|Asia/Oral","Asia/Tashkent|Asia/Samarkand","Asia/Tashkent|Etc/GMT-5","Asia/Tashkent|Indian/Kerguelen","Asia/Tashkent|Indian/Maldives","Asia/Tehran|Iran","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Choibalsan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Vladivostok|Asia/Ust-Nera","Asia/Yakutsk|Asia/Khandyga","Atlantic/Azores|America/Scoresbysund","Atlantic/Cape_Verde|Etc/GMT+1","Australia/Adelaide|Australia/Broken_Hill","Australia/Adelaide|Australia/South","Australia/Adelaide|Australia/Yancowinna","Australia/Brisbane|Australia/Lindeman","Australia/Brisbane|Australia/Queensland","Australia/Darwin|Australia/North","Australia/Lord_Howe|Australia/LHI","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/Currie","Australia/Sydney|Australia/Hobart","Australia/Sydney|Australia/Melbourne","Australia/Sydney|Australia/NSW","Australia/Sydney|Australia/Tasmania","Australia/Sydney|Australia/Victoria","Etc/UTC|Etc/UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UCT","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Athens|Asia/Nicosia","Europe/Athens|EET","Europe/Athens|Europe/Bucharest","Europe/Athens|Europe/Helsinki","Europe/Athens|Europe/Kiev","Europe/Athens|Europe/Mariehamn","Europe/Athens|Europe/Nicosia","Europe/Athens|Europe/Riga","Europe/Athens|Europe/Sofia","Europe/Athens|Europe/Tallinn","Europe/Athens|Europe/Uzhgorod","Europe/Athens|Europe/Vilnius","Europe/Athens|Europe/Zaporozhye","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Atlantic/Canary","Europe/Lisbon|Atlantic/Faeroe","Europe/Lisbon|Atlantic/Faroe","Europe/Lisbon|Atlantic/Madeira","Europe/Lisbon|Portugal","Europe/Lisbon|WET","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Paris|Africa/Ceuta","Europe/Paris|Arctic/Longyearbyen","Europe/Paris|Atlantic/Jan_Mayen","Europe/Paris|CET","Europe/Paris|Europe/Amsterdam","Europe/Paris|Europe/Andorra","Europe/Paris|Europe/Belgrade","Europe/Paris|Europe/Berlin","Europe/Paris|Europe/Bratislava","Europe/Paris|Europe/Brussels","Europe/Paris|Europe/Budapest","Europe/Paris|Europe/Busingen","Europe/Paris|Europe/Copenhagen","Europe/Paris|Europe/Gibraltar","Europe/Paris|Europe/Ljubljana","Europe/Paris|Europe/Luxembourg","Europe/Paris|Europe/Madrid","Europe/Paris|Europe/Malta","Europe/Paris|Europe/Monaco","Europe/Paris|Europe/Oslo","Europe/Paris|Europe/Podgorica","Europe/Paris|Europe/Prague","Europe/Paris|Europe/Rome","Europe/Paris|Europe/San_Marino","Europe/Paris|Europe/Sarajevo","Europe/Paris|Europe/Skopje","Europe/Paris|Europe/Stockholm","Europe/Paris|Europe/Tirane","Europe/Paris|Europe/Vaduz","Europe/Paris|Europe/Vatican","Europe/Paris|Europe/Vienna","Europe/Paris|Europe/Warsaw","Europe/Paris|Europe/Zagreb","Europe/Paris|Europe/Zurich","Europe/Paris|Poland","Europe/Ulyanovsk|Europe/Astrakhan","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Easter|Chile/EasterIsland","Pacific/Fakaofo|Etc/GMT-13","Pacific/Fakaofo|Pacific/Enderbury","Pacific/Galapagos|Etc/GMT+6","Pacific/Gambier|Etc/GMT+9","Pacific/Guadalcanal|Antarctica/Macquarie","Pacific/Guadalcanal|Etc/GMT-11","Pacific/Guadalcanal|Pacific/Efate","Pacific/Guadalcanal|Pacific/Kosrae","Pacific/Guadalcanal|Pacific/Noumea","Pacific/Guadalcanal|Pacific/Pohnpei","Pacific/Guadalcanal|Pacific/Ponape","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|HST","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kiritimati|Etc/GMT-14","Pacific/Niue|Etc/GMT+11","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Pitcairn|Etc/GMT+8","Pacific/Port_Moresby|Antarctica/DumontDUrville","Pacific/Port_Moresby|Etc/GMT-10","Pacific/Port_Moresby|Pacific/Chuuk","Pacific/Port_Moresby|Pacific/Truk","Pacific/Port_Moresby|Pacific/Yap","Pacific/Tahiti|Etc/GMT+10","Pacific/Tahiti|Pacific/Rarotonga"]}),i},e.exports?e.exports=n(Ks):n(t.moment)}),Zs=function(e,t){var n=e.toString();function r(r){return function(e,t,n){return r+t+(n[0].toUpperCase()===n[0]?"A":"a")}}if((t=t||{}).preferredOrder=t.preferredOrder||Yu,(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=(n=n.replace(Lu,"x")).replace(Ru,"X")).replace(Pu,"[$1]")).replace(Qs,"dddd")).replace(eu,"ddd")).replace(tu,"dd")).replace(au,"Do")).replace(nu,"MMMM")).replace(ru,"MMM")).replace(iu,function(e,t,n,r,a,i){var o,s=1===Math.min(n.length,a.length,i.length),u=4===Math.max(n.length,a.length,i.length),c="string"==typeof e.preferredOrder?e.preferredOrder:e.preferredOrder[r];return n=parseInt(n,10),a=parseInt(a,10),i=parseInt(i,10),o=[n,a,i],c=c.toUpperCase(),31t.length?e:t},"");return 10"']/g,Ho=RegExp(qo.source),Fo=RegExp(Io.source),Bo=/<%-([\s\S]+?)%>/g,Go=/<%([\s\S]+?)%>/g,Uo=/<%=([\s\S]+?)%>/g,$o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Vo=/^\w*$/,Jo=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ko=/[\\^$.*+?()[\]{}|]/g,Xo=RegExp(Ko.source),Zo=/^\s+|\s+$/g,Qo=/^\s+/,es=/\s+$/,ts=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ns=/\{\n\/\* \[wrapped with (.+)\] \*/,rs=/,? & /,as=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,is=/\\(\\)?/g,os=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ss=/\w*$/,us=/^[-+]0x[0-9a-f]+$/i,cs=/^0b[01]+$/i,ls=/^\[object .+?Constructor\]$/,fs=/^0o[0-7]+$/i,hs=/^(?:0|[1-9]\d*)$/,ds=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ps=/($^)/,ms=/['\n\r\u2028\u2029\\]/g,e="\\ud800-\\udfff",t="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",n="\\u2700-\\u27bf",r="a-z\\xdf-\\xf6\\xf8-\\xff",a="A-Z\\xc0-\\xd6\\xd8-\\xde",i="\\ufe0e\\ufe0f",o="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",s="["+e+"]",u="["+o+"]",c="["+t+"]",l="\\d+",f="["+n+"]",h="["+r+"]",d="[^"+e+o+l+n+r+a+"]",p="\\ud83c[\\udffb-\\udfff]",m="[^"+e+"]",g="(?:\\ud83c[\\udde6-\\uddff]){2}",v="[\\ud800-\\udbff][\\udc00-\\udfff]",y="["+a+"]",_="(?:"+h+"|"+d+")",b="(?:"+y+"|"+d+")",w="(?:['’](?:d|ll|m|re|s|t|ve))?",A="(?:['’](?:D|LL|M|RE|S|T|VE))?",x="(?:"+c+"|"+p+")"+"?",k="["+i+"]?",E=k+x+("(?:\\u200d(?:"+[m,g,v].join("|")+")"+k+x+")*"),S="(?:"+[f,g,v].join("|")+")"+E,M="(?:"+[m+c+"?",c,g,v,s].join("|")+")",gs=RegExp("['’]","g"),vs=RegExp(c,"g"),T=RegExp(p+"(?="+p+")|"+M+E,"g"),ys=RegExp([y+"?"+h+"+"+w+"(?="+[u,y,"$"].join("|")+")",b+"+"+A+"(?="+[u,y+_,"$"].join("|")+")",y+"?"+_+"+"+w,y+"+"+A,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",l,S].join("|"),"g"),C=RegExp("[\\u200d"+e+t+i+"]"),_s=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,bs=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ws=-1,As={};As[To]=As[Co]=As[Do]=As[Oo]=As[jo]=As[No]=As[zo]=As[Po]=As[Lo]=!0,As[co]=As[lo]=As[So]=As[fo]=As[Mo]=As[ho]=As[po]=As[mo]=As[vo]=As[yo]=As[_o]=As[wo]=As[Ao]=As[xo]=As[Eo]=!1;var xs={};xs[co]=xs[lo]=xs[So]=xs[Mo]=xs[fo]=xs[ho]=xs[To]=xs[Co]=xs[Do]=xs[Oo]=xs[jo]=xs[vo]=xs[yo]=xs[_o]=xs[wo]=xs[Ao]=xs[xo]=xs[ko]=xs[No]=xs[zo]=xs[Po]=xs[Lo]=!0,xs[po]=xs[mo]=xs[Eo]=!1;var D={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ks=parseFloat,Es=parseInt,O="object"==typeof er&&er&&er.Object===Object&&er,j="object"==typeof self&&self&&self.Object===Object&&self,Ss=O||j||Function("return this")(),N=q&&!q.nodeType&&q,z=N&&W&&!W.nodeType&&W,Ms=z&&z.exports===N,P=Ms&&O.process,L=function(){try{var e=z&&z.require&&z.require("util").types;return e||P&&P.binding&&P.binding("util")}catch(e){}}(),Ts=L&&L.isArrayBuffer,Cs=L&&L.isDate,Ds=L&&L.isMap,Os=L&&L.isRegExp,js=L&&L.isSet,Ns=L&&L.isTypedArray;function zs(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Ps(e,t,n,r){for(var a=-1,i=null==e?0:e.length;++a":">",'"':""","'":"'"});function lu(e){return"\\"+D[e]}function fu(e){return C.test(e)}function hu(e){var n=-1,r=Array(e.size);return e.forEach(function(e,t){r[++n]=[t,e]}),r}function du(t,n){return function(e){return t(n(e))}}function pu(e,t){for(var n=-1,r=e.length,a=0,i=[];++n",""":'"',"'":"'"});var _u=function e(t){var n,T=(t=null==t?Ss:_u.defaults(Ss.Object(),t,_u.pick(Ss,bs))).Array,r=t.Date,a=t.Error,g=t.Function,i=t.Math,k=t.Object,v=t.RegExp,l=t.String,C=t.TypeError,o=T.prototype,s=g.prototype,f=k.prototype,u=t["__core-js_shared__"],c=s.toString,E=f.hasOwnProperty,h=0,d=(n=/[^.]+$/.exec(u&&u.keys&&u.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",p=f.toString,m=c.call(k),y=Ss._,_=v("^"+c.call(E).replace(Ko,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),b=Ms?t.Buffer:to,w=t.Symbol,A=t.Uint8Array,x=b?b.allocUnsafe:to,S=du(k.getPrototypeOf,k),M=k.create,D=f.propertyIsEnumerable,O=o.splice,j=w?w.isConcatSpreadable:to,N=w?w.iterator:to,z=w?w.toStringTag:to,P=function(){try{var e=qn(k,"defineProperty");return e({},"",{}),e}catch(e){}}(),L=t.clearTimeout!==Ss.clearTimeout&&t.clearTimeout,R=r&&r.now!==Ss.Date.now&&r.now,Y=t.setTimeout!==Ss.setTimeout&&t.setTimeout,W=i.ceil,q=i.floor,I=k.getOwnPropertySymbols,H=b?b.isBuffer:to,F=t.isFinite,B=o.join,G=du(k.keys,k),U=i.max,$=i.min,V=r.now,J=t.parseInt,K=i.random,X=o.reverse,Z=qn(t,"DataView"),Q=qn(t,"Map"),ee=qn(t,"Promise"),te=qn(t,"Set"),ne=qn(t,"WeakMap"),re=qn(k,"create"),ae=ne&&new ne,ie={},oe=pr(Z),se=pr(Q),ue=pr(ee),ce=pr(te),le=pr(ne),fe=w?w.prototype:to,he=fe?fe.valueOf:to,de=fe?fe.toString:to;function pe(e){if(Oa(e)&&!ba(e)&&!(e instanceof ye)){if(e instanceof ve)return e;if(E.call(e,"__wrapped__"))return mr(e)}return new ve(e)}var me=function(){function n(){}return function(e){if(!Da(e))return{};if(M)return M(e);n.prototype=e;var t=new n;return n.prototype=to,t}}();function ge(){}function ve(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=to}function ye(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=so,this.__views__=[]}function _e(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t>>0,t>>>=0;for(var i=T(a);++r>>1,o=e[i];null!==o&&!Ya(o)&&(n?o<=t:o>>0)?(e=Va(e))&&("string"==typeof t||null!=t&&!Pa(t))&&!(t=Rt(t))&&fu(e)?Jt(vu(e),0,n):e.split(t,n):[]},pe.spread=function(r,a){if("function"!=typeof r)throw new C(no);return a=null==a?0:U(Ba(a),0),kt(function(e){var t=e[a],n=Jt(e,0,a);return t&&Fs(n,t),zs(r,this,n)})},pe.tail=function(e){var t=null==e?0:e.length;return t?Ot(e,1,t):[]},pe.take=function(e,t,n){return e&&e.length?Ot(e,0,(t=n||t===to?1:Ba(t))<0?0:t):[]},pe.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?Ot(e,(t=r-(t=n||t===to?1:Ba(t)))<0?0:t,r):[]},pe.takeRightWhile=function(e,t){return e&&e.length?It(e,Rn(t,3),!1,!0):[]},pe.takeWhile=function(e,t){return e&&e.length?It(e,Rn(t,3)):[]},pe.tap=function(e,t){return t(e),e},pe.throttle=function(e,t,n){var r=!0,a=!0;if("function"!=typeof e)throw new C(no);return Da(n)&&(r="leading"in n?!!n.leading:r,a="trailing"in n?!!n.trailing:a),sa(e,t,{leading:r,maxWait:t,trailing:a})},pe.thru=Fr,pe.toArray=Ha,pe.toPairs=pi,pe.toPairsIn=mi,pe.toPath=function(e){return ba(e)?Hs(e,dr):Ya(e)?[e]:rn(hr(Va(e)))},pe.toPlainObject=$a,pe.transform=function(e,r,a){var t=ba(e),n=t||ka(e)||Wa(e);if(r=Rn(r,4),null==a){var i=e&&e.constructor;a=n?t?new i:[]:Da(e)&&Ma(i)?me(S(e)):{}}return(n?Ls:Ve)(e,function(e,t,n){return r(a,e,t,n)}),a},pe.unary=function(e){return ra(e,1)},pe.union=Or,pe.unionBy=jr,pe.unionWith=Nr,pe.uniq=function(e){return e&&e.length?Yt(e):[]},pe.uniqBy=function(e,t){return e&&e.length?Yt(e,Rn(t,2)):[]},pe.uniqWith=function(e,t){return t="function"==typeof t?t:to,e&&e.length?Yt(e,to,t):[]},pe.unset=function(e,t){return null==e||Wt(e,t)},pe.unzip=zr,pe.unzipWith=Pr,pe.update=function(e,t,n){return null==e?e:qt(e,t,Ut(n))},pe.updateWith=function(e,t,n,r){return r="function"==typeof r?r:to,null==e?e:qt(e,t,Ut(n),r)},pe.values=gi,pe.valuesIn=function(e){return null==e?[]:au(e,ui(e))},pe.without=Lr,pe.words=Mi,pe.wrap=function(e,t){return da(Ut(t),e)},pe.xor=Rr,pe.xorBy=Yr,pe.xorWith=Wr,pe.zip=qr,pe.zipObject=function(e,t){return Bt(e||[],t||[],Ce)},pe.zipObjectDeep=function(e,t){return Bt(e||[],t||[],Mt)},pe.zipWith=Ir,pe.entries=pi,pe.entriesIn=mi,pe.extend=Ka,pe.extendWith=Xa,Ri(pe,pe),pe.add=$i,pe.attempt=Ti,pe.camelCase=vi,pe.capitalize=yi,pe.ceil=Vi,pe.clamp=function(e,t,n){return n===to&&(n=t,t=to),n!==to&&(n=(n=Ua(n))==n?n:0),t!==to&&(t=(t=Ua(t))==t?t:0),Pe(Ua(e),t,n)},pe.clone=function(e){return Le(e,4)},pe.cloneDeep=function(e){return Le(e,5)},pe.cloneDeepWith=function(e,t){return Le(e,5,t="function"==typeof t?t:to)},pe.cloneWith=function(e,t){return Le(e,4,t="function"==typeof t?t:to)},pe.conformsTo=function(e,t){return null==t||Re(e,t,si(t))},pe.deburr=_i,pe.defaultTo=function(e,t){return null==e||e!=e?t:e},pe.divide=Ji,pe.endsWith=function(e,t,n){e=Va(e),t=Rt(t);var r=e.length,a=n=n===to?r:Pe(Ba(n),0,r);return 0<=(n-=t.length)&&e.slice(n,a)==t},pe.eq=ga,pe.escape=function(e){return(e=Va(e))&&Fo.test(e)?e.replace(Io,cu):e},pe.escapeRegExp=function(e){return(e=Va(e))&&Xo.test(e)?e.replace(Ko,"\\$&"):e},pe.every=function(e,t,n){var r=ba(e)?Ys:He;return n&&Vn(e,t,n)&&(t=to),r(e,Rn(t,3))},pe.find=Ur,pe.findIndex=_r,pe.findKey=function(e,t){return $s(e,Rn(t,3),Ve)},pe.findLast=$r,pe.findLastIndex=br,pe.findLastKey=function(e,t){return $s(e,Rn(t,3),Je)},pe.floor=Ki,pe.forEach=Vr,pe.forEachRight=Jr,pe.forIn=function(e,t){return null==e?e:Ue(e,Rn(t,3),ui)},pe.forInRight=function(e,t){return null==e?e:$e(e,Rn(t,3),ui)},pe.forOwn=function(e,t){return e&&Ve(e,Rn(t,3))},pe.forOwnRight=function(e,t){return e&&Je(e,Rn(t,3))},pe.get=ni,pe.gt=va,pe.gte=ya,pe.has=function(e,t){return null!=e&&Bn(e,t,tt)},pe.hasIn=ri,pe.head=Ar,pe.identity=Ni,pe.includes=function(e,t,n,r){e=Aa(e)?e:gi(e),n=n&&!r?Ba(n):0;var a=e.length;return n<0&&(n=U(a+n,0)),Ra(e)?n<=a&&-1=$(a=t,i=n)&&r=this.__values__.length;return{done:e,value:e?to:this.__values__[this.__index__++]}},pe.prototype.plant=function(e){for(var t,n=this;n instanceof ge;){var r=mr(n);r.__index__=0,r.__values__=to,t?a.__wrapped__=r:t=r;var a=r;n=n.__wrapped__}return a.__wrapped__=e,t},pe.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof ye){var t=e;return this.__actions__.length&&(t=new ye(this)),(t=t.reverse()).__actions__.push({func:Fr,args:[Dr],thisArg:to}),new ve(t,this.__chain__)}return this.thru(Dr)},pe.prototype.toJSON=pe.prototype.valueOf=pe.prototype.value=function(){return Ht(this.__wrapped__,this.__actions__)},pe.prototype.first=pe.prototype.head,N&&(pe.prototype[N]=function(){return this}),pe}();z?((z.exports=_u)._=_u,N._=_u):Ss._=_u}).call(this)});function Gu(e){return e.reduce(function(e,t,n,r){return e+t})}function Uu(e){if(Bu.isArray(e))return e;if("string"==typeof e)return e.split("");throw Error("Parameter must be a string or array.")}var $u={jarowinkler:function(e,t,n){var r,a;e=Uu(e),t=Uu(t),a=e.length>t.length?(r=e,t):(r=t,e);var i,o,s,u,c=n||.7,l=Math.floor(Math.max(r.length/2-1,0)),f=[],h=[],d=0;for(i=0;ie[1]?[t,f[t]]:e},[null,0]),u=ja(s,2),h=u[0];if(0>1])<0;)e[n]=i,n=o;return e[n]=a},f=function(e,t,n){var r,a,i,o,s;for(null==n&&(n=h),a=e.length,i=e[s=t],r=2*t+1;rt[n])return 1}return r-a},E=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},I=function(e){var t,n;for(t=0,n=e.length;ts&&(u[n]=!0,delete t[n]);return this.isbjunk=function(e){return E(i,e)},this.isbpopular=function(e){return E(u,e)}},e.prototype.findLongestMatch=function(e,t,n,r){var a,i,o,s,u,c,l,f,h,d,p,m,g,v,y,_,b,w,A,x,k;for(a=(_=[this.a,this.b,this.b2j,this.isbjunk])[0],i=_[1],o=_[2],f=_[3],s=(b=[e,n,0])[0],u=b[1],c=b[2],d={},l=g=e;e<=t?g 0: ("+n+")");if(!(0<=r&&r<=1))throw new Error("cutoff must be in [0.0, 1.0]: ("+r+")");for(a=[],(i=new ee).setSeq2(e),s=0,c=t.length;s=r&&i.quickRatio()>=r&&i.ratio()>=r&&a.push([i.ratio(),o]);for(h=[],u=0,l=(a=d.nlargest(a,n,S)).length;uh&&y.quickRatio()>h&&y.ratio()>h&&(h=($=[y.ratio(),A,x])[0],d=$[1],p=$[2])):null===b&&(b=(U=[A,x])[0],w=U[1]);if(h<_){if(null===b){for(O=0,N=(V=this._plainReplace(e,t,n,r,a,i)).length;O([^|]|$)|»([^|]|$))","i"),Ec=new RegExp("(first|last|end)","i"),Sc=new RegExp("(prev|earl|old|new|<|«)","i");function Mc(e){var t=e.links,k=e.articleUrl,E=e.baseUrl,S=e.parsedUrl,M=e.$,n=e.previousUrls,T=void 0===n?[]:n;S=S||Mr.parse(k);var C=new RegExp("^".concat(E),"i"),D=0e.score?n:e},{score:-100});return 50<=c.score?c.href:null}},Cc=["og:url"];function Dc(e){return{url:e,domain:(t=e,Mr.parse(t).hostname)};var t}var Oc={extract:function(e){var t=e.$,n=e.url,r=e.metaCache,a=t("link[rel=canonical]");if(0!==a.length){var i=a.attr("href");if(i)return Dc(i)}var o=Xo(t,Cc,r);return Dc(o||n)}},jc={ellipse:"…",chars:[" ","-"],max:140,truncate:!0};var Nc=function(e,t,n){if("string"!=typeof e||0===e.length)return"";if(0===t)return"";for(var r in n=n||{},jc)null!==n[r]&&void 0!==n[r]||(n[r]=jc[r]);return n.max=t||n.max,function(e,t,n,r,a){if(e.length
");e.each(function(e,t){n.append(t)}),e=n}else e=u(p);return e.wrap(u("
")),e=m(e=e.parent()),Vu[t]&&Vu[t](e,pt({},s,{defaultCleaner:h})),d?e.children().toArray().map(function(e){return u.html(u(e))}):u.html(e)}();if(Ma(p)){var g=ja(p,3),v=g[0],y=g[1],_=g[2];r=m(u(v)).map(function(e,t){var n=u(t).attr(y).trim();return _?_(n):n})}else r=m(u(p)).map(function(e,t){return u(t).text().trim()});return r=Ma(r.toArray())&&d?r.toArray():r[0],h&&Vu[t]?Vu[t](r,pt({},s,c)):r}function Hc(t,n){var r={};return si(t).forEach(function(e){r[e]||(r[e]=Ic(pt({},n,{type:e,extractionOpts:t[e]})))}),r}function Fc(e){var t=e.type,n=e.extractor,r=e.fallback,a=void 0===r||r,i=Ic(pt({},e,{extractionOpts:n[t]}));return i||(a?Yc[t](e):null)}var Bc,Gc={extract:function(){var e=0

Page ").concat(l,"

").concat(d.content)}),n=d.next_page_url,e.next=3;break;case 16:return p=Yc.word_count({content:"
".concat(o.content,"
")}),e.abrupt("return",pt({},o,{total_pages:l,pages_rendered:l,word_count:p}));case 18:case"end":return e.stop()}},e,this)}))).apply(this,arguments)}return{parse:(Bc=Qn(S.mark(function e(t){var n,r,a,i,o,s,u,c,l,f,h,d,p,m,g,v,y,_,b,w,A,x,k,E=arguments;return S.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=1v zU7ejKO_(u3OG|6gh9B1ctfe)k75?GJf|AWQE5Cw2n6RIn9JSI*joZL~*7|#F*u8nP z)&lU1*TNhR)WX44z;6clflnD2tuf#)1}rD1GRCN$;fm8O67FbeL0TKuuHJGO z)7cnw!Dn6F*rw%gj~Z*6;_&9{ET_ibB@aqitM!0V z@MpDpaOq4uzIEoZ7Y2w1Xf#^)a*eN75(wpXdyXtr?+7%2X$(^KD|-kh5*d_o+;)wQ zuz59#@yS1Eg&>H}7@woj5iUGKJ`Y91<#Za2vs!;29oYcB)pv}>#K&MT1#xq0vB(Ap zGK;yi1|tTgoCdP<5&;z#)s@raPSBZIs@eFApaTV$VDk;cC$5er#lEAOYFmK~l))%tCm z;z1e~m)h|yxv?W%!81qoTr3!**-iUgNL2CY0p7byyhlZ|u66AxU8At|5Dj9m8=q77 z$NMvw!wWLoYi~st*VKyasv9%-$vQ1XKki+uk|;Zi%-Bc${8-`h5%RKvEWB<+C`M%Z zVs{Et{C;TIB!N;I(3Kgcr!>_k3}_D+ex6s!##*POx{nW?(e96$m`1Gp0iGy zt>%GCv^j^roaKFfeOk9bm*jiRyiZSMfy6d8fOz=lX!Rp5J{V8>t(6s3JG}?9H;vbP+IRZyd*u74T zV?b&kUkEB2nf^VpD^oBkeAaArks(4vYa*j1=FAkOtica-0^s#gPd(&Z&l?iT`yAG* z@g45!1dTSUFb$8K>l+<>YlO*7jjq;0knWCcYMKUr^i>Vs2+xLgrBM=!b)(e6pf!9)| z4|QgN&_L2S1S-g$)}trP5#QHGVvP|jHqTHa^!c9?>#_oplE|?U&%)dOdVDNg8D*!(YJ*rurg#3~{Sj@qk`nDG-Il4* zy>ELzIGHTW4Q_0wR2*7QgWNzYdOp?jn;_*IS=^gceA=3MSd!BFIN-`U1@bIE%@&Kr zB5tt{GddzdA`&JA)uam^FCPJ+1vBvZ&E58UEINv6xG;YHR%Ajg&x}$+!7=00Qjd%Z zGN=Wkqb(#dCq~#fViIq%XC&uG8sv{5PjUZl@TWv-=cA%TlBmt4aOfs6(n?MR#v1ya z)Y!;p2Y9DkoDS6*ZJ%BKGX#a)OTAYR+g5)qg!wFuMCo3w80Vr?_HaBagC!o09v3zn zi#umYWSCq@@7AXZ9*`Gy7@k%|9o}1HGB1b=b*$ef232fH(jo@AK7kyX{lNM}4FvnJh>=RP1QfjAfpDl;nTL>O3+hEayT6=)Z!N$VC z4BMFD{@zMAmxDPL^~xB)-T6HYVPz3(@WyKNyXbn{hkqaW5+Xn{XsGYBciUGAsKlV)-r<+MJN{4 zbOUUxNv)&LW^BxOd~1wgmnU^>BP=-5nfVEEqYk0M$nIA-vAdsy8Zs!%!J0c8ca?2& z5D$Lgjqq6^&m*do;6G7tvpvbmCvwlpn_`Ea8#)m{gBvH{TT`Ai-z5`-yd<&}IYzKG z;Lf9&@&T}eCm4UvFcApp&*yhm;+m)0eyo2I=4Cq#VI&B9<`Nk;H{CBQ1}0oD%!Vv~xBt`qe5&&q+v75el{kV)5rSKn=l^$Z(qXKna3nEldWR z&$^f;8mMMA06=*E=N-X|lQn^E^Ci8d!_=RK3}JTFnu4j|OMK&oHd+^Cr?H;( z$jLIxrwODZ2qjG;y}aV$=X_?ABt_svu9_g7w4Wu2ga`>DFA_5r&Nl&g+Mv{=uw;u= z1Y8$nG9QRRV$1%Bfx3W=sXJ#$*>ZV3+pabKq5b~PuX@3ZtX%BBt^KrglbK8e&dtt@ zb?nMziMm90Vu#!AIC&O^Njc9xkL9ek-d7)#Q7|{z(Cf;2=_={mnkF08P)YCLmjsid zpQ~k~UITcj{cB!$+wTbBNA=h<5iH%L3m1AtpM@NHPxs@!CUnBnuDa>=86VS^x{RpdgS z4mdjja)HIN(PK=WJgQjk>?g9Qy$+^w$jJ4IRF`l7`+nCdu)#5t=Z^X1guDzyycXa6 zeTkH=j1&Om9~qV|wLK<7>kOL2eB4e8DF}z-2@^#iY_jC0?5!4k9$hfvH)NDJ@=JrbT@C=c$B z=nYaJ%-zo;G#|eYq(D48X(t_^a)pXkMJa$%0HwhH2MP@2<~Eo@O{=lFAzWXn>+ZJ* z?fv?e*WXql3N9~|nqpuRzXMU;xLqgM)CtjppN_-6RMM9igvG7YudT1&&WY@J2xp0= zbiF^M_~N+E;E9n>>vzLmhfTze8#m6OZOIQA`!2{VY%PdLZ`Y?NYRfDv^b{;*oYRR? z>nyk9z)_=BQ3{|GKq>I=r$A>&$TN^xPCq~=jegQC=5Tz6^xw~M^=twt=aPlTb@}Si z)d_+!zUAb0ga-ACrsG(?mIq2+aUbP0~iwBU;^kN`# zxy!f>I&-V}s8I?4nDtThLjiENm7uercCTx4I>_J+ekx#Gyz6a^J-Vx)v&}w18heC} zV7`QR%cNjR{yBl@>IUd}FX&f|Qm~#kbd-Z4#l&!XL1!p&QR0Gi2P(O+!k}gWwnnH~ z0M?ZLKQaq`tme88*Gdl|n*6TkFYbovh7?g1~=hqR1=i36OncdGfFjpFO>4QIT1XnJ2YWSD?!0TM9 z`K(b2vNf#3mYhcVmo3u>sU_HSs7S5AB)G#n2u05sRf=V)J_yh2FZ-Z}&z^d?<6$nY zKXH<)a+T~i17os3_4cL7$is?e;HaJ%rHq3x6re69=IXYU$YXtHK>lPx!>TBRWu*rK z^AqURMnuTNqQ^9v!vSGu3c`lo2D?yq0&m5^(Hi9om1S3N;qrP2LI;ad78L_j!SDps z8fc+nfQkX|ny46{Vt|T)6se+4;lH&8Z1J0GxfHdKLLx{avVb#{TnTvn!{Bh$xh);w zFqu;%C*6Jn#J%KfXRbj1>}+h1EeS+lvRlG3BXHfE0=u#u3zAwd01S-D&jS*D&i+E~jXzUL-rf8u4=BoWp*LgGh zX9i~PQonVCaf=Po;tcqV7Q27Fk%YY%9}QBLiZb6dY{a*Q32WLEkOv+_Ik=-{U;vy! zTh4Xj8xhK*_~%9H0U5tgdV<67o@X&515J1CvcMHO%tx{`D>(|O^`!HeBf&!>TnRI) zg?c$or&af+zv9%HtkP7ShP;D8LmgyEp0Tm4}7 ztth>7S4{3`bIG;h;e}m}L*K$1sjrK^?3t!&x&&8Ev08;EOeeE*pC)kEn5$zoE&6zX z_Qqdr#VeT)KP+Mbv=^(Jq5^d=x|<8q0L}OO(+r9B20nF-g`wRI&)^&c(yAAD z`Yr=oa39of+w5&^ZU5@CKdD8J0Mv-hN(k-g znrPhv->?<*1ITIf%LVe&*v+a?MlP2bc(4jYFLg=#@^yIQ39YNa<%c(P29%#?W?|hk ze0|`%xw2X)p;(;eNjdzqK{&fo*I|&DeS0Sk-)})=2@fF+qK67;?{BsWNeW>#%r1G5uk;4;n59@-@BKl1^WUm)Z> z7Wc|jra))VK*+KCg{tZnNOGn=7_)PBo%;P*U=xV~!nMN5btVeFNy8(ZAnBH=|LdV2 z6!Vk5ZS?^>C|EO~8Yw(vJCOIwUwdul@6s<7Iu{AJt!WN{e1SNT-G|-kS7d>eB?s{S z|8%$kAEQG<&wsakt&-$m6p|pm@3tA^;}+4xM-F3r@(Aw1F%tI=@kFb&`KF&m-S7K5 zyKujUQ@zZI6Du}Qs_q?m8*pqg2HOY1)lrrt2ZzXWE9DJNoZrOdnLhE62J-&|)+nly z?CY!c{`;Pxp*mdujcgz3S=&Fs(aor@CMG6PswTeg>FHTidCOaN821ba%L~gXA!9il zPUQ7ZvII}!qND7Rk`hAFep!O{BCx68K$o<)?=4(vEZ_S!SQr`+@vL>DElJA4>41f) zi;h%OR5S;7>z|j`(wX{{$qX(lE7Qq8;wIHV`b1#t3XSt@Z~*}U`qz2#MC(jEy*ue^ zQBl!p+b3aCCrY;k6;J&Z9x}1vL(GJEF0vEGVFtDpECISOza^APwf@5;kSE)!_uEFVudmNxu}B?( z`LY~@(RuV+)GG1NPty{-JDZz#gZDw;pPBpTUa8DCQ6_kMduP9V`Eo!Y5ZD=2%8sQD zf}oCM>}`HVQc_ZVcXx0-hZDSUpINPkD0BrPl)=Odt1mya=y;Gpw{zktIa_6plim(?qXd)6Wum8ewHDX_y=?*1CVNjOX4n?Y++) zetVyLW;5Aq^2C`F_4M>6uV1%%tDfGtcI6*_JZRaJ`T9Nh2NS;4Yn9%^DvJ*ApVj+z ztlz(BlimXG8?T2+I;e+Jz5@Pcf3QUm{{%8aqY};qra6enlDVr($jIq(~c3V zo98ZW_*VGZ@&_l!L4IXdc~gQO28+WJNDy89qtF+Y#qMfo(QN|{ITQ@seO~*L=IyTt zgmz1d6N^WCs~*7JZs?1EswjDMWD6Av^_f700u_q?j(%Lx8EBlJI|Z&tPHt{#i7PBB zn&}=tysW;y{{G&!{Ph|w4)iee6Nk^|+snUlb)9)3B_%177a&j!zMMzm@}!O)!^4ix z8cSncN<7>wALisZDoU&_jxq)=Htg)_F-~E}F3oU_ceJpyY>3BNyBl^kP^Z7nT3I?n z?%C8j=a=`~xS|#-^;lhh{!#Y_y?ZS2i9moLKdcUsO_J zL5&^yuCSz}c00Culg^40IKKsFD8wR0(gb6o(fm?|cFz(2^ z0_+m|^YWN83Ovq3jq({jF~8d>svW425ky_HcbXv1b9k6zeTOHtz{dA`xprY18>kM2 z$vk3aE5dGG!oDpClMmMrFKs&#VGFbBGH=KO1(eG2p4x82iyQG7H(AB9d9TwpdYAs} ztUr9`LO8#yge{|8=_|iCq_L|ibIjR_75H`y-!;Swi>k@>@wAvC)9Q}d2BXHd&;vH^ z@ks*vmxzn#kfNxPTt9C%IIjJH0+*O|6!JI%{W5)_M2UeQ`>kRdwkZ7 z(4J|AX}nrQoq{dx&KoLz>+73NTWdV}m<|!KzP_w2{#|p84mmaOSe$xBEUTcv$u&wG zDuHh5ijIO%xWa?j`uLB^^C4sz@ha^JiK{r#9Fk>dVPP@JLnck>7+3PcC=20Ad`Vp2 zr_jMZ!3{>a=yZ1K&=gToO0g~{NDyfa#LTkyJ2~1<>9)Mq$Hg?1?;7Q=veU&mB<{AW zi&u?oPW9s>7VJ%6i*$C@nGo9NznDH-S8y@d;~03iC@c**)lWctr|wT4rM{B7Fd%!5 zq;Mm0s;xL&%*4DkI!=}HIPQX&Z{zE~Ku$Fui*-9yHwU>_rY(v4$-P^Lf6A$*V&I#< zA2vbmb+Z|v{WvjFM<|q2ouxxQLHT&(UR8pGk`*N@Dy_(afhqx1x1zcgHCd=9fI3*H zgN6F7|EJ+V(){clKl#C>rLyMU-tLfugoNUhj_JQW(+wuLF#WHOO@!`nLmx6Zu`kUS z5fc;!U;+rob#-;2$D^J70|JbloEUFJqzG?K>{ff1!B2xk~~P1o^?eBl203OJwsqX4_THR58EkQzT}w$>-Y;KhBnC?6l=FIQgrA@0l!;4E z#euCfB?Ba3&da)h^2YlCENNTl@mU@2Bhr^|6B*a%1(`9Pu?_WJn|blhq4ULfGy^JT2a(Q6+dHtdrJQo)NPYW8%HSpg( zY~a5B^_AJ&2Xv^X^8mopTzHqdM&x2IUM%8F+INW1?$?yt)78cAe%90C+$MPb{CViH zW3H6DOGe^<7)zm0%F2x+6|7YPhNoyHopS^LK<6_QnO=>PQ>;Arf4+*Eq~RW?NWT>~ zT*RpDHXxiP^nTH8a<)}VdClbK!HP||p$G**BFrXnt*2IwkW9_2nE*?%W;Ty3MfHQU z3SxSFc^!da;qc2Q;)QFWvJqOUNClmwLn)h=jR>@wZ3m_j+RxJyMLfFC{?!CIAu5 z1Sa9)&Pa?b^SuxWTbK%hBsOIa1rd(qdSbEhNk+U(M8+0kgV?Jv?-vI|lv6t!1G7An zy0##uV+Mf8qo=NR1|sz6yhw){ZMg1+xrs&t7K7DF#eU;Tb zZ{Kot5*!{d0O-hMiA2JnJqQtLfRrnyAl}PQOEXgfBuRNG#3TS!G`Ft3?(~B?TyvSD z#8{Md15v{EzTWn}$P@8iRSkQTwBx+h#|^&?z8Cq-oF@BN6MU6+msPb%y(8u#dumOc znE0eTKq6rq+xRfz<;$rN8UUqs4F;x`ZzFnm%3BArl>kkoMaKs<-8gS??hW$3+&)GQ zKn4ov|IJ?QA-87|dV@5y*!^fg|pJpC^*n_Hg+ja|}a;@Yb3l(*D+@M!8eOw=b zC&7d^(_c!|Y{TKtU7}JWrrW2^SB0ybuW-2Gli@K6xo~h+Z3a2&cA6$Oy@X}U29KJv z&sM4<>soybEI+@^iao#n6BzVacD)7#xu8#!VQ)Ec zoIn%B7ZTwm-1zA-YUhIuO1XFfAd*>pR&u8kT{D)U;kht*Uzy~T?-DoFE(&R&B*HnN z&!NrCjCCmX)Sru0Ou0Cxx34VeAIBG|Yc0CBK}=s^d|U0r3x28vkhU~Q>m$Q`-sewM z4pW~BswFr9yLNrkU9?6mk$Vl!1=O@w-=ZA!OH#^n_eL_Pi=K^aMG34SJ4#@+ zte_ICIUs@m&MLx!OucP3r8W$f$z(w^MPT_fS9h4D@7@qM(|uQfsC0d?*5b#3IuM%v zvwc{FZLhGdKS=r^K@WI5N8ICQQind!5hn4OzmUpsQI(5OW-Gb$**&J0=rFXy=bZUqs1+utTU&sL6qz86D^3 zUlxiLtAP&%PlwIe@}>3la)vRs6z{)l_u!*x%Dkw`JE~s~F&ocRBpVRKk#K*19*zB; zrsKQWdvekWt09LmRmZD=+jU?|zlnAfb)+-{ICm0nsuTTRgYAgwmz zK;oz;sU#760A%|XfA5YQz}^#LqNGJhi$$dthes6xfrKgq0D%3Mbge~|`5vWVkWY=0 z%Z$q^D=QfaUL)b^oL;%GA@un15S2d}P`28*nf&i%f5j-T%64~mQv zeQDDC4vH{TV|U=Z-9k)Lw?07- zNypg$+(*f)awAakswDGYl-|8HvWt3p7VgS#0jLf;D#@zj{+}rdPV<7uV4#1FS%*eP z*H!L5yw?rOc$o7xZ>Nhk*E1KK*|`TQ2(|Y(ISNUmU;MIa4PFftA89)X3bKy+A@eWz ze*oXP?&)@fRw7+o0IniFS&U4-;Qj)Mq0Sa$_Jy!+8lnB?`srg_`h5U*j|jVr&{X)J zfb#hINb;EY1Ay0d#f2(Fe^iZb1*=+6@N`6`aiYfu5!b5c{s#{T$g?a+0gM~U+{|kQWibVktIxaT+E51ZLkk&jr{QY9y zuho$G%-Pb?(w%~ceHWp|%c+Cv0vlzxl|Ic}ApN+388S$B5(Y{ntkcC28OOf= zs@sILdD>M;069CgXymIrxjW%9PlokFOWPaQFT~>Hb9%uyW6H!8x|e49aTijEFJ={5 zXU2_>_cD5?s*KXw!zOoqBO{}vOo2dBze;q-P}rUF=XhP0JC_Rg+;rWk@LVLtVdH}W zU+E$Yfo=Ln*s+r5&tKi3h^K>lURN$k5KcIEZm+N-ubJa?T5{(Wq?mWf42ksk!V)#S-O5 zh4$5w*>9>>Hg*U^y}AoIZMK3X3;W(fE^BMvoY83DtI5*nWL%mKVFhWAQfPeX`@!_z zyBer%5yVJ<%S85n{vHvSh@D`8U_zNVyow!rbm_T(cinq#f}Bd*epOA9YJcz%+)Z~0 zweZQ%>q_e3y-v7i1S0L&JM*?5U0Yx1$DGUDIT}FKr*l$MQ)B&jzvJ+K7>M5`tk~!< zCK9Uy7?Sa(ApYy{;=q7Y|=n zl`k3--FDYK3{LwGvQ&{%qofUyWpWm6Iomot&9pXy-l*>w`IFU19cf@N)`#I1z`N1~ z`s)L16npp1C@bx^H+8(Cl)Ze}_c|@s5`&!ucs@v_6$S~w zm04T-Muw+z6owX7Rz@^MM_Z6|e3-KA&3>ZAcRHtlV$pq_$gLg=rFlw7gUIyIKJD zhy+C{5`#Kq*0dAcaBMuYXYe9oHf}K(T6VG%nd6NB7bkoESQ5JqFP^j91F6=(}bmNuG6dvR5XF^ari8nZPp1j2KBeT zH1**ss+iW*@QFN&GF6{zhe?mMpLoXeSh%WkaTv6`DH7k~?6az8#C=Iy;x2-<7UB^-FO$p-pS< zjz!NpI_gX*&e}Jxa6Y!Q{A$}(q~Z-}16bF07TL)geJ(Wo{(QcwvFWzHdqz&;gg;6j z-}|K8H2|mRtfzbVIqWwdUbO|33$GosQ?o133Qj013uAre^+!K$IHjC;3Yd6tmc7h+ z<+{cx6$jNLUc*)-B=ilXHA>sW4wf?2%~7d8w#VvC4kP=0!#5Hcub{7u$WAFPE^e6K z(yi`wexi3H^XO1tYR*^jnf)~?p1azTm>x&^+b_+}pbbfK!j2CNybQO{oOG&pV2JF} zqnZ!pVJ!>Ev`JNU%7J?KgC$YUeQs^tA17<85cf1@htX(?a|?&IsCL0!XzzyW7Iq%a zxX)hxw10Pu2x?RIvrnYUv3~aP8=6{&WBdbX#DanXL31-z)~0XUIYqt1$rHV2#|;M$ z$>ra9S4UlwcWdxZe0v1Kn&a@R@lj`E|1h75yiMGN#l}d+w~wlEB?-aZG2!VYU!Krv zZ`DZe^l`$$$y^WcTqWG9hv0f{yUCu-I7H)PLwtMJEGA9&MddvluJtn}9?^KfjKJkN zK?3B mR6=#mB6{Ti$91TfxakXCs%_u4VCC1v*RLV3ez+>|#6JN$oq(qR literal 0 HcmV?d00001 diff --git a/assets/icons/logo.png b/assets/icons/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c987f2412294add7d32f9e8921c13ef28b0cf67d GIT binary patch literal 55309 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 N002ovPDHLkV1kGY$p8QV literal 0 HcmV?d00001 diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..e96ef60 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,32 @@ +*.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/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/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..6b4c0f7 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 8.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..e8efba1 --- /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..399e934 --- /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/Podfile b/ios/Podfile new file mode 100644 index 0000000..1e8c3c9 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,41 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '9.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) + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000..ff34946 --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,67 @@ +PODS: + - Flutter (1.0.0) + - FMDB (2.7.5): + - FMDB/standard (= 2.7.5) + - FMDB/standard (2.7.5) + - package_info (0.0.1): + - Flutter + - path_provider (0.0.1): + - Flutter + - share (0.0.1): + - Flutter + - shared_preferences (0.0.1): + - Flutter + - sqflite (0.0.2): + - Flutter + - FMDB (>= 2.7.5) + - url_launcher (0.0.1): + - Flutter + - webview_flutter (0.0.1): + - Flutter + +DEPENDENCIES: + - Flutter (from `Flutter`) + - package_info (from `.symlinks/plugins/package_info/ios`) + - path_provider (from `.symlinks/plugins/path_provider/ios`) + - share (from `.symlinks/plugins/share/ios`) + - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) + - sqflite (from `.symlinks/plugins/sqflite/ios`) + - url_launcher (from `.symlinks/plugins/url_launcher/ios`) + - webview_flutter (from `.symlinks/plugins/webview_flutter/ios`) + +SPEC REPOS: + trunk: + - FMDB + +EXTERNAL SOURCES: + Flutter: + :path: Flutter + package_info: + :path: ".symlinks/plugins/package_info/ios" + path_provider: + :path: ".symlinks/plugins/path_provider/ios" + share: + :path: ".symlinks/plugins/share/ios" + shared_preferences: + :path: ".symlinks/plugins/shared_preferences/ios" + sqflite: + :path: ".symlinks/plugins/sqflite/ios" + url_launcher: + :path: ".symlinks/plugins/url_launcher/ios" + webview_flutter: + :path: ".symlinks/plugins/webview_flutter/ios" + +SPEC CHECKSUMS: + Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c + FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a + package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 + path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c + share: 0b2c3e82132f5888bccca3351c504d0003b3b410 + shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d + sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 + url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef + webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96 + +PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c + +COCOAPODS: 1.10.0 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..9ece2dd --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,578 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 964F0316F934C372F9A289DD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABF26D092DCFA7AFECAE1958 /* Pods_Runner.framework */; }; + 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 */ + 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 = ""; }; + 40360520B75D3E668845C254 /* 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 = ""; }; + 6462689146C9FF38DFEA397D /* 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 = ""; }; + 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 = ""; }; + 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 = ""; }; + ABF26D092DCFA7AFECAE1958 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F01A29D929A45761F4F09D5C /* 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 = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 964F0316F934C372F9A289DD /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 84F9BE3D376DA5597C2A8714 /* Pods */ = { + isa = PBXGroup; + children = ( + 6462689146C9FF38DFEA397D /* Pods-Runner.debug.xcconfig */, + F01A29D929A45761F4F09D5C /* Pods-Runner.release.xcconfig */, + 40360520B75D3E668845C254 /* Pods-Runner.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 84F9BE3D376DA5597C2A8714 /* Pods */, + C460029D548F8C8E174E1334 /* 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 = ""; + }; + C460029D548F8C8E174E1334 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ABF26D092DCFA7AFECAE1958 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + FB456ADB33087A52E724411C /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + E2146C78C0EA89D54DE23218 /* [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 = { + LastUpgradeCheck = 1020; + 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 */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + 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"; + }; + E2146C78C0EA89D54DE23218 /* [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; + }; + FB456ADB33087A52E724411C /* [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; + }; +/* 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 */ + 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 = 9.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 = P2CG8QD3BP; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = me.hyliu.FluentReaderLite; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + 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 = 9.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 = 9.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 = P2CG8QD3BP; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = me.hyliu.FluentReaderLite; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + 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 = P2CG8QD3BP; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + PRODUCT_BUNDLE_IDENTIFIER = me.hyliu.FluentReaderLite; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 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/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + 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/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..a28140c --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + 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/100.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png new file mode 100755 index 0000000000000000000000000000000000000000..ff1f866a8a4647d8885ade26fed84e1386045712 GIT binary patch literal 6808 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

KO%|`=zd7c%6eV|qMJ6f9py)8k(MVrl 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 bSxm#lg?)8Sdvece1ibuw0=#RzqO$$~a3MwC literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png new file mode 100755 index 0000000000000000000000000000000000000000..607926ba56ae23fc68962bbbd4658795a03d9685 GIT binary patch literal 8057 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 Hu0mjf9ty^b literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png new file mode 100755 index 0000000000000000000000000000000000000000..9cd88357f9e08a455d6bdde0a32aa41c9bc9a640 GIT binary patch literal 8719 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 tp^NE2TM)dm1S0ji2} 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 YENhnk>`1YnmWu(Zue20D$y}m536<_# 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 IWBT9!0n0)6I{*Lx literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png new file mode 100755 index 0000000000000000000000000000000000000000..392e2259713e89430531869647e62def584ba532 GIT binary patch literal 15781 zcmZ`=1yfwj62&2SfCP67?j9s;a7%#TzR2PZ!6CpB2u^U@#XYzN2@q_N#ocXjhv1Lz z2fSN#?^MmyOwFB{p6=7#C-RfJ0vA-LFQo<_R5Kc|@X=5v6leZY)& z<)i3sj)eQz8M&>;v6#(C!1ZRG^nIPwYCna;%M*6nc}t#_Ai$f3>MLKh^}zcNcNkd` zvs*PgL=0lH?>0(cjgJt+u-^Z#S}WB(kk?&ijE`5##ta{k-kNn0nvUul8Ey@D$s{6u`WsLKX1Dc&RRhiAkr4L3YW~ zN(Fd{gL7uz8BwU>V}z<)05bn2JE9}Rctu>9o7T%xH!+$IgLBZnv)05oevfc$QprR| zSkIog%W`u->}9e->&C1WpJ4SN-W(wT`bb9~Brvb9F+r=66(Q3>!UDlgsN8|GeG~2& zCpeXr##KD1n{KHnbE!X}nKJgd_qwf2?nusDysRx(6km@7p6xm%Y#Te6f}Ik{u+~^U zjcpGw(Tk)zdJbaW(IES?eFzvtUPiOHTY91txJjl@YEiwYjCRM!(3_Vz3NZ%mE7e}6 zptfQRQGA`9on?gBLvmqpu4|1~2UByTf0iyqj`TA-XuQXG#2~LLXnLR8Z5)E)-2)_# zt!SOwg-gdVHp0WvF@8PAL2^h`oY^34bMr_`mjc8RO4u2OiT-+uF1^I2&~0xtEl9vV)#fg#Zd zv|qGvvVY)nXumOWwEl1}>3?-EGI71)~M8 zjm;!k@2Q}GenloE;K5Dr_c+!SicQU_M@VBb@+Q*9b)T|UCvH%Es0Zu~@H+^$-KxbJ zP>J6Q`*J#W&fZL$(cWk|hZfyDHfCnOm6QxMyXO(9p-H8wb|9S%y-?^MfvwwZ-_!=S z($s%gsY0Rn6~T8i`uD@XwGrKL4ls({eP=Rfz#vl0VRW#Gp&<^BBPW=#-xR6ilXW<0 z%g0y_W5zWsW#G;?1AC*)z_&cUqbAKO!t2((obUOF#%7wA%(GX;t+{oQPB#0uX~o9c zqJMV=Esvfy+GCJI>@yaGYxTL>t%9%b=8=y6sGjgt;PosM>sT zh{#94KCgE02M8qfO;&2)-rRS&$ZD%@%Ta z9ep>*fi@b^LpT4>{yz3xt+d#LBTG`@|iX=r*Gy_Lxvrt`9v`9;tpNsvoi%~bJ@ z(S{argMFT(YQ$*g=ZmeqkS-BOEmywG)z~Q6XeEIWd-!#O;O^usAlYv6xFKpQ%QoSi z)vqk%E1WU@wHLh{p9#$`gwQqZM2idXDzlxmm z-ht%>y%Xfu%db?`R9Cxtzwa?gxb^M-{f)8n*>pMZYJB2WEhSXQbk){|nxl(RHNA6m zjy>`AL7pWd^KFBtnilO`1Bnv`SiZ=q?o6Iyt-ITB6pn#dkcsbd2$s4VXxUOGNwQ?x ziCu%mikd>Fx~c1&-c4FUj&_b*$8Hr5m`kqB&W%R8UvIfFt%fA}sL1ok2@(vC%oC2p zKj(BXf;(>UD2L%DUQ<*AKWQ1W-x+^ZL0T@z9WN8$ojmv(Q|NNJUgxhVEIjk~?|@MR z$m{3vM-OQkcT&|Xbv5at@CfJM5;93`yd|%Cb(|^g4}9`h(=`8yM}VSmhMBgV0ubC6HjZ$`{{Yd zSwj8AI=P?n!%FYiKyR|uC-?pkQ%^&zV z|FNSi#y*G&1mJ3vLzo#=Q}dt!lJ+^YG`>y!X9DMK|O7>_6>9_Wbq* zni$-JLKrFQy`ss4?Od%426UCV)hUR!4B88<8808V+r& zV^dm)*kDfWiQ$;4zfH!Mr0jX_0LJq^BgcTMzcHTzxRqD0IAGIxYYh$}!@fW4n8%`$ zAecEb%Ex`ps+FD2iS#+7R{M{$iH@mA#yHh;bns5E)$MJf)ah--U=!S%tb#43+tfnv zOzaS!BQ(;lm9(-`B(L)Q`Jne=Q*~`t@bCA7eysS}u0AJ25N@GQJ?#~C$}RPOQn@4F zn|4H&svR%wllfXBtC`7zJ9f8l!ZZJ{mS>PwM(_MFHQy+ZZ*>Ka@9>_nF*mBBJA`pLZRERi5^nAz2cO>0mfC7zIkk>!NaymfpW=$29*Zj3K}`n zhvL=SEWN!Oq0vcM>&>~VEOrgc9NnXV!Kqdk(^6-_bB{FKht z_9oUMT^!T28QD(b1NSLAH>Yl$yL<*tpY2$DR3lHI7@Hj~*1xkrLSS%N-;}kp`7y(yX?XA3+FjI`j zSJQre46+H9QexJlUT6-Dv{$-6GMK$x%4>XTur5PZ)GpZ<4=1L`|9viOTWylG#FIQ~q*lVY-zC21gK^s;%td`4 ze5^4{NCOZEmEGxOSGqaH@UCERn5@iZyR6c!4JQ*uO5q8b4huLOVn!VzFbf0NdQ~YrVX8D8z(I^KhWXbR|^3~R~zxSdRc+1$iRNQEH zdgwGDZ=%148T~{bw4gB6x^n;Bipz8In;?i@K9dDgAtfnt7;hmbJd96DNI?*(y!_89 zF|lE?B3W4Y`X`KU7%Z*6jwdU8g zNYWmPt0o-!tQJLGGDn;pyOvvlzT_P5nlITtv+)t6LcDnIV0a`(dxopqjtxVNWch9I zF0)o?w3eA5G^xcJsn?xfABL*Q-31(aHoASAt@~y5u zUn_A6N%1!<_h1$!LnR@Sfc%q(Nr8iP>F1HUBho2Wvc3B)+2AKS?=V5eRg_EilZ)Rw z{yyV#+~vPYgioUAuK%srp8fN<#-&c5Ewre8OEchl<{H&7Gi9j$Iqi$hrrAl9IaZq& z5u|XI3J-tp3)%aSg*(TO-UWGuM`$d%3Rc?wZo`BCN(f(?MaJ#F$@2A}tS%ET{KarD z9T7%umXq5J3$5|)+^X+;QJ`3#nPl1I>$a-<#o=tixhdVUC<{GpcR_6Hh$%Rh^#eM5 zdU!IF(5cxXc|P4kuugC=3Y|R?WfpKVi4otZq;jSzJziBvaG0)%w_KDvvdk+ZeL2N` zQ%l_USs&gv5bvpLWATYYZcDx4YeQR!C(np%ybp_;E{5jfjXJT&uJ6~8=tnM@H3UXj zO?c_8KUvA9ov*h{uX-0J&XUVtn5DWq%+T77nyxlQSgkT6>xR>*ljB?3%^BV4$!a^% zig-*&vVkSMdl?;)YqC9K8tHNoPs_p-xuq@N_$DK*xn8;eQI_Ph7_hI(^0BN;@kz%! zKRX>~hvUJvspA``FHvkH>}c?={^3f(1h;3M0fq;(b(PfCI*|EPt!mG-m^XL@vN$fa z1Wk=0BpD&&MSh6A={YtwVZmPi6$(ZX-e%i%M4+Y5AFGo#yZ2eYG$SM?(owKM+@A8v zX4lcjcBdA{N;-ABWQOTYagDM4g{tR#ecOc>W3l1hB4!y*U?BVh7`cQ# z-|5$X$>%`~8CjPBv&_3bqzfU}KdBt-$_wCymG!y*>1DG>!co9sPismJ z+ly7Ri>nqqLm_*W8Kd;BIkAl-FGQ=uW&U2BxU_CN@khb|(qz^x$2T40L=r35sjsWt zL1I@9nSpDA|cV_k9NCSS|44;HpEgW zU&Bd+v~T|mR|VFGPXcXIYlU)BzO?{j@;E)s#zyyG+cL0Ne3W9li$TTLaBVj^*4&Hi zkc7Gi>&m-W3W_wn&vXXOmUos0Q*P41$Vxpn28|nDKQY|?z8O5SC)Y_fmLQ%ijdMsC z>DG0c81@PD+;{l-VA1xfb|A0ybwSh(FMwEJF~|axNRznu2Y1A_Fr%UPNidX@Aww#a z(On`Mssu2Vv1~m&kMjx(^hABxQ8Q>C zY!Y%j5ptQB3rH8g9d-M99w>@sezW0oY{}#X5EN{qVgg_=NjN|vY>RyzzFy?xXpK+Q z_f`6NssD1+O`;lr3%|1*{38_BP{eOSI&i z-GXZ=8?V9=osq2KvZ5NUNbNa(RbSw;v*p&lX_g- z1KjM}jkDeTPWz%^ReKQH%$3uEo_tfNVxFFp@y15u8-oSncN^zyUIp%;n-H1W3f?&KJIf|!p9Ciw56LuW zDv#o)aI1(byDGl=e_M$VG_{ed=HBAIbP((js$=Hd?wh}GN@bJs=8L5p`^sO&ADxkx zjR*NqTV7Cb(H2wLc}nzCmUwtfh_X*Y6ie(+oPMgSrXdo`OI3#1M2S|x`ezyq@t+{X z@lP$=`yZCWGovnj%f_nN4t7n(i?l8h*WAPa9(F)Em_{)#ahk$FxfEG#3tdX-e6zHL zTA&nKS({n!fq@_{mZ-1cP>pf=Ci~R2Wock+qq6vrHp0S zJ6jq>)fwJb`C~WPjmj5Q64yCm&0<+%89s zAW_NbW}u-}x}ED#+0pH=$L}{UF0LufU zZ(!Jc7RdBl?~K^3x+tzQ!nbrnceQjVulnY19Xnzr^=k&}o4j063e%4ap6D-g-NP92 zH7H5|dv1kf=tY^!6ZsSMaG6RAg+5vxKTDb&xY0n?VHkv)ZHr(vH3zE`&GOZIs%wfF z^Si1ywD34m{0?_6e>EW#gRAOH3af7$t2~u1e&i-{-yNpGw3E$Zi9VJa#(>VD->;-@N7kwY3!-)y>D}S%)aL@$V-2nrJ3sLh zR0ejnE6OO|^V2g;m&1Y=M1gkX4Tb&(-K3+-uNU}RsEF8@KG`=?zZu#e*3N?pX)4yn z3JLz(&8kaX!n@4h_8&YmoW7Z|1y!6EUHk}u*atsdm!|fNCyfoteXo*NK8hz%8?H^d zsrjSV!2dVmF9&X=nMO1|sx;-?t!_Meqe=OUSB4mu3KE|+`gM$|lZ8=(dvd82rBeQE z+CrnF%C>4Q*+TbaEu?3&oc>{4vep~N|~n7dlj{?Q6@9b9xnAa$iI>h+*c z|HTTl0JdEIL&Yv7n>J1NtuH*}tgF}CwJP}(8TyWunt&jtM|n#d4;Hc$GkmZV&%!<; z=)p~3QBs>yJtaFLcPzK{Ii8@)LtlY0uv_J-AvjB%=1W@Z^y5IfSPRoXvB6BjDj=RD z4M3!YdIVR}sxcdx!nATLN-q`3!RN)n7m?#HMkRUXpa;nr-?w18VHgblZq=7XiA-StuIj3rZx^5%0*YCP_lO1DZW?bR8~D$JSLdgUl0zt@bCoLZ~UN>V)3 z^~vsrNJ{`_$FYRanoVol_Z9p%hZEWh7vw!0*gmCbO@}%f+4&lp6e|OOUep8&^^+y~ zo*0(C0s9ZW%_lXaUon)D)EOZnfhL z{G!=s#uI^tvL86OV=sFYOOk$XbaA11apfej@C-~{=hR=DG2%MjeJ5k$tF{<1lT!%| za*(j3$O!ZkHL@GtF0ln&3P*Q;Q$qOc7lJ9RP=?g)^?;bwi+4qjas8f2Xs?pI7n2o z8M!3LHX=4o3ip!>64VwKkEd4q71wjv#^EMTW?}HVIdVYI4##d!kVN3?iLe8KYv0e$_8=O%#1xiXU(vN<{maAOJQX8m@RQL;vuv$!V|N0t;CV#XRlZF(M zV*G@iSy&>b9IW4iucO}+;~JyZ>w9iF`R{X(_GA;7dN4D_MlNS(r?nja8YOZ+>D>39 z>&NA~9mw+drOLIC-ZcWwUAo*+=wa(MBG@?>4JJuRX<7r+wS@?UFEl4uf*Vl*Ue3eI zAWH{#v7%3ad}D^O(UOO~1IFdhMV5;ObXTw1 zF8j(;=ABc-P6=6c`u7WbCH}#pUlgRI4E*(8>Kpu=cg6<@)4_PRET(W(l>&6wt*Bw%4_ z@iKj4SV`drf&PKQ$*F>o7PKGb?KMT8$Xh43KlM2`bLR{e%K}7_jr14Z$z!HNJALVw z{sv#8N=frpkoWsE>QS^Wl2=~->guJzZB*3;0-nxUgd|XX_dLkrao6595w$SR|1roQ z2KUCrwjYpeCE_FrHhl3Z_TOWYPJ?o34h$QWvpKkl`Fj~Jd*>+QEn|S{4tbXX?%PRw zjN_(^V%e?kb!5d`z1QOC|Gww{qAlnA#?vMv$bEEJqUt^6N&#+mYp~|Cbw;H!EMLze ze$l*7;BKPq7fw@;ngyz98{1vl=&#*MYU7fz zT2Z0;f2;$M?RUAz`m&VW0-KWHXtU?3?gsw)@iVG?RgQM2l(mPgUj2zej2 zx}Lx4wmt8%dA>K0#xEHbqWX>NAmg5o&QyE|4?gsHQW;;-O@dcizctQ+JK}b{U9f&I zb1p8w&H3_0x#5(2#f!mxO#k%~wGsCjjfQ1~{IK}VqMvu>sy>j9$ur7(fbsK;r6!|& zgbx%r25q3rado3%kc+)E`r2{`JCFV()IOiP z%LIrK0e&2oc&Seu=Ub%7sCzI4+%rlywSZ~DN`VNI;Eq(m%iE|iT%|W?@U%wjWn&0T zG~_Fg@!Pl=lGxhVn=l70~i5urBItc5l$+UmD@4` z5G6OkTbO<^JuSU9@2^U}?4S+Zs#igm(1S)i$n*9%YjAOPTz z?pOW&;TV-)Py?u{!FW&(75bjx7Ud+L0{jC@rO0#_qoXwt6y*1qPi4G=r-NsH@9LN6 zk(0xNAYzOxhkS3U~{(EjE&YN@4W z>bLv%m>(C>`EO;Ou)fnRdgF=}5sW($g6~09k(t0>zwLnq1eg*aWlA!ie~0p4qI{{C zA`|zdb&MfdNP?^n8njYrebN#Yhm5fS?muq*{`E2YkCH@EkqM4Dkc;YJ+7v57>g!`8 z(q(B~`T9+qBu&SqF?#*AuDTlV&JH24USvg1VjUd&m{I5=q|=N@qTA7*U5dZ}vru)^ zBtx0m?5d!pS$2*wNe=<@(?>y`I!M`z=*NyD%XCBxUNeJ-v!<`XPjJd6a>!ViOr+dr zg}9wEUH~eDITcVL;Uy-RO%edwlZ+6fEUHPmrz^;5du><_g{gni`dq^=4j_iuVq@=e z^uPNa82jWpJpGBUwUHh7vFg8B`}bU<2rA)^{zS!bX2Qb@o-uJJp=bIusr4hR%?zY2 zC|fQ35f|^$fDa(+=zzD(mZ}nL#Xl3Xl!p*Qw8cP9(4^My>s2Wy`G@|7i!X_^=wgw>iDiBnnQ6=#{X;t+XxR6vL|Canp08 zABnKog^`g{W2t|v-BkIIre=@8NbR}V=4}G9@92@^zzIJ02O|D}Da3>tgV~H@{tRx@ zS({oF1CRoMJm8Ltklct+Q&F~*g+5uVtfk$$@9qqP`UAssGsan2WAWnttp{3q?>0wMoK#jywb6e^e}xTw)=!hDrXJiNV7A?NyWtw%|6+tPKU z^#w))cME)_>Inn9oh5wC3a~Ru(|}f%GSAz4E?Z%$n{S`Z!w6|FurQts>-IS{|K%*N z!z1pI?@k}337V*Hov?bC8>V}o_+1J_Af-pIkJ10rpKWg&trvlz_3fD7F4_62ryk)h7U<|LdTAJd{HWS| zG;kwJ#;ui^C&;TRma_0u-JQl)K!{Ha*JQ*bPGl2wJKGBv;g)9I)}<3;f{l_H_*>tx zp&DBtlubP30L1PoEmT(-vajT?5wP_%3BHzKfA$?Vs%&WPo59ZqG&vMX@2J=pC;~th zh}DHz6*sC5Q{?vQf|j=n65RM}+Flf!n z@Y=Qv&j^YPZ!w##_x~6+HyBbwS%3YSCAnMi;zN!i;HvSc{1%>)7UhH8k9v8*ty#i~ z_90fPLGrGWCEh4D=E~)Cxvd8p7mb8y>mcrSk-K#Fj~4e1{mrQ)I+IzYq_w#FPxAYI zPKH>jF=Ysn8b#|U98Gp_mY!Q-DB_x8p$)Hc-b-H%`qOVaJL$Zoqa7T3A^=vWSZU1} zWdQ`;&bw@hB8wA`ADu9|m%~21div>jWACScD%e8BB*sa}&95?QNo3fV8EtZr(GG&i zaX7op2Re6dgjdJ8i{0@Fo@C2mQv(!Yce-$>;JqrDqTF5YP&40?ZcQoO_!aU5u!58Tyf0fw|ZX7%N zf)SfWkewzl3FpPpaRxh`=GT}uG}D(sOW({L%r@Sr)-tNZ@<=m=c7MGJ$x8a8|C}Q= zJ^B<vw{_9 zrJbgQDghc&+ENsM@AeKr+I~c_qZbLtd>CXoVfUH86T8~}3R6Y7`(S~!@fx2Kdr5BWrMzuO+qb2m>A=P#l^54FiMeW4lCkk9v&|P=2HR2u^sLemblAQ^gk#0ulQo`HGLQQbkl@=XtC4BZ#yIUqAL$ ze(VLwK2p7SlX46+pmF(SjY?g@$SIzEcxLa%PTOq}1MpM=xaogmD?EpH@4@KfJG1pe zHg6~Mc?EX>Kc>7h8VA-DSHubE>zj;M{+POnDuYvG)Cb{0&-&lrNxHn;6-m&}kHLZJ zS-iHRJKs33SNzQ`BW=+qinN*9if|uyV0|xsP^ya0G73c%M?p;*%caoy?f6*5iDP|s zphHT_!DsWFOa|N->W9?*Ix`_Y!K>X*MZz&g9U2-~kt9{aYmieF4Q$Ansa6;- z2Q2T6w)7+i-=*I#f(R*JG2{RpvW$u@y}impU469L&NcD~=--IzV_6Hu1j-yGJhlgD@2%a2l1)72n^sQub7`RpS=!j}JbmLf4R`3c&uyqSE#RBWU zS$1a%#kNf7;C+g_g4;Kfiw-Kblisv?VLFm|hL^iC-Li6Gi6J4yaaOQDs{DM^O=-*Q zWzk>32_D{$H43oQJ@w5cNCO>Cp|dk#(C0xz9!kLKeNWvwYVKpzxA|7)53!iT3S^9l zXMvUXQ;scEF<(|^#9rlK^`(_cl#WIyE@Y%@`7Lr$LP#^oGqPLh1!^xF%e|Gm1DCs( zd^l5j^0Uy~g9I{zNd>lk2H)<2AA8>6c!kpSs_&QxkYlFL0*h`Y z;5839#Go zuj$;ZS*QXEP6I?PtzV1^A9nw9cY;@S`+@{SSbRT`0XCiG_{cogPT%K?L9zIJEPr zZzWjjVMJ@aktZt{Icq5F9alo+mGf}@4^(a|g9|Tot9WVSd3B63FRtuqlDknQ11++9 zfIVUVO(QWLj=;Ayh+k$3 zj|L2HNtf@`VZSxWB6=9y{t6VmtO-frUlnpjjPH@J9F1016@3|j5_$wH)qi%aZpp6BlrGYQld zH+J?jw#M+k+wFb$WrSaT>=hs;NMNuO8}4#YwM`yP@^q4m4Dd^3?5w*`b}&v+pdw*o z0(a0;-OY`x552KdgFl^|uD*ZmB%vB(J&+Kb1yWLg)on$8KDywvcx52UpL^`>c+080 zyCYkA=+@w#c-82R%hf{F{A`e)r}3NRSx02bLwFutYl~r6W|4py|A3#% zJlyC$pKxW+?V+X*=yaMPdLV~uh@}E@gZPb;_)`yl{3+I2Bs-do>Vi15HC(yGJG6Z!ySwQB0?=}nIFCc_ z9f0d_kYRr7=pniry8alF$*2>P--i79<5E>N26~h8SCdS16>SW;4a*f-vFMEFtQ^9I zMzi__PYzO1y&gB9;(`y~=oJ_7+fpS35$)G(^+%~<)D4PI8-!f4D3kkP=TULcQR2^r z6HH1SI??V0##xf5TMccuu1!&xrwl1lL+J+39o!xp(K&1C#tZoZ5ZL?xXR`ae$TKbBd zfvt1fU&6PMuDo;W4B`6d-}ya;S9Rp09bts^QX6w5e3woUTV7-kn0|Hd3wR5)#Egk? zEJ8YJN!~g}0 zp$0v6PnX;at>mgaJH*X034XwD9tbT#(`$eq-iUOFs-uWTxPE?Pzl-P!$y$mfjn{}= zsRDla1<8VH?GQZ0nA8eQ<1i^NrvnC3bAo@?n!Y)fn}WZn(J44N;75G|9gdV-4Nt@n z@dHim@wEtVJ?=+lRx51g{f0#&B|tahk}AUQm_Dh5#Ur(g(JuJg?gAtR|GZYdlk^l*9fcH}om-=Ie#?X;hr_kX!Bt+}!1g0gFkDI-PKL?YwvO+q~zBV7>5ZD#O{|2GF zop}!N3wfos9ybC%!mj=tVLYnBQOA;TdbwVGCNHMO|9`93K((a*ZGpDpUF~o7lfo9SIIZwK`!rI>ZbMgts`7WmqQ^&Rb?8 z#|(!-DsAmgMdr64@&fkjYxg%XNQnM!$6PJ2buoZkoSzp>MODO)E2d>cUyx9!e9yw_ z@bxmjHG+Dq*azFT%X%H;g{-MYk0~XC;koUkhc>R4xpHDG{tNky9gr?AD05bhA#uk} zkHU81ac~&vmxRd-S!(q5>d8_&kyD2}(lUz(%WLiR<+OsW66A~`rKii>N4h1?)lDUU zjRA=uv(2oJi@gDb&7x!2ON^^i5(A(GpWR`P%$T=bQ&qV+OQ%e0#R^3g&~=k=YB_h9 z>rVt+3K&1cgrm=lj&Jj_Ayu|$9)le^t*2dYG)pE@gP$V(Ew5Ra^GLf~j3(%e&rFX;SVIYh;FQ5)6R43%Y1d?y#^HW{Yn!rz=TMuI7qgKf3IS1nr+g?axtbXRCXN>_K;CjQ$$|BH_~e zuMj-`n`ftfXdrc3W?F+?;)+&+YH9tqIs8JqDk8VT2%d5bXV{TTGXG0>MEKA!(4;sY z(#wS0ILxHdR^>D9tM$nxY{w)rJ4su>J&ZuG0c09Er~eGPJGe_GMcsbyZjoqfgHz?w z3$NYT`r5K@c#&o0mu6Lb41SC~SUjsb@CIkD(jk-39_Q5e@Vy2X#SlVXHD4;<&3nA4 z)0Lq8xts3n)ra&6M-6XA{0avYnv4@eM(}&daGl!TKMjx20Em(|5yu7RuU=tM4RaiK z;URpgQ=v)%{zCYoFpEq&LoOdg*JL2^s5D4G34NkbGaeRONAyc40H;A{C}zMPp+JBJ z&&y_R(~#lX#8E%S#N%2KX{N-}_w>4+dKCvE+zLFwfpm3C_4WMw-)dR)-?U}%$&6%D6> zsB)`yAvu&I3|Wz|CnpLrYZxUU7w6vVH)KH{6Z~F==|I&o@lDkWv0{*6WS207!(HM* z#??v`>-jEQvv7iBO@^{kECSHL|DN7K60P#lm=aBWqUuM}g0&GoTD>jELwva7z9&D3 z5&N5#q&=bo%VI~yIe4V&S4&UBM zK~ANg747bz(MTdm0PyQK;oF8=Mm(&-qE8yA96hM;bg|Id^%eLmmf~n5AKzdNf<1)aL zcgLMB*pX;a-xW!mi92n58Er)AdqQW?Vaq>1Bpu-VOo{p5xLAi#K$*wVd`IEcwW+7n z;i8W`6IdC!m7ICrq@mIdbe24+rc<}CYVzG zHTCoHcdRIq*XdNWZTKaNJWQ_fP=0ms`HBAJhsMnFk*N{EN$2(7DTA(BIOpeq#F#0C zrXK`cByW0dk@%2RgCAR|d#axe(v#p_OHAktGDZvUGAzj@ z>&a#9u9;k)S>A_H!x?f*$4H3)nn`2M`M%*yWW&jh>C3OF+^e|NtS_7*8YUrCg~fx; zmV-a1Ex#nODa3spvE3$HsROtdFbw?bMEjy&DI8zu;NgiVkHqz@p1FtKuR8xAlb5Fr z3wmBjK9z7z$a*#W<~r_(dxq-EdS2EY(9dBb2#L=L@?y_G?+8p0~>poQVW^}OZc%pU{v10OGF4MNK|F%y> z2>rjcKc2dWBGsf>B7l5E=WydV%+}MG%j6WNu-~*_&BWVMc3x=H{ z92|C_TN4JajGV!SZ#e6;&l9ny<089n;G%j5iO6cWyM+-omN8dtf%!aX@sY0CN=xqo zZp|FSL}GdQ|it- z>0o#)TN?TVu%IAVJ`o4MswVqdGxkuDvnCg8QG56(-3b>))53mqbzUKj;JP&_o|&91drX{E#NAjb=AHxsu(oJ{Y8$R4PSN zG>iB-@x1vi;3J@3P>l!AseIl0vY{_6BRK;{jUAYUm|v5svVUG5qBI9#J2YL03_Uq0 zyUh{!q*N)zQ+&4-1MV-VYh*4VED9DjJ0sigm17dPy_gjz8piS+f+RR4Udu2B+Xvm} zEiB-zY4p{Hv>aFnD`5g{&`zz>d`N<0YaM3K98*tNF+c>CV-qM_==uHldaO+J9dNo7!jQymV^X3r|0p`TAe`+32EwrK9glrkh;JH|UeJ?4eIl%Yeh57y31l(o5QHm8{vf{{f-oMt%SQ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png new file mode 100755 index 0000000000000000000000000000000000000000..bea85a9ceaf8249dae8db3d9c794967d5e564e5c GIT binary patch literal 795 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png new file mode 100755 index 0000000000000000000000000000000000000000..f57c0583d06f8750356bad94674e2b7f9019f4eb GIT binary patch literal 2484 zcmV;l2}|~gP)Q_hyrg+1*SwyE`+_$aUZMd0r;7+03NaAer!R=9!tDxvz8G z*LC0LoCLjIuZRDGNAL*9L&oAGMjkRka9@mgKlrG8AqWDQH$M)V#Crl^;QmU}RGxnn z59geK@Z-=x7(B0byNzzQE7$)L41?zth9ROTl9AUSX4Yhc0ecW9FE8WrLK{8)OUta> z1&pi(K#@Eq2LCD>EmitwHVe?FlID{H{?sRH_|(P-aU9EiKbU(0Apm^1E`+A6jqpc`w){c>bM}33D>$x@b<+v1dF+k|YCD?4Ce6oeq|lmoal; z1!v|~bXw(SI4Cm%8Cgq6ic--ELpo-IXNog!Y{;jA0Q+}Tv3op5rBWG~Uh4w6bLS3b zE-d5SIWm%F!Sko&-p{-TRR~rXF;FFjY^FV9MMo++lrrMv8wh02rsTnZoM38QThZC~ zOeiE{$q#n##o(FA#Ze?6V}@>&F%%SRR+y0&uy02ddq)LAw^~|S!pylPoSsu4j48EI zfH7Orq9*d}@mb_G(9eL^0KYSEq0EL0os5C=wL?Mfd!jZP5IWZC>MCyEzK!GW-^RPw z?qoGZCt7De_pm-U%TvFg7$00t6$57a@FEBTqR^EHfhglhK)m%*=yQupIPv~1oSj=i zns&{VG?1<^6NvnEq=s^{^{@N1k$V$#nCae$3x#on2t9;xEZ>o(o7c!heRxI)gpNfv zUY@y*a|<2QhE{sg!1OZZ8$Ts_O1_oX2eT+vX>%o=bcaR+Y;OQjoWO-qp;nk{O)#}8 z!-?G&!d9z=U%Yt(=jYoJ7+)_1FD@n`u~Ds+Af43(rBDl7(Vbu#2(4Z;;sD!fDdI{E zE(|k9$PE9Sb!229w{G3S%WquAc`{-ZUF(Lq7nw1YnC`90+^q$I5O7)`G{x-V>x~%L zTInLG*5IN@bmBiFb>xXU_HG`Lk;TPDyfkwi7mN{*k$}wjVp!CK70D6i_$)3hv?X1XjGPfkG`Y_U2VZmk z-qK0ajBoHA3faK;o+$`0mH^u-DdK7kVHAmb<;BryY7NT>dn{Tnf&BdVRb0HeDk4vN zsfe_bQUiU0FSZ|rHYBtebwQ|>%6oRS@_JzPf+_+^8n3CWO|8bEai|LEBZG@Odo`@OUjnQmMkl)QB-+ ztc?W3SM(QOzk$D=UBvuSTYD`nmlq9w^mI9<~D21{{6iEmF+iCjRM3`oM}J;bq@8& z;qiJm(}-isVr)<=Lj&=x3H7n-$OmX?3CZe!h}(Ou)we>QV!F4KGClbB4{f`FTI>)? znnfk8)Z-A_>m5|6k%)DK?;B$XAg(ox*a?J-De7a-OIOfZl>(q((iE?KZ2|`-$JQm_ z=-cx+{QGOF5qlikavjwuM3lq`IpcmU9yrvgk$SJ>T0X5tW+Vghvx{hTJR=V1b};?S zE;J`LtPAAWJM)OGZ$mP%80sF=ozs(@*w~@hn8qWod;o^d7X8s6DnNv25UqZNg`=MBv{sw(1|m7M#>tYYw09D7?7X5 zhgRFH)|$iVZ+r&Log0M_1#%IP)|)?AxCU@mX2cr9AZMhgkuoDARQ8hCU;J0@T2dD} znEvKx(cJl%0{QzjO#S98K!@SVPQXOUP!tzeUBcGW<5y9OLqu`BHY3t&v5pigJ6&tY z?zaTw$NxlYm5gZ75{-Q8b7<~TAZtC2p1O&{f1qQT(Cvdvttx?tMwAi1GSoVvy%vG` z>MyHy7hwOeZF~vHkN$yH+ZIp+Lm;ks-E&NjO-^a>g{m zG;*pBY9>lFCHdSsgM;H&)wQxZ!hKyehz%8|-EXZfRli>&np&d*`Tkp)S~9EJ1WtdO zK*kF|-qWB7REnRC()8JLtL|ikDdg)2b-)go={3fsE;Ul|8qqqUmm7W;rNqeh-Y|{$ z`amFGEC9KJsaM`JM%Wt_0w)t5oQYn56d0k1z0HnQ0&J@?wb*M}FD7d-UAGLq9aIK# zB6ls@{1hO2HW?#VFm>#-F~XG6{z;2t2uQ1*7t4cN$Viki;?s)Ej9D8m8i{EHT({)w zm7#YUOF+K+x-ueP7;0)gzb^;!x67FN)oBy8F%VG`rVY=K01R<(^DM@aShsv+gF(}Z z-@hRVvDL5H3ykQRJ-~s9dbWu@=)mW$P3$s|Kj(}{>(Rq&-`S4?dp8RsN8h}J!@oWa zI4|rzCJcaYVGeDXLp`BJDq8edM=ZVkc2H7LMzoIP8u`*>LxAvn1CRcb%!#<^~hL-y;h9KteGcJG?U5k3cmX3Ix0z3 zR)+z%BJJpbpBb+O*{PM^g)A1cyBOh`-7j@_JoiT|E_chh?;AuPEbUVkK^8pkrM)oC z6m;^-FGqN+>JUqybS2$yVc;8Uk=QGb*!+y=jOg)O@%8?SJP?TAMS0=Xx3Sz#(dne< zNoQ*|?7Li9!ZB#;c7-WpOe~k6*xho2I>Zb68JYv+Rl)249Lw${n+Kp=i6 zh5Ns}{2}P52cZm(mp{<#KLaez{J?|GLU*uMZ#3}4>cc*k?hka$S-p>dhXUe1JSqcg y{@4Qqy55rXzW(RKdSCJ|y#ENu!@xo@hW`RV9|X3FXvIzd0000zT3Lvl+=UAts&~V+SDu62C~X-A4SgDiINKzTpcY*%2TRNJzm}K;mQa zg-{fUghdz-o+Og3Up;(g0vkL_`LmYyzj?!B+7x@T+mjD=;=qgHiS*L2r; z=bn4dy;VV$Wf|`ANALm2dxYT+n7l`bL|07S4Y?`^f{r=p2&4yfH-KwL=E1H6dR34F z=AX@GGk@LjGTxyB35rkWoNWDbsh{fz$k_-|M0bZYN z;?;9?G_xiOjIBPRuoZ3of^R9I_U(!*rJ5_GXBrIjtAxcMz(ZSmP^~Cf&+4L(Udap) zBmvIP&*RKg14rMSmT(Oa2v}}KrvZ>PGdUsoJP71{8CbsGe{S1W;JOm>|NM7DDDP#z zGvNL>hdm>`xW5`9j$;A36q~CuNszO%vp93Dfr&S6%8%rUh(BCq?9&vkyPegZrxmNQUffg=-7Qsd*d~CNtHRyz(y$p#SzRJbw{p z%2v*IDP+A!xj1@2fZf{}uImKy)YUmmyx}#8Rz_vz3ymrh?ahtPIvTN_se;)Oqt40y zdsfQ$@Ku)Xf!Z0GlSD)^555tL5agWDhfab#6Bx0Q-5#)FyB)|mk?y3$@(W` z6?ITUR&r~u$=xG;Yh%)9)?2r3;q=rjCSJcT3=&}31?5>)G^Wrb8(K)`+RLkmWyg{x zg;B>Nt*|>MOlDH>HEWi&=>hK^p(f)z@!Xas`J-fUZf*`YZ{EboE4MK5`V=xLl0M0( zG7F8iNq&X8SZJTgb5!Q_P* z%q(P3C*aU*E)?a2zsude4)AT(1U0j03*DdB$GqYfbx?{rfK8PEg9#ADG2lXkWR|}! znk8;6Azd@c%t{s+s?WYQh2!UMX_#uAKvNjZ(`;L!DcCIo_t`P$TZmC+{AXm#Gg?go z3|BHlae^>n$WotV)ffk`XOx=kB3!*8_o4di->>4;3o~*aqDkUxvOcQQvBD`QE6j0= zEZ=&H34n)7*yRis&IV5R3)2AlQ-{H%fh4U+=myj#|Liyd-ZR=IlO7~Z0QE?a#|cuH zGzOJYIq5>91+&X}RbS&IAg$KPOV6n3jtfyufuVQ-ait;}6ZdgfM}PY3Xf@7MJ>15N=RhcFwYZ8NVh(n+nX9(EcJ0=wZbGjIoT&T&R zl!=E-QjdiuH90%%8S8>cKMkM}AdB0cx{Ug~FJ-w;(a>GPV?(rn&uzYfC}tnX`WH&V z31uNP`SeSjY||u5iIpGfvMVP2G=Meo`t|GB{xgC!E90GtWj`&HC8QZ9b+;F`P4bpWbRNh)JFO+{>5z_gM9q?3po1rObeTRVFP>nFG+cjPQ&T6P1uz7 zigl7qX2v8JR2O31G?{}ud>Zve$!j*7sEuvJ_?JG~G06STU%&)G5`<~E&&^}64_7kj z93nD_K$#2*CVidE`%2R!7p1E@=@U;5^3X|T(kGiNLv3^;#=pE>K+Z2Taros+IPj=YGa!){*^Io*`y#3AG?49e>iJQs;<;%J0MCIWmbNhGI;@E+N;@>0Bz(U zNvK7W=3T`pmAxzLWEcJ9B9K4+moceBB{EX`SQX=6-60@XdPrt{?i?mg&guV_>ZWLt zOeQ^u5@RwlO`65av#U6s!q(;1uiJidG019eb7QtKrh&v5Qt*@dvDRF5lCrzX3Z@hoEUhp(YNZ&NDk`D!}`F#hO+*s>{A zO}=yn2acRnP09&qry+@lP9=zRza%7mcqZet7mhO=0-%SbF2%b#^e0ZdYn*ybwvQ*- zGEH?5d#i&2(rZ$(Ybpta z-9P(Ff+gDnJ+9~{<5*@t+Ec2&`M#^+@*5SF~n9AFQUWa6|C4`-7 zlHRq#I;oCF5{q>rjEDgm^n~M&qE4!{D@G)126^q;HH<#-GU_rcmzG|3#~HjoSW$;2r<@yAn^ zMN3JhU5h!hA^M^P>|?kZlXBgI5nzdhj8?6mB$G18@^e?aULti;u4*aBjxVQ|L2@!M z^6eK;ml-3O)M8ys=hSOTm{L!|6hoD-jkzU5Hi9(GL+>Is$3v}2b}a!J>~Z)|B`ZzP zeTiXPt>a0Skgc0SVX@;IBm9hq2AwmW2flR_^+vPsqh+nx$U@46ut3mO^nKEikk!nY z*G?B=L!6;D_%70(9=I@8b6(D_fx~CEruh7bjz`KY`TKXckDrwRb{wt*>M!=(_s!qo zrr0`~ZPiSkM9P547}?Cb4@))@vc|Cdzb?ksjUj&iaDYn6Fr$f3JI6;P$;aWt1BqM@ zX=lj;A#?tD+czuuktBhB;}?I!^vpbXvAo&jII`4Xh{#Q=;%2P#5MXv(K7HeRt%H1S z?hWzX&u+*8lrNr^nOgDwoR$l-%TE%Qyv4qGOi3S;+(SiKu*|!?O43tTxq>j^3_`AoO3ho0Qp~SKxeS7 SZMlyC0000VUo90Nc?yz#9SI6i@<3 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png new file mode 100755 index 0000000000000000000000000000000000000000..e55a36f619ae1b1605853ff3ecbb5c521c80d253 GIT binary patch literal 5529 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 bh1>iGeueI^nwUFg00000NkvXXu0mjfo$;yZ literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100755 index 0000000..65b74d7 --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1 @@ +{"images":[{"size":"60x60","expected-size":"180","filename":"180.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"40x40","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"60x60","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"57x57","expected-size":"57","filename":"57.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"87","filename":"87.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"57x57","expected-size":"114","filename":"114.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"60","filename":"60.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"1024x1024","filename":"1024.png","expected-size":"1024","idiom":"ios-marketing","folder":"Assets.xcassets/AppIcon.appiconset/","scale":"1x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"72x72","expected-size":"72","filename":"72.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"76x76","expected-size":"152","filename":"152.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"50x50","expected-size":"100","filename":"100.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"76x76","expected-size":"76","filename":"76.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"50x50","expected-size":"50","filename":"50.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"72x72","expected-size":"144","filename":"144.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"40x40","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"83.5x83.5","expected-size":"167","filename":"167.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"20x20","expected-size":"20","filename":"20.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"}]} \ No newline at end of file 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..0bedcf2 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} 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 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 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..f2e259c --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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..44b75fc --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,57 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Fluent Reader + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLocalizations + + en + zh_CN + + CFBundleName + fluent_reader_lite + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + io.flutter.embedded_views_preview + + + 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/lib/components/article_item.dart b/lib/components/article_item.dart new file mode 100644 index 0000000..89703a3 --- /dev/null +++ b/lib/components/article_item.dart @@ -0,0 +1,268 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:fluent_reader_lite/components/dismissible_background.dart'; +import 'package:fluent_reader_lite/components/favicon.dart'; +import 'package:fluent_reader_lite/components/time_text.dart'; +import 'package:fluent_reader_lite/models/feeds_model.dart'; +import 'package:fluent_reader_lite/models/item.dart'; +import 'package:fluent_reader_lite/models/source.dart'; +import 'package:fluent_reader_lite/pages/article_page.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:share/share.dart'; +import 'package:tuple/tuple.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class ArticleItem extends StatefulWidget { + final RSSItem item; + final RSSSource source; + final Function openActionSheet; + + ArticleItem(this.item, this.source, this.openActionSheet, {Key key}) : super(key: key); + + @override + _ArticleItemState createState() => _ArticleItemState(); +} + +class _ArticleItemState extends State { + bool pressed = false; + + void _openArticle() { + Navigator.of(context, rootNavigator: true).popUntil((route) { + return route.isFirst; + }); + if (!widget.item.hasRead) { + Global.itemsModel.updateItem(widget.item.id, read: true); + } + if (widget.source.openTarget == SourceOpenTarget.External) { + launch(widget.item.link, forceSafariVC: false, forceWebView: false); + } else { + var isSource = Navigator.of(context).canPop(); + if (ArticlePage.state.currentWidget != null) { + ArticlePage.state.currentState.loadNewItem( + widget.item.id, + isSource: isSource, + ); + } else { + var navigator = Global.responsiveNavigator(context); + while (navigator.canPop()) navigator.pop(); + navigator.pushNamed( + "/article", + arguments: Tuple2(widget.item.id, isSource) + ); + } + } + } + + void _openActionSheet() { + HapticFeedback.mediumImpact(); + widget.openActionSheet(widget.item); + } + + Widget _imagePlaceholderBuilder(BuildContext context, String _) { + return Container( + color: CupertinoColors.systemGrey5.resolveFrom(context) + ); + } + + static final _unreadIndicator = Padding( + padding: EdgeInsets.symmetric(horizontal: 4), + child: Icon( + CupertinoIcons.circle_fill, + size: 8, + color: MyColors.indicatorOrange, + ), + ); + static final _starredIndicator = Padding( + padding: EdgeInsets.symmetric(horizontal: 4), + child: Icon( + CupertinoIcons.star_fill, + size: 9, + color: MyColors.indicatorOrange, + ), + ); + + IconData _getDismissIcon(ItemSwipeOption option) { + switch (option) { + case ItemSwipeOption.ToggleRead: + return widget.item.hasRead + ? Icons.radio_button_checked + : Icons.radio_button_unchecked; + case ItemSwipeOption.ToggleStar: + return widget.item.starred + ? CupertinoIcons.star + : CupertinoIcons.star_fill; + case ItemSwipeOption.Share: + return CupertinoIcons.share; + case ItemSwipeOption.OpenMenu: + return CupertinoIcons.ellipsis; + case ItemSwipeOption.OpenExternal: + return CupertinoIcons.square_arrow_right; + } + return null; + } + + void _performSwipeAction(ItemSwipeOption option) async { + switch(option) { + case ItemSwipeOption.ToggleRead: + await Future.delayed(Duration(milliseconds: 200)); + Global.itemsModel.updateItem(widget.item.id, read: !widget.item.hasRead); + break; + case ItemSwipeOption.ToggleStar: + await Future.delayed(Duration(milliseconds: 200)); + Global.itemsModel.updateItem(widget.item.id, starred: !widget.item.starred); + break; + case ItemSwipeOption.Share: + Share.share(widget.item.link); + break; + case ItemSwipeOption.OpenMenu: + widget.openActionSheet(widget.item); + break; + case ItemSwipeOption.OpenExternal: + if (!widget.item.hasRead) { + Global.itemsModel.updateItem(widget.item.id, read: true); + } + launch(widget.item.link, forceSafariVC: false, forceWebView: false); + break; + } + } + + Future _onDismiss(DismissDirection direction) async { + HapticFeedback.mediumImpact(); + if (direction == DismissDirection.startToEnd) { + _performSwipeAction(Global.feedsModel.swipeR); + } else { + _performSwipeAction(Global.feedsModel.swipeL); + } + return false; + } + + static const _dismissThresholds = { + DismissDirection.horizontal: 0.25, + }; + + @override + Widget build(BuildContext context) { + final _descStyle = TextStyle( + fontSize: 12, + color: CupertinoColors.secondaryLabel.resolveFrom(context), + ); + final _titleStyle = TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Global.feedsModel.dimRead && widget.item.hasRead + ? CupertinoColors.secondaryLabel.resolveFrom(context) + : CupertinoColors.label.resolveFrom(context), + ); + final _snippetStyle = TextStyle( + fontSize: 16, + color: CupertinoColors.secondaryLabel.resolveFrom(context), + ); + final infoLine = Padding( + padding: EdgeInsets.only(bottom: 4), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded(child: Text( + widget.source.name, + style: _descStyle, + overflow: TextOverflow.ellipsis, + )), + Row(children: [ + if (!Global.feedsModel.dimRead && !widget.item.hasRead) _unreadIndicator, + if (widget.item.starred) _starredIndicator, + TimeText(widget.item.date, style: _descStyle), + ]), + ], + ), + ); + final itemTexts = Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + widget.item.title, + style: _titleStyle, + ), + if (Global.feedsModel.showSnippet && widget.item.snippet.length > 0) Text( + widget.item.snippet, + style: _snippetStyle, + overflow: TextOverflow.ellipsis, + maxLines: 1, + ), + ],) + ); + final body = GestureDetector( + onTapDown: (_) { setState(() { pressed = true; }); }, + onTapUp: (_) { setState(() { pressed = false; }); }, + onTapCancel: () { setState(() { pressed = false; }); }, + onLongPress: _openActionSheet, + onTap: _openArticle, + child: Container( + color: pressed + ? CupertinoColors.systemGrey4.resolveFrom(context) + : CupertinoColors.systemBackground.resolveFrom(context), + child: Column(children: [ + Padding( + padding: EdgeInsets.fromLTRB(16, 8, 16, 8), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(0, 20, 8, 0), + child: Favicon(widget.source), + ), + Expanded( + flex: 1, + child: Column( + children: [ + infoLine, + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + itemTexts, + if (Global.feedsModel.showThumb && widget.item.thumb != null) Padding( + padding: EdgeInsets.only(left: 4), + child: ClipRRect( + borderRadius: BorderRadius.circular(4), + child: CachedNetworkImage( + imageUrl: widget.item.thumb, + width: 64, height: 64, fit: BoxFit.cover, + placeholder: _imagePlaceholderBuilder, + ), + ), + ), + ], + ), + ], + ), + ), + ], + ), + ), + Container( + color: CupertinoColors.systemBackground.resolveFrom(context), + padding: EdgeInsets.only(left: 16), + child: Divider(color: CupertinoColors.systemGrey4.resolveFrom(context), height: 1), + ), + ]) + ) + ); + return Dismissible( + key: Key("D-${widget.item.id}"), + background: DismissibleBackground( + _getDismissIcon(Global.feedsModel.swipeR), + true, + ), + secondaryBackground: DismissibleBackground( + _getDismissIcon(Global.feedsModel.swipeL), + false, + ), + dismissThresholds: _dismissThresholds, + confirmDismiss: _onDismiss, + child: body, + ); + } +} \ No newline at end of file diff --git a/lib/components/badge.dart b/lib/components/badge.dart new file mode 100644 index 0000000..0326ed1 --- /dev/null +++ b/lib/components/badge.dart @@ -0,0 +1,29 @@ +import 'package:flutter/cupertino.dart'; + +class Badge extends StatelessWidget { + Badge(int count, {this.color : CupertinoColors.systemRed, Key key}) : + label = count >= 1000 ? "999+" : count.toString(), + super(key: key); + + final String label; + final CupertinoDynamicColor color; + final labelStyle = TextStyle( + color: CupertinoColors.white, + fontSize: 12 + ); + + Widget build(BuildContext context) => Padding( + padding: EdgeInsets.all(3), + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Container( + height: 16, + color: color.resolveFrom(context), + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 6, vertical: 1), + child: Text(label, style: labelStyle,), + ), + ), + ) + ); +} \ No newline at end of file diff --git a/lib/components/cupertino_toolbar.dart b/lib/components/cupertino_toolbar.dart new file mode 100644 index 0000000..eb59831 --- /dev/null +++ b/lib/components/cupertino_toolbar.dart @@ -0,0 +1,136 @@ +/* + * cupertino_toolbar + * Copyright (c) 2019 Christian Mengler. All rights reserved. + * See LICENSE for distribution and usage details. + */ + +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/widgets.dart'; + +/// Display a persistent bottom iOS styled toolbar for Cupertino theme +/// +class CupertinoToolbar extends StatelessWidget { + /// Creates a persistent bottom iOS styled toolbar for Cupertino + /// themed app, + /// + /// Typically used as the [child] attribute of a [CupertinoPageScaffold]. + /// + /// {@tool sample} + /// + /// A sample code implementing a typical iOS page with bottom toolbar. + /// + /// ```dart + /// CupertinoPageScaffold( + /// navigationBar: CupertinoNavigationBar( + /// middle: Text('Cupertino Toolbar') + /// ), + /// child: CupertinoToolbar( + /// items: [ + /// CupertinoToolbarItem( + /// icon: CupertinoIcons.delete, + /// onPressed: () {} + /// ), + /// CupertinoToolbarItem( + /// icon: CupertinoIcons.settings, + /// onPressed: () {} + /// ) + /// ], + /// body: Center( + /// child: Text('Hello World') + /// ) + /// ) + /// ) + /// ``` + /// {@end-tool} + /// + CupertinoToolbar({ + Key key, + @required this.items, + @required this.body + }) : assert(items != null), + assert( + items.every((CupertinoToolbarItem item) => (item.icon != null)) == true, + 'Every item must have an icon and onPressed defined', + ), + assert(body != null), + super(key: key); + + /// The interactive items laid out within the toolbar where each item has an icon. + final List items; + + /// The body displayed above the toolbar. + final Widget body; + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Expanded( + child: body + ), + Container( + decoration: BoxDecoration( + border: Border( + top: BorderSide(color: MyColors.barDivider.resolveFrom(context), width: 0.0) + ) + ), + child: SafeArea( + top: false, + child: SizedBox( + height: 44.0, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: _createButtons() + ) + ) + ) + ) + ] + ); + } + + List _createButtons() { + final List children = []; + for (int i = 0; i < items.length; i += 1) { + children.add(CupertinoButton( + padding: EdgeInsets.zero, + child: Icon( + items[i].icon, + // color: CupertinoColors.systemBlue, + semanticLabel: items[i].semanticLabel, + ), + onPressed: items[i].onPressed + )); + } + return children; + } +} + +/// An interactive button within iOS themed [CupertinoToolbar] +class CupertinoToolbarItem { + /// Creates an item that is used with [CupertinoToolbar.items]. + /// + /// The argument [icon] should not be null. + const CupertinoToolbarItem({ + @required this.icon, + this.onPressed, + this.semanticLabel + }) : assert(icon != null); + + /// The icon of the item. + /// + /// This attribute must not be null. + final IconData icon; + + /// The callback that is called when the item is tapped. + /// + /// This attribute must not be null. + final VoidCallback onPressed; + + /// Semantic label for the icon. + /// + /// Announced in accessibility modes (e.g TalkBack/VoiceOver). + /// This label does not show in the UI. + final String semanticLabel; +} \ No newline at end of file diff --git a/lib/components/dismissible_background.dart b/lib/components/dismissible_background.dart new file mode 100644 index 0000000..0731fbf --- /dev/null +++ b/lib/components/dismissible_background.dart @@ -0,0 +1,25 @@ +import 'package:flutter/cupertino.dart'; + +class DismissibleBackground extends StatelessWidget { + final IconData icon; + final bool isToRight; + + DismissibleBackground(this.icon, this.isToRight, {Key key}) + : super(key: key); + + @override + Widget build(BuildContext context) => Container( + color: CupertinoColors.systemGrey5.resolveFrom(context), + padding: EdgeInsets.symmetric(horizontal: 24), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: isToRight + ? CrossAxisAlignment.start + : CrossAxisAlignment.end, + children: [Icon( + icon, + color: CupertinoColors.secondaryLabel.resolveFrom(context), + )], + ), + ); +} \ No newline at end of file diff --git a/lib/components/favicon.dart b/lib/components/favicon.dart new file mode 100644 index 0000000..ff8ba37 --- /dev/null +++ b/lib/components/favicon.dart @@ -0,0 +1,36 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:fluent_reader_lite/models/source.dart'; +import 'package:flutter/cupertino.dart'; + +class Favicon extends StatelessWidget { + final RSSSource source; + final double size; + + const Favicon(this.source, {this.size: 16, Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final _textStyle = TextStyle( + fontSize: size - 5, + color: CupertinoColors.systemGrey6, + ); + + if (source.iconUrl != null && source.iconUrl.length > 0) { + return CachedNetworkImage( + imageUrl: source.iconUrl, + width: size, + height: size, + ); + } else { + return Container( + width: size, + height: size, + color: CupertinoColors.systemGrey2, + child: Center(child: Text( + source.name.length > 0 ? source.name[0] : "?", + style: _textStyle, + )), + ); + } + } +} \ No newline at end of file diff --git a/lib/components/list_tile_group.dart b/lib/components/list_tile_group.dart new file mode 100644 index 0000000..ffbfb39 --- /dev/null +++ b/lib/components/list_tile_group.dart @@ -0,0 +1,60 @@ +import 'package:fluent_reader_lite/components/my_list_tile.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:tuple/tuple.dart'; + +class ListTileGroup extends StatelessWidget { + ListTileGroup(this.children, {this.title, Key key}) : super(key: key); + + ListTileGroup.fromOptions( + List> options, + dynamic selected, + Function onSelected, + {this.title, Key key}) : + children = options.map((t) => MyListTile( + title: Text(t.item1), + trailing: t.item2 == selected + ? Icon(Icons.done) + : Icon(null), + trailingChevron: false, + onTap: () { onSelected(t.item2); }, + withDivider: t.item2 != options.last.item2, + )), + super(key: key); + + final Iterable children; + final String title; + + static const _titleStyle = TextStyle( + fontSize: 12, + color: CupertinoColors.systemGrey, + ); + + @override + Widget build(BuildContext context) => Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (title != null) Padding( + padding: EdgeInsets.symmetric(horizontal: 16, vertical: 6), + child: Text(title, style: _titleStyle), + ), + Container( + color: MyColors.tileBackground.resolveFrom(context), + child: Column(children: [ + Divider( + color: CupertinoColors.systemGrey5.resolveFrom(context), + height: 1, + thickness: 1, + ), + ...children, + Divider( + color: CupertinoColors.systemGrey5.resolveFrom(context), + height: 1, + thickness: 1, + ), + ], + ), + ), + ],); +} \ No newline at end of file diff --git a/lib/components/mark_all_action_sheet.dart b/lib/components/mark_all_action_sheet.dart new file mode 100644 index 0000000..658bf6b --- /dev/null +++ b/lib/components/mark_all_action_sheet.dart @@ -0,0 +1,52 @@ +import 'package:fluent_reader_lite/components/responsive_action_sheet.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:flutter/cupertino.dart'; + +class MarkAllActionSheet extends StatelessWidget { + final Set sids; + + MarkAllActionSheet(this.sids, {Key key}) : super(key: key); + + DateTime _offset(int days) { + return DateTime.now().subtract(Duration(days: days)); + } + + void _markAll(BuildContext context, {DateTime date}) { + Navigator.of(context, rootNavigator: true).pop(); + Global.itemsModel.markAllRead(sids, date: date); + } + + @override + Widget build(BuildContext context) { + final sheet = CupertinoActionSheet( + title: Text(S.of(context).markAll), + actions: [ + CupertinoActionSheetAction( + isDestructiveAction: true, + child: Text(S.of(context).allArticles), + onPressed: () { _markAll(context); }, + ), + CupertinoActionSheetAction( + child: Text(S.of(context).daysAgo(1)), + onPressed: () { _markAll(context, date: _offset(1)); }, + ), + CupertinoActionSheetAction( + child: Text(S.of(context).daysAgo(3)), + onPressed: () { _markAll(context, date: _offset(3)); }, + ), + CupertinoActionSheetAction( + child: Text(S.of(context).daysAgo(7)), + onPressed: () { _markAll(context, date: _offset(7)); }, + ), + ], + cancelButton: CupertinoActionSheetAction( + child: Text(S.of(context).cancel), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + }, + ), + ); + return ResponsiveActionSheet(sheet); + } +} \ No newline at end of file diff --git a/lib/components/my_list_tile.dart b/lib/components/my_list_tile.dart new file mode 100644 index 0000000..2a61aac --- /dev/null +++ b/lib/components/my_list_tile.dart @@ -0,0 +1,100 @@ +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class MyListTile extends StatefulWidget { + final Widget leading; + final Widget title; + final Widget trailing; + final bool trailingChevron; + final bool withDivider; + final Function onTap; + final CupertinoDynamicColor background; + + MyListTile({ + this.leading, + @required this.title, + this.trailing, + this.trailingChevron : true, + this.withDivider : true, + this.onTap, + this.background : MyColors.tileBackground, + Key key, + }) : super(key: key); + + @override + _MyListTileState createState() => _MyListTileState(); +} + +class _MyListTileState extends State { + bool pressed = false; + + void _onTap() { + if (widget.onTap != null) widget.onTap(); + } + + @override + Widget build(BuildContext context) { + final _titleStyle = TextStyle( + fontSize: 16, + color: CupertinoColors.label.resolveFrom(context), + ); + final leftPart = Flexible(child: Row( + children: [ + if (widget.leading != null) Container( + padding: EdgeInsets.only(right: 16), + width: 40, + height: 24, + child: widget.leading, + ), + DefaultTextStyle( + child: widget.title, + style: _titleStyle, + ), + ], + )); + final _labelStyle = TextStyle( + fontSize: 16, + color: CupertinoColors.secondaryLabel.resolveFrom(context), + ); + final rightPart = Row( + children: [ + if (widget.trailing != null) DefaultTextStyle( + child: widget.trailing, + style: _labelStyle, + ), + if (widget.trailingChevron) Icon( + CupertinoIcons.chevron_forward, + color: CupertinoColors.tertiaryLabel.resolveFrom(context), + ), + ], + ); + return GestureDetector( + onTapDown: (_) { setState(() { pressed = true; }); }, + onTapUp: (_) { setState(() { pressed = false; }); }, + onTapCancel: () { setState(() { pressed = false; }); }, + onTap: _onTap, + child: Column(children: [ + Container( + color: (pressed && widget.onTap != null) + ? CupertinoColors.systemGrey4.resolveFrom(context) + : widget.background.resolveFrom(context), + padding: EdgeInsets.symmetric(horizontal: 16, vertical: 6), + constraints: BoxConstraints(minHeight: 48), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + leftPart, + rightPart, + ], + ), + ), + if (widget.withDivider) Padding( + padding: EdgeInsets.only(left: widget.leading == null ? 16 : 50), + child: Divider(color: CupertinoColors.systemGrey4.resolveFrom(context), height: 0), + ), + ],), + ); + } +} diff --git a/lib/components/responsive_action_sheet.dart b/lib/components/responsive_action_sheet.dart new file mode 100644 index 0000000..bb16fba --- /dev/null +++ b/lib/components/responsive_action_sheet.dart @@ -0,0 +1,22 @@ +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:flutter/cupertino.dart'; + +class ResponsiveActionSheet extends StatelessWidget { + final Widget child; + + ResponsiveActionSheet(this.child); + + @override + Widget build(BuildContext context) { + if (!Global.isTablet) return child; + return Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + constraints: BoxConstraints(maxWidth: 320), + child: child, + ) + ], + ); + } +} diff --git a/lib/components/subscription_item.dart b/lib/components/subscription_item.dart new file mode 100644 index 0000000..9a83307 --- /dev/null +++ b/lib/components/subscription_item.dart @@ -0,0 +1,129 @@ +import 'package:fluent_reader_lite/components/dismissible_background.dart'; +import 'package:fluent_reader_lite/components/favicon.dart'; +import 'package:fluent_reader_lite/components/mark_all_action_sheet.dart'; +import 'package:fluent_reader_lite/components/time_text.dart'; +import 'package:fluent_reader_lite/models/source.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'badge.dart'; + +class SubscriptionItem extends StatefulWidget { + final RSSSource source; + + SubscriptionItem(this.source, {Key key}) : super(key: key); + + @override + _SubscriptionItemState createState() => _SubscriptionItemState(); +} + +class _SubscriptionItemState extends State { + bool pressed = false; + + void _openSourcePage() async { + await Global.feedsModel.initSourcesFeed([widget.source.id]); + Navigator.of(context).pushNamed("/feed", arguments: widget.source.name); + } + + static const _dismissThresholds = { + DismissDirection.horizontal: 0.25, + }; + + Future _onDismiss(DismissDirection direction) async { + HapticFeedback.mediumImpact(); + if (direction == DismissDirection.startToEnd) { + showCupertinoModalPopup( + context: context, + builder: (context) => MarkAllActionSheet({widget.source.id}), + ); + } else { + Navigator.of(context, rootNavigator: true).pushNamed( + "/settings/sources/edit", + arguments: widget.source.id, + ); + } + return false; + } + + @override + Widget build(BuildContext context) { + final _titleStyle = TextStyle( + fontSize: 16, + color: CupertinoColors.label.resolveFrom(context), + fontWeight: FontWeight.bold, + ); + final _descStyle = TextStyle( + fontSize: 16, + color: CupertinoColors.secondaryLabel.resolveFrom(context), + ); + final _timeStyle = TextStyle( + fontSize: 14, + color: CupertinoColors.secondaryLabel.resolveFrom(context), + ); + final topLine = Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Row(children: [ + Padding( + padding: EdgeInsets.only(right: 8), + child: Favicon(widget.source), + ), + Expanded( + child: Text(widget.source.name, style: _titleStyle, overflow: TextOverflow.ellipsis,), + ), + ]), + ), + TimeText(widget.source.latest, style: _timeStyle), + ], + ); + final bottomLine = Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Text(widget.source.lastTitle, style: _descStyle, overflow: TextOverflow.ellipsis), + ), + if (widget.source.unreadCount > 0) Badge(widget.source.unreadCount), + ], + ); + final body = GestureDetector( + onTapDown: (_) { setState(() { pressed = true; }); }, + onTapUp: (_) { setState(() { pressed = false; }); }, + onTapCancel: () { setState(() { pressed = false; }); }, + onTap: _openSourcePage, + child: Column(children: [ + Container( + constraints: BoxConstraints(minHeight: 64), + color: pressed + ? CupertinoColors.systemGrey4.resolveFrom(context) + : CupertinoColors.systemBackground.resolveFrom(context), + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + topLine, + Padding(padding: EdgeInsets.only(top: 4)), + bottomLine + ], + ), + ), + ), + Padding( + padding: EdgeInsets.only(left: 16), + child: Divider(color: CupertinoColors.systemGrey4.resolveFrom(context), height: 1), + ), + ],), + ); + return Dismissible( + key: Key("D-${widget.source.id}"), + background: DismissibleBackground(CupertinoIcons.checkmark_circle, true), + secondaryBackground: DismissibleBackground(CupertinoIcons.pencil_circle, false), + dismissThresholds: _dismissThresholds, + confirmDismiss: _onDismiss, + child: body, + ); + } +} \ No newline at end of file diff --git a/lib/components/sync_control.dart b/lib/components/sync_control.dart new file mode 100644 index 0000000..5cfc333 --- /dev/null +++ b/lib/components/sync_control.dart @@ -0,0 +1,30 @@ +import 'dart:async'; + +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:flutter/cupertino.dart'; + +class SyncControl extends StatefulWidget { + @override + _SyncControlState createState() => _SyncControlState(); +} + +class _SyncControlState extends State { + Future _onRefresh() { + var completer = Completer(); + Function listener; + listener = () { + completer.complete(); + Global.syncModel.removeListener(listener); + }; + Global.syncModel.addListener(listener); + Global.syncModel.syncWithService(); + return completer.future; + } + + @override + Widget build(BuildContext context) { + return CupertinoSliverRefreshControl( + onRefresh: _onRefresh, + ); + } +} diff --git a/lib/components/time_text.dart b/lib/components/time_text.dart new file mode 100644 index 0000000..c643fc9 --- /dev/null +++ b/lib/components/time_text.dart @@ -0,0 +1,75 @@ +import 'dart:async'; + +import 'package:flutter/cupertino.dart'; + +class TimeText extends StatefulWidget { + final DateTime date; + final TextStyle style; + + TimeText(this.date, {this.style, Key key}) : super(key: key); + + @override + _TimeTextState createState() => _TimeTextState(); +} + +class _TimeTextState extends State { + Timer _timer; + Duration _duration; + + int diffMinutes() { + final now = DateTime.now(); + return now.difference(widget.date).inMinutes; + } + + @override + void initState() { + super.initState(); + updateTimer(); + } + + void updateTimer() { + final diff = diffMinutes(); + Duration duration; + if (diff < 60) { + duration = Duration(minutes: 1); + } else if (diff < 60 * 24) { + duration = Duration(minutes: 60 - diff % 60); + } else { + duration = Duration(minutes: (60 * 24) - diff % (60 * 24)); + } + if (_duration == null || duration.compareTo(_duration) != 0) { + _duration = duration; + if (_timer != null) _timer.cancel(); + _timer = Timer.periodic(duration, (_) { + setState(() {}); + updateTimer(); + }); + } + } + + @override + void dispose() { + if (_timer != null) _timer.cancel(); + super.dispose(); + } + + @override + void didUpdateWidget(covariant TimeText oldWidget) { + if (oldWidget.date.compareTo(widget.date) != 0) updateTimer(); + super.didUpdateWidget(oldWidget); + } + + @override + Widget build(BuildContext context) { + final diff = diffMinutes(); + String label; + if (diff < 60) { + label = "${diff}m"; + } else if (diff < 60 * 24) { + label = "${diff ~/ 60}h"; + } else { + label = "${diff ~/ (60 * 24)}d"; + } + return Text(label, style: widget.style); + } +} diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb new file mode 100644 index 0000000..25f2180 --- /dev/null +++ b/lib/l10n/intl_en.arb @@ -0,0 +1,80 @@ +{ + "allArticles": "All Articles", + "allSubscriptions": "All subscriptions", + "filter": "Filter", + "feed": "Feed", + "subscriptions": "Subscriptions", + "groups": "Groups", + "settings": "Settings", + "service": "Service", + "preferences": "Preferences", + "about": "About", + "theme": "Theme", + "followSystem": "Follow system", + "light": "Light mode", + "dark": "Dark mode", + "language": "Language", + "markRead": "Mark as read", + "markUnread": "Mark as unread", + "markAll": "Mark all as read", + "markAbove": "Mark above as read", + "markBelow": "Mark below as read", + "daysAgo": "{days,plural, =1{Over 1 day ago}other{Over {days} days ago}}", + "star": "Star", + "unstar": "Unstar", + "share": "Share", + "cancel": "Cancel", + "close": "Close", + "save": "Save", + "reading": "Reading", + "account": "Account", + "app": "App", + "general": "General", + "version": "Version", + "openSource": "Open source project", + "feedback": "Feedback", + "showThumb": "Show thumbnail", + "showSnippet": "Show snippet", + "dimRead": "Dim read articles", + "gestures": "Gestures", + "swipeLeft": "Swipe left", + "swipeRight": "Swipe right", + "toggleRead": "Toggle read", + "toggleStar": "Toggle star", + "openMenu": "Open menu", + "openExternal": "Open externally", + "fontSize": "Font size", + "edit": "Edit", + "name": "Name", + "icon": "Icon", + "openTarget": "Default open target", + "rssText": "RSS full text", + "loadWebpage": "Load webpage", + "loadFull": "Load full content", + "invalidValue": "Invalid value", + "unreadOnly": "Unread only", + "starredOnly": "Starred only", + "search": "Search", + "editKeyword": "Edit keyword", + "clearSearch": "Clear search", + "storage": "Storage", + "clearCache": "Clear cache", + "autoDelete": "Auto delete items", + "sync": "Sync", + "onStart": "On start", + "lastSyncSuccess": "Last sync successful at", + "lastSyncFailure": "Last sync failed at", + "welcome": "Welcome", + "credentials": "Credentials", + "endpoint": "Endpoint", + "username": "Username", + "password": "Password", + "fetchLimit": "Fetch limit", + "enter": "Required", + "entered": "Entered", + "serviceFailure": "Cannot connect to service", + "serviceFailureHint": "Please check the service configuration or network status.", + "logOut": "Log out", + "logOutWarning": "All local data will be deleted. Are you sure?", + "confirm": "Confirm" + } \ No newline at end of file diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb new file mode 100644 index 0000000..3a3c00d --- /dev/null +++ b/lib/l10n/intl_zh.arb @@ -0,0 +1,80 @@ +{ + "allArticles": "全部文章", + "allSubscriptions": "全部订阅源", + "filter": "筛选", + "feed": "信息流", + "subscriptions": "订阅源", + "groups": "分组", + "settings": "设置", + "service": "服务", + "preferences": "偏好", + "about": "关于", + "theme": "主题", + "followSystem": "跟随系统", + "light": "浅色模式", + "dark": "深色模式", + "language": "语言", + "markRead": "标为已读", + "markUnread": "标为未读", + "markAll": "全部标为已读", + "markAbove": "将以上标为已读", + "markBelow": "将以下标为已读", + "daysAgo": "超过 {days} 天前", + "star": "标为星标", + "unstar": "取消星标", + "share": "分享", + "cancel": "取消", + "close": "关闭", + "save": "保存", + "reading": "阅读", + "account": "账户", + "app": "应用", + "general": "通用", + "version": "版本", + "openSource": "开源项目", + "feedback": "反馈", + "showThumb": "显示缩略图", + "showSnippet": "显示摘要", + "dimRead": "淡化已读文章", + "gestures": "手势", + "swipeLeft": "向左滑动", + "swipeRight": "向右滑动", + "toggleRead": "切换已读", + "toggleStar": "切换星标", + "openMenu": "打开菜单", + "openExternal": "在外部打开", + "fontSize": "字体大小", + "edit": "编辑", + "name": "名称", + "icon": "图标", + "openTarget": "默认打开方式", + "rssText": "RSS 全文", + "loadWebpage": "加载网页", + "loadFull": "抓取全文", + "invalidValue": "请输入合法的值", + "unreadOnly": "仅未读文章", + "starredOnly": "仅星标文章", + "search": "搜索", + "editKeyword": "编辑关键词", + "clearSearch": "取消搜索", + "storage": "存储", + "clearCache": "清理缓存", + "autoDelete": "自动删除文章", + "sync": "同步", + "onStart": "打开应用时", + "lastSyncSuccess": "最后一次同步成功于", + "lastSyncFailure": "最后一次同步失败于", + "welcome": "欢迎", + "credentials": "凭证", + "endpoint": "端点", + "username": "用户名", + "password": "密码", + "fetchLimit": "同步数量", + "enter": "请输入", + "entered": "已填写", + "serviceFailure": "连接到服务时出错", + "serviceFailureHint": "请检查服务配置或网络连接", + "logOut": "登出", + "logOutWarning": "这将移除所有本地数据,是否继续?", + "confirm": "确定" + } \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..22304d3 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,123 @@ +import 'dart:io'; + +import 'package:fluent_reader_lite/models/service.dart'; +import 'package:fluent_reader_lite/pages/article_page.dart'; +import 'package:fluent_reader_lite/pages/settings/about_page.dart'; +import 'package:fluent_reader_lite/pages/home_page.dart'; +import 'package:fluent_reader_lite/pages/settings/feed_page.dart'; +import 'package:fluent_reader_lite/pages/settings/general_page.dart'; +import 'package:fluent_reader_lite/pages/settings/reading_page.dart'; +import 'package:fluent_reader_lite/pages/settings/services/fever_page.dart'; +import 'package:fluent_reader_lite/pages/settings/source_edit_page.dart'; +import 'package:fluent_reader_lite/pages/settings/sources_page.dart'; +import 'package:fluent_reader_lite/pages/settings_page.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:fluent_reader_lite/utils/store.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; +import 'package:path/path.dart'; +import 'package:provider/provider.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'generated/l10n.dart'; +import 'models/global_model.dart'; + +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + Store.sp = await SharedPreferences.getInstance(); + Global.init(); + if (Platform.isAndroid) { + SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( + statusBarColor: Colors.transparent, + )); + } + runApp(MyApp()); + SystemChannels.lifecycle.setMessageHandler((msg) { + if (msg == AppLifecycleState.resumed.toString()) { + if (Global.globalModel.syncOnStart + && DateTime.now().difference(Global.syncModel.lastSynced).inMinutes >= 10) + Global.syncModel.syncWithService(); + } + return null; + }); +} + +class MyApp extends StatelessWidget { + static final Map baseRoutes = { + "/article": (context) => ArticlePage(), + "/settings": (context) => SettingsPage(), + "/settings/sources": (context) => SourcesPage(), + "/settings/sources/edit": (context) => SourceEditPage(), + "/settings/feed": (context) => FeedPage(), + "/settings/reading": (context) => ReadingPage(), + "/settings/general": (context) => GeneralPage(), + "/settings/about": (context) => AboutPage(), + "/settings/service/fever": (context) => FeverPage(), + "/settings/service": (context) { + var serviceType = SyncService.values[Store.sp.getInt(StoreKeys.SYNC_SERVICE) ?? 0]; + switch (serviceType) { + case SyncService.None: + break; + case SyncService.Fever: + return FeverPage(); + case SyncService.Feedbin: + // TODO: Handle this case. + break; + case SyncService.GReader: + // TODO: Handle this case. + break; + case SyncService.Inoreader: + // TODO: Handle this case. + break; + } + return AboutPage(); + } + }; + // This widget is the root of your application. + @override + Widget build(BuildContext context) { + return MultiProvider( + providers: [ + ChangeNotifierProvider.value(value: Global.globalModel), + ChangeNotifierProvider.value(value: Global.sourcesModel), + ChangeNotifierProvider.value(value: Global.itemsModel), + ChangeNotifierProvider.value(value: Global.feedsModel), + ChangeNotifierProvider.value(value: Global.groupsModel), + ChangeNotifierProvider.value(value: Global.syncModel), + ], + child: Consumer( + builder: (context, globalModel, child) => CupertinoApp( + title: "Fluent Reader", + localizationsDelegates: [ + // ... app-specific localization delegate[s] here + S.delegate, + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ], + locale: globalModel.locale, + supportedLocales: [ + const Locale("en"), + const Locale("zh"), + ], + localeResolutionCallback: (_locale, supportedLocales) { + _locale = Locale(_locale.languageCode); + if (globalModel.locale != null) return globalModel.locale; + else if (supportedLocales.contains(_locale)) return _locale; + else return Locale("en"); + }, + theme: CupertinoThemeData( + primaryColor: CupertinoColors.systemBlue, + brightness: globalModel.getBrightness(), + ), + routes: { + "/": (context) => CupertinoScaffold(body: HomePage()), + ...baseRoutes, + }, + ), + ), + ); + } +} diff --git a/lib/models/feed.dart b/lib/models/feed.dart new file mode 100644 index 0000000..2f80d32 --- /dev/null +++ b/lib/models/feed.dart @@ -0,0 +1,121 @@ +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:fluent_reader_lite/utils/store.dart'; +import 'package:tuple/tuple.dart'; + +import 'item.dart'; + +enum FilterType { + All, Unread, Starred +} + +const _LOAD_LIMIT = 50; + +class RSSFeed { + bool initialized = false; + bool loading = false; + bool allLoaded = false; + Set sids; + List iids = []; + FilterType filterType; + String search = ""; + + RSSFeed({this.sids}) { + if (sids == null) sids = Set(); + filterType = FilterType.values[Store.sp.getInt(_filterKey) ?? 0]; + } + + String get _filterKey => sids.length == 0 + ? StoreKeys.FEED_FILTER_ALL + : StoreKeys.FEED_FILTER_SOURCE; + + Tuple2> _getPredicates() { + List where = ["TRUE"]; + List whereArgs = []; + if (sids.length > 0) { + var placeholders = List.filled(sids.length, "?").join(" , "); + where.add("source IN ($placeholders)"); + whereArgs.addAll(sids); + } + if (filterType == FilterType.Unread) { + where.add("hasRead = 0"); + } else if (filterType == FilterType.Starred) { + where.add("starred = 1"); + } + if (search != "") { + where.add("(UPPER(title) LIKE ? OR UPPER(snippet) LIKE ?)"); + var keyword = "%$search%".toUpperCase(); + whereArgs.add(keyword); + whereArgs.add(keyword); + } + return Tuple2(where.join(" AND "), whereArgs); + } + + bool testItem(RSSItem item) { + if (sids.length > 0 && !sids.contains(item.source)) return false; + if (filterType == FilterType.Unread && item.hasRead) return false; + if (filterType == FilterType.Starred && !item.starred) return false; + if (search != "") { + var keyword = search.toUpperCase(); + if (item.title.toUpperCase().contains(keyword)) return true; + if (item.snippet.toUpperCase().contains(keyword)) return true; + return false; + } + return true; + } + + Future init() async { + if (loading) return; + loading = true; + var predicates = _getPredicates(); + var items = (await Global.db.query( + "items", + orderBy: "date DESC", + limit: _LOAD_LIMIT, + where: predicates.item1, + whereArgs: predicates.item2, + )).map((m) => RSSItem.fromMap(m)).toList(); + allLoaded = items.length < _LOAD_LIMIT; + Global.itemsModel.loadItems(items); + iids = items.map((i) => i.id).toList(); + loading = false; + initialized = true; + Global.feedsModel.broadcast(); + } + + Future loadMore() async { + if (loading || allLoaded) return; + loading = true; + var predicates = _getPredicates(); + var offset = iids + .map((iid) => Global.itemsModel.getItem(iid)) + .fold(0, (c, i) => c + (testItem(i) ? 1 : 0)); + var items = (await Global.db.query( + "items", + orderBy: "date DESC", + limit: _LOAD_LIMIT, + offset: offset, + where: predicates.item1, + whereArgs: predicates.item2, + )).map((m) => RSSItem.fromMap(m)).toList(); + if (items.length < _LOAD_LIMIT) { + allLoaded = true; + } + Global.itemsModel.loadItems(items); + iids.addAll(items.map((i) => i.id)); + loading = false; + Global.feedsModel.broadcast(); + } + + Future setFilter(FilterType filter) async { + if (filterType == filter && filter == FilterType.All) return; + filterType = filter; + Store.sp.setInt(_filterKey, filter.index); + await init(); + } + + Future performSearch(String keyword) async { + if (search == keyword) return; + search = keyword; + await init(); + } +} diff --git a/lib/models/feeds_model.dart b/lib/models/feeds_model.dart new file mode 100644 index 0000000..81ef3a6 --- /dev/null +++ b/lib/models/feeds_model.dart @@ -0,0 +1,89 @@ +import 'package:fluent_reader_lite/models/feed.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:fluent_reader_lite/utils/store.dart'; +import 'package:fluent_reader_lite/utils/utils.dart'; +import 'package:flutter/cupertino.dart'; + +import 'item.dart'; + +enum ItemSwipeOption { + ToggleRead, ToggleStar, Share, OpenMenu, OpenExternal, +} + +class FeedsModel with ChangeNotifier { + RSSFeed all = RSSFeed(); + RSSFeed source; + + bool _showThumb = Store.sp.getBool(StoreKeys.SHOW_THUMB) ?? true; + bool get showThumb => _showThumb; + set showThumb(bool value) { + _showThumb = value; + Store.sp.setBool(StoreKeys.SHOW_THUMB, value); + notifyListeners(); + } + + bool _showSnippet = Store.sp.getBool(StoreKeys.SHOW_SNIPPET) ?? true; + bool get showSnippet => _showSnippet; + set showSnippet(bool value) { + _showSnippet = value; + Store.sp.setBool(StoreKeys.SHOW_SNIPPET, value); + notifyListeners(); + } + + bool _dimRead = Store.sp.getBool(StoreKeys.DIM_READ) ?? false; + bool get dimRead => _dimRead; + set dimRead(bool value) { + _dimRead = value; + Store.sp.setBool(StoreKeys.DIM_READ, value); + notifyListeners(); + } + + ItemSwipeOption _swipeR = ItemSwipeOption.values[Store.sp.getInt(StoreKeys.FEED_SWIPE_R) ?? 0]; + ItemSwipeOption get swipeR => _swipeR; + set swipeR(ItemSwipeOption value) { + _swipeR = value; + Store.sp.setInt(StoreKeys.FEED_SWIPE_R, value.index); + notifyListeners(); + } + + ItemSwipeOption _swipeL = ItemSwipeOption.values[Store.sp.getInt(StoreKeys.FEED_SWIPE_L) ?? 1]; + ItemSwipeOption get swipeL => _swipeL; + set swipeL(ItemSwipeOption value) { + _swipeL = value; + Store.sp.setInt(StoreKeys.FEED_SWIPE_L, value.index); + notifyListeners(); + } + + void broadcast() { notifyListeners(); } + + Future initSourcesFeed(Iterable sids) async { + Set sidSet = Set.from(sids); + source = RSSFeed(sids: sidSet); + await source.init(); + } + + void addFetchedItems(Iterable items) { + for (var feed in [all, source]) { + if (feed == null) continue; + var lastDate = feed.iids.length > 0 + ? Global.itemsModel.getItem(feed.iids.last).date + : null; + for (var item in items) { + if (!feed.testItem(item)) continue; + if (lastDate != null && item.date.isBefore(lastDate)) continue; + var idx = Utils.binarySearch(feed.iids, item.id, (a, b) { + return Global.itemsModel.getItem(b).date.compareTo(Global.itemsModel.getItem(a).date); + }); + feed.iids.insert(idx, item.id); + } + } + notifyListeners(); + } + + void initAll() { + for (var feed in [all, source]) { + if (feed == null) continue; + feed.init(); + } + } +} \ No newline at end of file diff --git a/lib/models/global_model.dart b/lib/models/global_model.dart new file mode 100644 index 0000000..42d2847 --- /dev/null +++ b/lib/models/global_model.dart @@ -0,0 +1,47 @@ +import 'package:fluent_reader_lite/utils/store.dart'; +import 'package:flutter/material.dart'; + +enum ThemeSetting { + Default, Light, Dark +} + +class GlobalModel with ChangeNotifier { + ThemeSetting _theme = Store.getTheme(); + Locale _locale = Store.getLocale(); + int _keepItemsDays = Store.sp.getInt(StoreKeys.KEEP_ITEMS_DAYS) ?? 21; + bool _syncOnStart = Store.sp.getBool(StoreKeys.SYNC_ON_START) ?? true; + + ThemeSetting get theme => _theme; + set theme(ThemeSetting value) { + if (value != _theme) { + _theme = value; + notifyListeners(); + Store.setTheme(value); + } + } + Brightness getBrightness() { + if (_theme == ThemeSetting.Default) return null; + else return _theme == ThemeSetting.Light ? Brightness.light : Brightness.dark; + } + + Locale get locale => _locale; + set locale(Locale value) { + if (value != _locale) { + _locale = value; + notifyListeners(); + Store.setLocale(value); + } + } + + int get keepItemsDays => _keepItemsDays; + set keepItemsDays(int value) { + _keepItemsDays = value; + Store.sp.setInt(StoreKeys.KEEP_ITEMS_DAYS, value); + } + + bool get syncOnStart => _syncOnStart; + set syncOnStart(bool value) { + _syncOnStart = value; + Store.sp.setBool(StoreKeys.SYNC_ON_START, value); + } +} \ No newline at end of file diff --git a/lib/models/groups_model.dart b/lib/models/groups_model.dart new file mode 100644 index 0000000..683fc11 --- /dev/null +++ b/lib/models/groups_model.dart @@ -0,0 +1,13 @@ +import 'package:fluent_reader_lite/utils/store.dart'; +import 'package:flutter/cupertino.dart'; + +class GroupsModel with ChangeNotifier { + Map> _groups = Store.getGroups(); + + Map> get groups => _groups; + set groups(Map> groups) { + _groups = groups; + notifyListeners(); + Store.setGroups(groups); + } +} \ No newline at end of file diff --git a/lib/models/item.dart b/lib/models/item.dart new file mode 100644 index 0000000..758779c --- /dev/null +++ b/lib/models/item.dart @@ -0,0 +1,57 @@ +class RSSItem { + String id; + String source; + String title; + String link; + DateTime date; + String content; + String snippet; + bool hasRead; + bool starred; + String creator; // Optional + String thumb; // Optional + + RSSItem({ + this.id, this.source, this.title, this.link, this.date, + this.content, this.snippet, this.hasRead, this.starred, + this.creator, this.thumb + }); + + RSSItem clone() { + return RSSItem( + id: id, source: source, title: title, link: link, date: date, + content: content, snippet: snippet, hasRead: hasRead, starred: starred, + creator: creator, thumb: thumb, + ); + } + + Map toMap() { + return { + "iid": id, + "source": source, + "title": title, + "link": link, + "date": date.millisecondsSinceEpoch, + "content": content, + "snippet": snippet, + "hasRead": hasRead ? 1 : 0, + "starred": starred ? 1 : 0, + "creator": creator, + "thumb": thumb, + }; + } + + RSSItem.fromMap(Map map) { + id = map["iid"]; + source = map["source"]; + title = map["title"]; + link = map["link"]; + date = DateTime.fromMillisecondsSinceEpoch(map["date"]); + content = map["content"]; + snippet = map["snippet"]; + hasRead = map["hasRead"] != 0; + starred = map["starred"] != 0; + creator = map["creator"]; + thumb = map["thumb"]; + } +} diff --git a/lib/models/items_model.dart b/lib/models/items_model.dart new file mode 100644 index 0000000..abc9cf2 --- /dev/null +++ b/lib/models/items_model.dart @@ -0,0 +1,124 @@ +import 'package:fluent_reader_lite/models/item.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:sqflite/sqflite.dart'; + +class ItemsModel with ChangeNotifier { + Map _items = Map(); + + bool has(String id) => _items.containsKey(id); + + RSSItem getItem(String id) => _items[id]; + Iterable getItems() => _items.values; + + void loadItems(Iterable items) { + for (var item in items) { + _items[item.id] = item; + } + } + + Future updateItem(String iid, + {Batch batch, bool read, bool starred, local: false}) async { + Map updateMap = Map(); + if (_items.containsKey(iid)) { + final item = _items[iid].clone(); + if (read != null) { + item.hasRead = read; + if (!local) { + if (read) Global.service.markRead(item); + else Global.service.markUnead(item); + } + Global.sourcesModel.updateUnreadCount(item.source, read ? -1 : 1); + } + if (starred != null) { + item.starred = starred; + if (!local) { + if (starred) Global.service.star(item); + else Global.service.unstar(item); + } + } + _items[iid] = item; + } + if (read != null) updateMap["hasRead"] = read ? 1 : 0; + if (starred != null) updateMap["starred"] = starred ? 1 : 0; + if (batch != null) { + batch.update("items", updateMap, where: "iid = ?", whereArgs: [iid]); + } else { + notifyListeners(); + await Global.db.update("items", updateMap, where: "iid = ?", whereArgs: [iid]); + } + } + + Future markAllRead(Set sids, {DateTime date, before = true}) async { + Global.service.markAllRead(sids, date, before); + List predicates = []; + if (sids.length > 0) { + predicates.add("source IN (${List.filled(sids.length, "?").join(" , ")})"); + } + if (date != null) { + predicates.add("date ${before ? "<=" : ">="} ${date.millisecondsSinceEpoch}"); + } + await Global.db.update( + "items", + { "hasRead": 1 }, + where: predicates.join(" AND "), + whereArgs: sids.toList(), + ); + for (var item in _items.values.toList()) { + if (sids.length > 0 && !sids.contains(item.source)) continue; + if (date != null && + (before ? item.date.compareTo(date) > 0 : item.date.compareTo(date) < 0)) + continue; + item.hasRead = true; + } + notifyListeners(); + Global.sourcesModel.updateUnreadCounts(); + } + + Future fetchItems() async { + final items = await Global.service.fetchItems(); + final batch = Global.db.batch(); + for (var item in items) { + _items[item.id] = item; + batch.insert( + "items", + item.toMap(), + conflictAlgorithm: ConflictAlgorithm.replace, + ); + } + await batch.commit(noResult: true); + // notifyListeners(); + Global.sourcesModel.updateWithFetchedItems(items); + Global.feedsModel.addFetchedItems(items); + } + + Future syncItems() async { + final tuple = await Global.service.syncItems(); + final unreadIds = tuple.item1; + final starredIds = tuple.item2; + final rows = await Global.db.query( + "items", + columns: ["iid", "hasRead", "starred"], + where: "hasRead = 0 OR starred = 1", + ); + final batch = Global.db.batch(); + for (var row in rows) { + final id = row["iid"]; + if (row["hasRead"] == 0 && !unreadIds.remove(id)) { + await updateItem(id, read: true, batch: batch, local: true); + } + if (row["starred"] == 1 && !starredIds.remove(id)) { + await updateItem(id, starred: false, batch: batch, local: true); + } + } + for (var unread in unreadIds) { + await updateItem(unread, read: false, batch: batch, local: true); + } + for (var starred in starredIds) { + await updateItem(starred, starred: true, batch: batch, local: true); + } + notifyListeners(); + await batch.commit(noResult: true); + await Global.sourcesModel.updateUnreadCounts(); + } +} diff --git a/lib/models/service.dart b/lib/models/service.dart new file mode 100644 index 0000000..80c5cd0 --- /dev/null +++ b/lib/models/service.dart @@ -0,0 +1,20 @@ +import 'package:fluent_reader_lite/models/item.dart'; +import 'package:fluent_reader_lite/models/source.dart'; +import 'package:tuple/tuple.dart'; + +enum SyncService { + None, Fever, Feedbin, GReader, Inoreader +} + +abstract class ServiceHandler { + void remove(); + Future validate(); + Future, Map>>> getSources(); + Future> fetchItems(); + Future, Set>> syncItems(); + Future markAllRead(Set sids, DateTime date, bool before); + Future markRead(RSSItem item); + Future markUnead(RSSItem item); + Future star(RSSItem item); + Future unstar(RSSItem item); +} diff --git a/lib/models/services/fever.dart b/lib/models/services/fever.dart new file mode 100644 index 0000000..e68b087 --- /dev/null +++ b/lib/models/services/fever.dart @@ -0,0 +1,233 @@ +import 'dart:convert'; +import 'dart:math'; + +import 'package:fluent_reader_lite/models/item.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:fluent_reader_lite/utils/store.dart'; +import 'package:html/parser.dart'; +import 'package:http/http.dart' as http; +import 'package:fluent_reader_lite/models/source.dart'; +import 'package:tuple/tuple.dart'; + +import '../service.dart'; + +class FeverServiceHandler extends ServiceHandler { + String endpoint; + String apiKey; + int _lastId; + int fetchLimit; + bool _useInt32; + + FeverServiceHandler() { + endpoint = Store.sp.getString(StoreKeys.ENDPOINT); + apiKey = Store.sp.getString(StoreKeys.API_KEY); + _lastId = Store.sp.getInt(StoreKeys.LAST_ID) ?? 0; + fetchLimit = Store.sp.getInt(StoreKeys.FETCH_LIMIT); + _useInt32 = Store.sp.getBool(StoreKeys.FEVER_INT_32) ?? false; + } + + FeverServiceHandler.fromValues( + this.endpoint, + this.apiKey, + this.fetchLimit, + ) { + _lastId = Store.sp.getInt(StoreKeys.LAST_ID) ?? 0; + _useInt32 = Store.sp.getBool(StoreKeys.FEVER_INT_32) ?? false; + } + + void persist(String username, String password) { + Store.sp.setInt(StoreKeys.SYNC_SERVICE, SyncService.Fever.index); + Store.sp.setString(StoreKeys.ENDPOINT, endpoint); + Store.sp.setString(StoreKeys.USERNAME, username); + Store.sp.setString(StoreKeys.PASSWORD, password); + Store.sp.setString(StoreKeys.API_KEY, apiKey); + Store.sp.setInt(StoreKeys.FETCH_LIMIT, fetchLimit); + Store.sp.setInt(StoreKeys.LAST_ID, _lastId); + Store.sp.setBool(StoreKeys.FEVER_INT_32, _useInt32); + Global.service = this; + } + + @override + void remove() { + Store.sp.remove(StoreKeys.SYNC_SERVICE); + Store.sp.remove(StoreKeys.ENDPOINT); + Store.sp.remove(StoreKeys.USERNAME); + Store.sp.remove(StoreKeys.PASSWORD); + Store.sp.remove(StoreKeys.API_KEY); + Store.sp.remove(StoreKeys.FETCH_LIMIT); + Store.sp.remove(StoreKeys.LAST_ID); + Store.sp.remove(StoreKeys.FEVER_INT_32); + Global.service = null; + } + + Future> _fetchAPI({params: "", postparams: ""}) async { + final response = await http.post( + endpoint + "?api" + params, + headers: { "content-type": "application/x-www-form-urlencoded" }, + body: "api_key=$apiKey$postparams", + ); + return jsonDecode(response.body); + } + + int get lastId => _lastId; + set lastId(int value) { + _lastId = value; + Store.sp.setInt(StoreKeys.LAST_ID, value); + } + + bool get useInt32 => _useInt32; + set useInt32(bool value) { + _useInt32 = value; + Store.sp.setBool(StoreKeys.FEVER_INT_32, value); + } + + @override + Future validate() async { + try { + return (await _fetchAPI())["auth"] == 1; + } catch(exp) { + return false; + } + } + + @override + Future, Map>>> getSources() async { + var response = await _fetchAPI(params: "&feeds"); + var sources = response["feeds"].map((f) { + return RSSSource(f["id"].toString(), f["url"], f["title"]); + }).toList(); + var feedGroups = response["feeds_groups"]; + var groupsMap = Map>(); + var groups = (await _fetchAPI(params: "&groups"))["groups"]; + if (groups == null || feedGroups == null) throw Error(); + var groupsIdMap = Map(); + for (var group in groups) { + var title = group["title"].trim(); + groupsIdMap[group["id"]] = title; + } + for (var group in feedGroups) { + var name = groupsIdMap[group["group_id"]]; + for (var fid in group["feed_ids"].split(",")) { + groupsMap.putIfAbsent(name, () => []); + groupsMap[name].add(fid); + } + } + return Tuple2(sources, groupsMap); + } + + @override + Future> fetchItems() async { + var minId = useInt32 ? 2147483647 : 2^50; + List response; + List items = []; + do { + response = (await _fetchAPI(params: "&items&max_id=$minId"))["items"]; + if (response == null) throw Error(); + items.addAll(response.where((i) => i["id"] > lastId)); + if (response.length == 0 && minId == 2^50) { + useInt32 = true; + minId = 2147483647; + response = null; + } else { + minId = response.fold(minId, (m, n) => min(m, n["id"])); + } + } while ( + minId > lastId && + (response == null || response.length >= 50) && + items.length < fetchLimit + ); + var parsedItems = items.map((i) { + var dom = parse(i["html"]); + var item = RSSItem( + id: i["id"].toString(), + source: i["feed_id"].toString(), + title: i["title"], + link: i["url"], + date: DateTime.fromMillisecondsSinceEpoch(i["created_on_time"] * 1000), + content: i["html"], + snippet: dom.documentElement.text.trim(), + creator: i["author"], + hasRead: i["is_read"] == 1, + starred: i["is_saved"] == 1, + ); + // Try to get the thumbnail of the item + var img = dom.querySelector("img"); + if (img != null && img.attributes["src"] != null) { + var thumb = img.attributes["src"]; + if (thumb.startsWith("http")) { + item.thumb = thumb; + } + } else if (useInt32) { // TTRSS Fever Plugin attachments + var a = dom.querySelector("body>ul>li:first-child>a"); + if (a != null && a.text.endsWith(", image\/generic") && a.attributes["href"] != null) + item.thumb = a.attributes["href"]; + } + return item; + }); + lastId = items.fold(lastId, (m, n) => max(m, n["id"])); + return parsedItems.toList(); + } + + @override + Future, Set>> syncItems() async { + final responses = await Future.wait([ + _fetchAPI(params: "&unread_item_ids"), + _fetchAPI(params: "&saved_item_ids"), + ]); + final unreadIds = responses[0]["unread_item_ids"]; + final starredIds = responses[1]["saved_item_ids"]; + return Tuple2( + Set.from(unreadIds.split(",")), + Set.from(starredIds.split(",")) + ); + } + + Future _markItem(RSSItem item, String asType) async { + try { + await _fetchAPI(postparams: "&mark=item&as=$asType&id=${item.id}"); + } catch(exp) { + print(exp); + } + } + + @override + Future markAllRead(Set sids, DateTime date, bool before) async { + if (date != null && !before) { + var items = Global.itemsModel.getItems().where((i) => + (sids.length == 0 || sids.contains(i.source)) && i.date.compareTo(date) >= 0 + ); + await Future.wait(items.map((i) => markRead(i))); + } else { + var timestamp = date != null ? date.millisecondsSinceEpoch : DateTime.now().millisecondsSinceEpoch; + timestamp = timestamp ~/ 1000 + 1; + try { + await Future.wait(Global.sourcesModel.getSources() + .where((s) => sids.length == 0 || sids.contains(s.id)) + .map((s) => _fetchAPI(postparams: "&mark=feed&as=read&id=${s.id}&before=$timestamp")) + ); + } catch(exp) { + print(exp); + } + } + } + + @override + Future markRead(RSSItem item) async { + await _markItem(item, "read"); + } + + @override + Future markUnead(RSSItem item) async { + await _markItem(item, "unread"); + } + + @override + Future star(RSSItem item) async { + await _markItem(item, "saved"); + } + + @override + Future unstar(RSSItem item) async { + await _markItem(item, "unsaved"); + } +} \ No newline at end of file diff --git a/lib/models/source.dart b/lib/models/source.dart new file mode 100644 index 0000000..1e45659 --- /dev/null +++ b/lib/models/source.dart @@ -0,0 +1,56 @@ +enum SourceOpenTarget { + Local, FullContent, Webpage, External +} + +class RSSSource { + String id; + String url; + String iconUrl; + String name; + SourceOpenTarget openTarget; + int unreadCount; + DateTime latest; + String lastTitle; + + RSSSource(this.id, this.url, this.name) { + openTarget = SourceOpenTarget.Local; + latest = DateTime.now(); + unreadCount = 0; + lastTitle = ""; + } + + RSSSource._privateConstructor( + this.id, this.url, this.iconUrl, this.name, this.openTarget, + this.unreadCount, this.latest, this.lastTitle, + ); + + RSSSource clone() { + return RSSSource._privateConstructor( + this.id, this.url, this.iconUrl, this.name, this.openTarget, + this.unreadCount, this.latest, this.lastTitle, + ); + } + + Map toMap() { + return { + "sid": id, + "url": url, + "iconUrl": iconUrl, + "name": name, + "openTarget": openTarget.index, + "latest": latest.millisecondsSinceEpoch, + "lastTitle": lastTitle, + }; + } + + RSSSource.fromMap(Map map) { + id = map["sid"]; + url = map["url"]; + iconUrl = map["iconUrl"]; + name = map["name"]; + openTarget = SourceOpenTarget.values[map["openTarget"]]; + latest = DateTime.fromMillisecondsSinceEpoch(map["latest"]); + lastTitle = map["lastTitle"]; + unreadCount = 0; + } +} diff --git a/lib/models/sources_model.dart b/lib/models/sources_model.dart new file mode 100644 index 0000000..ac516b9 --- /dev/null +++ b/lib/models/sources_model.dart @@ -0,0 +1,192 @@ +import 'package:fluent_reader_lite/models/source.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:fluent_reader_lite/utils/utils.dart'; +import 'package:flutter/material.dart'; +import 'package:html/parser.dart'; +import 'package:http/http.dart' as http; +import 'package:sqflite/sqflite.dart'; + +import 'item.dart'; + +class SourcesModel with ChangeNotifier { + Map _sources = Map(); + Map _deleted = Map(); + + bool has(String id) => _sources.containsKey(id); + + RSSSource getSource(String id) => _sources[id] ?? _deleted[id]; + + Iterable getSources() => _sources.values; + + Future init() async { + final maps = await Global.db.query("sources"); + for (var map in maps) { + var source = RSSSource.fromMap(map); + _sources[source.id] = source; + } + notifyListeners(); + await updateUnreadCounts(); + } + + Future updateUnreadCounts() async { + final rows = await Global.db.rawQuery( + "SELECT source, COUNT(iid) FROM items WHERE hasRead=0 GROUP BY source;" + ); + for (var source in _sources.values) { + var cloned = source.clone(); + _sources[source.id] = cloned; + cloned.unreadCount = 0; + } + for (var row in rows) { + _sources[row["source"]].unreadCount = row["COUNT(iid)"]; + } + notifyListeners(); + } + + void updateUnreadCount(String sid, int diff) { + _sources[sid].unreadCount += diff; + notifyListeners(); + } + + Future updateWithFetchedItems(Iterable items) async { + Set changed = Set(); + for (var item in items) { + var source = _sources[item.source]; + if (!item.hasRead) source.unreadCount += 1; + if (item.date.compareTo(source.latest) > 0 || source.lastTitle.length == 0) { + source.latest = item.date; + source.lastTitle = item.title; + changed.add(source.id); + } + } + notifyListeners(); + if (changed.length > 0) { + var batch = Global.db.batch(); + for (var sid in changed) { + var source = _sources[sid]; + batch.update( + "sources", + { + "latest": source.latest.millisecondsSinceEpoch, + "lastTitle": source.lastTitle, + }, + where: "sid = ?", + whereArgs: [source.id], + ); + } + await batch.commit(); + } + } + + Future put(RSSSource source, {force: false}) async { + if (_deleted.containsKey(source.id) && !force) return; + _sources[source.id] = source; + notifyListeners(); + await Global.db.insert( + "sources", + source.toMap(), + conflictAlgorithm: ConflictAlgorithm.replace, + ); + } + + Future putAll(Iterable sources, {force: false}) async { + Batch batch = Global.db.batch(); + for (var source in sources) { + if (_deleted.containsKey(source.id) && !force) continue; + _sources[source.id] = source; + batch.insert( + "sources", + source.toMap(), + conflictAlgorithm: ConflictAlgorithm.replace, + ); + } + notifyListeners(); + await batch.commit(noResult: true); + } + + Future updateSources() async { + final tuple = await Global.service.getSources(); + final sources = tuple.item1; + var curr = Set.from(_sources.keys); + List newSources = []; + for (var source in sources) { + if (curr.contains(source.id)) { + curr.remove(source.id); + } else { + newSources.add(source); + } + } + await putAll(newSources, force: true); + await removeSources(curr); + Global.groupsModel.groups = tuple.item2; + fetchFavicons(); + } + + Future removeSources(Iterable ids) async { + final batch = Global.db.batch(); + for (var id in ids) { + if (!_sources.containsKey(id)) continue; + var source = _sources[id]; + batch.delete( + "items", + where: "source = ?", + whereArgs: [id], + ); + batch.delete( + "sources", + where: "sid = ?", + whereArgs: [id], + ); + _sources.remove(id); + _deleted[id] = source; + } + await batch.commit(noResult: true); + Global.feedsModel.initAll(); + notifyListeners(); + } + + Future fetchFavicons() async { + for (var key in _sources.keys) { + if (_sources[key].iconUrl == null) { + _fetchFavicon(_sources[key].url).then((url) { + if (!_sources.containsKey(key)) return; + var source = _sources[key].clone(); + source.iconUrl = url == null ? "" : url; + put(source); + }); + } + } + } + + Future _fetchFavicon(String url) async { + try { + url = url.split("/").getRange(0, 3).join("/"); + var result = await http.get(url); + if (result.statusCode == 200) { + var htmlStr = result.body; + var dom = parse(htmlStr); + var links = dom.getElementsByTagName("link"); + for (var link in links) { + var rel = link.attributes["rel"]; + if ((rel == "icon" || rel == "shortcut icon") && link.attributes.containsKey("href")) { + var href = link.attributes["href"]; + var parsedUrl = Uri.parse(url); + if (href.startsWith("//")) return parsedUrl.scheme + ":" + href; + else if (href.startsWith("/")) return url + href; + else return href; + } + } + } + url = url + "/favicon.ico"; + if (await Utils.validateFavicon(url)) { + return url; + } else { + return null; + } + } catch(exp) { + return null; + } + } + + +} diff --git a/lib/models/sync_model.dart b/lib/models/sync_model.dart new file mode 100644 index 0000000..ca9b453 --- /dev/null +++ b/lib/models/sync_model.dart @@ -0,0 +1,64 @@ +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:fluent_reader_lite/utils/store.dart'; +import 'package:flutter/cupertino.dart'; + +class SyncModel with ChangeNotifier { + bool hasService = Global.service != null; + bool syncing = false; + bool _lastSyncSuccess = Store.sp.getBool(StoreKeys.LAST_SYNC_SUCCESS) ?? true; + DateTime _lastSynced = DateTime.fromMillisecondsSinceEpoch( + Store.sp.getInt(StoreKeys.LAST_SYNCED) ?? 0 + ); + + void checkHasService() { + var value = Global.service != null; + if (value != hasService) { + hasService = value; + notifyListeners(); + } + } + + Future removeService() async { + if (syncing || Global.service == null) return; + syncing = true; + notifyListeners(); + var sids = Global.sourcesModel.getSources() + .map((s) => s.id) + .toList(); + await Global.sourcesModel.removeSources(sids); + Global.service.remove(); + hasService = false; + syncing = false; + notifyListeners(); + } + + bool get lastSyncSuccess => _lastSyncSuccess; + set lastSyncSuccess(bool value) { + _lastSyncSuccess = value; + Store.sp.setBool(StoreKeys.LAST_SYNC_SUCCESS, value); + } + + DateTime get lastSynced => _lastSynced; + set lastSynced(DateTime value) { + _lastSynced = value; + Store.sp.setInt(StoreKeys.LAST_SYNCED, value.millisecondsSinceEpoch); + } + + Future syncWithService() async { + if (syncing || Global.service == null) return; + syncing = true; + notifyListeners(); + try { + await Global.sourcesModel.updateSources(); + await Global.itemsModel.syncItems(); + await Global.itemsModel.fetchItems(); + lastSyncSuccess = true; + } catch(exp) { + lastSyncSuccess = false; + print(exp); + } + lastSynced = DateTime.now(); + syncing = false; + notifyListeners(); + } +} \ No newline at end of file diff --git a/lib/pages/article_page.dart b/lib/pages/article_page.dart new file mode 100644 index 0000000..f33f887 --- /dev/null +++ b/lib/pages/article_page.dart @@ -0,0 +1,229 @@ +import 'dart:io'; + +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/models/feeds_model.dart'; +import 'package:fluent_reader_lite/models/item.dart'; +import 'package:fluent_reader_lite/models/items_model.dart'; +import 'package:fluent_reader_lite/models/source.dart'; +import 'package:fluent_reader_lite/models/sources_model.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:fluent_reader_lite/utils/store.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'package:http/http.dart' as http; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; +import 'package:share/share.dart'; +import 'package:fluent_reader_lite/components/cupertino_toolbar.dart'; +import 'package:url_launcher/url_launcher.dart'; +import 'package:webview_flutter_plus/webview_flutter_plus.dart'; + +class ArticlePage extends StatefulWidget { + static final GlobalKey state = GlobalKey(); + + ArticlePage() : super(key: state); + + @override + ArticlePageState createState() => ArticlePageState(); +} + +class ArticlePageState extends State { + WebViewPlusController _controller; + int requestId = 0; + bool loaded = false; + bool navigated = false; + SourceOpenTarget _target; + String iid; + bool isSourceFeed; + + void loadNewItem(String id, {bool isSource}) { + if (!Global.itemsModel.getItem(id).hasRead) { + Global.itemsModel.updateItem(id, read: true); + } + setState(() { + iid = id; + loaded = false; + navigated = false; + _target = null; + if (isSource != null) isSourceFeed = isSource; + }); + } + + Future _onNavigate(NavigationRequest request) async { + if (navigated && request.isForMainFrame) { + await launch(request.url); + return NavigationDecision.prevent; + } else { + return NavigationDecision.navigate; + } + } + + void _loadHtml(RSSItem item, RSSSource source, {loadFull: false}) async { + var localUrl = "assets/article/article.html"; + var currId = requestId; + String a; + if (loadFull) { + try { + var html = (await http.get(item.link)).body; + a = Uri.encodeComponent(html); + } catch(exp) { + setState(() { loaded = true; }); + return; + } + } else { + a = Uri.encodeComponent(item.content); + } + var h = '

${source.name}${(item.creator!=null&&item.creator.length>0)?' / '+item.creator:''}

'; + h += '

${item.title}

'; + h += '

${DateFormat.yMd(Localizations.localeOf(context).toString()).add_Hm().format(item.date)}

'; + h += '
'; + h = Uri.encodeComponent(h); + var s = Store.getArticleFontSize(); + localUrl += "?a=$a&h=$h&s=$s&u=${item.link}&m=${loadFull ? 1 : 0}"; + if (Platform.isAndroid || Global.globalModel.getBrightness() != null) { + var brightness = Global.currentBrightness(context); + localUrl += "&t=${brightness.index}"; + } + if (currId == requestId) _controller.loadUrl(localUrl); + } + + void _onPageReady(_) async { + if (Platform.isAndroid || Global.globalModel.getBrightness() != null) { + await Future.delayed(Duration(milliseconds: 300)); + } + setState(() { loaded = true; }); + } + void _onWebpageReady(_) { + if (loaded) navigated = true; + } + + void _setOpenTarget(RSSSource source, {SourceOpenTarget target}) { + setState(() { + _target = target ?? source.openTarget; + }); + } + + void _loadOpenTarget(RSSItem item, RSSSource source) { + setState(() { + requestId += 1; + loaded = false; + navigated = false; + }); + switch (_target) { + case SourceOpenTarget.Local: + _loadHtml(item, source); + break; + case SourceOpenTarget.FullContent: + _loadHtml(item, source, loadFull: true); + break; + case SourceOpenTarget.Webpage: + case SourceOpenTarget.External: + _controller.loadUrl(item.link); + break; + } + } + + @override + Widget build(BuildContext context) { + final Tuple2 arguments = ModalRoute.of(context).settings.arguments; + if (iid == null) iid = arguments.item1; + if (isSourceFeed == null) isSourceFeed = arguments.item2; + final resolvedDarkGrey = MyColors.dynamicDarkGrey.resolveFrom(context); + final viewOptions = { + 0: Padding(child: Icon(Icons.rss_feed, color: resolvedDarkGrey), padding: EdgeInsets.symmetric(horizontal: 8)), + 1: Icon(Icons.article_outlined, color: resolvedDarkGrey), + 2: Icon(Icons.language, color: resolvedDarkGrey), + }; + return Selector2>( + selector: (context, itemsModel, sourcesModel) { + var item = itemsModel.getItem(iid); + var source = sourcesModel.getSource(item.source); + return Tuple2(item, source); + }, + builder: (context, tuple, child) { + var item = tuple.item1; + var source = tuple.item2; + if (_target == null) _target = source.openTarget; + final body = SafeArea(child: IndexedStack( + index: !loaded ? 0 : 1, + children: [ + Center( + child: CupertinoActivityIndicator() + ), + WebViewPlus( + key: Key("a-$iid-${_target.index}"), + javascriptMode: JavascriptMode.unrestricted, + onWebViewCreated: (WebViewPlusController webViewController) { + _controller = webViewController; + _loadOpenTarget(item, source); + }, + onPageStarted: _onPageReady, + onPageFinished: _onWebpageReady, + navigationDelegate: _onNavigate, + ), + ], + ), bottom: false,); + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + backgroundColor: CupertinoColors.systemBackground, + middle: CupertinoSlidingSegmentedControl( + children: viewOptions, + onValueChanged: (v) { _setOpenTarget(source, target: SourceOpenTarget.values[v]); }, + groupValue: _target.index, + ), + ), + child: Consumer( + child: body, + builder: (context, feedsModel, child) { + final feed = isSourceFeed ? feedsModel.source : feedsModel.all; + var idx = feed.iids.indexOf(iid); + return CupertinoToolbar( + items: [ + CupertinoToolbarItem( + icon: item.hasRead ? CupertinoIcons.circle : CupertinoIcons.smallcircle_fill_circle, + onPressed: () { + Global.itemsModel.updateItem(item.id, read: !item.hasRead); + }, + ), + CupertinoToolbarItem( + icon: item.starred ? CupertinoIcons.star_fill : CupertinoIcons.star, + onPressed: () { + Global.itemsModel.updateItem(item.id, starred: !item.starred); + }, + ), + CupertinoToolbarItem( + icon: CupertinoIcons.share, + onPressed: () { Share.share(item.link); }, + ), + CupertinoToolbarItem( + icon: CupertinoIcons.chevron_up, + onPressed: idx <= 0 ? null : () { + loadNewItem(feed.iids[idx - 1]); + }, + ), + CupertinoToolbarItem( + icon: CupertinoIcons.chevron_down, + onPressed: (idx == -1 || (idx == feed.iids.length - 1 && feed.allLoaded)) + ? null + : () async { + if (idx == feed.iids.length - 1) { + await feed.loadMore(); + } + idx = feed.iids.indexOf(iid); + if (idx != feed.iids.length - 1) { + loadNewItem(feed.iids[idx + 1]); + } + }, + ), + ], + body: child, + ); + }, + ), + ); + }, + ); + } +} diff --git a/lib/pages/group_list_page.dart b/lib/pages/group_list_page.dart new file mode 100644 index 0000000..ea31446 --- /dev/null +++ b/lib/pages/group_list_page.dart @@ -0,0 +1,103 @@ +import 'package:fluent_reader_lite/components/badge.dart'; +import 'package:fluent_reader_lite/components/dismissible_background.dart'; +import 'package:fluent_reader_lite/components/mark_all_action_sheet.dart'; +import 'package:fluent_reader_lite/components/my_list_tile.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/models/groups_model.dart'; +import 'package:fluent_reader_lite/models/source.dart'; +import 'package:fluent_reader_lite/models/sources_model.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/services.dart'; +import 'package:provider/provider.dart'; + +class GroupListPage extends StatefulWidget { + @override + _GroupListPageState createState() => _GroupListPageState(); +} + +class _GroupListPageState extends State { + int _unreadCount(Iterable sources) { + return sources.fold(0, (c, s) => c + (s != null ? s.unreadCount : 0)); + } + + static const _dismissThresholds = { + DismissDirection.startToEnd: 0.25, + }; + + @override + Widget build(BuildContext context) { + final navigationBar = CupertinoSliverNavigationBar( + largeTitle: Text(S.of(context).groups), + automaticallyImplyLeading: false, + backgroundColor: Global.isTablet ? CupertinoColors.systemBackground : null, + leading: CupertinoButton( + padding: EdgeInsets.zero, + child: Text(S.of(context).cancel), + onPressed: () { Navigator.of(context).pop(); }, + ), + ); + final allSources = Consumer( + builder: (context, sourcesModel, child) { + var count = _unreadCount(sourcesModel.getSources()); + return SliverToBoxAdapter(child: MyListTile( + title: Text(S.of(context).allSubscriptions), + trailing: count > 0 ? Badge(count) : null, + onTap: () { Navigator.of(context).pop(List()); }, + background: CupertinoColors.systemBackground, + )); + }, + ); + final dismissBg = DismissibleBackground(CupertinoIcons.checkmark_circle, true); + final groupList = Consumer2( + builder: (context, groupsModel, sourcesModel, child) { + final groupNames = groupsModel.groups.keys.toList(); + groupNames.sort(); + return SliverList( + delegate: SliverChildBuilderDelegate((context, index) { + final groupName = groupNames[index]; + final count = _unreadCount( + groupsModel.groups[groupName].map((sid) => sourcesModel.getSource(sid)) + ); + final tile = MyListTile( + title: Flexible(child: Text(groupName, overflow: TextOverflow.ellipsis)), + trailing: count > 0 ? Badge(count) : null, + onTap: () { Navigator.of(context).pop([groupName]); }, + background: CupertinoColors.systemBackground, + ); + return Dismissible( + key: Key(groupName), + child: tile, + background: dismissBg, + direction: DismissDirection.startToEnd, + dismissThresholds: _dismissThresholds, + confirmDismiss: (_) async { + HapticFeedback.mediumImpact(); + Set sids = Set.from(groupsModel.groups[groupName]); + showCupertinoModalPopup( + context: context, + builder: (context) => MarkAllActionSheet(sids), + ); + return false; + }, + ); + }, childCount: groupNames.length), + ); + }, + ); + final padding = SliverToBoxAdapter(child: Padding( + padding: EdgeInsets.only(bottom: 80), + ),); + return CupertinoPageScaffold( + backgroundColor: CupertinoColors.systemBackground, + child: CupertinoScrollbar(child: CustomScrollView( + slivers: [ + navigationBar, + allSources, + groupList, + padding, + ], + )) + ); + } +} diff --git a/lib/pages/home_page.dart b/lib/pages/home_page.dart new file mode 100644 index 0000000..920805a --- /dev/null +++ b/lib/pages/home_page.dart @@ -0,0 +1,121 @@ +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/main.dart'; +import 'package:fluent_reader_lite/models/sync_model.dart'; +import 'package:fluent_reader_lite/pages/setup_page.dart'; +import 'package:fluent_reader_lite/pages/subscription_list_page.dart'; +import 'package:fluent_reader_lite/pages/tablet_base_page.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:responsive_builder/responsive_builder.dart'; + +import 'item_list_page.dart'; + +class HomePage extends StatefulWidget { + @override + _HomePageState createState() => _HomePageState(); +} + +class ScrollTopNotifier with ChangeNotifier { + int index = 0; + + void onTap(int newIndex) { + var oldIndex = index; + index = newIndex; + if (newIndex == oldIndex) notifyListeners(); + } +} + +class _HomePageState extends State { + final _scrollTopNotifier = ScrollTopNotifier(); + + Widget _constructPage(Widget page, bool isMobile) { + return isMobile + ? CupertinoPageScaffold( + child: page, + backgroundColor: CupertinoColors.systemBackground.resolveFrom(context), + ) + : Container( + child: page, + color: CupertinoColors.systemBackground.resolveFrom(context), + ); + } + + @override + Widget build(BuildContext context) { + return Selector( + selector: (context, syncModel) => syncModel.hasService, + builder: (context, hasService, child) { + if (!hasService) return SetupPage(); + var isMobile = true; + var left = CupertinoTabScaffold( + backgroundColor: CupertinoColors.systemBackground, + tabBar: CupertinoTabBar( + backgroundColor: CupertinoColors.systemBackground, + onTap: _scrollTopNotifier.onTap, + items: [ + BottomNavigationBarItem( + icon: Icon(Icons.timeline), + label: S.of(context).feed, + ), + BottomNavigationBarItem( + icon: Icon(Icons.list), + label: S.of(context).subscriptions, + ), + ], + ), + tabBuilder: (context, index) { + return CupertinoTabView( + routes: { + '/feed': (context) { + Widget page = ItemListPage(_scrollTopNotifier); + return _constructPage(page, isMobile); + }, + }, + builder: (context) { + Widget page = index == 0 + ? ItemListPage(_scrollTopNotifier) + : SubscriptionListPage(_scrollTopNotifier); + return _constructPage(page, isMobile); + }, + ); + }, + ); + return ScreenTypeLayout.builder( + mobile: (context) => left, + tablet: (context) { + isMobile = false; + var right = Container( + decoration: BoxDecoration(), + clipBehavior: Clip.hardEdge, + child: CupertinoTabView( + navigatorKey: Global.tabletPanel, + routes: { + "/": (context) => TabletBasePage(), + ...MyApp.baseRoutes, + }, + )); + return Container( + color: CupertinoColors.systemBackground.resolveFrom(context), + child: Row( + children: [ + Container( + constraints: BoxConstraints(maxWidth: 320), + child: left, + ), + VerticalDivider( + width: 1, + thickness: 1, + color: CupertinoColors.systemGrey4.resolveFrom(context), + ), + Expanded(child: right), + ], + ) + ); + }, + ); + }, + ); + } +} diff --git a/lib/pages/item_list_page.dart b/lib/pages/item_list_page.dart new file mode 100644 index 0000000..a62c0b5 --- /dev/null +++ b/lib/pages/item_list_page.dart @@ -0,0 +1,376 @@ +import 'package:fluent_reader_lite/components/article_item.dart'; +import 'package:fluent_reader_lite/components/badge.dart'; +import 'package:fluent_reader_lite/components/mark_all_action_sheet.dart'; +import 'package:fluent_reader_lite/components/responsive_action_sheet.dart'; +import 'package:fluent_reader_lite/components/sync_control.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/models/feed.dart'; +import 'package:fluent_reader_lite/models/feeds_model.dart'; +import 'package:fluent_reader_lite/models/item.dart'; +import 'package:fluent_reader_lite/models/items_model.dart'; +import 'package:fluent_reader_lite/models/source.dart'; +import 'package:fluent_reader_lite/models/sources_model.dart'; +import 'package:fluent_reader_lite/pages/settings/text_editor_page.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:share/share.dart'; +import 'package:tuple/tuple.dart'; + +import 'home_page.dart'; + +class ItemListPage extends StatefulWidget { + final ScrollTopNotifier scrollTopNotifier; + + ItemListPage(this.scrollTopNotifier, {Key key}) : super(key: key); + + @override + _ItemListPageState createState() => _ItemListPageState(); +} + +class _ItemListPageState extends State { + DateTime lastLoadedMore; + + void _onScrollTop() { + var expectedCanPop = widget.scrollTopNotifier.index == 1; + if (expectedCanPop == Navigator.of(context).canPop()) { + PrimaryScrollController.of(context).animateTo( + 0, + curve: Curves.easeOut, + duration: const Duration(milliseconds: 300), + ); + } + } + + @override + void initState() { + super.initState(); + widget.scrollTopNotifier.addListener(_onScrollTop); + } + + @override + void dispose() { + widget.scrollTopNotifier.removeListener(_onScrollTop); + super.dispose(); + } + + RSSFeed getFeed() { + return ModalRoute.of(context).settings.arguments != null + ? Global.feedsModel.source + : Global.feedsModel.all; + } + + bool _onScroll(ScrollNotification scrollInfo) { + var feed = getFeed(); + if (!ModalRoute.of(context).isCurrent + || !feed.initialized || feed.loading || feed.allLoaded) { + return true; + } + if (scrollInfo.metrics.extentAfter == 0.0 && + scrollInfo.metrics.pixels >= scrollInfo.metrics.maxScrollExtent * 0.8 && + (lastLoadedMore == null || DateTime.now().difference(lastLoadedMore).inSeconds > 1)) { + lastLoadedMore = DateTime.now(); + feed.loadMore(); + } + return false; + } + + void _openMarkAllModal() { + showCupertinoModalPopup( + context: context, + builder: (context) => MarkAllActionSheet(getFeed().sids), + ); + } + + static const _iconPadding = Padding(padding: EdgeInsets.only(left: 24)); + + void _openFilterModal() { + showCupertinoModalPopup( + context: context, + builder: (context) { + final feed = getFeed(); + final sheet = CupertinoActionSheet( + title: Text(S.of(context).filter), + actions: [ + CupertinoActionSheetAction( + child: Row(children: [ + Icon(CupertinoIcons.today), + Text(S.of(context).allArticles), + _iconPadding, + ], mainAxisAlignment: MainAxisAlignment.spaceBetween), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + feed.setFilter(FilterType.All); + _onScrollTop(); + }, + ), + CupertinoActionSheetAction( + child: Row(children: [ + Icon(Icons.radio_button_checked), + Text(S.of(context).unreadOnly), + _iconPadding, + ], mainAxisAlignment: MainAxisAlignment.spaceBetween), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + feed.setFilter(FilterType.Unread); + _onScrollTop(); + }, + ), + CupertinoActionSheetAction( + child: Row(children: [ + Icon(CupertinoIcons.star_fill), + Text(S.of(context).starredOnly), + _iconPadding, + ], mainAxisAlignment: MainAxisAlignment.spaceBetween), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + feed.setFilter(FilterType.Starred); + _onScrollTop(); + }, + ), + CupertinoActionSheetAction( + isDestructiveAction: true, + child: Row(children: [ + Icon(CupertinoIcons.search, color: CupertinoColors.destructiveRed), + Text(feed.search.length > 0 ? S.of(context).editKeyword : S.of(context).search), + _iconPadding, + ], mainAxisAlignment: MainAxisAlignment.spaceBetween), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + _editSearchKeyword(); + }, + ), + if (feed.search.length > 0) CupertinoActionSheetAction( + isDestructiveAction: true, + child: Row(children: [ + Icon(CupertinoIcons.clear_fill, color: CupertinoColors.destructiveRed), + Text(S.of(context).clearSearch), + _iconPadding, + ], mainAxisAlignment: MainAxisAlignment.spaceBetween), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + feed.performSearch(""); + _onScrollTop(); + }, + ), + ], + cancelButton: CupertinoActionSheetAction( + child: Text(S.of(context).cancel), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + }, + ), + ); + return ResponsiveActionSheet(sheet); + } + ); + } + + void _editSearchKeyword() async { + String keyword = await Navigator.of(context).push(CupertinoPageRoute( + builder: (context) => TextEditorPage( + S.of(context).editKeyword, + (v) => v.trim().length > 0, + saveText: S.of(context).search, + initialValue: getFeed().search, + navigationBarColor: CupertinoColors.systemBackground, + ), + )); + if (keyword == null) return; + getFeed().performSearch(keyword); + _onScrollTop(); + } + + void _openActionSheet(RSSItem item) { + showCupertinoModalPopup( + context: context, + builder: (context) { + final sheet = CupertinoActionSheet( + actions: [ + CupertinoActionSheetAction( + child: Row(children: [ + Icon(item.hasRead ? Icons.radio_button_checked : Icons.radio_button_unchecked), + Text(item.hasRead ? S.of(context).markUnread : S.of(context).markRead), + _iconPadding, + ], mainAxisAlignment: MainAxisAlignment.spaceBetween), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + Global.itemsModel.updateItem(item.id, read: !item.hasRead); + }, + ), + CupertinoActionSheetAction( + child: Row(children: [ + Icon(item.starred ? CupertinoIcons.star : CupertinoIcons.star_fill), + Text(item.starred ? S.of(context).unstar : S.of(context).star), + _iconPadding, + ], mainAxisAlignment: MainAxisAlignment.spaceBetween), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + Global.itemsModel.updateItem(item.id, starred: !item.starred); + }, + ), + CupertinoActionSheetAction( + child: Row(children: [ + Icon(CupertinoIcons.arrow_up), + Text(S.of(context).markAbove), + _iconPadding, + ], mainAxisAlignment: MainAxisAlignment.spaceBetween), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + Global.itemsModel.markAllRead(getFeed().sids, date: item.date, before: false); + }, + ), + CupertinoActionSheetAction( + child: Row(children: [ + Icon(CupertinoIcons.arrow_down), + Text(S.of(context).markBelow), + _iconPadding, + ], mainAxisAlignment: MainAxisAlignment.spaceBetween), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + Global.itemsModel.markAllRead(getFeed().sids, date: item.date); + }, + ), + CupertinoActionSheetAction( + child: Row(children: [ + Icon(CupertinoIcons.share), + Text(S.of(context).share), + _iconPadding, + ], mainAxisAlignment: MainAxisAlignment.spaceBetween), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + Share.share(item.link); + }, + ), + ], + cancelButton: CupertinoActionSheetAction( + child: Text(S.of(context).cancel), + onPressed: () { + Navigator.of(context, rootNavigator: true).pop(); + }, + ), + ); + return ResponsiveActionSheet(sheet); + }, + ); + } + + @override + Widget build(BuildContext context) { + final String title = ModalRoute.of(context).settings.arguments; + final titleWidget = Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + constraints: BoxConstraints( + maxWidth: Global.isTablet + ? 260 + : MediaQuery.of(context).size.width - 60, + ), + child: Text( + title ?? S.of(context).allArticles, + overflow: TextOverflow.ellipsis, + ), + ), + Consumer( + builder: (context, sourcesModel, child) { + var sources = sourcesModel.getSources(); + if (title != null) { + var feed = getFeed(); + sources = sources.where((s) => feed.sids.contains(s.id)); + } + var count = sources.fold(0, (c, s) => c + s.unreadCount); + if (count > 0) { + return Padding( + padding: EdgeInsets.only(left: 4), + child: Badge(count, color: CupertinoColors.systemBlue), + ); + } + return Container(); + }, + ), + ], + ); + final navigationBar = CupertinoSliverNavigationBar( + stretch: false, + heroTag: title != null ? "source" : "all", + transitionBetweenRoutes: true, + backgroundColor: CupertinoColors.systemBackground, + largeTitle: titleWidget, + trailing: Container( + transform: Matrix4.translationValues(12, 0, 0), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + CupertinoButton( + padding: EdgeInsets.zero, + child: Icon(CupertinoIcons.checkmark_circle), + onPressed: _openMarkAllModal, + ), + Consumer( + builder: (context, feedsModel, child) { + var feed = getFeed(); + return CupertinoButton( + padding: EdgeInsets.zero, + child: Icon((feed.filterType != FilterType.All || feed.search.length > 0) + ? CupertinoIcons.line_horizontal_3_decrease_circle_fill + : CupertinoIcons.line_horizontal_3_decrease_circle + ), + onPressed: _openFilterModal, + ); + }, + ), + ] + ), + ) + ); + final subscriptionList = Consumer( + builder: (context, feedsModel, child) { + var feed = getFeed(); + return SliverList( + delegate: SliverChildBuilderDelegate((content, index) { + return Selector2>( + key: Key(feed.iids[index]), + selector: (context, itemsModel, sourcesModel) { + var item = itemsModel.getItem(feed.iids[index]); + var source = sourcesModel.getSource(item.source); + return Tuple2(item, source); + }, + builder: (context, tuple, child) => ArticleItem( + tuple.item1, tuple.item2, _openActionSheet + ), + ); + }, childCount: feed.iids.length), + ); + }, + ); + final loadMoreIndicator = Consumer( + builder: (context, feedsModel, child) { + var feed = getFeed(); + return SliverToBoxAdapter(child: Padding( + padding: EdgeInsets.symmetric(vertical: 20), + child: Center( + child: feed.allLoaded + ? Text("All loaded", style: TextStyle( + color: CupertinoColors.secondaryLabel.resolveFrom(context), + )) + : CupertinoActivityIndicator() + ), + )); + } + ); + return NotificationListener( + onNotification: _onScroll, + child: CupertinoScrollbar(child: CustomScrollView( + slivers: [ + navigationBar, + SyncControl(), + subscriptionList, + loadMoreIndicator, + ], + )), + ); + } + +} \ No newline at end of file diff --git a/lib/pages/settings/about_page.dart b/lib/pages/settings/about_page.dart new file mode 100644 index 0000000..764728d --- /dev/null +++ b/lib/pages/settings/about_page.dart @@ -0,0 +1,58 @@ +import 'package:fluent_reader_lite/components/list_tile_group.dart'; +import 'package:fluent_reader_lite/components/my_list_tile.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:flutter/cupertino.dart'; + +class AboutPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + final String version = ModalRoute.of(context).settings.arguments ?? "1.0.0"; + final nameStyle = TextStyle( + color: CupertinoColors.label.resolveFrom(context), + fontSize: 18, + fontWeight: FontWeight.bold, + height: 1.5, + ); + final versionStyle = TextStyle( + color: CupertinoColors.label.resolveFrom(context), + fontSize: 14, + height: 1.5, + ); + final copyrightStyle = TextStyle( + color: CupertinoColors.secondaryLabel.resolveFrom(context), + fontSize: 12, + height: 2, + ); + return CupertinoPageScaffold( + backgroundColor: MyColors.background, + navigationBar: CupertinoNavigationBar( + middle: Text(S.of(context).about), + ), + child: ListView( + children: [ + Container( + padding: EdgeInsets.symmetric(vertical: 100), + child: Column( + children: [ + Image.asset("assets/icons/logo.png", width: 80, height: 80), + Text("Fluent Reader Lite", style: nameStyle), + Text("${S.of(context).version} $version", style: versionStyle), + Text("Copyright © 2021 Haoyuan Liu. All rights reserved.", style: copyrightStyle), + ], + ), + ), + ListTileGroup([ + MyListTile( + title: Text(S.of(context).openSource), + ), + MyListTile( + title: Text(S.of(context).feedback), + withDivider: false, + ), + ]), + ], + ), + ); + } +} \ No newline at end of file diff --git a/lib/pages/settings/feed_page.dart b/lib/pages/settings/feed_page.dart new file mode 100644 index 0000000..1005a12 --- /dev/null +++ b/lib/pages/settings/feed_page.dart @@ -0,0 +1,107 @@ +import 'package:fluent_reader_lite/components/list_tile_group.dart'; +import 'package:fluent_reader_lite/components/my_list_tile.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/models/feeds_model.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +class FeedPage extends StatelessWidget { + void _openGestureOptions(BuildContext context, bool isToRight) { + Navigator.of(context).push(CupertinoPageRoute( + builder: (context) => CupertinoPageScaffold( + backgroundColor: MyColors.background, + navigationBar: CupertinoNavigationBar( + middle: Text(isToRight ? S.of(context).swipeRight : S.of(context).swipeLeft), + ), + child: Consumer( + builder: (context, feedsModel, child) { + final swipeOptons = [ + Tuple2(S.of(context).toggleRead, ItemSwipeOption.ToggleRead), + Tuple2(S.of(context).toggleStar, ItemSwipeOption.ToggleStar), + Tuple2(S.of(context).share, ItemSwipeOption.Share), + Tuple2(S.of(context).openExternal, ItemSwipeOption.OpenExternal), + Tuple2(S.of(context).openMenu, ItemSwipeOption.OpenMenu), + ]; + return ListView(children: [ + ListTileGroup.fromOptions( + swipeOptons, + isToRight ? feedsModel.swipeR : feedsModel.swipeL, + (v) { + if (isToRight) feedsModel.swipeR = v; + else feedsModel.swipeL = v; + }, + ), + ]); + }, + ), + ), + )); + } + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + backgroundColor: MyColors.background, + navigationBar: CupertinoNavigationBar( + middle: Text(S.of(context).feed), + ), + child: Consumer( + builder: (context, feedsModel, child) { + final swipeOptons = { + ItemSwipeOption.ToggleRead: S.of(context).toggleRead, + ItemSwipeOption.ToggleStar: S.of(context).toggleStar, + ItemSwipeOption.Share: S.of(context).share, + ItemSwipeOption.OpenExternal: S.of(context).openExternal, + ItemSwipeOption.OpenMenu: S.of(context).openMenu, + }; + return ListView( + children: [ + ListTileGroup([ + MyListTile( + title: Text(S.of(context).showThumb), + trailing: CupertinoSwitch( + value: feedsModel.showThumb, + onChanged: (v) { feedsModel.showThumb = v; }, + ), + trailingChevron: false, + ), + MyListTile( + title: Text(S.of(context).showSnippet), + trailing: CupertinoSwitch( + value: feedsModel.showSnippet, + onChanged: (v) { feedsModel.showSnippet = v; }, + ), + trailingChevron: false, + ), + MyListTile( + title: Text(S.of(context).dimRead), + trailing: CupertinoSwitch( + value: feedsModel.dimRead, + onChanged: (v) { feedsModel.dimRead = v; }, + ), + trailingChevron: false, + withDivider: false, + ), + ], title: S.of(context).preferences), + ListTileGroup([ + MyListTile( + title: Text(S.of(context).swipeRight), + trailing: Text(swipeOptons[feedsModel.swipeR]), + onTap: () { _openGestureOptions(context, true); }, + ), + MyListTile( + title: Text(S.of(context).swipeLeft), + trailing: Text(swipeOptons[feedsModel.swipeL]), + onTap: () { _openGestureOptions(context, false); }, + withDivider: false, + ), + ], title: S.of(context).gestures), + ], + ); + }, + ), + ); + } +} \ No newline at end of file diff --git a/lib/pages/settings/general_page.dart b/lib/pages/settings/general_page.dart new file mode 100644 index 0000000..18ad536 --- /dev/null +++ b/lib/pages/settings/general_page.dart @@ -0,0 +1,108 @@ +import 'package:fluent_reader_lite/components/list_tile_group.dart'; +import 'package:fluent_reader_lite/components/my_list_tile.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/models/global_model.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_cache_manager/flutter_cache_manager.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +class GeneralPage extends StatefulWidget { + @override + _GeneralPageState createState() => _GeneralPageState(); +} + +class _GeneralPageState extends State { + bool _clearingCache = false; + + void _clearCache() async { + setState(() { _clearingCache = true; }); + await DefaultCacheManager().emptyCache(); + if (!mounted) return; + setState(() { _clearingCache = false; }); + } + + @override + Widget build(BuildContext context) => CupertinoPageScaffold( + backgroundColor: MyColors.background, + navigationBar: CupertinoNavigationBar( + middle: Text(S.of(context).general), + ), + child: Consumer( + builder: (context, globalModel, child) { + final syncItems = ListTileGroup([ + MyListTile( + title: Text(S.of(context).onStart), + trailing: CupertinoSwitch( + value: globalModel.syncOnStart, + onChanged: (v) { + globalModel.syncOnStart = v; + setState(() {}); + }, + ), + trailingChevron: false, + withDivider: false, + ), + ], title: S.of(context).sync); + final storageItems = ListTileGroup([ + MyListTile( + title: Text(S.of(context).clearCache), + onTap: _clearingCache ? null : _clearCache, + trailing: _clearingCache ? CupertinoActivityIndicator() : null, + trailingChevron: !_clearingCache, + ), + MyListTile( + title: Text(S.of(context).autoDelete), + trailing: Text(S.of(context).daysAgo(globalModel.keepItemsDays)), + trailingChevron: false, + withDivider: false, + ), + MyListTile( + title: Expanded(child: CupertinoSlider( + min: 1, + max: 4, + divisions: 3, + value: (globalModel.keepItemsDays ~/ 7).toDouble(), + onChanged: (v) { + globalModel.keepItemsDays = (v * 7).toInt(); + setState(() { }); + }, + )), + trailingChevron: false, + withDivider: false, + ), + ], title: S.of(context).storage); + final themeItems = ListTileGroup.fromOptions( + [ + Tuple2(S.of(context).followSystem, ThemeSetting.Default), + Tuple2(S.of(context).light, ThemeSetting.Light), + Tuple2(S.of(context).dark, ThemeSetting.Dark), + ], + globalModel.theme, + (t) { globalModel.theme = t; }, + title: S.of(context).theme, + ); + final localeItems = ListTileGroup.fromOptions( + [ + Tuple2(S.of(context).followSystem, null), + Tuple2("English", Locale("en")), + Tuple2("中文(简体)", Locale("zh")), + ], + globalModel.locale, + (l) { globalModel.locale = l; }, + title: S.of(context).language, + ); + return ListView( + children: [ + syncItems, + storageItems, + themeItems, + localeItems, + ], + ); + }, + ), + ); +} diff --git a/lib/pages/settings/reading_page.dart b/lib/pages/settings/reading_page.dart new file mode 100644 index 0000000..07bdd29 --- /dev/null +++ b/lib/pages/settings/reading_page.dart @@ -0,0 +1,47 @@ +import 'package:fluent_reader_lite/components/list_tile_group.dart'; +import 'package:fluent_reader_lite/components/my_list_tile.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:fluent_reader_lite/utils/store.dart'; +import 'package:flutter/cupertino.dart'; + +class ReadingPage extends StatefulWidget { + @override + _ReadingPageState createState() => _ReadingPageState(); +} + +class _ReadingPageState extends State { + int _fontSize = Store.getArticleFontSize(); + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + backgroundColor: MyColors.background, + navigationBar: CupertinoNavigationBar( + middle: Text(S.of(context).reading), + ), + child: ListView(children: [ + ListTileGroup([ + MyListTile( + title: Text(S.of(context).fontSize), + trailing: Text(_fontSize.toString()), + trailingChevron: false, + withDivider: false, + ), + MyListTile( + title: Expanded(child: CupertinoSlider( + min: 10, + max: 22, + divisions: 13, + value: _fontSize.toDouble(), + onChanged: (v) { setState(() { _fontSize = v.toInt(); }); }, + onChangeEnd: (v) { Store.setArticleFontSize(v.toInt()); }, + )), + trailingChevron: false, + withDivider: false, + ), + ], title: S.of(context).preferences), + ]), + ); + } +} diff --git a/lib/pages/settings/services/fever_page.dart b/lib/pages/settings/services/fever_page.dart new file mode 100644 index 0000000..c525f0f --- /dev/null +++ b/lib/pages/settings/services/fever_page.dart @@ -0,0 +1,234 @@ +import 'dart:convert'; + +import 'package:crypto/crypto.dart'; +import 'package:fluent_reader_lite/components/list_tile_group.dart'; +import 'package:fluent_reader_lite/components/my_list_tile.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/models/services/fever.dart'; +import 'package:fluent_reader_lite/models/sync_model.dart'; +import 'package:fluent_reader_lite/pages/settings/text_editor_page.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:fluent_reader_lite/utils/store.dart'; +import 'package:fluent_reader_lite/utils/utils.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:provider/provider.dart'; + +class FeverPage extends StatefulWidget { + @override + _FeverPageState createState() => _FeverPageState(); +} + +class _FeverPageState extends State { + String _endpoint = Store.sp.getString(StoreKeys.ENDPOINT) ?? ""; + String _username = Store.sp.getString(StoreKeys.USERNAME) ?? ""; + String _password = Store.sp.getString(StoreKeys.PASSWORD) ?? ""; + int _fetchLimit = Store.sp.getInt(StoreKeys.FETCH_LIMIT) ?? 250; + bool _validating = false; + + void _editEndpoint() async { + final String endpoint = await Navigator.of(context).push(CupertinoPageRoute( + builder: (context) => TextEditorPage( + S.of(context).endpoint, + Utils.testUrl, + initialValue: _endpoint, + ), + )); + if (endpoint == null) return; + setState(() { _endpoint = endpoint; }); + } + + void _editUsername() async { + final String username = await Navigator.of(context).push(CupertinoPageRoute( + builder: (context) => TextEditorPage( + S.of(context).username, + Utils.notEmpty, + initialValue: _username, + ), + )); + if (username == null) return; + setState(() { _username = username; }); + } + + void _editPassword() async { + final String password = await Navigator.of(context).push(CupertinoPageRoute( + builder: (context) => TextEditorPage( + S.of(context).password, + Utils.notEmpty, + isPassword: true, + ), + )); + if (password == null) return; + setState(() { _password = password; }); + } + + bool _canSave() { + if (_validating) return false; + return _endpoint.length > 0 && _username.length > 0 && _password.length > 0; + } + + void _save() async { + final apiKey = md5.convert(utf8.encode("$_username:$_password")).toString(); + final handler = FeverServiceHandler.fromValues( + _endpoint, + apiKey, + _fetchLimit + ); + setState(() { _validating = true; }); + final isValid = await handler.validate(); + if (!mounted) return; + if (isValid) { + handler.persist(_username, _password); + await Global.syncModel.syncWithService(); + Global.syncModel.checkHasService(); + _validating = false; + if (mounted) Navigator.of(context).pop(); + } else { + setState(() { _validating = false; }); + Utils.showServiceFailureDialog(context); + } + } + + void _logOut() async { + final bool confirmed = await showCupertinoDialog( + context: context, + builder: (context) => CupertinoAlertDialog( + title: Text(S.of(context).logOutWarning), + actions: [ + CupertinoDialogAction( + isDefaultAction: true, + child: Text(S.of(context).cancel), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + CupertinoDialogAction( + isDestructiveAction: true, + child: Text(S.of(context).confirm), + onPressed: () { + Navigator.of(context).pop(true); + }, + ), + ], + ), + ); + if (confirmed != null) { + setState(() { _validating = true; }); + await Global.syncModel.removeService(); + setState(() { _validating = false; }); + final navigator = Navigator.of(context); + while (navigator.canPop()) navigator.pop(); + } + } + + @override + Widget build(BuildContext context) { + final inputs = ListTileGroup([ + MyListTile( + title: Text(S.of(context).endpoint), + trailing: Text(_endpoint.length == 0 + ? S.of(context).enter + : S.of(context).entered), + onTap: _editEndpoint, + ), + MyListTile( + title: Text(S.of(context).username), + trailing: Text(_username.length == 0 + ? S.of(context).enter + : S.of(context).entered), + onTap: _editUsername, + ), + MyListTile( + title: Text(S.of(context).password), + trailing: Text(_password.length == 0 + ? S.of(context).enter + : S.of(context).entered), + onTap: _editPassword, + withDivider: false, + ), + ], title: S.of(context).credentials); + final syncItems = ListTileGroup([ + MyListTile( + title: Text(S.of(context).fetchLimit), + trailing: Text(_fetchLimit.toString()), + trailingChevron: false, + withDivider: false, + ), + MyListTile( + title: Expanded(child: CupertinoSlider( + min: 250, + max: 1500, + divisions: 5, + value: _fetchLimit.toDouble(), + onChanged: (v) { setState(() { _fetchLimit = v.toInt(); }); }, + )), + trailingChevron: false, + withDivider: false, + ), + ], title: S.of(context).sync); + final saveButton = Selector( + selector: (context, syncModel) => syncModel.syncing, + builder: (context, syncing, child) { + var canSave = !syncing && _canSave(); + final saveStyle = TextStyle( + color: canSave + ? CupertinoColors.activeBlue.resolveFrom(context) + : CupertinoColors.secondaryLabel.resolveFrom(context), + ); + return ListTileGroup([ + MyListTile( + title: Expanded(child: Center( + child: _validating + ? CupertinoActivityIndicator() + : Text( + S.of(context).save, + style: saveStyle, + ) + )), + onTap: canSave ? _save : null, + trailingChevron: false, + withDivider: false, + ), + ], title: ""); + }, + ); + final logOutButton = Selector( + selector: (context, syncModel) => syncModel.syncing, + builder: (context, syncing, child) { + return ListTileGroup([ + MyListTile( + title: Expanded(child: Center( + child: Text( + S.of(context).logOut, + style: TextStyle( + color: (_validating || syncing) + ? CupertinoColors.secondaryLabel.resolveFrom(context) + : CupertinoColors.destructiveRed, + ), + ) + )), + onTap: (_validating || syncing) ? null : _logOut, + trailingChevron: false, + withDivider: false, + ), + ], title: ""); + }, + ); + final page = CupertinoPageScaffold( + backgroundColor: MyColors.background, + navigationBar: CupertinoNavigationBar( + middle: Text("Fever API"), + ), + child: ListView(children: [ + inputs, + syncItems, + saveButton, + if (Global.service != null) logOutButton, + ]), + ); + return WillPopScope( + child: page, + onWillPop: () async => !_validating, + ); + } +} diff --git a/lib/pages/settings/source_edit_page.dart b/lib/pages/settings/source_edit_page.dart new file mode 100644 index 0000000..87ee24c --- /dev/null +++ b/lib/pages/settings/source_edit_page.dart @@ -0,0 +1,107 @@ +import 'package:fluent_reader_lite/components/list_tile_group.dart'; +import 'package:fluent_reader_lite/components/my_list_tile.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/models/source.dart'; +import 'package:fluent_reader_lite/models/sources_model.dart'; +import 'package:fluent_reader_lite/pages/settings/text_editor_page.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:fluent_reader_lite/utils/utils.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; + +class SourceEditPage extends StatelessWidget { + void _editName(BuildContext context, RSSSource source) async { + final String name = await Navigator.of(context).push(CupertinoPageRoute( + builder: (context) => TextEditorPage( + S.of(context).name, + (v) => v.trim().length > 0, + initialValue: source.name, + ), + )); + if (name == null || name == source.name) return; + var cloned = source.clone(); + cloned.name = name; + await Global.sourcesModel.put(cloned); + } + + void _editIcon(BuildContext context, RSSSource source) async { + final String iconUrl = await Navigator.of(context).push(CupertinoPageRoute( + builder: (context) => TextEditorPage( + S.of(context).icon, + (v) async { + var trimmed = v.trim(); + if (trimmed.length == 0) return false; + return await Utils.validateFavicon(trimmed); + }, + initialValue: source.iconUrl, + ), + )); + if (iconUrl == null || iconUrl == source.iconUrl) return; + var cloned = source.clone(); + cloned.iconUrl = iconUrl; + await Global.sourcesModel.put(cloned); + } + + @override + Widget build(BuildContext context) { + final String sid = ModalRoute.of(context).settings.arguments; + return Selector( + selector: (context, sourcesModel) => sourcesModel.getSource(sid), + builder: (context, source, child) { + final urlStyle = TextStyle( + color: CupertinoColors.secondaryLabel.resolveFrom(context), + ); + final urlTile = ListTileGroup([ + MyListTile( + title: Flexible(child: Text(source.url, style: urlStyle, overflow: TextOverflow.ellipsis)), + trailing: Icon(CupertinoIcons.doc_on_clipboard), + onTap: () { Clipboard.setData(ClipboardData(text: source.url)); }, + trailingChevron: false, + withDivider: false, + ), + ], title: "URL"); + final editSource = ListTileGroup([ + MyListTile( + title: Text(S.of(context).name), + onTap: () { _editName(context, source); }, + ), + MyListTile( + title: Text(S.of(context).icon), + onTap: () { _editIcon(context, source); }, + withDivider: false, + ), + ], title: S.of(context).edit); + final openTarget = ListTileGroup.fromOptions( + [ + Tuple2(S.of(context).rssText, SourceOpenTarget.Local), + Tuple2(S.of(context).loadFull, SourceOpenTarget.FullContent), + Tuple2(S.of(context).loadWebpage, SourceOpenTarget.Webpage), + Tuple2(S.of(context).openExternal, SourceOpenTarget.External), + ], + source.openTarget, + (v) { + var cloned = source.clone(); + cloned.openTarget = v; + Global.sourcesModel.put(cloned); + }, + title: S.of(context).openTarget, + ); + return CupertinoPageScaffold( + backgroundColor: MyColors.background, + navigationBar: CupertinoNavigationBar( + middle: Text(source.name, overflow: TextOverflow.ellipsis), + ), + child: ListView(children: [ + urlTile, + editSource, + openTarget, + ],), + ); + }, + ); + } +} diff --git a/lib/pages/settings/sources_page.dart b/lib/pages/settings/sources_page.dart new file mode 100644 index 0000000..d1d67cc --- /dev/null +++ b/lib/pages/settings/sources_page.dart @@ -0,0 +1,35 @@ +import 'package:fluent_reader_lite/components/favicon.dart'; +import 'package:fluent_reader_lite/components/list_tile_group.dart'; +import 'package:fluent_reader_lite/components/my_list_tile.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/models/sources_model.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:provider/provider.dart'; + +class SourcesPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + backgroundColor: MyColors.background, + navigationBar: CupertinoNavigationBar( + middle: Text(S.of(context).subscriptions), + ), + child: ListView(children: [ + Consumer( + builder: (context, sourcesModel, child) { + var sources = sourcesModel.getSources().toList(); + return ListTileGroup(sources.map((s) => MyListTile( + title: Flexible(child: Text(s.name, overflow: TextOverflow.ellipsis)), + leading: Favicon(s, size: 20), + withDivider: s.id != sources.last.id, + onTap: () { + Navigator.of(context).pushNamed("/settings/sources/edit", arguments: s.id); + }, + ))); + }, + ), + ]), + ); + } +} \ No newline at end of file diff --git a/lib/pages/settings/text_editor_page.dart b/lib/pages/settings/text_editor_page.dart new file mode 100644 index 0000000..6d55b71 --- /dev/null +++ b/lib/pages/settings/text_editor_page.dart @@ -0,0 +1,99 @@ +import 'dart:async'; + +import 'package:fluent_reader_lite/components/list_tile_group.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:flutter/cupertino.dart'; + +class TextEditorPage extends StatefulWidget { + final String title; + final String saveText; + final String initialValue; + final Color navigationBarColor; + final FutureOr Function(String) validate; + final bool isPassword; + + TextEditorPage( + this.title, + this.validate, + { + this.navigationBarColor, + this.saveText, + this.initialValue: "", + this.isPassword: false, + Key key, + }) + : super(key: key); + + @override + _TextEditorPage createState() => _TextEditorPage(); +} + +class _TextEditorPage extends State { + TextEditingController _controller; + bool _validating = false; + + @override + void initState() { + super.initState(); + _controller = TextEditingController(text: widget.initialValue); + } + + void _onSave() async { + setState(() { _validating = true; }); + var trimmed = _controller.text.trim(); + var valid = await widget.validate(trimmed); + if (!mounted) return; + setState(() { _validating = false; }); + if (valid) { + Navigator.of(context).pop(trimmed); + } else { + showCupertinoDialog( + context: context, + builder: (context) => CupertinoAlertDialog( + title: Text(S.of(context).invalidValue), + actions: [ + CupertinoDialogAction( + child: Text(S.of(context).close), + isDefaultAction: true, + onPressed: () { Navigator.of(context).pop(); }, + ), + ], + ), + ); + } + } + + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + backgroundColor: MyColors.background, + navigationBar: CupertinoNavigationBar( + middle: Text(widget.title), + backgroundColor: widget.navigationBarColor, + trailing: CupertinoButton( + padding: EdgeInsets.zero, + child: _validating + ? CupertinoActivityIndicator() + : Text(widget.saveText ?? S.of(context).save), + onPressed: _validating ? null : _onSave, + ), + ), + child: ListView(children: [ + ListTileGroup([ + CupertinoTextField( + controller: _controller, + decoration: null, + padding: EdgeInsets.symmetric(horizontal: 16, vertical: 12), + clearButtonMode: OverlayVisibilityMode.editing, + readOnly: _validating, + autofocus: true, + obscureText: widget.isPassword, + keyboardType: widget.isPassword ? TextInputType.visiblePassword : null, + onSubmitted: (v) { _onSave(); }, + ), + ]), + ]), + ); + } +} diff --git a/lib/pages/settings_page.dart b/lib/pages/settings_page.dart new file mode 100644 index 0000000..eb34fa6 --- /dev/null +++ b/lib/pages/settings_page.dart @@ -0,0 +1,70 @@ +import 'dart:io'; + +import 'package:fluent_reader_lite/components/list_tile_group.dart'; +import 'package:fluent_reader_lite/components/my_list_tile.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:package_info/package_info.dart'; + +class SettingsPage extends StatefulWidget { + @override + _SettingsPageState createState() => _SettingsPageState(); +} + +class _SettingsPageState extends State { + @override + Widget build(BuildContext context) { + return CupertinoPageScaffold( + backgroundColor: MyColors.background, + navigationBar: CupertinoNavigationBar( + middle: Text(S.of(context).settings), + ), + child: ListView(children: [ + ListTileGroup([ + MyListTile( + title: Text(S.of(context).subscriptions), + leading: Icon(Icons.rss_feed, color: CupertinoColors.systemOrange, size: 24), + onTap: () { Navigator.of(context).pushNamed("/settings/sources"); }, + ), + MyListTile( + title: Text(S.of(context).feed), + leading: Icon(Icons.timeline, color: CupertinoColors.systemBlue, size: 24), + onTap: () { Navigator.of(context).pushNamed("/settings/feed"); }, + ), + MyListTile( + title: Text(S.of(context).reading), + leading: Icon(Icons.article_outlined, color: CupertinoColors.systemBlue, size: 24), + onTap: () { Navigator.of(context).pushNamed("/settings/reading"); }, + withDivider: false, + ), + ], title: S.of(context).preferences), + ListTileGroup([ + MyListTile( + title: Text(S.of(context).service), + leading: Icon(Icons.account_circle, color: CupertinoColors.systemOrange, size: 24), + onTap: () { Navigator.of(context).pushNamed("/settings/service"); }, + withDivider: false, + ), + ], title: S.of(context).account), + ListTileGroup([ + MyListTile( + title: Text(S.of(context).general), + leading: Icon(Icons.toggle_on, color: CupertinoColors.systemGreen, size: 24), + onTap: () { Navigator.of(context).pushNamed("/settings/general"); }, + ), + MyListTile( + title: Text(S.of(context).about), + leading: Icon(Icons.info, color: CupertinoColors.systemBlue, size: 24), + onTap: () async { + var infos = await PackageInfo.fromPlatform(); + Navigator.of(context).pushNamed("/settings/about", arguments: infos.version); + }, + withDivider: false, + ), + ], title: S.of(context).app), + ]), + ); + } +} \ No newline at end of file diff --git a/lib/pages/setup_page.dart b/lib/pages/setup_page.dart new file mode 100644 index 0000000..d3fcb12 --- /dev/null +++ b/lib/pages/setup_page.dart @@ -0,0 +1,59 @@ +import 'package:fluent_reader_lite/components/list_tile_group.dart'; +import 'package:fluent_reader_lite/components/my_list_tile.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/services.dart'; + +class SetupPage extends StatelessWidget { + void _configure(BuildContext context, String route) { + Navigator.of(context).pushNamed(route); + } + + @override + Widget build(BuildContext context) { + final welcomeStyle = TextStyle( + color: CupertinoColors.label.resolveFrom(context), + fontSize: 24, + fontWeight: FontWeight.bold, + height: 1.5, + ); + final top = Container( + padding: EdgeInsets.symmetric(vertical: 100), + child: Column( + children: [ + Image.asset("assets/icons/logo.png", width: 80, height: 80), + Text(S.of(context).welcome, style: welcomeStyle), + ], + ), + ); + final services = ListTileGroup([ + MyListTile( + title: Text("Fever API"), + onTap: () { _configure(context, "/settings/service/fever"); }, + ), + MyListTile( + title: Text("Google Reader API"), + ), + MyListTile( + title: Text("Inoreader"), + ), + MyListTile( + title: Text("Feedbin"), + ), + ], title: S.of(context).service); + final page = CupertinoPageScaffold( + backgroundColor: MyColors.background, + child: ListView(children: [ + top, + services, + ]), + ); + final b = Global.currentBrightness(context) == Brightness.light; + return AnnotatedRegion( + value: b ? SystemUiOverlayStyle.dark : SystemUiOverlayStyle.light, + child: page, + ); + } +} \ No newline at end of file diff --git a/lib/pages/subscription_list_page.dart b/lib/pages/subscription_list_page.dart new file mode 100644 index 0000000..1bb7591 --- /dev/null +++ b/lib/pages/subscription_list_page.dart @@ -0,0 +1,212 @@ +import 'package:fluent_reader_lite/components/badge.dart'; +import 'package:fluent_reader_lite/components/mark_all_action_sheet.dart'; +import 'package:fluent_reader_lite/components/my_list_tile.dart'; +import 'package:fluent_reader_lite/components/subscription_item.dart'; +import 'package:fluent_reader_lite/components/sync_control.dart'; +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:fluent_reader_lite/models/source.dart'; +import 'package:fluent_reader_lite/models/sources_model.dart'; +import 'package:fluent_reader_lite/models/sync_model.dart'; +import 'package:fluent_reader_lite/pages/group_list_page.dart'; +import 'package:fluent_reader_lite/pages/home_page.dart'; +import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; +import 'package:provider/provider.dart'; + +class SubscriptionListPage extends StatefulWidget { + final ScrollTopNotifier scrollTopNotifier; + + SubscriptionListPage(this.scrollTopNotifier, {Key key}) : super(key: key); + + @override + _SubscriptionListPageState createState() { + return _SubscriptionListPageState(); + } +} + +class _SubscriptionListPageState extends State { + List sids; + String title; + bool transitioning = false; + + void _onScrollTop() { + if (widget.scrollTopNotifier.index == 1 && !Navigator.of(context).canPop()) { + PrimaryScrollController.of(context).animateTo( + 0, + curve: Curves.easeOut, + duration: const Duration(milliseconds: 300), + ); + } + } + + @override + void initState() { + super.initState(); + widget.scrollTopNotifier.addListener(_onScrollTop); + } + + @override + void dispose() { + widget.scrollTopNotifier.removeListener(_onScrollTop); + super.dispose(); + } + + void _openGroups() async { + List result; + if (Global.isTablet) { + result = await Navigator.of(context).push(CupertinoPageRoute( + builder: (context) => GroupListPage(), + )); + } else { + setState(() { transitioning = true; }); + result = await CupertinoScaffold.showCupertinoModalBottomSheet( + context: context, + useRootNavigator: true, + builder: (context) => GroupListPage(), + ); + } + if (!mounted) return; + if (result != null) { + if (result.length == 0) { + setState(() { + title = null; + sids = null; + }); + } else { + setState(() { + title = result[0]; + sids = Global.groupsModel.groups[title]; + }); + } + } + await Future.delayed(Duration(milliseconds: 300)); + setState(() { transitioning = false; }); + } + + void _openMarkAllModal() { + showCupertinoModalPopup( + context: context, + builder: (context) => MarkAllActionSheet(sids == null ? {} : Set.from(sids)), + ); + } + + void _openSettings() { + Navigator.of(context, rootNavigator: true).pushNamed("/settings"); + } + + @override + Widget build(BuildContext context) { + final navigationBar = CupertinoSliverNavigationBar( + stretch: false, + largeTitle: Text(title ?? S.of(context).subscriptions), + heroTag: "subscriptions", + transitionBetweenRoutes: true, + backgroundColor: transitioning ? MyColors.tileBackground : CupertinoColors.systemBackground, + leading: CupertinoButton( + padding: EdgeInsets.zero, + child: Text(S.of(context).groups), + onPressed: _openGroups, + ), + trailing: Container( + transform: Matrix4.translationValues(12, 0, 0), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + CupertinoButton( + padding: EdgeInsets.zero, + child: Icon(CupertinoIcons.checkmark_circle), + onPressed: _openMarkAllModal, + ), + CupertinoButton( + padding: EdgeInsets.zero, + child: Icon(CupertinoIcons.settings), + onPressed: _openSettings, + ), + ], + ), + ) + ); + final sourcesList = Consumer( + builder: (context, sourcesModel, child) { + List sources; + if (sids == null) { + sources = Global.sourcesModel.getSources().toList(); + } else { + sources = []; + for (var sid in sids) { + sources.add(Global.sourcesModel.getSource(sid)); + } + } + // Latest sources first + sources.sort((a, b) { + return b.latest.compareTo(a.latest); + }); + return SliverList( + delegate: SliverChildBuilderDelegate((content, index) { + var source = sources[index]; + return SubscriptionItem(source, key: Key(source.id)); + }, childCount: sources.length), + ); + }, + ); + final syncStyle = TextStyle( + fontSize: 14, + color: CupertinoColors.tertiaryLabel.resolveFrom(context), + ); + final syncInfo = Consumer( + builder: (context, syncModel, child) { + return SliverToBoxAdapter( + child: Container( + padding: EdgeInsets.all(12), + child: Column( + children: [ + Text( + syncModel.lastSyncSuccess + ? S.of(context).lastSyncSuccess + : S.of(context).lastSyncFailure, + style: syncStyle, + ), + Text( + DateFormat + .Md(Localizations.localeOf(context).toString()) + .add_Hm().format(syncModel.lastSynced), + style: syncStyle, + ), + ], + ), + ), + ); + }, + ); + return CupertinoScrollbar(child: CustomScrollView( + slivers: [ + navigationBar, + SyncControl(), + if (sids != null) Consumer( + builder: (context, sourcesModel, child) { + var count = sids + .map((sid) => sourcesModel.getSource(sid)) + .fold(0, (c, s) => c + s.unreadCount); + return SliverToBoxAdapter(child: MyListTile( + title: Text(S.of(context).allArticles), + trailing: count > 0 ? Badge(count) : null, + trailingChevron: false, + onTap: () async { + await Global.feedsModel.initSourcesFeed(sids.toList()); + Navigator.of(context).pushNamed("/feed", arguments: title); + }, + background: CupertinoColors.systemBackground, + )); + }, + ), + sourcesList, + syncInfo, + ] + )); + } + +} \ No newline at end of file diff --git a/lib/pages/tablet_base_page.dart b/lib/pages/tablet_base_page.dart new file mode 100644 index 0000000..f4faca1 --- /dev/null +++ b/lib/pages/tablet_base_page.dart @@ -0,0 +1,22 @@ +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/services.dart'; + +class TabletBasePage extends StatelessWidget { + @override + Widget build(BuildContext context) { + var b = Global.currentBrightness(context) == Brightness.light; + return AnnotatedRegion( + value: b ? SystemUiOverlayStyle.dark : SystemUiOverlayStyle.light, + child: Container( + color: CupertinoColors.systemBackground.resolveFrom(context), + child: Center( + child: Image.asset( + "assets/icons/logo-outline${b?'':'-dark'}.png", + width: 120, height: 120, + ), + ), + ), + ); + } +} \ No newline at end of file diff --git a/lib/utils/colors.dart b/lib/utils/colors.dart new file mode 100644 index 0000000..adcbc22 --- /dev/null +++ b/lib/utils/colors.dart @@ -0,0 +1,31 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class MyColors { + static const background = CupertinoDynamicColor.withBrightness( + color: CupertinoColors.extraLightBackgroundGray, + darkColor: CupertinoColors.black, + ); + + static const tileBackground = CupertinoDynamicColor.withBrightness( + color: CupertinoColors.white, + darkColor: CupertinoColors.darkBackgroundGray, + ); + + static const barDivider = CupertinoDynamicColor.withBrightness( + color: CupertinoColors.systemGrey2, + darkColor: CupertinoColors.black, + ); + + static const dynamicBlack = CupertinoDynamicColor.withBrightness( + color: CupertinoColors.black, + darkColor: CupertinoColors.white, + ); + + static const dynamicDarkGrey = CupertinoDynamicColor.withBrightness( + color: Colors.black87, + darkColor: Colors.white70, + ); + + static const indicatorOrange = Color.fromRGBO(255, 170, 68, 1); +} \ No newline at end of file diff --git a/lib/utils/db.dart b/lib/utils/db.dart new file mode 100644 index 0000000..8c714f8 --- /dev/null +++ b/lib/utils/db.dart @@ -0,0 +1,48 @@ +import 'dart:async'; + +import 'package:path/path.dart'; +import 'package:sqflite/sqflite.dart'; + +abstract class DatabaseHelper { + static final _dbName = "frlite.db"; + static final _dbVersion = 1; + + static Database _database; + + static Future getDatabase() async { + if (_database != null) return _database; + String path = join(await getDatabasesPath(), _dbName); + _database = await openDatabase(path, version:_dbVersion, onCreate: _onCreate); + return _database; + } + + static Future _onCreate(Database db, int version) async { + await db.execute(''' + CREATE TABLE sources ( + sid TEXT PRIMARY KEY, + url TEXT NOT NULL, + iconUrl TEXT, + name TEXT NOT NULL, + openTarget INTEGER NOT NULL, + latest INTEGER NOT NULL, + lastTitle INTEGER NOT NULL + ); + '''); + await db.execute(''' + CREATE TABLE items ( + iid TEXT PRIMARY KEY, + source TEXT NOT NULL, + title TEXT NOT NULL, + link TEXT NOT NULL, + date INTEGER NOT NULL, + content TEXT NOT NULL, + snippet TEXT NOT NULL, + hasRead INTEGER NOT NULL, + starred INTEGER NOT NULL, + creator TEXT, + thumb TEXT + ); + '''); + await db.execute("CREATE INDEX itemsDate ON items (date DESC);"); + } +} \ No newline at end of file diff --git a/lib/utils/global.dart b/lib/utils/global.dart new file mode 100644 index 0000000..86d848e --- /dev/null +++ b/lib/utils/global.dart @@ -0,0 +1,82 @@ +import 'package:fluent_reader_lite/models/feeds_model.dart'; +import 'package:fluent_reader_lite/models/global_model.dart'; +import 'package:fluent_reader_lite/models/groups_model.dart'; +import 'package:fluent_reader_lite/models/items_model.dart'; +import 'package:fluent_reader_lite/models/service.dart'; +import 'package:fluent_reader_lite/models/services/fever.dart'; +import 'package:fluent_reader_lite/models/sources_model.dart'; +import 'package:fluent_reader_lite/models/sync_model.dart'; +import 'package:fluent_reader_lite/utils/db.dart'; +import 'package:fluent_reader_lite/utils/store.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:sqflite/sqflite.dart'; + +abstract class Global { + static bool _initialized = false; + static GlobalModel globalModel; + static SourcesModel sourcesModel; + static ItemsModel itemsModel; + static FeedsModel feedsModel; + static GroupsModel groupsModel; + static SyncModel syncModel; + static ServiceHandler service; + static Database db; + static final GlobalKey tabletPanel = GlobalKey(); + + static void init() { + assert(!_initialized); + _initialized = true; + globalModel = GlobalModel(); + sourcesModel = SourcesModel(); + itemsModel = ItemsModel(); + feedsModel = FeedsModel(); + groupsModel = GroupsModel(); + var serviceType = SyncService.values[Store.sp.getInt(StoreKeys.SYNC_SERVICE) ?? 0]; + switch (serviceType) { + case SyncService.None: + break; + case SyncService.Fever: + service = FeverServiceHandler(); + break; + case SyncService.Feedbin: + // TODO: Handle this case. + break; + case SyncService.GReader: + // TODO: Handle this case. + break; + case SyncService.Inoreader: + // TODO: Handle this case. + break; + } + syncModel = SyncModel(); + _initContents(); + } + + static void _initContents() async { + db = await DatabaseHelper.getDatabase(); + await db.delete( + "items", + where: "date < ?", + whereArgs: [ + DateTime.now() + .subtract(Duration(days: globalModel.keepItemsDays)) + .millisecondsSinceEpoch, + ], + ); + await sourcesModel.init(); + await feedsModel.all.init(); + if (globalModel.syncOnStart) await syncModel.syncWithService(); + } + + static Brightness currentBrightness(BuildContext context) { + return globalModel.getBrightness() ?? MediaQuery.of(context).platformBrightness; + } + + static bool get isTablet => tabletPanel.currentWidget != null; + + static NavigatorState responsiveNavigator(BuildContext context) { + return tabletPanel.currentWidget != null + ? Global.tabletPanel.currentState + : Navigator.of(context, rootNavigator: true); + } +} \ No newline at end of file diff --git a/lib/utils/store.dart b/lib/utils/store.dart new file mode 100644 index 0000000..12e3511 --- /dev/null +++ b/lib/utils/store.dart @@ -0,0 +1,93 @@ +import 'dart:convert'; + +import 'package:fluent_reader_lite/models/global_model.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +abstract class StoreKeys { + static const GROUPS = "groups"; + + // General + static const THEME = "theme"; + static const LOCALE = "locale"; + static const KEEP_ITEMS_DAYS = "keepItemsD"; + static const SYNC_ON_START = "syncOnStart"; + + // Feed preferences + static const FEED_FILTER_ALL = "feedFilterA"; + static const FEED_FILTER_SOURCE = "feedFilterS"; + static const SHOW_THUMB = "showThumb"; + static const SHOW_SNIPPET = "showSnippet"; + static const DIM_READ = "dimRead"; + static const FEED_SWIPE_R = "feedSwipeR"; + static const FEED_SWIPE_L = "feedSwipeL"; + + // Reading preferences + static const ARTICLE_FONT_SIZE = "articleFontSize"; + + // Syncing + static const SYNC_SERVICE = "syncService"; + static const LAST_SYNCED = "lastSynced"; + static const LAST_SYNC_SUCCESS = "lastSyncSuccess"; + static const LAST_ID = "lastId"; + static const ENDPOINT = "endpoint"; + static const USERNAME = "username"; + static const PASSWORD = "password"; + static const API_KEY = "apiKey"; + static const FETCH_LIMIT = "fetchLimit"; + static const FEVER_INT_32 = "feverInt32"; +} + +class Store { + // Initialized in main.dart + static SharedPreferences sp; + + static Locale getLocale() { + if (!sp.containsKey(StoreKeys.LOCALE)) return null; + var localeString = sp.getString(StoreKeys.LOCALE); + var splitted = localeString.split('_'); + if (splitted.length > 1) { + return Locale(splitted[0], splitted[1]); + } else { + return Locale(localeString); + } + } + + static void setLocale(Locale locale) { + if (locale == null) sp.remove(StoreKeys.LOCALE); + else sp.setString(StoreKeys.LOCALE, locale.toString()); + } + + static ThemeSetting getTheme() { + return sp.containsKey(StoreKeys.THEME) + ? ThemeSetting.values[sp.getInt(StoreKeys.THEME)] + : ThemeSetting.Default; + } + + static void setTheme(ThemeSetting theme) { + sp.setInt(StoreKeys.THEME, theme.index); + } + + static Map> getGroups() { + var groups = sp.getString(StoreKeys.GROUPS); + if (groups == null) return Map(); + Map> result = Map(); + var parsed = jsonDecode(groups); + for (var key in parsed.keys) { + result[key] = List.castFrom(parsed[key]); + } + return result; + } + + static void setGroups(Map> groups) { + sp.setString(StoreKeys.GROUPS, jsonEncode(groups)); + } + + static int getArticleFontSize() { + return sp.getInt(StoreKeys.ARTICLE_FONT_SIZE) ?? 16; + } + + static void setArticleFontSize(int value) { + sp.setInt(StoreKeys.ARTICLE_FONT_SIZE, value); + } +} \ No newline at end of file diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart new file mode 100644 index 0000000..f1a3b6b --- /dev/null +++ b/lib/utils/utils.dart @@ -0,0 +1,61 @@ +import 'package:fluent_reader_lite/generated/l10n.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:http/http.dart' as http; + +abstract class Utils { + static int binarySearch(List sortedList, T value, + int Function(T, T) compare) { + var min = 0; + var max = sortedList.length; + while (min < max) { + var mid = min + ((max - min) >> 1); + var element = sortedList[mid]; + var comp = compare(element, value); + if (comp == 0) return mid; + if (comp < 0) { + min = mid + 1; + } else { + max = mid; + } + } + return min; + } + + static Future validateFavicon(String url) async { + var flag = false; + try { + var result = await http.get(url); + if (result.statusCode == 200) { + var contentType = result.headers["Content-Type"] ?? result.headers["content-type"]; + if (contentType != null && contentType.startsWith("image")) flag = true; + } + } finally { + return flag; + } + } + + static final _urlRegex = RegExp( + r"^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*$)", + caseSensitive: false, + ); + static bool testUrl(String url) => _urlRegex.hasMatch(url.trim()); + + static bool notEmpty(String text) => text.trim().length > 0; + + static void showServiceFailureDialog(BuildContext context) { + showCupertinoDialog( + context: context, + builder: (context) => CupertinoAlertDialog( + title: Text(S.of(context).serviceFailure), + content: Text(S.of(context).serviceFailureHint), + actions: [ + CupertinoDialogAction( + child: Text(S.of(context).close), + onPressed: () { Navigator.of(context).pop(); }, + ), + ], + ), + ); + } +} \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..a16c0fe --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,570 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + archive: + dependency: transitive + description: + name: archive + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.13" + args: + dependency: transitive + description: + name: args + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.6.0" + async: + dependency: transitive + description: + name: async + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.5.0-nullsafety.3" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.0-nullsafety.3" + cached_network_image: + dependency: "direct main" + description: + name: cached_network_image + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.5.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.1.0-nullsafety.5" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.2.0-nullsafety.3" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.1.0-nullsafety.3" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.15.0-nullsafety.5" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.1" + crypto: + dependency: "direct main" + description: + name: crypto + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.5" + csslib: + dependency: transitive + description: + name: csslib + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.16.2" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.2.0-nullsafety.3" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.3" + file: + dependency: transitive + description: + name: file + url: "https://pub.flutter-io.cn" + source: hosted + version: "6.0.0-nullsafety.4" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_blurhash: + dependency: transitive + description: + name: flutter_blurhash + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.5.0" + flutter_cache_manager: + dependency: "direct main" + description: + name: flutter_cache_manager + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.0" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + 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" + html: + dependency: "direct main" + description: + name: html + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.14.0+4" + http: + dependency: "direct main" + description: + name: http + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.12.2" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.1.4" + image: + dependency: transitive + description: + name: image + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.19" + intl: + dependency: "direct main" + description: + name: intl + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.17.0-nullsafety.2" + js: + dependency: transitive + description: + name: js + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.6.3-nullsafety.3" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.12.10-nullsafety.3" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.3.0-nullsafety.6" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.9.7" + modal_bottom_sheet: + dependency: "direct main" + description: + name: modal_bottom_sheet + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0+1" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.4" + octo_image: + dependency: transitive + description: + name: octo_image + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.3.0" + package_info: + dependency: "direct main" + description: + name: package_info + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.4.3+2" + path: + dependency: "direct main" + description: + name: path + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.8.0-nullsafety.3" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.6.24" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.1+2" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.4+6" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.4" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.4+3" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.9.2" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.1.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.0-nullsafety.4" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.3" + process: + dependency: transitive + description: + name: process + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.0-nullsafety.4" + provider: + dependency: "direct main" + description: + name: provider + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.3.2+3" + quiver: + dependency: transitive + description: + name: quiver + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.5" + responsive_builder: + dependency: "direct main" + description: + name: responsive_builder + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.3.0" + rxdart: + dependency: transitive + description: + name: rxdart + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.25.0" + share: + dependency: "direct main" + description: + name: share + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.6.5+4" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.5.12+4" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.2+4" + shared_preferences_macos: + dependency: transitive + description: + name: shared_preferences_macos + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.1+11" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.4" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.2+7" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.1+3" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.8.0-nullsafety.4" + sqflite: + dependency: "direct main" + description: + name: sqflite + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.3.2+1" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.2+1" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.10.0-nullsafety.6" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.0-nullsafety.3" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.1.0-nullsafety.3" + synchronized: + dependency: transitive + description: + name: synchronized + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.0+2" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.2.0-nullsafety.3" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.2.19-nullsafety.6" + tuple: + dependency: "direct main" + description: + name: tuple + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.3" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.3.0-nullsafety.5" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.7.10" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.1+4" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.1+9" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.9" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.5+1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.1+3" + uuid: + dependency: transitive + description: + name: uuid + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.2.2" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.0-nullsafety.5" + webview_flutter: + dependency: transitive + description: + name: webview_flutter + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.7" + webview_flutter_plus: + dependency: "direct main" + description: + name: webview_flutter_plus + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.1+10" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.7.4" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.2" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.5.1" +sdks: + dart: ">=2.12.0-0.0 <3.0.0" + flutter: ">=1.22.2 <2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..0efe8e5 --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,98 @@ +name: fluent_reader_lite +description: A new Flutter project. + +# The following line prevents the package from being accidentally published to +# pub.dev using `pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +version: 1.0.0+1 + +environment: + sdk: ">=2.7.0 <3.0.0" + +dependencies: + flutter: + sdk: flutter + flutter_localizations: + sdk: flutter + provider: ^4.3.2+3 + tuple: ^1.0.3 + shared_preferences: ^0.5.12+4 + intl: ^0.17.0-nullsafety.2 + http: ^0.12.2 + html: ^0.14.0+4 + webview_flutter_plus: ^0.1.1+10 + url_launcher: ^5.7.10 + sqflite: ^1.3.2+1 + path: ^1.7.0 + share: '>=0.6.5+4 <2.0.0' + package_info: '>=0.4.3+1 <2.0.0' + crypto: ^2.1.5 + responsive_builder: ^0.3.0 + cached_network_image: ^2.5.0 + flutter_cache_manager: ^2.1.0 + modal_bottom_sheet: ^1.0.0+1 + + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + assets: + - assets/article/ + - assets/icons/ + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware. + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages + +flutter_intl: + enabled: true diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..26316ad --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,30 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility that Flutter provides. 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:fluent_reader_lite/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(MyApp()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} -- 2.38.5