From 47bb012a28117a5179c92e0675af4a52a39c66b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=C2=A0Koby=C5=82ko?= Date: Wed, 14 Feb 2024 09:33:03 +0100 Subject: [PATCH 1/5] Update dependencies --- gradle/libs.versions.toml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9bbe4070..1a1675d0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,14 +1,14 @@ [versions] accompanist = "0.33.2-alpha" -agp = "8.3.0-beta02" +agp = "8.3.0-rc02" cameraX = "1.3.1" coil = "2.5.0" commonmark = "0.21.0" -compose = "1.6.0-beta03" +compose = "1.6.1" composeActivity = "1.8.2" -composeCompiler = "1.5.7" +composeCompiler = "1.5.9" core = "1.12.0" -firebase = "32.7.0" +firebase = "32.7.2" glance = "1.0.0" junit = "4.13.2" koin = "3.5.3" @@ -16,9 +16,9 @@ koinAndroid = "3.5.3" kotlin = "1.9.21" kotlinCoroutines = "1.7.3" kotlinKsp = "1.9.21-1.0.16" -ktor = "2.3.4" -lifecycle = "2.7.0-rc02" -material3 = "1.2.0-beta01" +ktor = "2.3.7" +lifecycle = "2.7.0" +material3 = "1.2.0" room = "2.6.1" [libraries] @@ -44,7 +44,7 @@ composeActivity = { module = "androidx.activity:activity-compose", version.ref = composeAnimation = { module = "androidx.compose.animation:animation", version.ref = "compose" } composeCompiler = { module = "androidx.compose.compiler:compiler", version.ref = "composeCompiler" } composeMaterial2 = { module = "androidx.compose.material:material", version.ref = "compose" } -composeNavigation = "androidx.navigation:navigation-compose:2.7.6" +composeNavigation = "androidx.navigation:navigation-compose:2.7.7" composeUi = { module = "androidx.compose.ui:ui", version.ref = "compose" } composeUiTooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "compose" } composeUiUtil = { module = "androidx.compose.ui:ui-util", version.ref = "compose" } @@ -99,7 +99,7 @@ securityCrypto = "androidx.security:security-crypto:1.1.0-alpha06" sharedPrefs = "androidx.preference:preference-ktx:1.2.1" sqlCipher = "net.zetetic:android-database-sqlcipher:4.5.4" timber = "com.jakewharton.timber:timber:5.0.1" -webkit = "androidx.webkit:webkit:1.9.0" +webkit = "androidx.webkit:webkit:1.10.0" workManager = "androidx.work:work-runtime-ktx:2.9.0" [bundles] From 1eaa54848cf9b384af6d9a76717683308ddf160d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=C2=A0Koby=C5=82ko?= Date: Wed, 14 Feb 2024 09:33:24 +0100 Subject: [PATCH 2/5] Support 10s periods --- .../com/twofasapp/data/services/ServicesRepositoryImpl.kt | 1 + .../feature/externalimport/domain/AegisImporter.kt | 2 +- .../feature/externalimport/domain/AndOtpImporter.kt | 2 +- .../feature/externalimport/domain/LastPassImporter.kt | 6 +++--- .../feature/externalimport/domain/RaivoImporter.kt | 2 +- .../home/ui/services/add/manual/AddServiceManualScreen.kt | 2 +- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/data/services/src/main/java/com/twofasapp/data/services/ServicesRepositoryImpl.kt b/data/services/src/main/java/com/twofasapp/data/services/ServicesRepositoryImpl.kt index c562b31e..a1d59f44 100644 --- a/data/services/src/main/java/com/twofasapp/data/services/ServicesRepositoryImpl.kt +++ b/data/services/src/main/java/com/twofasapp/data/services/ServicesRepositoryImpl.kt @@ -251,6 +251,7 @@ internal class ServicesRepositoryImpl( } val period = when { + otpPeriod == 10 -> 10 otpPeriod == 30 -> 30 otpPeriod == 60 -> 60 otpPeriod == 90 -> 90 diff --git a/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/AegisImporter.kt b/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/AegisImporter.kt index a46ae22e..490cff78 100644 --- a/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/AegisImporter.kt +++ b/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/AegisImporter.kt @@ -73,7 +73,7 @@ internal class AegisImporter( .asSequence() .filter { it.type.equals("totp", true) || it.type.equals("hotp", true) || it.type.equals("steam", true)} .filter { it.info.digits == 5 ||it.info.digits == 6 || it.info.digits == 7 || it.info.digits == 8 } - .filter { it.info.period == 30 || it.info.period == 60 || it.info.period == 90 } + .filter { it.info.period == 10 || it.info.period == 30 || it.info.period == 60 || it.info.period == 90 } .filter { it.info.algo.equals("SHA1", true) || it.info.algo.equals("SHA224", true) || it.info.algo.equals( "SHA256", diff --git a/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/AndOtpImporter.kt b/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/AndOtpImporter.kt index cd89ea6a..b8f74b55 100644 --- a/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/AndOtpImporter.kt +++ b/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/AndOtpImporter.kt @@ -56,7 +56,7 @@ internal class AndOtpImporter( models .filter { it.digits == 5 || it.digits == 6 || it.digits == 7 || it.digits == 8 || it.digits == null } - .filter { it.period == 30 || it.period == 60 || it.period == 90 || it.period == null } + .filter { it.period == 10 || it.period == 30 || it.period == 60 || it.period == 90 || it.period == null } .filter { it.algorithm.equals("SHA1", true) || it.algorithm.equals("SHA224", true) || diff --git a/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/LastPassImporter.kt b/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/LastPassImporter.kt index 5a78342d..58bc3f3a 100644 --- a/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/LastPassImporter.kt +++ b/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/LastPassImporter.kt @@ -2,10 +2,10 @@ package com.twofasapp.feature.externalimport.domain import android.content.Context import android.net.Uri +import com.twofasapp.common.domain.OtpAuthLink import com.twofasapp.common.domain.Service import com.twofasapp.data.services.ServicesRepository import com.twofasapp.data.services.otp.ServiceParser -import com.twofasapp.common.domain.OtpAuthLink import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import java.io.BufferedReader @@ -56,8 +56,8 @@ internal class LastPassImporter( val totalServices = model.accounts.size val servicesToImport = mutableListOf() - model.accounts.filter { it.digits == 5 ||it.digits == 6 || it.digits == 7 || it.digits == 8 } - .filter { it.timeStep == 30 || it.timeStep == 60 || it.timeStep == 90 }.filter { + model.accounts.filter { it.digits == 5 || it.digits == 6 || it.digits == 7 || it.digits == 8 } + .filter { it.timeStep == 10 || it.timeStep == 30 || it.timeStep == 60 || it.timeStep == 90 }.filter { it.algorithm.equals("SHA1", true) || it.algorithm.equals("SHA224", true) || it.algorithm.equals( "SHA256", true ) || it.algorithm.equals("SHA384", true) || it.algorithm.equals("SHA512", true) diff --git a/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/RaivoImporter.kt b/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/RaivoImporter.kt index 951965b9..689f33ca 100644 --- a/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/RaivoImporter.kt +++ b/feature/externalimport/src/main/java/com/twofasapp/feature/externalimport/domain/RaivoImporter.kt @@ -54,7 +54,7 @@ internal class RaivoImporter( model .filter { it.kind.equals("totp", true) || it.kind.equals("hotp", true) } .filter { it.digits.equals("5") || it.digits.equals("6") || it.digits.equals("7") || it.digits.equals("8") } - .filter { it.timer.equals("30") || it.timer.equals("60") || it.timer.equals("90") } + .filter { it.timer.equals("10") || it.timer.equals("30") || it.timer.equals("60") || it.timer.equals("90") } .filter { it.algorithm.equals("SHA1", true) || it.algorithm.equals("SHA224", true) || it.algorithm.equals( "SHA256", diff --git a/feature/home/src/main/java/com/twofasapp/feature/home/ui/services/add/manual/AddServiceManualScreen.kt b/feature/home/src/main/java/com/twofasapp/feature/home/ui/services/add/manual/AddServiceManualScreen.kt index a7a4746d..8b540ce3 100644 --- a/feature/home/src/main/java/com/twofasapp/feature/home/ui/services/add/manual/AddServiceManualScreen.kt +++ b/feature/home/src/main/java/com/twofasapp/feature/home/ui/services/add/manual/AddServiceManualScreen.kt @@ -398,7 +398,7 @@ internal fun AddServiceManualScreen( if (showRefreshTimeDialog) { ListRadioDialog( onDismissRequest = { showRefreshTimeDialog = false }, - options = listOf("30", "60", "90"), + options = listOf("10", "30", "60", "90"), selectedOption = uiState.refreshTime.toString(), onOptionSelected = { _, value -> viewModel.updateRefreshTime(value.toInt()) } ) From f3531f33f95fddd3b17338c1af3f2adbda94fe7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=C2=A0Koby=C5=82ko?= Date: Wed, 14 Feb 2024 09:35:18 +0100 Subject: [PATCH 3/5] Update strings --- .../src/main/res/values-de-rDE/strings.xml | 2 +- .../src/main/res/values-es-rES/strings.xml | 2 +- .../src/main/res/values-fr-rFR/strings.xml | 2 +- .../locale/src/main/res/values-in/strings.xml | 2 +- .../src/main/res/values-it-rIT/strings.xml | 2 +- .../src/main/res/values-nl-rNL/strings.xml | 2 +- .../src/main/res/values-pl-rPL/strings.xml | 2 +- .../src/main/res/values-pt-rBR/strings.xml | 2 +- .../src/main/res/values-pt-rPT/strings.xml | 2 +- .../src/main/res/values-tr-rTR/strings.xml | 22 +++++++++---------- .../src/main/res/values-uk-rUA/strings.xml | 2 +- core/locale/src/main/res/values/strings.xml | 2 +- 12 files changed, 22 insertions(+), 22 deletions(-) diff --git a/core/locale/src/main/res/values-de-rDE/strings.xml b/core/locale/src/main/res/values-de-rDE/strings.xml index af3450fb..df79db58 100644 --- a/core/locale/src/main/res/values-de-rDE/strings.xml +++ b/core/locale/src/main/res/values-de-rDE/strings.xml @@ -5,7 +5,7 @@ Release: Working copy Locale: de-DE, German (Germany) Exported by: rafakob - Exported at: Wed, 31 Jan 2024 06:46:20 -0800 + Exported at: Wed, 14 Feb 2024 00:33:50 -0800 --> 2FAS Authenticator - 2AD Doğrulayıcısı (2FAS Uygulaması) + 2AD Doğrulayıcı (2FAS Uygulaması) Tamam Ekle @@ -80,7 +80,7 @@ Basit 2FAS\'ı çevrim içi hizmetlerinizle eşleştirin. İki faktörlü güvenliği QR kodunuzla saniyeler içinde etkinleştirin. Gizli - 2FAS gizliliğinize saygı duyar ve onu korur. Bu uygulama; kişisel verilerinizi asla toplamaz, işlemez veya kullanmaz. + 2FAS gizliliğinize saygı duyar ve gizliliğinizi korur. Bu uygulama asla kişisel verilerinizi toplamaz, işlemez veya kullanmaz. Güvenli Jetonlarınız cihaz depolama alanı üzerinde çevrim dışı olarak saklanır, bu nedenle hizmetlerinizi yedeklemeyi unutmayın! Yetkisiz erişime ve cihaz hasarına karşı koruma sağlamak için iCloud Eşitlemesi ve PIN parolası kullanın. @@ -422,7 +422,7 @@ Tarayıcı uzantısı 2FAS Web Tarayıcısı uzantısı 2FAS tarayıcı uzantısını masaüstü bilgisayarınızda yükleyin - Onu 2FAS uygulamanızla eşleştirin + Uzantıyı bu uygulamayla eşleştirin Daha fazla bilgi: 2fas.com/be Web tarayıcısı ile eşleştir @@ -485,11 +485,11 @@ Anahtar geçersiz bir biçime sahip Sistem hatası! Sistem galeri uygulaması mevcut değil. Google Drive İzni - Yedek dosyalarını uygulama verilerine kaydetmek için Google Drive iznine ihtiyacımız var. + Yedek dosyalarını uygulama verisine kaydetmek için Google Drive iznine ihtiyacımız var. İnternet Bağlantısı Gerekli Google ile senkronize etmek için bir internet bağlantısını etkinleştirmeniz gerekir. Google Drive\'a erişimi iptal etmek için internet bağlantısını etkinleştirmeniz gerekir. - Otomatik olarak yedek dosyanızı Google Drive\'ınızdaki gizli klasörün içinde depolayın ve eşitleyin. Bu klasöre sadece 2FAS uygulaması erişebilir. + Yedek dosyanızı Google Drive\'ınızdaki gizli klasörde otomatikman depolayın ve eşitleyin. Bu klasöre sadece 2FAS uygulaması erişebilir. Yedeğin eşitlenmesinde bir sorun oluştu. Lütfen uygulamayı birkaç dakika sonra yeniden başlatın ve tekrar deneyin. Yedek şifrelenirken bir sorun oluştu. Lütfen parolanızı yeniden ayarlayın. Yedeğin şifresi çözülürken bir hata oluştu. Lütfen parolanızı yeniden ayarlayın. @@ -609,7 +609,7 @@ Doğrulamayı etkinleştir İptal - Biyometrik Kilidi etkinleştirmek için PIN Koduyla girişi etkinleştirip ayarlamanız gerekir. + Biyometrik Kilidi etkinleştirmek için PIN Kodunu etkinleştirip ayarlamanız gerekir. Uygulamanın kilitlenmesi için gereken süreyi seçin Görünüşe göre ya şu anda disk alanınız tükenmiş ya da geçmişte böyle bir olay veri tabanına zarar vermiş Bulut yedeklemesi yeni sürüme taşındı. Uygulamayı güncelleyin @@ -642,7 +642,7 @@ Bize ulaştığınız için teşekkür ederiz. Gönderdiklerinizi en kısa zamanda analiz edeceğiz. Gönder Günlükler gönderiliyor - Destek ekibi tarafından sağlanan kod otomatik olarak dolduruldu. Günlükler gönderilsin mi? + Destek ekibi tarafından sağlanan kod otomatikman dolduruldu. Günlükler gönderilsin mi? Lütfen destek ekibimiz tarafından sağlanan kodu girin veya yapıştırın Günlükleri gönder 2FAS\'ın bu harika iki faktörlü kimlik doğrulama uygulamasına göz atın: https://2fas.com @@ -763,7 +763,7 @@ Uygulamada ekran görüntülerine 5 dakika için izin ver. Ekran görüntülerine izin ver Uygulamada ekran görüntülerine izin verilsin mi? - Emin misiniz? Bu seçeneğin etkinleştirilmesi, uygulamanın her yerinde ekran görüntüsü ve kaydı almanıza izin verir; ancak bu, tüm dıştan gelen ekran kaydetme girişimlerine de izin verecek.\nGüvenlik sebepleri nedeniyle bu seçenek 5 dakika sonra otomatik olarak devre dışı bırakılacak. + Emin misiniz? Bu seçeneğin etkinleştirilmesi, uygulamanın her yerinde ekran görüntüsü ve kaydı almanıza izin verir; ancak bu, dıştan gelen tüm ekran kaydı girişimlerine aralık bırakır.\nGüvenlik sebepleri nedeniyle bu seçenek 5 dakika sonra otomatikman devre dışı bırakılacak. Sosyal medya bağlantıları Discord YouTube @@ -824,9 +824,9 @@ Jetonları yönetin Desteğiniz yeni özellikler ve geliştirmeler üzerinde çalışmamızı mümkün kılar. Teşekkür ederiz! Çöp kutusundan geri yükle - 2FAS üzerinde bizimle olduğunuzdan memnunuz! 🌟 Gelişmiş güvenlik 🔒için uygulamada yararlı İpuçları ve Püf Noktalarını 🛠️ keşfetmeye bir dakikanızı ayırın.\n + 2FAS\'te bizimle olduğunuza sevindik! 🌟 Artırılmış güvenlik 🔒 adına uygulamadaki yararlı İpuçlarını ve Püf Noktalarını 🛠️ keşfetmek için bir dakikanızı ayırın. Telefonunuzu kaybetseniz dahi hesaplarınıza erişiminizi kaybetmemek için 2FAS Yedeklemesini ve Eşitlemesini etkinleştirin - tek dokunuşla dert mert kalmasın! 🔐📱 - Girişlerinizi 2FAS Tarayıcı Uzantısı ile hızlandırın! 🚀 Daha hızlı, daha rahat bir doğrulama için şimdi indirin. 🌐✨ + Girişlerinizi 2FAS Tarayıcı Uzantısı ile hızlandırın! 🚀 Daha hızlı ve daha rahat bir doğrulama için şimdi indirin. 🌐✨ 2FAS\'ı desteklediğiniz için minnettarız! 🌟 Eğer uygulamamızı yararlı bulduysanız, dijital dünyanızı güvende tutmamıza yardım etmek için bağış yapmayı düşünebilirsiniz. Her kuruş değer! 🙏 STEAM diff --git a/core/locale/src/main/res/values-uk-rUA/strings.xml b/core/locale/src/main/res/values-uk-rUA/strings.xml index fd408f0e..d303f3b3 100644 --- a/core/locale/src/main/res/values-uk-rUA/strings.xml +++ b/core/locale/src/main/res/values-uk-rUA/strings.xml @@ -5,7 +5,7 @@ Release: Working copy Locale: uk-UA, Ukrainian (Ukraine) Exported by: rafakob - Exported at: Wed, 31 Jan 2024 06:46:21 -0800 + Exported at: Wed, 14 Feb 2024 00:33:50 -0800 --> ;5Z+);=HjtUQ-l9;!va^s0Z6{od%ND@i z$iOlj34iO1=lBB6)nBAAb(@E@`ij%phK?qD;ZCOf!mSHly?_mY4T8TLp($BI@V;m8 zz8+`~UUk6wNXc50alkQ1v3#_g7t+x!xI1dOgPi^C zbdC^PQ5S4J=xdOc++zG~4PMJpcin=fNgttyu?aZTIrnpD3=g~doscpY&eius3ZBa$ zz#}F8UqI(5Sr4J7w4Agf>r)HTWLuCT(+#zXq+V(XFcz4FEM47^09PV`wgu-;!%)-% zH5&VV1N>9McfJiw1GY8xeS)<3k5c|_EFCT2-vTEV`OM2`ZrO@%^a|r|tFhf;yjp=( z!Lb%3kgbric6^HKdKn3McBcO(n!adyWLnXV1O8a#d$WOqjqU#geo*Sgbfkc%0^<{o zzXF_&w8~PbM@Ewg5y$?H=A@e-h0A3Ta0c*1iPvx}Qkp^*Bc-x6;X4iJK?|p0tB}?0 z{ZcNZZEU&=X(d;%tP@lO8rpFdKQ@~v+xVxVPktwe20pQ zId<0}ExRNtA>c-QL&jyOl^kg7yOQhybEhF|&-oF@evcgglOv9$;bGJhoQ&k*!K{&84~1Hb3I5&?1hZ=)A4Wc zOGp4GVBeg){1Vs{O;ub@Mi1DJQl4u8>QO@KNbagzP|!n26Zw4D)(@7G2T?dp$Qx)Z z{vop7g#0`3e<{uvc9GBETfaU-EqVwFt}7?4Ncr0Z#fO>HBjxNJ^uHBjGMXEQjKB_T zaJk3XE=ij%r-1JPzF}-HM=cBB-;DhqA?r;sl9ZgOs5`zr`(jO7!qXF$>%2Fe=4$#!@Z;Ps6{ELxE+eOESCFDMu@#qtk5NGWaHLtA^h8S9 ztHA!wu~vNTe=5<=kXhI|%BY;zT9SZAp?}6?A`%wJ2Wl!4i-2D{pC6BI*r^fczX^>~ zzbN4vE6H4>IG%zZVYwslIB+j^Z*&*-Tz3cT*+s|-Y~#y;$Rd}SyaN6PzP5KGYM~($ zo#W;|av18ar{V{`82iqSwpF0|L zPjM_q8uL)3g{}*PX3w3Ge>#byv17Q_V0+~bB-vTvkw(Cm<4uqVFMieVhTv*7@v4bE6qVyM#Hoe3+mO3EM6>w;2GTmMelI);97uz2?6MK@M zHUVp0qaNGQup#QUO;_qADAlDMyPMt%JAfh--AaHF^;0K_9~o zQcTrNhXQUyU2Vu}6iS*D#I}|5on>eY=|$xO>bp7@INRaaJl)tgJa{D%3gSfU@nAgi z-zIS(%HItMLs0q_`_URjc>&wK+JJgTHn)bDI21V3*nWd-LF_fs^FOFST*zU_o^3X!M59L?GKHBfwolAwLw@3H zPa%C4e2wf}L?HmL8&a%HJ4K@NAuO(KCWY;r@cF&5v*zbxM<&!LKObXT5$myMDZ@z6 zrt45FvYFLBjCilmPo3?kh`<`<=T_|0QkU2{aUH%>8KSKuP1shg$MGZoYE+J>jLMKi z0fYRzrgj$f1=qdR)#9kCorTES7{%_y^txtWZhDZ0V5{GwuuBj;fHb@s9ZOQOU1TK! zQ^0O$h}nu=XZ}?gE~-ZPc#HV7+eqhwDd4zndIahMLjFLRDzVkbOb_BS7#IA_vwPIJmZZ~}~whM6vrPs5nksmiTbs~0}k7x97 z1w0$ooC^6qc4E{6)aWdluv_S($k1e#nAjPmxO_#F-`4b2xSpY^Ux=a$<3@UfL#3PS zW_8n10(K+#Ot#B*O*P8I(b$p>b#HDfWj-T6Fqq3ZYZDhI+Ki1q;j=wT`#0hvt!Vg|eEi9)aapTc1jrh!y z*uCxug33m50)7S+MTw#h@g;z2l$W!xYh?b8_@Zy7sd)fF&9bEE$NQXZbEVGH@e6_0 zC@?#be6O@Z6Cg2ya%k_;#sf^~lE2;!gjqHR< z?0A&^6LJlHEfkk&sPTo|NwCyynj9k2g*XT$db>3{E~gCZ3#{XWZa*_GX(`2*J(z?o zkI&5Sq!F-dCHZI6ZCqmP>p`JfTSu1p?Mkdfh11O(u`5X~z5E0GSh?{SQ6Fgp{491i z9Y)e$hOK2EgIro};p`geI1)Qs^HmDD!BHHIQcX>!;KZq?P4hHc@z*J=KX|V5x$96N zQ8UV*R#_*SFDTrbFHz5E4s%x#fA99gw^Q7VUqUjqfL-T9SetS-cDdid$X050D{(PI z>pB}#Fcj5c*Z-V{$|*-N0DqmQnJ75JBdvg+!>&yCZ3<(>Mc7u9(bz>Z_e=R3>l#V- z<%*d7eNf%324mmzqzHUZgPFz9pF$m{7VNok9d;zhVffW(*L8Xmzev{8z<BdtS$XCj(2 zcQqw!TNKXPjK3<{>&Qs)nzP?+y~p7falM52=~E70d|1;9oW;*{qVz=r;#J!K97LiZaONI zb|Px+A>+^!`8b-WpNqei!5$QraQ#}2>*{R2hit%6p0&GCMZinZJ$KieG6lCY(W}~= zLk{u?_!aDNb_BM2E5!XruQNV(16sfD=7{f|jJoX!Ij*fU*bB`tZo#%j5$xX^74Z(u zx94Mb+rOkxbgmC_$C?Rdb0}d5%d6m+bKcD<*rrWpVUHJEqe7)2Ey%pKE51h99eGj~ zQ)D9FiS$LrpJ!05F_RY5q6Z^qO-L_nciuw#4w9jd%u5xE_ESlc^Ys9f|O{w#U z_KEk!9=4WI2&B6eyQQ`vLx#ClLoQ00gPQKD&57?yZ+AXBoCvp;!DKW(M=jxcHflNU z#J|!Eq_FhuX3jBl>Dwj5b20W9JrzY?T!G@uO-A6aY?_Nw1ng?lqY^$l9$RakO#B)T zptTFWi)^n8ont+b>248zBw@MP7_Aw#06%(k4Qj1vmcHE%+dl9Xx(BD@r>2~Wzn(*G zN)fQDO&>vg_xUEi_atgTMwjPN9N6guL1YFy1;2kEc2V+jaURkMqL#kB1@$s%BT6sC zP7)Z46fn0+-~`INu2iXJ!WqW<%}HJY^;+zezeW(_q>kV=6esL1^8>O9EhTxGnk+P- z7IrQE(gdN#d?x9W;fJ7TjgY&MKJl#cxofCE&R3}dc5R}OwVDjZJKI;1zV)>sC1pD_ zop6~%X=cv>sM1g~exmzFNWt0%_-n@Vy7@(Of!|`=rfou7RCI4`lOw10!)d;7j!2Y>vMmb{h6ahMSOg@mGkO z1)P@S+^HysC&x5;Y=Uotb(x55Xg`?@>i`)%f?C}B)|#I z`42|g`OVnzO`tA#A7sQxT9l+1-^YJ&yHf~fT8i|LV%7Caq8tKVi~_+zM&fsMF85<= zi#t+UreX_Hdpw3&5Ghlo@FSAfy;zCNyC0VLJ4NYM z-`G_AQ^h$Rt>zu_DQX3-&(mZx)LP7P5C>D9wGQ_}H#p5Aj-R5rXp}%UKvTb-!TX-5 z#fPt6#`~VACmD&qy0^;#z+X~aTS>GnZZ4aEK^nC=p0py%(`^agIURd0xC#Xk6#c5mIoLh5^<6X39)(zO! z8<*{a*J#wzDym7wusZnd*5LKI@xBFFs+K$3Ey1hRc;6Cyw*{Ftx54*s-$DlqH>BJx z*rX9Ty_=B6x@not`w5!jypIIb4b2AHgYEEUhXVQB`5PWvg@oLKlDx{1B-a=9Oj{ZI zW|D87Uow^GqT{GX&VixGHajeMpJ$cQ<*35yddv*LrwHm*bp{F?)sXu@GDeG!DL^mpfdj2B;Y9eq3(Sch1R|c*%QuJQRv?1p%y=59gaLjuD)<4(N2#}p(_eF ziUwqc9E_BnA*khVlJPuWAi-})w8`=!mK?ad$0l#ogWADPG*&-HKarcXzi^+$j#l{lm5R{r=bceDAE4$(obN ztR!cjz0V|3%8F9R2>1v903gdqi>rcb&;JS>B>3L?sUQqoL0gI_hyXxCJmRY{3;-a= zSc!=#yQoTulFCSkakBDoax$_pu>yc}RF0a5cJd>(;MSu#il*qwRYSUM5I{~*4L6Fa zQ;3=b7>A;w3lD`wB4}b_p=C>J{0?43kj{zR&8KO%6p4=1jnUBOz988sYw`2GJU@R~ ze(65SK6;(@nn4LfL#IwWEVKrARKxgrS4iTOq<@d~1VUm-Z$p!!9!~tSgc$;WD=05d zf7g1USBN?X01|LqWTHeL+4%_RRHoJfNE3l=a`Yoahy+z&lu3OQ6Bxw>>eZUe5P%c_ zu=Vm4B?l^zfwMaqK^S1AB6$M`SSci|fCFM7fD9TbN=V@@;G0H}Dg$KyFCf2Kn4Af^ zzZN1;rw zEOi(CB!KOjB<&48*#jA<4p-_|Y=v!^uahM{=i2}1W+y6*}NVB zAi3`;UYH&Nm`X3+1Ay*hT>bJC9Qk2501(d)qN^8yMH;}Y?*E)UK-Arj18Mw8To{S6 zpC489(|#Z!LIG}?2%dUB?+SEFJrsUETILRF^8hP1^3gWBeh|nJ=hHXb++Voe;qcHR zqi`6;WW14RCUGm|({MN$anR((((Flr#iS>Zm@4E$qt3;U6{6OO2GSHajLw)mvHHT# z3G1VzY|*dL-BPS6L5(U<3y^NY9pxnW(Zl&JbFSg=KSc$8N5G zUv!*l;2i5`iyy1T`adEhzC~%{Q;%Sq9%yrD#&ehwX>++_5%lL8U&2vB#sp%V!5N04 z{;~~DNRZN&*A^?MI-_Vt?}XEW4+&-c^@TjST&bDL8~y3GrwMOEg0^He^#vI*SuT~~ zm(LhR$LbjvK;0@2hb&XY@!+Yl`2yexeIWWk-T}jGIsgy%FJpJ z6&UPpnN(9**kTjKj75vHnO2rokKdV3Tsz_ah7e1n&!*4Y9K)U*orK(ZAR&h%hm1&@ z(BRqN`QVk|w&5{n$d|(WNzWKnXIW+=$gup0^3y>>o9=9@##$79p;6=o!LiTP0XdzqS_+S zBInR)3gYu{!}b-=YPRe&*);OB4ise8M-qI;av%caXX5-t{Y zIL-t-TUKtV5JLPB--#Zh3e=nMoDf-e*eGy@~$Ki=1Xi@DzXj09- zX})2@Z){@4wqE?ZcxbY?P z=Pt3>jjsRJ+wPh0`Nk_KVE#OP0wp*s2$|=d7tveVOTH!0OX0udpWzStn)|}{Jn|t#FasQnr!pBvyDCI8T0< zv~+BhOs6W%YOYSMj|@xI`#LX{J#p9Z6+b%o)~#Ee-7TxFZB=be&$8MB+bi3HJR|-| zT&JVEVo<`LNA3S!`7IE&=K^_ToB1_+KT|!;)wK3tqp$<#@ML--*Mnb&LnpzPJM1TV zdZW-m2&t$tGp^D>nY{uL#!YBen36Tzk@vk0?Zyd` zBgP;1DV|(z*RgEFUp+H_ekq5eBH8mKYgM=4952DNvKzD zuWwpu_td%GChwEz!lsB(!|`BZHBjv|^R&8}_nY`W(U|t8ysNFMabxYZaTBK+GG9_6 zMjx!jo?4MIHep|Tr`utQWt?iJacP~tsHYh~hm&el?O0u2`>$TI{cu-H(P+{4-pg)n zZBw>w{2U|=DhAnCKkD?=$@W-_EY5~sA=eOG#~u(E*~xCY7I<6V$4xa)jZZ;w7;~KK zO}19A-xP2bJ$UB?7))rs)l{|hu2Qcp_5Jnmx&0hMgvGacnR3?MLhq?%(<9+`Z$Ez# z{5KxogrKwU(Eo3{l!ww#ZoE&45A1`)CCJ*@Y@~;^-1}X+UmSQux zLO8A$@@+;6TT<$ude26ExZV z#xjhVaevJZFOW;s(bn7Ui`&g}4Q_M_XtyjgZ^JP^<9q$Om2ub&}m%w%DYt8h! z-(~w{=hjFMNe0cU@VoNu+_ULO*{sr|;F0h9EAwOM?F*w6_Y646BsG;*RR92QY5)if z1%PL;DexEo+*knM^cw*1{saIV$LvlOesBZ4qqL3-05DPfS0Fq~gxmoDPeDdpMBOv{ zJjW{=^B`j+z(M0);IF_Rfj=&fgn^{X`Gj#lc7vSZV`LV@S%vgQ%u#8F$_SJ|%n0o6&?K~A%hC?AsH0PDGK#M~3CnSB<7eW&x8k}M zU`3e&FoUI4E+ZJJDvdva-Q<(ak$y1H2m@$o!dxJM)FT0VMBan;yvu5k>-)?%*jp}W zJcKf;qQi1o%TT#e4`dQV1h_!gi+CU~k^DCVLq8%j%F1}vNHWkgccC|-!Z5fA z%V^`gEkQyZ1$!Tw=fn&Jc*2?$EmRtaJ$q@;l7_KBb?|WkG#$3LFw|9jYwmnFp?-6W zF^7MR#3T_3-8fVrH!9SZG2o66gT3&0B1Hes3lXeg+(<|W+GeWdthKA6z15OJpKXV? zATB9+2H6*OIziaXCF!}HMdxz7sPFvqWJ3Z;s1So}`e~ARBgZ%8vSrhFi-IR(+MKAO zxul5d2;Vhk^KZ7puXdJs^-z#yL$%Td(0G?MD|$@zKpJ~dD62`Bf`{R#J$1mXX)hSiXhu*V15X))6?!S(kwQGoxIj>BVZN^Td$2s|p3f$FT`| zKbrPe{F=G%(bT?uR`2*tUm!>ms^)VAb8k1f^e;XEP%1hDCX5qwU5sqEZN!kjsjx69y}EkllIcSu2S7`p%?Y0=F@{G1oJuZ5oFZEjE~tM<>S!wJu~ScvcL zo8KR^x74CyCL)g<%`M|t*N@y?Idhuuj(mIKfP)_1lw?kYI8R+61&3;GWE5EsW!AVY+hMu-uk3x8H^gpN1`tjYTcz%oXNi7`_=IGn!{D)z4H&nrn)V8>2azG% z*vwhCykW1|672QvSw6$TjGPKEExrew*b5Z8Ziu0h0pb+7G?$<*KkgN350b{GPG0IM zGfz4>Hg)-YS9iQixb}D?m4tN3s>KI~9V3TP4IFhbKuJa!#qXu8_wWOfrJvAr7CxN+ z+^s66l@aR}_v?Q5&mRo4Hyv6m#qW#X<=%fj;1LM(pt2--PB(A~FytzIp2E}7kVs`W8}KS z1Y2wMk%yav9;y0ObSRN%;Hn^RJ#O#ujgD}_eDZdV zKDwyoL#$Q5jVc8o;T-dFw-mG=;@Mwldc4D_*s1&LE`|gLf%yPGFl^Y3be@BOaNk|OsjU7f3Qrs=Ux(S7(v@cPynUEUz*4i)H!3th-33wR33`@JTJwhN)W znvVJ_aYEmzmz+{``ev~2G5)F5D6puyw9!{nOHLOjYZ`->o_?9lCZx**TL}&w2r`5T z>DsJ!kzttKKBQ>S7P9yrp!Tnepb_8W-xq%Z$o!!4DFqk62)<_VaK+wpPLGEmg^t3| zcyhx3wYtt&k8(Egu>KQKhG?975QLPuibb<-lcLR!VNol@ZCjG5dOE!W#_5KSeJu-l z2BgH#iz9Np@ijz|6X9t){Dhy@X8!Bw?hMF9+)$f@$wW}R2UrL&*s%+k0pP=qI zh3|Bpo=Pxoqw88y^=%k&Yo;0>KzG5x!9wrX@hS7)*}eB-xgJ3JO{ z`a!BJ#lmnlLLU+nV_R}jK^FH>;^g?TbOgbqNVDs}&LENRzZ*SE^27v6`0*Jk{l4XE z9ze%J@9s3r5Frqkc40cF_Ty=_U*i*LvNf|FcCcqFzuZPhZ}3?nBus9 z%_hbqY=p8D?IMmrRNXQ_73GfW`jNGpPgC&FP`v;m5A{9QVVE$S zS^XWX|yFfj{hpka>pko)NCbV@$WCXE>&gqbam~! z&Rh38B#W*yEOW14-jXO4a{0X$%2nLl+^#)edtWZpsul$hRI3)t6mz0S_Fz$nC#R=5 z@niq~{d?`%T~bm~UVfal^;(J!l&GUZM+`d62t3}Es}YVEc>Hziaz96h7D=L%NfKB2 zF|xPbYFAZRIe+3>G3?#r|8TZ?e}6AyDuPPveN0xh*y*$&cbGM!X0_4oblLaO zOA1#=LpKd0qTS(auA-u%O26Xph6kRi5%r#x?#)#?eryFZoeg^?3?lYuBSUoI#DOz! z&gY211LvqhY1*2a8V#oVU{R23CytRXD|(c&tXFPbWo0ItxvZF2h;v?LWunf998eLm4+ycFQuDhe3#v7Nt6fv zp8UDBwM;`$B?|}6e?7MR#^R)FG?{f8DZSXyqg*{ae0mIJ!TZf(9v&VJ1@v@u50_g? zw6P<5_H8c<6>9cvdaOQ2IUcs0>pBG!z4sS71p(sp#QgI(sSxT~T3no*svhrX~2$e(C7cQKb9=@1J~*CugB$jo08Mbk=zoz0V?s)A|cQ*%V?-X*YVmL$qY7)RjHtx`0{e=|xUyLju# zkBGx0&$(VAmrjRu^hZgkro3F*JB!^4?4{xq-WPlTVEni>seC#bf|+Q!Dk#YIm~4~N;X+x=XZYT{G9 z#Z+bpEDB_KMFnd{?`g09`)wW$4i1zj*b%7>R2jNnJ)3K5Ys4zF1W1E4Jt8_ftG~h! zAt=$K-d-Nd@B_dE?$G;G+Gy9bnqo`F$EUY?TV?cSJ(F8U`~@*gG~nMLNzxp3$H)82 zxjSFrR2CQL{<+Wv7bzU$iy}~7U2TRNj{56_yC!KogOp-(nWG47@4lOto8iBm+~{yQ zn$Gdr{ThypReC3IpF9SL%)3yK;P4|JQ#$7af-1 zh1N1~TfChS5&~OD-mfAmbe9(w1)lbk!4c`R6NVEV9lhzfha7I)>adlYd8I1bX8)Jh zYM!!ck=J4p7XXK_M%CgMrQ8iLOkvda>T*PW?>W^iXQiiGvSoPJK~wo?#E*dW?AK2H zGDzcrG9rVLGmCLm;K5?4T4!o%3Wv{{Gb`g&T-a+?+k|^~c3FZp%{*D4V&dR=I|K!r zQP&kz(`LWg2-APO)CWAJ)=D*@*cBXLB4v$L}|Wt?@(^OBx}Mr&$C8clRi|7x3XsZySy zw)RhJA=6~sTx=a9mC2eHy>m!%3DfkINN zSp_CkH6x?EHH#MxH4kn=hrYMg`PdDo5h4s~`O&elIne#k&`=DxWAk@3pl_=VNgu!` zAV|#uQ|}~|Tv|$M>dF0cc6PQ-lZC)lKUB|Kol&1*$Ntvag~wORX?aaAuy@?gR=O@a zL14KB2S`AY<13P{?vr#RjcHh4tW-udY7#R57PH{P`HOr{D zgO+LrBT!(KH8k$QVWuq0$H#Xxm6d*1Z#ITb)mDe(N?US!I0a&L zp=V^&pvF8uKOc|GGrK#U8`lYV0~y_W_cXfvjzlBzyGz_s^#h=LfAILh ziBbizq2IkmxUqfbNvYAt^D-FXasnxnlHkwJ@vUCHy!}T>Gc%VL7Z-{3upt9rC6p?f z`)>*ycHpt)aye}74#ikb{wz?f;EszK*^3f4*&B`pr%RxnkI_U56oI?hqr3n^H8t?x zxw(#}_1pE{2nYlMCoZdCiJ&O+zUVkQJw3%{(9U19UbJ>ojRuP#k)SWGQEcbOS-*3o z5w$4{qxQ;W1ROhl?4q?ojR+JO7uVx#fmq7?($W&~;9P$GGRVc{<$0o-tpb!D5HmDi zR2P!u#!_8rwk1n5!$11XwY8Udn-)wf@gsluuDkg!`aa$p8`*#=%^G}$yoxLSfOp^1 zV4>xlzbE(JAp`F{)aUo!K1!qozP6-tdGrGFr8^6dCEd~L-kH4bd!5qtRYovK2<}~e zV5tH74UE|2FG?2zsU!%Ejn4N^d)k_ea!KO}UtE_xT1kjD$idixBBcv;MtKK!3{v$A z?nD|&v%w}ndV4u{R;FQKFw@~gj{-aRvxHkO>8d%GoByNfve3K7NFjDIz6*=r%iy%ty}X@wJ+4?YO-wL6RnQl#t=jI33I3`V4v^VM$oxJ z>+r+g7|^NOV`$=RQF`OlCtn~$SG|toTklow!R45MnHWZWVVE&~0sKY*- z?^lWRE1FF#^0AWOzIENXIA6sQy--l5vwwVgiz2LK8TX68vhN@AX?lWkOb#b~xfuJc zKZ12OG@Fh*bs%Yzz9)&Je?u%;19INsI~vfRSnP<*rHpW1W5toa{9@ukldY9O7gcRb z_D{(fE5gw)%1<#gIWHWUL&T@&^C3C)V+teT<=ZyIGJJ}T6@!2iEY>m%~BfVpT>2HGO6^4Rlt#-@9bjQ$1fg42q6ew?gxcjkM zCT|X;v*03lNBov`Y8iHIwEfH=3>O(i3a!InLi2u%w$;$)XU$)`7wgB+S^&ri_U+TA>F9Ly0?2Cl#-t z0^2md)gvlK!S5v3Iu=MOnP z>?8B^m;Eic0t?je{5}k&2Cmjy!qm)DnT$KuEb(x@Y6)*eK3lj-(YHoJ z?^l(Eh8D;BO0|gv;@x%1 Date: Wed, 14 Feb 2024 09:41:40 +0100 Subject: [PATCH 5/5] Bump version 5.3.5 (5000017) --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 13b506dc..ac2a221d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -17,8 +17,8 @@ android { defaultConfig { applicationId = "com.twofasapp" - versionName = "5.3.0" - versionCode = 5000016 + versionName = "5.3.5" + versionCode = 5000017 val versionCodeOffset = 5000000