From b66a77843e4a58594b98599d800981179426ba0e Mon Sep 17 00:00:00 2001 From: Koitharu Date: Tue, 5 Nov 2024 09:15:04 +0200 Subject: [PATCH] Add nightly build type --- app/build.gradle | 8 ++++++++ .../kotatsu/core/github/AppUpdateRepository.kt | 15 +++++++++++++-- .../settings/about/AboutSettingsFragment.kt | 1 + app/src/main/res/values/constants.xml | 1 + .../kotlin/org/koitharu/kotatsu/KotatsuApp.kt | 5 +++++ .../core/network/CurlLoggingInterceptor.kt | 11 +++++++++++ .../org/koitharu/kotatsu/core/util/ext/Debug.kt | 8 ++++++++ .../kotatsu/settings/SettingsMenuProvider.kt | 15 +++++++++++++++ .../res/drawable/ic_launcher_foreground.xml | 16 ++++++++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 ++++++ .../res/mipmap-anydpi-v26/ic_launcher_round.xml | 5 +++++ .../nightly/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 816 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 1918 bytes .../nightly/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 614 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1264 bytes .../nightly/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1138 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 2798 bytes .../nightly/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 1672 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 4376 bytes .../nightly/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 2192 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 6298 bytes app/src/nightly/res/values/constants.xml | 7 +++++++ app/src/nightly/res/values/strings.xml | 3 +++ 23 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 app/src/nightly/kotlin/org/koitharu/kotatsu/KotatsuApp.kt create mode 100644 app/src/nightly/kotlin/org/koitharu/kotatsu/core/network/CurlLoggingInterceptor.kt create mode 100644 app/src/nightly/kotlin/org/koitharu/kotatsu/core/util/ext/Debug.kt create mode 100644 app/src/nightly/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt create mode 100644 app/src/nightly/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/nightly/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/nightly/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/nightly/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/nightly/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/src/nightly/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/nightly/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/src/nightly/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/nightly/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 app/src/nightly/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/nightly/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/src/nightly/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/nightly/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/src/nightly/res/values/constants.xml create mode 100644 app/src/nightly/res/values/strings.xml diff --git a/app/build.gradle b/app/build.gradle index 9d069b4b3..3164356b7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,3 +1,5 @@ +import java.time.LocalDateTime + plugins { id 'com.android.application' id 'kotlin-android' @@ -37,6 +39,12 @@ android { shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } + nightly { + initWith release + applicationIdSuffix = '.nightly' + defaultConfig.versionCode = LocalDateTime.now().format("yyMMdd").toInteger() + defaultConfig.versionName = "N" + LocalDateTime.now().format("yyMMdd") + } } buildFeatures { viewBinding true diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/github/AppUpdateRepository.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/github/AppUpdateRepository.kt index a1d2a5544..4fb9d0c84 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/github/AppUpdateRepository.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/github/AppUpdateRepository.kt @@ -1,5 +1,7 @@ package org.koitharu.kotatsu.core.github +import android.content.Context +import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow @@ -9,6 +11,7 @@ import okhttp3.Request import org.json.JSONArray import org.json.JSONObject import org.koitharu.kotatsu.BuildConfig +import org.koitharu.kotatsu.R import org.koitharu.kotatsu.core.network.BaseHttpClient import org.koitharu.kotatsu.core.os.AppValidator import org.koitharu.kotatsu.core.prefs.AppSettings @@ -22,22 +25,29 @@ import javax.inject.Inject import javax.inject.Singleton private const val CONTENT_TYPE_APK = "application/vnd.android.package-archive" +private const val BUILD_TYPE_RELEASE = "release" @Singleton class AppUpdateRepository @Inject constructor( private val appValidator: AppValidator, private val settings: AppSettings, @BaseHttpClient private val okHttp: OkHttpClient, + @ApplicationContext context: Context, ) { private val availableUpdate = MutableStateFlow(null) + private val releasesUrl = buildString { + append("https://api.github.com/repos/") + append(context.getString(R.string.github_updates_repo)) + append("/releases?page=1&per_page=10") + } fun observeAvailableUpdate() = availableUpdate.asStateFlow() suspend fun getAvailableVersions(): List { val request = Request.Builder() .get() - .url("https://api.github.com/repos/KotatsuApp/Kotatsu/releases?page=1&per_page=10") + .url(releasesUrl) val jsonArray = okHttp.newCall(request.build()).await().parseJsonArray() return jsonArray.mapJSONNotNull { json -> val asset = json.optJSONArray("assets")?.find { jo -> @@ -74,8 +84,9 @@ class AppUpdateRepository @Inject constructor( }.getOrNull() } + @Suppress("KotlinConstantConditions") fun isUpdateSupported(): Boolean { - return BuildConfig.DEBUG || appValidator.isOriginalApp + return BuildConfig.BUILD_TYPE != BUILD_TYPE_RELEASE || appValidator.isOriginalApp } suspend fun getCurrentVersionChangelog(): String? { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/about/AboutSettingsFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/about/AboutSettingsFragment.kt index cc6655248..5419fed7a 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/about/AboutSettingsFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/about/AboutSettingsFragment.kt @@ -32,6 +32,7 @@ class AboutSettingsFragment : BasePreferenceFragment(R.string.about) { isEnabled = viewModel.isUpdateSupported } findPreference(AppSettings.KEY_UPDATES_UNSTABLE)?.run { + isVisible = viewModel.isUpdateSupported isEnabled = VersionId(BuildConfig.VERSION_NAME).isStable if (!isEnabled) isChecked = true } diff --git a/app/src/main/res/values/constants.xml b/app/src/main/res/values/constants.xml index c1db553ce..1c260acf0 100644 --- a/app/src/main/res/values/constants.xml +++ b/app/src/main/res/values/constants.xml @@ -8,6 +8,7 @@ https://bugs.kotatsu.app/report org.kotatsu.sync https://sync.kotatsu.app + KotatsuApp/Kotatsu Mw6F0tPEOgyV7F9U9Twg50Q8SndMY7hzIOfXg0AX_XU euBMt1GGRSDpVIFQVPxZrO7Kh6X4gWyv0dABuj4B-M8 9887 diff --git a/app/src/nightly/kotlin/org/koitharu/kotatsu/KotatsuApp.kt b/app/src/nightly/kotlin/org/koitharu/kotatsu/KotatsuApp.kt new file mode 100644 index 000000000..983e1297c --- /dev/null +++ b/app/src/nightly/kotlin/org/koitharu/kotatsu/KotatsuApp.kt @@ -0,0 +1,5 @@ +package org.koitharu.kotatsu + +import org.koitharu.kotatsu.core.BaseApp + +class KotatsuApp : BaseApp() diff --git a/app/src/nightly/kotlin/org/koitharu/kotatsu/core/network/CurlLoggingInterceptor.kt b/app/src/nightly/kotlin/org/koitharu/kotatsu/core/network/CurlLoggingInterceptor.kt new file mode 100644 index 000000000..28441f840 --- /dev/null +++ b/app/src/nightly/kotlin/org/koitharu/kotatsu/core/network/CurlLoggingInterceptor.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.core.network + +import okhttp3.Interceptor +import okhttp3.Response + +class CurlLoggingInterceptor : Interceptor { + + override fun intercept(chain: Interceptor.Chain): Response { + return chain.proceed(chain.request()) // no-op implementation + } +} diff --git a/app/src/nightly/kotlin/org/koitharu/kotatsu/core/util/ext/Debug.kt b/app/src/nightly/kotlin/org/koitharu/kotatsu/core/util/ext/Debug.kt new file mode 100644 index 000000000..949497187 --- /dev/null +++ b/app/src/nightly/kotlin/org/koitharu/kotatsu/core/util/ext/Debug.kt @@ -0,0 +1,8 @@ +@file:Suppress("UnusedReceiverParameter") + +package org.koitharu.kotatsu.core.util.ext + +@Suppress("NOTHING_TO_INLINE") +inline fun Throwable.printStackTraceDebug() = Unit + +fun assertNotInMainThread() = Unit diff --git a/app/src/nightly/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt b/app/src/nightly/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt new file mode 100644 index 000000000..e9cc4b9a5 --- /dev/null +++ b/app/src/nightly/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.settings + +import android.content.Context +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import androidx.core.view.MenuProvider + +@Suppress("UNUSED_PARAMETER") +class SettingsMenuProvider(context: Context) : MenuProvider { + + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) = Unit + + override fun onMenuItemSelected(menuItem: MenuItem): Boolean = false +} diff --git a/app/src/nightly/res/drawable/ic_launcher_foreground.xml b/app/src/nightly/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 000000000..510acf9f4 --- /dev/null +++ b/app/src/nightly/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/app/src/nightly/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/nightly/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000..d8a3b79e5 --- /dev/null +++ b/app/src/nightly/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/nightly/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/nightly/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 000000000..7353dbd1f --- /dev/null +++ b/app/src/nightly/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/nightly/res/mipmap-hdpi/ic_launcher.webp b/app/src/nightly/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..ffc9a3a9fbbee6902ee4198af5b80ba44c23eb1a GIT binary patch literal 816 zcmV-01JC?YNk&E}0{{S5MM6+kP&iB+0{{RoN5ByfHAuR(&5)$;UyQx?+P1M}WZSkm zwr$(CZQE{lXGO*$Gb1X$9P`TvsMWSDZ@%wOnK5jmiW`v3sjRN=3b9e;RxyPX%upBr z*ZIUX0rcZtL^0w@5&a-Ca;c}}5sA8Jic4`WE>Mee5=~KuKq6D{NUVr=19A8b#(T*M z1W!st2xNR1e94uDk}t?0h$tgQAXFU~e2H_Vkt$p}gdj$wAeNoDg{K-fZy?G+_UV>$ zi7)AHzCb1iBX95A!jtaGD~u?-y?4)*HxH2MRLabw ziFX6O-GVU`>IAt;i!nrTUc&ZBG=_+xJSC&sA^<}~^Hf8&0b`k|l*DD>7;}K9aOq-M z(JDHdx8gC@Yv8&egpKARn>iTU$*Q0_fUyr2&RSy^<26)!Ncd6n6spCXAY79;@&u+5 zu^d@NhsS3njmZn75lcM81p(D(FLoel6a1z66-8s5$6RQ?qwk*vZTQ-jkT6M|Xly>g!STneVpQyhJ^2xFZ~=UlZp z7~2rz%`ibQh92R}8!(h;s_C*Zwt>!a?uIaSwo6svh(3tNsAj22PU)s$lr^hV<37p4 zsGmqq-4sTRXr|4wFn-KRWgMDoBN> zw^Ux=%T$SmYw(-O+XtEBG`NPeR9;;h>}pKL;OhSXBL_$1P8@MO`B=Td;2NpRF^p)V zG9p3_N)NwvM&ikGOVSeRF$VrY6><<|XiW|l`tDr$`>2}E^Slzd#=tznfd5AOu+U)y zf_#SwD8u%o#*W^h;r{-?0j(eO9rPKX?bGi&?AdGEfNdz(pM;~;r2L`(p8r!=2T zx~wT(+qSlG-p!PmnVFfHnJF-AyWFnY6*Dt$nVGpOW@cs@o(V~MPi@)$B>jQMp!j^P zoG+@SxQZfAghboc%rHx4;;y*-ZQHhO+qP}Kf^FN@E7Z2#W+vBx+cu6QB~!9HTdv<1 zWXrZ~+RoS7wr$(CZQEvS+sV`2bFGa(xV|%~k*8}^Mf9J6+eV7qJ!Y7F1gy%U%fzJX z!a-f8EQKgw=!LE$Bwm7?ta2nb=9V(ZAhw(>-lI1v(MUCRJlxmQN0X7tq1l*h-W=F9v1@&Vo6+euSBo<*A z;H_MveDg?r;7hLcfU3o0+jym<7D&rhr7~U*T8b*T6Q?RI(7Ck1s49)rp3WA6CG?H; zRbJJOqFy^=obcgUhBk|#Lu1l5W2s@vTvP?KZ;UBz4AqCI64=(a{Ml{`#aVL;9p({gfiC#S#XT^R=#2=U8s1HN?B*)#CMM7${FwoKZsVrS9W zz`IA99uN|lc2ip6YeVG^Ej9{g|42{z>3tQ#b%}QUw8Cp|6GXpPw*sL3zpVTF_Ae=} z>tZLZCqarI>tl)uV3znz&6@Kz+X+!)=;x$0O}I>OOSG0}VP!j%m^b{Ad+H4(USA~# z{+@qoBP0o)Y^Ifo^XVA0O~}7gyeV0mpHA3kccm0 z7cr^&sxCPmZY$335)(0ryON#kAm)|CG0~X<$u7q<%f4)}nAw#ee4tMzdc}(;`XPA%FN;eN(|!rR{#T6>8~FS` zS*{DFr2lqXm=VKhc_~^L? zEhxy;2_!kOB#-<+1e{pyKu9J?VgEPO03;OP9@=OdG^yM`p@V!1gob!NW9HujP)V8x z9p%doZ|o$YkY{NW`{1!zFjxW3j`Z;9^)gd@Md7hr+ZYrag8G~ZRPW-i; zp)u1@u0q`=Q!Hq!SZ(U;O$`!?+hI|o^H==AP4O1&%TB(@T57zSMWO)BgB)sh<>ue` z&_5dF{4HKC3hEt<-1ZkFHNb@{_{vfE0N3*f^V(LHv1Pdmx!Up)RsCgJb0s3J6+u8@gaYYjBm?s zFX}AoA0BWkwOuZbG+I&hzr{?VuvH?YuHZ^)L@lWubsE)uRPV;pV^$pRC5=(NYRVrD z@1wDK4y1(~)X8fbzQDw&uEuc*TwyumAu6 literal 0 HcmV?d00001 diff --git a/app/src/nightly/res/mipmap-mdpi/ic_launcher.webp b/app/src/nightly/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..e1a9b7580b819968bf672730541d0b2e2974a828 GIT binary patch literal 614 zcmV-s0-60%Nk&Fq0ssJ4MM6+kP&iCd0ssInFTe{Bl}NU>&5)$Hi{ABWJeOduJxk9- zj&0kvZQHhOYuC0CrO4>`YrKm(74_$2)>KvmqzO__%bjaxV2hlAN-$ro07hrac?n2 zW5E+?vOHO|XmphEV}m14P;$A)(26t^MXSk zM#6$MVZ>KL#NNID zdaV}<5$7rwaUDkP0(1k#9BMe%b^Bs0p@Z3j#XVgbW*q@zWC6)Co`BvG5UEWl>|>{g zY&5exHWMO_mj&Rt0VrI{P-&7O80j49yiqiWJLpMRrTHkt>y%Q*F-B5KeKru{Ag`0K zn|h-VXDFpA%rVqS7sVDzyrXo-c@*NJWDpb^jf$M=fSGVJrPN0_z&>mBf{55BJtXJ^ zinF&{RIVw|o~B6(q7cI{JUGA}Qy@}%(k*tm zu)BGx4_W0F18RB23gq&@W>wE({Fupg-A_qNX~3R8nlAl@`|?r|Ap;p1efwM`z)2>P zduTv=YWGgYCTEgG@&*_8zOo1TbzYR;>M?bfT6~w7>O5%uopD8S8|iywuhn&r&?zL^ zhZ>>U^#ii&gm@e?Z^)jfqo26)T`7Vw^4S${!MePCHd%I#HF7XA`P$nTXcR z!bMhNi z6t*~*t%^A~nibF^5|?UWBg?sMJD$7@QX5bbMMvtk6BN+3dH7g|sx*eg+S)lTq?0zJ ze**}kx!*xAX#{O9XuF;?zxJalJt(XfL?IWp;( z>d2y|frS#`xIs!c$!9C5vNUue$32huhg#2n^pm>x<@aYnTI!5G&nDz?PT_X6VTjW> zgAY*Q-(P_udOl-3p3PhAjfc;*lxhB9lQBm!jQVW-ojg64=z|Wy+e{`o5f5X0o+U(O zlnXJj_fjehzPrAd=$*3gb0%-IHzxK_enI6G_9Edl{zGBt%RSW~=*5am%KI>i$M7a^ z5&JTIcqo31$_;fy4|kq;m&G_&pyIP9dlAb<<#iMW-d|J(f{w@?i)S&+Ntj$dh{B)A zRYgP)>3@;M07sCI>rfW@sUFfmpaS*#nJhkGPx5gzgCx(%#}`4PLJjhxRRZB!I{qeE z^+@jGcyx2`;c!gsEd&TB-2_i<1Q|bvH+Bua>7Voa@G<6a{w3rF(wx9AL_9*mUVKSp zk^b*z_5ty{LP?PE*CUQX4gat|#+WBz{*G5j?QsXpzw^>ci>a@CgDK7CnVr0_ThAX z;1}q94(BMopd90Q`iR+Rj^NAqmc`141{I_{w<$zAH7hT`L-A0qz5`$8`&Ywqd@fS26ng#?ZF4B`;UNzlDDr-fP8B9Bokfl26nmurJxu2`u`L}pzP(# zV_b|MZglymtxNwe6ZUe-|8r;&jw?&I+LYR?`jxp7orLPS19I+@j_!XF_`jbiJCz76p(CHS>2Zi#ZQ#ecMY}S!-N--fpOc+$Km6 zx%4$epzXA-b2shwboE!a5n~lia|3I>?)J39(6;h5h`fRYe z>NjgXR?U_1CH3vOTW5}hYG`9i@Th<%cqb^(kkx}?sF~J%`rsKu+N}=T-X_rQ1dj>| aa*kRQG(kfuq(f%Aw4J*G)bVSXB>?~`{B{ih literal 0 HcmV?d00001 diff --git a/app/src/nightly/res/mipmap-xhdpi/ic_launcher.webp b/app/src/nightly/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..dbd9abfb5a8935a7c78197b0b6ca18e3c23c28c5 GIT binary patch literal 1138 zcmV-&1daPrNk&F$1ONb6MM6+kP&iCo1ONapU%(d-bx@+V&5$hp%gdFq+uAmgeksh%3}uGU*sCW%p`*#wv3uuE z?a?sP#LPk2zwZf*s=)vn!SKr^|n-h2>dR81ZksLUtvEs)U6jV~`unm12SjJixG4JOWc3z(Ti#2C=0h#M>_cfrzb~<1W}B1|nj6=|n5j5nENkSYaRKT%>A;uugHAU>y+lD+G>8421Rzh;>6O2QkiYv>ZC@#30m4gwr01 zIk+mBlXxeHWEjs84lt5^d+2x@kwV&V#(V*hY7krwCQ=nX+7T%qAFYUV6(22C6DMRE zK4NSm&JhHsiSme2tUH@-78-#;tYKE@$OgyIiD6iTu#C4>h$`c*y~_f%jm8F#663N& zR?7uSRfyvz#W^OWE{J2-Ss4*3jX+o?N~M&lvBVVpX&eorGbxp4zKPni!leQM4v1sb zM+uWX-xsw%6UCTSM$D zpVfSJ3C`gyQyUICyWvj-dO;kbkot3~b`Ynkpp?=blgtiBs>a!TgwuA`Dp6*OP7v`N zll3BqIM7iQa?BQwaHu(iuT&`3S`<#Ij$xm*mji8;;Nd}Wr zMz!k`Sz8Y>fP*iNOwIwV^@wU1Bv}bkh)m#>Sm^$reu(61&RY z=0i6dAxy0G+kE6}NgPe*Z9Y~Z1p0ov`vMPzx)AD%1s)C}gnD^_gKEPG_1%9aYfrhk zDuGbJON%TP9Wj2omN8{x^QXK92^%zpkHfR`I8TC%cl!S+(FAH=ThH=giEtxL_J!D;^;`CxLQRkfA#T) zI~Jhzi8^hF(eS7uU)d<_i*6zR3cm+xn1zhx3;;V>K#Ucqd=$%g&VfRM2D zp@8N)y6+vhXYj5erBu_Q21B)rcMaJhHW+f>V6fpp<8Ek%0#Znr`w$?9LilI|Qu)_X E0PRaABLDyZ literal 0 HcmV?d00001 diff --git a/app/src/nightly/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/nightly/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..4d59a10fefb1291e0e36e05f9c9ece5ea8a844b6 GIT binary patch literal 2798 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 A<^TWy literal 0 HcmV?d00001 diff --git a/app/src/nightly/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/nightly/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..0845e96c1d04d5f319c5aabbbad72194b9ae2b40 GIT binary patch literal 1672 zcmV;326y>VNk&G11^@t8MM6+kP&iC<1^@srkH8}kwT9xhZ6kUAv2!QwKO!c8rOL?^ zJGSf306R9y+5gY5onLbqo83(+qjGKAsQnJklQx}=PJPnas%*Z1bk0tk{m<;i_y@B$ zm}~s6=9~z)wQVhn{?BlCcXxL$LL(LhkWvCM^ui(}_X^x*Cii&+6F^zpwzX}PUC*Eg z(rpg`23IrN#9Zbul$n{CnVFfHnVC^gu>AkOtWQ~|nrp`M$9aR2awVk*xV3Gos_4a~ z2#9FHVp8vbhyvZe6mjLu3E;2PDx|O?k?*ZWR#DHf=$+NXF|!gVt8yww#MjpUXJ)5G z6+1Ohb9GRk>R;QP8b^!E{m`q>a|eTeqb`wiFKN{?OO6wABy! zi8CW9rtlz77QUA4rRJUUOVC|}z{+On)03}Nduh;Jxy{px4Nu|Zm^b*+X<;ul{_XD- z@uWVyy)=C&96;Qt;opT-`Sf~50Jb|C{KwB7SY8Apr~!XhB94}oZHh;+JsC%-$~zSV z@#Mez@1sxUYwsn4*Z7ug95q0D!(3+G9piM++b$}5m?IMctFHsJ%F>VO3Kav_f!f# zXEJafLfL$L?rwZ1w8l4+LzmMZAM#Z5yp{|6#Tx0lsS5!ZWev_Tf&{ov(RE6Qh@?D& zu7hCF73f;YDl^eFm{lfm$m+o=<9MZwA>Jr$6nTy+RSB!K^8i(QMOg(K5LKN6mTm6} znx+Y|4u*S;qNAd~8q!@aZJ6@4n?7RL!ge93u@D%eMmXkLg!xXTl=8iQ*f5idn!BRFxQs$dDI0qbwt^$$e{i&Q8Znh4fHB(} zGCnm(ke~vONyA(&8~Rbva##TCJks#%QJbwXPK1aFr13sZU40l!h(pQ?Juxj}6tCJq z#7+sMl+HFRXs4Ev&0JA(KM`B8$P1Xg*7ZXiQ77uXA>7@Pq_ z^zaNrY6v!r@*WlEwa0;t6p8kT0pQPdhVf~ubrJvsRXU0GiQ;fiAmW|Tz}rFHdj`%C zT>%JLMKT^10HFQ=&%ik@4c02H3{AT5E;?KXuUdlKB3{ZySD?BR zo^3oHG(6z`La6U8b!ri@Ul?71l4;}$n$ALCf>~mykB${u5itq~``eHScasnRb>TzV z*?Z%y&@$g6?a&p>S$_Fz94v!C2*CPjU>&i%Mpf?cZ03^XxqoW5g0-WjngSG(PL_<$ zq{CUS=|yT)4d%X)6*LEGp!}D~YkvHaXRQY%U|8iO%$w z7XQum^-Y>kLjVkp5D2UuhE@SY+ZI<$_w0{+oc+1-x&*J^22&uCr@W^8jQJS0A24fD zD$EW@Js1!Lmw*oi%pHP=WF@jv1+59~8U0E9*Z1pp?MHJ#r&%j2U4lsCps%yQOe!D{ z)WMYFX%}e}Lo6#1gX!#8;|M%3)p-!1VM#n>(82;|j=#1=i+w^x|SEWXN3+2oN}Wkp#>_=pgY!;65Io8_u4}wz_+qRv|*tTukW<>uX zxRIntaxU+7??Lku#J|1+QHTy91ua4$qrm66k<#ims{LkE-%H3S#Gchn{}zx5xljnD z5r?YM?uc0KokE}IwhF3cbW?lCf$GqO=uz|unu|7~gJ>8PkccD%d{_2*{Sz@sPd+KO z(J7^XQl>>9pwn3_0m{|&vF6|uQ53BqzWc3cCVCU?RrLsB(FGhzXc&%w&Z4tnj5j=v zW?1=bSN(8M2;GmiV2lZw5Oof-*5S}8#nm>96PKcpC>q^-J)vgwIhw@SW)GNIi-1zJ z+3<>~A|DT`IcPTeA7gCSnOP2<#fGsT9VLoxULA~9QACaCFV)Fm<{%uZgAO%`qSeS7 z$P)@r#TdzUGiPC0jqy~SC|Y@=8kKjWF^mbK1gD`SHazDJBR@p9C??0MpTpG{w2r*w z<{YFFMf5nv*#R>TB4Ee(UQxWA>nE>>B4`n*nt2kWxHTYh`cw{yqT*~cinASN-h{)B zo#W3D#SoV>(6bCGkHm@30maz}tBBOZ&v@G;GtWY|+BWW&jvCR*(fr}oG)5b*ToYEd zw{tSyDvk}K9T=6(ybNU-kKfrNCR#bz<8!E6wfVZnclTsPE9>3ySu}u&vf0evHFmHI z$8ysujt!wM)#mdW-Fv)gRQc z_CPj@UgAg9=KY$8{=We&8d=i3%BOI)SpZ=lhdwWQ-7HO4oQAPO2srRabU2Td;cjtg z7!9%c&S&@9aLDlaNzu)QiCBc~W`Tr#0(vh8h4vn+cj9BDNidN;3LT#JBBj<7#?&*I zgy9*C%R9VhE49=lVkK1*j?`-%s6?Z7+JsxFnt-Gcxbc3iBt(1r1c_m+l!QgV)^Frz z32#V?zNGk&stHOOgIm6m+*;fjUWX*?5E>3VKsvia^D7}q@rx=8F3oKJk13>a9y$YW zGYc@b^~c#KYMMfl;t#AOLPR(7<~gR2hIvpO#ttFkzpQwA^sZ zX3%<#>iYv)Fae5NnC5=?#j%oF^8!$ed6BFI8;IO_`MahCYU@uJmD_MYxCG)l?rLjQ zSGuLXGcW)_{(=3`tifh%uW( z$T)DfiBIs-)6BQ~or?*{EM(&D8h~G2ZTha7vEv!>GFA|?SUOkBA^3j0Tk;GzLF%%&U!|$E}H3PAR;cs!{Z0O5_lCa;kt&1&6 zywrskr{{leVBpb4fjlnxGxQf(tI21Nt>|N-5LFuCj4ZywB;0 zaxw80y#|$4$fSD@c{uKxjbKUxipsm`@c!lrJGkK58=+Hbw2nfaX;T_wY&Y!P*%AH+ zmG3IT?{-f-!og$jN^)U%tE{2HPhpY-8~AYh?&c9tuAu>{Pev7k9MCopM;7je^$abX zi+wO%hF_WY&;j)~)5-}B9>XO)@QJk(wB@Go$&C%f-6r2r&BS*ZqQE|mkN_zHerDHV zK-?{m9>w=If||x>REF>JM2USq{zL@609oN(0Iuecp5l9(4ewUd`If)|BRnA_+7)EP ziziUZLwb}MSY!AKOH8xQ`^*AaTypSEHZxq91d#59w=^2sspxz}G-i$`(scZLw$53BE1?auCU>&`Jb+Xw_3IjJAF5du-MM&%wn zu6mP5L#l5Cd)HSmo4kMg#vQnrg)2D}Km6FADKSu8pYq3xSv6ibDefUY8!?~kg^%8x zvXlXDWer$fD@+_>@so2WyOjDA=Xy|mzT;o#R~XR;(6i=^qs>~uQc4RH1NW3PgKy{} z7L6sn(n435{PKOP0Gc9KojmA$Eq*0inl$t5H4u!yhXK)anhD%DJIO1^!Y-i3#uinj8oZ-NaV9;e+0M)>~?oSI19v8@vQqR@YUZyU*VViJZs1 zjDYg=%B?rN%o6Wo3Tej{MXCS(yujk`RAl)7(ZY4RC(wxQQiJ z%F!iVv^4ZzXnZ)(UHWIM8JycGD$m=OUwcjx*}uqxaNLKD+fqn}@8K z%fpOGrTAezEIf+a24;KaFy<%$l$4R1UBGt%={8^9e{y}&K_;?RS03Yl&@~@zP!g?4 zE}Sv+ah&5gXa;?XvXkF0ehQ-zN024o{4V!MC$(n2yuTT|Z$5Tp32SQ}KTg;bBJHyj zzL+4dl03=0S$>exq_T^Jy}KL=8DCqDK7Gc%7S(NaCFu5XLGU5 zEJqY22T=#_Zx35Govj?IRfmPots}`${Af=6Mi-@4XFkjd{`Z|aLez5b^NRxHe--Pn z_P(y=Dse~Ct>V5oGqS#QX1G#os{mdiXIxKSaY5$6Hc)vrzy$ieJP^P7=LK4&brA$h z;xa8JZ>yLA?8SAInKMQCR+FEuIf5*Z z6;(g9SoF0MTcOfw$Uq>6-iIpL+YM3qi9M&|H2bvbywHQWcrIyqbF@#i1)DkCBtMsMcM) z?WuxZhC6T(uvpf;=dvD>dd~pd%17jqvz~P1_3JWp)H~Wppaa|Pamaq-g+3r;rL2Yx zeB9A;JGlYQcq680e6owGX(xem3FLqI{om9`{{Qh(Yl1SrFU}VSCr#5*0#gbkfH`|X z7D1RlF`wq+ZiezpftwA!hbWr1Ndiqy@z6TpFI;ywAu7P|H(@^Jm3b95L-o4+p&Wxm z&02fFx>I!d{*9OH9tMVW8ThzcqRPG!Ez9#qQy5HIdq5BN1&}#y#wGiQ!cKde`vmy7 zs~p;Oc5=~#KV4;FXL+WBWA}K>X)`X^MZ54!EdOrgRo?rbm?at0JzkNmkUU^a+C34o zU-R$R^#eg1BtG7KRZ~+`*i@o5=I=>C4>^Iw1txIqmV}(F>KF5SVD+T9o_IC*_W0e@ z808krYJ5eKk%v5t6WACI>W9F+eKJPIfA@zu6QTPN+JR>_X9JY_MJB}LOJ+R;YSm_W zMV2JXxKF=yJ;{9w;n{A3I^@*XeUQl)k5D(;E0~c#QZfhZtFQdR;pWimd1TXPSLrD zvyhkZr#)YHvIRErLey`{t2ue{%ZnjjI5&54x@OzZfb4=w@a9WKF}}S|sj$?x-lXUJ zmMI$Ma?AHR-6t)b;c$Uc`>xhHH8ld^=YWw3CqGj2NE1XuPUJF|cuY=9^{x{hmkGc; z_gEyA@*c|J0yP-HmYFXV#rTS}mieOgcr(bcQZ8}kSn15JHGbw-h1-2nR5}xEK~OVq zZbpC(DzZpX#_xSigXMItlvk_Xu zsn@e6M9X@;bN!agGr!#HjKo#qS_nnJqE_X0Bp4i7xlx%YCNHr_^T|(ET0PCO-l><9 zaI~y-FKp5~+oBojP9>iBRFM{$kQc=)%gu63XPC(g5tN2t%EHIiCg;g`S@pi>o%vps zO?3-RutE;9rPtIdh4p05x!zu{5IFt4ea~OD7}(^sk1b3I8bC==d3MOkjV;9Ze2Mc9 zyy*0|DlV(p*AVs<(QuMh6FH6{^wGqm^3Ge|9Qc7sOCLP&5?QTG@cEX-=4Pb?H`7i$ zJ8TX*zzP2Ns4QtulvV9`^pQ88@qYOQ)%VsN!RBKc4v+K+bXXp_t&%&pZ(VzFKo<9T~zw9t@mYYk=4!5Q+a_kC41MU%_WuK zW)CQ+C*B@Zc2WRaWJW^T?5IpsKDiKIh?8-^`Fy^`WcYl(RX(v0pX^b zOq9AIpJy+P1v^ustxb`nd^6CFyTjJqR_^ZZR%e#D+s@rtxx2f&ySuY;hw98gTmH%n zcJxo?i7cUVqBNpfGAlyPZQI87y!Y|*+~>3L+Kg@6bvm=Moj;)7u9D8St;()nTS#EQ!ss$^}(sW)__yFN(e&DQ4!fAmoIWFpKfxfVeBZh_Ya!=JPBn)rq!3 zfRlun(3!<(ab4gqUHHBE^VB?ZlT?%0*=dXs!WE8?Kt~2a(HQf~F6Jhogt=`@!Bq~V z(NS*A6u&tH!U-8c66@?VLg}JZI->nEKG|;*MWt+i8Y^IQQ8EMb1)iH`%S04Ib8nbJ zQ99k)4|w}NOsi;=?e~)eOiMnhEOMQCdgg(!U5Fpa03ynNCeh#qMnp8L-5w0?@_}yNb7?;BApNpBJK*dG zpb^~DETOq-dEHa;`>y=YtehmV$NsB}#QPT#&r(skV$8D`dNuInap1+aUl z9AO-R3y#|}m}lLlh^xCx09A$&Y0C%m{u8c#Y?ftnBCh^75wtgnhO-{7h09l z=o+3BlI5ZCAcdpvqidL0ojHzKGV;yn+>g{gJ{pN3k(dCSxvz|z_L_S)_ZM1l(lrj& zJiL8wS|3l~8WLxHJjE_=$8T}%CUm=3@X&-X3b9>)rij9lQ|^V zJEgP(AUos0Uts#xkR2zq_fm~5vBK)gLX8wa(m5$w5qbZ~&u~~U zM6v03W!TPG_buWr_%JL1=x~>4NASEwg)I8z5OpxL)SlQB%dSCij*dn|0?v$0vjma6 z^~n49Rn>zb*#%f<U$gmpE4Pi z-vX;&(qT_e2^KUGFhN^$#*jwovQy9DGi2dPW=GZs{;^bhNqm)3DubP{306LjK1g@R z&>F(j2oSUp95kSFwiI$5eU4sx^ZRGY z&>18V2nE(KLD7QV=`(%Bjy@fO4&QX~rJFzB_y5`23*vb`(5LtTd<*WsTZk>##{bv- zyxQeuwsZ`(oyE=!dO3s%4FQrM&|#wvZ3uRy=IDby9sN4`PdjX#1(`)tmJWEwrHd@} z;YF4$ylBA%Nt!o(eUL&BZFShtEe*CX;Gn(|Bhi_kz3=S(I{M~2`b%J5_x39wk3?K4 zB``n`paLyTN@ztlB1j_BS)8fwZ2jjRF!#WL&N#4lV6InZ8`${ET2<5S9njmqqYsM6 zln{wps83R8WZ3Fd!ABF?(StCeNFe#2@0V)-PbB&3xJtEUx>iGn1-D*p<DNk&GJ7ytlQMM6+kP&iD57ytk-zrZgL^#`%&N@iZi9>M2s)J^EcYN^wKTjL!`;SQCl3oevy(iOqb+05FoZi8Ez4w}O zz4zYxZSQ?Iz4zXG?>zw{J-^BGJp3N%X@6aLfZJomETi)wR%Z1uY*^uAV2rI18H^kW zS4{?!jL<5q{5!3LaR9B!;Nez=JIU-tNT6-obgQAf*eKKXr)gu>=C^Izwr$(CZQHh$ z+D`6!TcRY%b=&OW3c%jp!q0$V@&&ZEZ8K~~zt*vB+qP}nwr$(aQL?M*{i>^fL9ni? zW1B0+k-pg4-hE|kdnV3!CZhii97$@U9vlh2$Sw;nQ2vQRATQ*NeEi548-9O}MLzu; zh~@85^okz;M2EcDS$h09zllhSf{_+kP%KJC8K}X3)T$M4shOc;DRaoKh_s9$5@GEp6 z4l-Oze3DkiL0M$r_p z=?EP<8WTn)Y&jG|SYh_oP3>cSuyWAuXZjHjCB1^KqXNQ&jq=z!bc{y_y~E?_FwUb0 z>xbZf`(9BNvp#NV|4HGnD9S{XfaapdsFu)y2<6G)=ry3VL+4?YP;IAq&P3J+FI{h1 zhcsvuy3H^pHe8Lb5=C+tqIV+FF!CO$dRtH?+Bt*mtAilXF^?jIkQs}=V3DGAk3&%q zZz{S$2w9eu5sFwy2nkMItSF8isreug8jM~sdWz^69Rv=Kk&$PkAxJDG8w;&?HIClX zdgNKCgDAqo$QQ(4RTPQ*3F5aX7Ht>w46_o;Vi_TMsIx_}_@%+B=rX;kUuY9mcql>( za#abC^a=&mp*liZDCi)*m`BK$>wJph5Id{wj(!rt=$*i;S$d86exRuW|Wgca}bQ5>Smr)1PALJ*No+H6Kr z|NQBj6pBMcnXb(vh#=Y~spzPukn#LJomhs&p-hNEKNt^*g{Ot2|9l`;99O8tuViMS ze1hEdI!G@lH%ZTbsG%6nwe%?37O0Yyk{lV854BNxEP}7WOWPXN=y9ZkPE4^RqZ_qam zH))z_@x+g-^@>o#uRJNGp0ZN%`_A0ai%K$Xi3Kdr@=?*5#m54q+3Et zmf2(go|5Nq*XodB5yC;+n~)NlEQF4(e+st@2{{DF=VDMPLBu8#L6Q7N%dSl3efX7I zMAUOmk+jdtz`d{EAq)BW6sjjWW9@eFR=8M5%IL99?l2aHHAG>_uyUZIJ6a-qk9 zsXwH}CMz*-0`B?$DNX1MUmni_Z|y#Ylb2|jbn{WGV&Ts*qaz^;Z88Io?GaqrJLKSv zd&rOajOAp+@Xl}VQ}ac=!^f4mg6kcJY}`Ii;)YGGw|L^7kDE_B$`Cp-abMNB8KFyA zeDs7|+S44ItXw`fTn68eg@?N9`L>uI`Du9o7xZ-b4S!k>y@RWLz|1l=y?*1f9}K~3w>C#OidIX#DybW@1P8x&k*QdU>$yIxS-z&`b4R)A z44hBlXdlvb8H<+JuX`~@XxQ{k*E4M~vs{_ngEM-$zG={%6U#iu%(6B;jjOH$6|xvo ze<%sn5sH>KbmZUR{!l|hOy07lucKXLF6tk{MZ2wU8Bo7Qt@}+VB6pxjI&S>`N0F{S zWa$m-GXn_m$Q?Ws?#G$qt@?_4T)@h_$X3gp_{y8Wb@k{w-xWobksSF$P9|=xct@Ib zp`Pm4vy(`PO$MXnA)K`^rl0r}Z&wO8^Cr;|IRr(X#TAcs7r7?ux4$h0vzNQ8=a!1U z%G7UrDJ%B$7_!VGhwvlbV>&cedL9Suu}M=s$ZchLXPDR2tKfzZO*$HvKL z#g<<(<0JEH7lt@)odbNM&u$l0Wy$yjmN9Fxqb1{UoOv`_J(&Zsy@ly_MTD`X6U2$1 zsk>tVi#n!=_h+K&ziZ(23!ZHwi*aC4;P2JiKcZ1OJ(K&aRE*C0)3X}Ud4+tlOm*l5 zuW|j5E-;?Op#l`-k0@_#WLL=qLr>2SftLufU;!qBXt%P&y;`dan)bn|?;DO`(`ydMBV!eRc zSe)^MXlXGxX7K@3X^|E#|19*L@=no<${1yWi7GmuE57R)aXbh?HVRAE##mr?urYz*SxkHBjb zZYVoF-N%8C$5EB_!ec=?n83Eg&Za8EDoNtz>R-;r<7>eCcp_CJ0(8B}up-x!=nx$z z@jC<%ZmIpHM)vRJ;_z!+`=?SUw+OI@2`avrLNdmA*^|P}o?mZjKZS<@c-PoJmO|Bu z0Fe~9JHcBl%M{gGPT*$uFE_P+(S^a+Odm|9s)ffvCXxPkn1QiK6j(*z=9-^tVyeWU z()6ALU8V5oL4()+2r42gli0A8P~@iS(;Jw^^YHllXkD@Js7mCQ4X9kE={*A1m;OX1 z9w%^2e_+$*5TW6eViUEQU^lNV`0iv=3Kx&lbs0Ye$L?H4QikBST=DPtC_IL%V;V_roVp9Y4lCGjrT9-m#2uWSfmI*dTv)zuVaKoFNyWkMHn+lr3*tIL15W#j+>7Op+HAU;W#{zK@-?1r)n4jWwf zZ-m{rGtU)LFjkwgK?DI$-XvNgEV3F(3wYw~6Hg(eYD11o!2zg^#o%}UHi7@$VQ;XZ zq`M08Fy4EtuNWvifVHz2RM(6r6eFbYYJML>@vR0WEwk*4f3~P}XK?_FP%Pg1?iQb` z7f|T5VPh3L1j-@Tx=-!dy1OU_UU-z1f2%e9yO6@4lbQ=Zo{L!hy7T`YmRP>GkOS5v zZUllJza*e=X(2WkPkkh3%7^bmXe5zm#lr>cZDh`y7YSGhi)Jz$eHxI{`8QjflZ$9C zeB(Y+@cTd)$|G1|W+deCm2E!s=i07Dl9vB?wVX{TNcMc8~`8S?5u#m^T*fM3sOkO zsnFxQcDP=FUU6k)8PKz zx{Z&COi84LXsspTy(svVT~at*mlUV92yQ0@idJ$J))0Ua!tTGqr>Q|-nk;i<(`kvd zkjs(TFGiI&LfUHY2OmKA%$Jx7SHZWb64d8T$rr$M*VNNw2L(_06GOiRV?f`HVuEVw|Z(LvxhD>QGxnL8a-9Y z?{*9}*znXHQwR`{{ME)HzL6PqFJ^_96K)Ej#(i60J^B~at z)u5-r-_#v9hptzCYql7X`VHtcBgOemdAgpC5JkS7&c70;k1yCXm{v0Y3lCJ(%)R+R z9beOh6g~v~Hrx^WfLB|@2mrDSp{@8!e|lYfod^3Qb{W^7kdrqI@;F1m!_)Jwhvtf}{p81k?;MO6S59IA)BTA2aV7RBdClK{yt?9b?kz}~K1yS1 zKf;_k5yCePF=kPNg@K;~Az--XMy`(VVlwj^`dBVo;m7h1Vaq!JAyWJ3ev@<4mKaP^ z8aW0hKg@=Z9N^>BknIP_y1}6Rr5+E}**f@`YqNHx{2f^&>9SUhr&Ez!x6`18M0F&Z zbw(S`Sw0N(7ap6`!NWA+umu5_FQJ7#nmG~&UYa{OhjwNGE=*6IZ*O#Go}Y)OuWD?8 zV(eA^bb4*jyq$v!tcY$Jk4d_0!GDtC6hRRfHW@)eesn|BgW38ky zffVesrER6~)-JZQL1hrH7Sy@2?b;X5!qBIeWz}3COLTaolw04hUdDTl#nAVfsLmCF zjZEDz&?X?agYK7l-R<^&Pt1?a7AaT~1%9^ilB)NU)xFXO@=eOF1{#c1j~hV$c(?LsMBulEcJ9dRtNuKNEaXjmId8zGztHHKoyKMl)D_bltA{tL zc{M$l|7P*+sMG8AnRd~3n|cWLTH{X8H)A-ys76pteiJMo*#B}SP(mM!?i^?Q&>b3cGBh-bIWJPrrl13PnLM%j)$QosXg@#?zl zP2&HG={l0YUdtcES!lG@v8w*DTJ

!wL--RDb)7fmBH#~QXu4;cvcWG5L=2G~FE9NtTpZ8Vu?VZnaJqTQ}XLNhzRu0SC zs=GSJ8#MZ27>;KHUnB_i)-tQ99nblDA2LanLl+mb)q||2VXi6a0CROP;=?=eZVmy} zNfxk&Du(*G0=%;^w4Bx_-rQ$(`{oQ_)TTL)}ogS_f z&@2M}5W1XhO`FEHZ^Q4ryW|9`6Ej2R%q?67FvYeRnWo2Nsi}7$63}LWo$? z3RaC{-wnxCMo9%5}Wo2U5)zuJ0`8t!k;^E%7B zidZS4L7y1us{w6-Sz~i+qW4}iDt8>((})NcX6wnYjmX`7{Ze;0)KJqGp^wxf1wS|7 zt7`471|3aq)Z%~>V=IqDw%IH;MJkTM=*s<0Z`exX2rF&Xy`ZS_aU3Zki!M(PLK?u- z&*9cMx9vOV<{@rVwwMHFYbq+ox(~d)<$$=mEZk5S1ZfxELu4wuktXvJtZsLF$5DeH z9pYI^+lXd$6p}p$Ki+Ok-0e=V=Fu#O?Rv_@@&`Cg_SHZ*7&JDw#-WMYanztYV`>h^ z{4_>*YqNPg(|!cT)Es=bae=C_h08i?`e+vO$F*3=Dv&$78^GA#uCb}{ZTcN>W>n!} zI1Z^8Pn!k2hyrGF?H5uovS|OaTlUvDHI8sUM|MNEGq)-WE8Y=u#fpF*0cEeZ0!++e zgVy_O9`@-_dg=V8G$ITUFk742kHVp3=;yt+Cbf>!e^!I3!rMDD0{kM{lbvEFnI=&6 zR#${IwlX!oLeh>C4!k(Rwd5$AgeEg>%d@Y!seRs(iUTh0FmZZZEepT6s_rdiy0Wlh zU&Mg&fzZ>}?5zNU#@5g2R^#h8+hyKC*Iy)-PD@3TnWtj{W~;fWc7ElOk*));@4R5W z7IBTkogFTN2yb(#r_l#gjJ1-$$g(Ky?QUpGu=aD%i+Ey-U1sfne%ROKs&S}fm&|E& zKwqRXF*B>yKCk|eszr-;o|D*e0lg|qu(maH_hwx&DXGOwXJJ7e7{e+j2CtlrmF zC9Oplh;xI@UeLCMUp$GiT`(Yh%U*Bnd*I;P!#|HHOs-A=F|{0z`Ryko6=`6Fsx_x1Tc%#x~G;n}fL^?!v94wg6TXcp#$XH8cT+1ZzJB z{X3|}|5MBX#Feg|wcD0{F zRn<5h3#Mygmrq%>;abg;+OFSz!;Zb5{m(Zh{rA%83*vOBs#>PHtze#8(dlh=mX@>h z;FEPFNy0_Tix^^N5P}NnQX3e+1Qw0m-7k8j=zflDje|3?%jUW@b~jkUU}&Rjg}uR< z3{ynwU06n{a)tnYRU~(25CUtut2-O=+CX0hMlh=y8yyV7bb!U3T{gEZuc5QLyQVle zGdEIYq8XfC4v5;Q-Be{PZ!HZvdus~2z10Ps4Gj$ybkI(n1=Zf}!kS)Zu(Y+@SY@(D zYw?Uc5Uf&>&)(H&jCgWeXO@CrFz9qTi;HPpFxXc*vo+TfF*bJDeMPJqhLI0~Rbok_ zKA+vx)zw&4Wn@KFRby9|$?o$-Sz4xsV`NCmYK;W~f!f;IB39Ja)&>HB7}Lw8m8%jf QTC(4=v0RM_$i~s-t literal 0 HcmV?d00001 diff --git a/app/src/nightly/res/values/constants.xml b/app/src/nightly/res/values/constants.xml new file mode 100644 index 000000000..136bedbbd --- /dev/null +++ b/app/src/nightly/res/values/constants.xml @@ -0,0 +1,7 @@ + + + org.kotatsu.nightly.sync + org.koitharu.kotatsu.nightly.history + org.koitharu.kotatsu.nightly.favourites + dragonx943/KotatsuDev + diff --git a/app/src/nightly/res/values/strings.xml b/app/src/nightly/res/values/strings.xml new file mode 100644 index 000000000..c73c49bd9 --- /dev/null +++ b/app/src/nightly/res/values/strings.xml @@ -0,0 +1,3 @@ + + Kotatsu Nightly +