From a8e6c9e99beba425ab7eea840ae364ad15243546 Mon Sep 17 00:00:00 2001 From: Mondei1 Date: Mon, 29 Jun 2020 19:50:10 +0200 Subject: [PATCH] Basic schema parser implemented --- .../github/mondei1/offpass/CreateActivity.kt | 5 ++ .../com/github/mondei1/offpass/QRSchema.kt | 84 ++++++++++++++++++ .../baseline_shuffle_black_18.png | Bin 0 -> 234 bytes .../baseline_shuffle_black_24.png | Bin 0 -> 248 bytes .../baseline_shuffle_black_36.png | Bin 0 -> 314 bytes .../baseline_shuffle_black_48.png | Bin 0 -> 407 bytes .../baseline_visibility_black_18.png | Bin 0 -> 387 bytes .../baseline_visibility_black_24.png | Bin 0 -> 482 bytes .../baseline_visibility_black_36.png | Bin 0 -> 662 bytes .../baseline_visibility_black_48.png | Bin 0 -> 819 bytes .../baseline_shuffle_black_18.png | Bin 0 -> 163 bytes .../baseline_shuffle_black_24.png | Bin 0 -> 197 bytes .../baseline_shuffle_black_36.png | Bin 0 -> 248 bytes .../baseline_shuffle_black_48.png | Bin 0 -> 290 bytes .../baseline_visibility_black_18.png | Bin 0 -> 255 bytes .../baseline_visibility_black_24.png | Bin 0 -> 340 bytes .../baseline_visibility_black_36.png | Bin 0 -> 482 bytes .../baseline_visibility_black_48.png | Bin 0 -> 591 bytes .../baseline_shuffle_black_18.png | Bin 0 -> 248 bytes .../baseline_shuffle_black_24.png | Bin 0 -> 290 bytes .../baseline_shuffle_black_36.png | Bin 0 -> 407 bytes .../baseline_shuffle_black_48.png | Bin 0 -> 469 bytes .../baseline_visibility_black_18.png | Bin 0 -> 482 bytes .../baseline_visibility_black_24.png | Bin 0 -> 591 bytes .../baseline_visibility_black_36.png | Bin 0 -> 819 bytes .../baseline_visibility_black_48.png | Bin 0 -> 1108 bytes .../baseline_shuffle_black_18.png | Bin 0 -> 314 bytes .../baseline_shuffle_black_24.png | Bin 0 -> 407 bytes .../baseline_shuffle_black_36.png | Bin 0 -> 507 bytes .../baseline_shuffle_black_48.png | Bin 0 -> 602 bytes .../baseline_visibility_black_18.png | Bin 0 -> 662 bytes .../baseline_visibility_black_24.png | Bin 0 -> 819 bytes .../baseline_visibility_black_36.png | Bin 0 -> 1227 bytes .../baseline_visibility_black_48.png | Bin 0 -> 1509 bytes .../baseline_shuffle_black_18.png | Bin 0 -> 407 bytes .../baseline_shuffle_black_24.png | Bin 0 -> 469 bytes .../baseline_shuffle_black_36.png | Bin 0 -> 602 bytes .../baseline_shuffle_black_48.png | Bin 0 -> 776 bytes .../baseline_visibility_black_18.png | Bin 0 -> 819 bytes .../baseline_visibility_black_24.png | Bin 0 -> 1108 bytes .../baseline_visibility_black_36.png | Bin 0 -> 1509 bytes .../baseline_visibility_black_48.png | Bin 0 -> 1920 bytes .../main/res/drawable/baseline_shuffle_24.xml | 10 +++ .../res/drawable/baseline_visibility_24.xml | 10 +++ .../main/res/layout/fragment_text_input.xml | 10 +++ 45 files changed, 119 insertions(+) create mode 100644 app/src/main/java/com/github/mondei1/offpass/QRSchema.kt create mode 100644 app/src/main/res/drawable-hdpi/baseline_shuffle_black_18.png create mode 100644 app/src/main/res/drawable-hdpi/baseline_shuffle_black_24.png create mode 100644 app/src/main/res/drawable-hdpi/baseline_shuffle_black_36.png create mode 100644 app/src/main/res/drawable-hdpi/baseline_shuffle_black_48.png create mode 100644 app/src/main/res/drawable-hdpi/baseline_visibility_black_18.png create mode 100644 app/src/main/res/drawable-hdpi/baseline_visibility_black_24.png create mode 100644 app/src/main/res/drawable-hdpi/baseline_visibility_black_36.png create mode 100644 app/src/main/res/drawable-hdpi/baseline_visibility_black_48.png create mode 100644 app/src/main/res/drawable-mdpi/baseline_shuffle_black_18.png create mode 100644 app/src/main/res/drawable-mdpi/baseline_shuffle_black_24.png create mode 100644 app/src/main/res/drawable-mdpi/baseline_shuffle_black_36.png create mode 100644 app/src/main/res/drawable-mdpi/baseline_shuffle_black_48.png create mode 100644 app/src/main/res/drawable-mdpi/baseline_visibility_black_18.png create mode 100644 app/src/main/res/drawable-mdpi/baseline_visibility_black_24.png create mode 100644 app/src/main/res/drawable-mdpi/baseline_visibility_black_36.png create mode 100644 app/src/main/res/drawable-mdpi/baseline_visibility_black_48.png create mode 100644 app/src/main/res/drawable-xhdpi/baseline_shuffle_black_18.png create mode 100644 app/src/main/res/drawable-xhdpi/baseline_shuffle_black_24.png create mode 100644 app/src/main/res/drawable-xhdpi/baseline_shuffle_black_36.png create mode 100644 app/src/main/res/drawable-xhdpi/baseline_shuffle_black_48.png create mode 100644 app/src/main/res/drawable-xhdpi/baseline_visibility_black_18.png create mode 100644 app/src/main/res/drawable-xhdpi/baseline_visibility_black_24.png create mode 100644 app/src/main/res/drawable-xhdpi/baseline_visibility_black_36.png create mode 100644 app/src/main/res/drawable-xhdpi/baseline_visibility_black_48.png create mode 100644 app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_18.png create mode 100644 app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_36.png create mode 100644 app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_48.png create mode 100644 app/src/main/res/drawable-xxhdpi/baseline_visibility_black_18.png create mode 100644 app/src/main/res/drawable-xxhdpi/baseline_visibility_black_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/baseline_visibility_black_36.png create mode 100644 app/src/main/res/drawable-xxhdpi/baseline_visibility_black_48.png create mode 100644 app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_18.png create mode 100644 app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_36.png create mode 100644 app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_48.png create mode 100644 app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_18.png create mode 100644 app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_36.png create mode 100644 app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_48.png create mode 100644 app/src/main/res/drawable/baseline_shuffle_24.xml create mode 100644 app/src/main/res/drawable/baseline_visibility_24.xml diff --git a/app/src/main/java/com/github/mondei1/offpass/CreateActivity.kt b/app/src/main/java/com/github/mondei1/offpass/CreateActivity.kt index adadcde..563cd24 100644 --- a/app/src/main/java/com/github/mondei1/offpass/CreateActivity.kt +++ b/app/src/main/java/com/github/mondei1/offpass/CreateActivity.kt @@ -8,6 +8,7 @@ import kotlinx.android.synthetic.main.activity_create.* class CreateActivity : AppCompatActivity() { private var fragment_title: TextInput? = null private var fragment_username: TextInput? = null + private var schema: QRSchema? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -19,6 +20,10 @@ class CreateActivity : AppCompatActivity() { .replace(R.id.username, fragment_username!!) .commit() + this.schema = QRSchema() + this.schema!!.decrypted_raw = "%JtuB4O9M42%Gitea|Nicolas|542superGoOD_pW&|klier.nicolas@protonmail.com|https://nicolasklier.de:3000|()What's your favorite series%Rick and morty|(2fa)otpauth://totp/OffPass%20Test?secret=d34gfkki5dkd5knifysrpgndd5xb2c7eddwki7ya4pvoisfa5c3ko5pv&issuer=Nicolas%20Klier" + this.schema!!.parse() + setSupportActionBar(findViewById(R.id.toolbar)) setContentView(R.layout.activity_create) diff --git a/app/src/main/java/com/github/mondei1/offpass/QRSchema.kt b/app/src/main/java/com/github/mondei1/offpass/QRSchema.kt new file mode 100644 index 0000000..638be08 --- /dev/null +++ b/app/src/main/java/com/github/mondei1/offpass/QRSchema.kt @@ -0,0 +1,84 @@ +package com.github.mondei1.offpass + +import android.util.Log +import java.lang.Error +import java.util.regex.Matcher +import java.util.regex.Pattern + +class QRSchema { + + var raw: String = "" + var decrypted_raw: String = "" + + // Parsed content + lateinit var session_key: String + lateinit var title: String + lateinit var username: String + lateinit var password: String + lateinit var email: String + lateinit var website_url: String + var custom: HashMap = HashMap() // All defined custom/optional fields + var question_awnser: HashMap = HashMap() // Used for security questions + + constructor() {} + + /** + * This function will take the already set raw content and tries to parse it. + * + * @return It will return `true` if the operation was successful and `false` if otherwise. + */ + fun parse(): Boolean { + if (decrypted_raw == "") { + throw Error("Tried to parse QR-Code schema but raw content must be first decrypted! " + + "Set raw content first and then use decrypt()") + } + + // First will be to split the string into it's parts + var fields: MutableList = this.decrypted_raw.split("|").toMutableList() + + for (i in 0 until fields.size) { + // First four items have to exist and are title, username, password, URL in this order. + if (i == 0) { + // Check if there is a session key + if (fields[0].startsWith("%")) { + fields[0] = fields[0].replace("%", "") + session_key = fields[0].substring(0, 9) // Get first 10 chars, which are the + // session key + this.title = fields[0].substring(10, fields[0].length) + } else { + this.title = fields[0] + } + + this.username = fields[1] + this.password = fields[2] + this.email = fields[3] + this.website_url = fields[4] + } + + // Here are optional/custom fields + if (i > 4) { + if (fields[i].startsWith("(")) { + var closingBracket = fields[i].indexOf(")") + var key = fields[i].substring(1, closingBracket) + var value = fields[i].substring(closingBracket+1, fields[i].length) + + // We got a security question/awnser + if (key == "") { + var qa = value.split("%") + question_awnser.put(qa[0], qa[1]); + } else { + custom.put(key, value) + } + Log.i("QR-Code schema", custom.toString()) + } else { + throw Error("Custom/optional field should start with an open bracket: " + + fields[i].toString()) + } + } + } + Log.i("QR-Code schema", "Found: $session_key, $title, $username, $password, $email, $website_url. ${custom.toString()} and ${question_awnser.toString()}") + return true + + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/baseline_shuffle_black_18.png b/app/src/main/res/drawable-hdpi/baseline_shuffle_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..b4f76acfa32e990825d1568918859c2738848367 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^(jd&i1|)m0d{8fA6~GN%Ky2Rhh1THB)_eT3X4T`Kml&pB}vMcKNaV@S3&EKGFi^ zF>4lDCva8ic;qWRVUqKhd9c)eS@}7hZ#O3iem&i5;gKO_V#@N2!B8U_tx$DQz#z)rkWTf zlpT#)d;`O%hw+-ISr}zg19N(%XUxBRkKw3zOgxBV;(xLjjPIhdEc*lS9LKY@S#Mte0000fPZ!O6YU{T#FrJ|Vo6lu}A5 zoxdA)FWNe6!M6R=qgHIg9%fw8qcA&8*pqK=#R+S%`5@c{d+T9dT!T&eC#J{gQ4Dk8 z1gKRD6W|1>3Al*~s`>G@EOwj#g$Re-xIu(sTyf$StW%)~S6nzfigMsa8_G~n zXDKLuK?T)e!#|=H{YktU6t*AN)`sH7ou>ju%~ha8M;^Yu4wL}L*ZENb+}HnhlnD3Y z->fJxj#mRpk29bobw_^U)}tzUV!and6W1G2G=04vg`KmMQc5X(0J|^3oWXV3ZU6uP M07*qoM6N<$f*)FcvH$=8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/baseline_shuffle_black_48.png b/app/src/main/res/drawable-hdpi/baseline_shuffle_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..720164517d73901d2e63828ae490437ec708e86b GIT binary patch literal 407 zcmV;I0cie-P)D&v_~^J-$=!@QUAs-B5>HBZI7nuwT~XI{-SIq`NPsyw*D2S@L5e>j)+ zH9ys)rIb=iDW#NBvg-wVZMq(@AFLN9#rZo9-F%SrINc0Mi(`i*=wooG50an-+l`TU zlOZkGrvS(aiT?%;WPqf{!H^A-9tT7Biu8t^L}z_rzjYuz(uE_H&)ARap2tYYAE}CS zG)8JuAr)}ONXQ?lh(nN?6Vh3LbB)vtkjRY{a7a%LIUwnA)D@7}jh&{(AxPT|I2TJC zLBR=5aP&C!=eOVlM^$iw6PyJ*+X4!3c7APe*k^)MKzgvp8MNL09Tex=AE)^Gmf&=M zoFWpz>GRPI*FQt@HN-3q3(m#D-AKt3pcpm@&002ovPDHLkV1l)- BvC9Ae literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/baseline_visibility_black_18.png b/app/src/main/res/drawable-hdpi/baseline_visibility_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..091cabb74d8e5afe8478109b57a3ec1dd289c3ed GIT binary patch literal 387 zcmV-}0et?6P)NklA8a0me)3_}62 z2G~I@dPb`r@dXn;;b2gH_81)8Bmxm=9{P-KAf7x~5B4zyKmb}g%!ej|*DxPK^XGJE hnaaUH2^a;V003B3?Td>nI-39h002ovPDHLkV1g<`hhDqc!G7P zi9BEq+0zs^`%a|`F<7FD##$dMh(U9gX%#Vn#F(LiEW+8SVgZRUfCJKVlwBDi53Q2& zKSQXKvM_?g@Zn;+0+rC~m^LskjWk z$YY2>9YJM?qJSXnf$brjI;9D=>p@~P5R}CdVsL@TItli|i8)jYR)T%2A-0_Ix{hIE zyD}b8!8x|eW2U^;Sr{uSuWKJRv|Q!YpTdD2U0|+E%0pBc+`(54Q$(T)7(!e0I;v|; z_|R^YgPpSQf)!*>3p^o%y({7a%N-B$4i^V6hYC8%j`?Wg9u|&P9%r~*E5XH|EiEnW Y3jxQZLXcWM5dZ)H07*qoM6N<$f{~@f#Q*>R literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/baseline_visibility_black_36.png b/app/src/main/res/drawable-hdpi/baseline_visibility_black_36.png new file mode 100644 index 0000000000000000000000000000000000000000..2687675c5717713ffb65a3d24f53877eb699a236 GIT binary patch literal 662 zcmV;H0%`q;P)zkSP-j8pe&1SRNY&P31ns~zyQ+Q_+4ADUYWqjGPXkvyB zh|&QQyuiWLyF(v7Bq0ZMuQkac#*h@9&_@ob=in7b$c2317cxkt0+x^nj@X@@AQ8-v zMWX%09-^>70|l6s(83C$u*D4$sjmE$*Qg?FPuM|1@^Oz?Jt`M9feUSUER>78L!|DN zpYbu`lu<5jk1|vhlpF0bU{V#dF+>l~CRf;hF4a|lR zr3TE75pDrlQ2c+&hhy$T34A;X@uwAkYE|=SgmujKtC7UC%-WEc`_K*iko!*-W($bI zOW4EcN_mAZ!>kA|=)Q&m%&HKDDMD9PzPxi}0wTA__RzGPX{ w(8U-Y*4Uk`;9-Og9^m4eX0zFBHk-}%4Nep7#>0hVHiRP z7vK9of;X>I>pQ1=+dF@L0F~S6JLlfM{GHF|^Z9%}pU>y>`Fy@(&|PVs~Y;@A>hgh+hnm_TCkf(jB>0ewh9 zbdg2urO`nINth*?NFkQ;m_QP46vt8F3=2y$qlGF$WLHY4p>63)c-`j^Z$T6yba4E^ z)%sxJeJ|j&JBUILIqX^y1Bk*6ob(-{(1MKu+(Q(uV6}#FY1i;+KT{o|(1fe*l^3Z3 zRYgRq1KZ|8bTGtpWq?~0U@B0~q&beUQz^VC4{8~#E4St8ySw3aiV%gLNgT>0%pqHv zA&+%E?0aa3h?J`*Z8+2Ha>$$^V|YzbSRjk73NVH!^s%m?qnS3b_nFPrAWD~pTNKeS z4DL2W=>!{larj1$5T#p(Uu+M?st_&1);WVH4Ge={EGRl&Jy@SuFvY*hLR_z+$pKuT znc)utvEbR^Z3ST1j$a{4L&MQTEGTc<;wKJ&$32Kr$Km{Z#>OrnN_E4(9-*~buv@?yV z@>xq7>k2X6a@WdZT{%R`pH_gKDyw%Ka{|fUl*X=Q(1j@6!C8TY?SGC2QXkw=TUfez zmSn#xL>3N{J=9S|=H0>X1efSzY2m$U*lT6HK@x6?0%9qP9wedeafH}A#Tb$hLxf0F z0d6pd#N-thNOWIuiC=qOG3Q9(pbGJT1;ny9{6GN*Uw{w|^mg3+X6WJyMSS{>QNk(e xxJGNGfjTM(k%7y>`Fy@V{RZ-Nm8KJ-BJBVG002ovPDHLkV1iTKb$|c> literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/baseline_shuffle_black_18.png b/app/src/main/res/drawable-mdpi/baseline_shuffle_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..162c72a06d755f255dddca237b456f9f7e37f367 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@RheEKe85kP60R2}=d}o{h|63URzg z{y&ruZ_rdpxRIO0lcbmsVIT6&@{EEIud@Wx(#nP(1}-x;B%W@xkT@*B@<74r$w!Gp z1|QlS_RjR@ov!2F-B5Rl_h8T2zX7v0C{9s3Q7535A}G_(!@!{a#>jPURQFM!tqh*7 KelF{r5}E+JNi`Ax literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/baseline_shuffle_black_24.png b/app/src/main/res/drawable-mdpi/baseline_shuffle_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..bba5fa52e9d764685f2640c414ac8b539a34186f GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjJ)SO(Ar*|t5>paHG8jH)DLhkj zx?8O9ufL14`Ex*P`^n8Lj2ziYIh`y5@$TCjio6YY_wyc^pC}fP#<}d_^@TOkD^z)& zM0}F&m|G~-#~}7(nO40`TQFbS+K1;BbS$6x@ZW@v<36z>l70G|hpz}?p literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/baseline_shuffle_black_36.png b/app/src/main/res/drawable-mdpi/baseline_shuffle_black_36.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d8bee276cefd7916883ae6a813d40c492b889f GIT binary patch literal 248 zcmViem&i5;gKO_V#@N2!B8U_tx$DQz#z)rkWTf zlpT#)d;`O%hw+-ISr}zg19N(%XUxBRkKw3zOgxBV;(xLjjPIhdEc*lS9LKY@S#Mte0000X&;{2x^cV658A4I3=x>Wyyl6(^xA5RXvGk5=K(x|$S*v=6H(=P0FOZOi}uh4 z9snYM{Jmb=EC56Rc~K)ctr3&f0r?uiX^5D$E0#CV`{g+oqdX__O+-HO-I3+5+N9l% zDnEl)tX2M^&5duT-Xc#Pfc30R9z>Kg4tWq!|5@Zg#J7I4$%BYGzdVfa%ewt~%l!|>*5BmeP_{Z-~B zM+M7mCO&GCjVZ}$7i!~CRC;0{60vYAgPOXa=O#?bn622*&l&T?Ao9_2 zL#`PzTaFui-0Es@^5K>K=tD;?*R^^s&|PDD#bO`-ca|WZod^<>b9}i zO7!4c=@R0if!n&LGam1bNNRQ8Qf!y z4W1A=OYz)uOLQFgBgP1o1+LCOmY~pI;{S>^E|KedXRpbqJFii~U0d@`F+&L(u*D0y m_;Ut*++pIRxIl~@@6Zng1-ivJ(lW3B0000hDqc!G7P zi9BEq+0zs^`%a|`F<7FD##$dMh(U9gX%#Vn#F(LiEW+8SVgZRUfCJKVlwBDi53Q2& zKSQXKvM_?g@Zn;+0+rC~m^LskjWk z$YY2>9YJM?qJSXnf$brjI;9D=>p@~P5R}CdVsL@TItli|i8)jYR)T%2A-0_Ix{hIE zyD}b8!8x|eW2U^;Sr{uSuWKJRv|Q!YpTdD2U0|+E%0pBc+`(54Q$(T)7(!e0I;v|; z_|R^YgPpSQf)!*>3p^o%y({7a%N-B$4i^V6hYC8%j`?Wg9u|&P9%r~*E5XH|EiEnW Y3jxQZLXcWM5dZ)H07*qoM6N<$f{~@f#Q*>R literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/baseline_visibility_black_48.png b/app/src/main/res/drawable-mdpi/baseline_visibility_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..a71ac92af3b7888cce615002bcf178fe8dfe0135 GIT binary patch literal 591 zcmV-V0+4lo>wVi<;EI1I%Q6vI#yMG+i| zLl6YRw?Br+LcW)zE%yHW010_7@AE#9&1SQG_-wWY`nbXp0k#O=Y!KiM6MTV#v*uuk z6%vS{829*gj@6#w0IA6yKTokM-w{HNWD6g)*TM>NBDZLumOf(-QFy@$V_d*{)5in> zMClnFRLVyTQFuTXMO|PGQ8=K7QuPrlSA7PP9Lx{(_qpp zkIO?)#rp#lh=YXW>JZvCJ z1EiZkl!g_a{fpcN5Ca{gdxR*haweV_=v7;NAX@}c3X#r(RNaMr#SahzJEZGC3bRk6PuEHb&!zL%ka2I@}`wdaLM7pv0>gP9vC@qk#g@4LBQ?`}=H5WHXAT^0_jTTN;8&m8cB|YN@nmB77Mp)npA>zymhgjnehHzoC*=)8C d-s?s@003Mp>iem&i5;gKO_V#@N2!B8U_tx$DQz#z)rkWTf zlpT#)d;`O%hw+-ISr}zg19N(%XUxBRkKw3zOgxBV;(xLjjPIhdEc*lS9LKY@S#Mte0000X&;{2x^cV658A4I3=x>Wyyl6(^xA5RXvGk5=K(x|$S*v=6H(=P0FOZOi}uh4 z9snYM{Jmb=EC56Rc~K)ctr3&f0r?uiX^5D$E0#CV`{g+oqdX__O+-HO-I3+5+N9l% zDnEl)tX2M^&5duT-Xc#Pfc30R9z>Kg4tWq!|5@Zg#J7I4$%BYGzdVfa%ewD&v_~^J-$=!@QUAs-B5>HBZI7nuwT~XI{-SIq`NPsyw*D2S@L5e>j)+ zH9ys)rIb=iDW#NBvg-wVZMq(@AFLN9#rZo9-F%SrINc0Mi(`i*=wooG50an-+l`TU zlOZkGrvS(aiT?%;WPqf{!H^A-9tT7Biu8t^L}z_rzjYuz(uE_H&)ARap2tYYAE}CS zG)8JuAr)}ONXQ?lh(nN?6Vh3LbB)vtkjRY{a7a%LIUwnA)D@7}jh&{(AxPT|I2TJC zLBR=5aP&C!=eOVlM^$iw6PyJ*+X4!3c7APe*k^)MKzgvp8MNL09Tex=AE)^Gmf&=M zoFWpz>GRPI*FQt@HN-3q3(m#D-AKt3pcpm@&002ovPDHLkV1l)- BvC9Ae literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_48.png b/app/src/main/res/drawable-xhdpi/baseline_shuffle_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..5d6dc3f5ac66575e5a6ff03ef16f8cd563fb0c35 GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#F1AIbUfi&gd&Z}47fu@L;1o;Is z@T}J8|9|-T{@~v>pB-2v4Dwape?NWQO#G@W0|TRmr;B4q1>@W6rbR3PJS>5_J(-g4 z>w_<^@8wy0X~x>l(7#Ep>#x85T9uz`G?z7h-Sug&;$QC4dGc!&_s)HaOMbN-IMDlq zgXhk@N~fA_0`ht~?-&ePj|NpTu)fpQY5dLQ{b1iA(FN-@xGu!6TgEVf;jinO#ZP$U9AGwfx#Hpvw5mMr@BAcieo|_2+N@s*U@;`~F}1 zTlZ^<>g#NO-`SVKePKK6i`z_J;>FA4FW=Yyx@*JayYkU{^xmi}??2=>=^}gLm((wg z619@G0&ekF?YOK38EP%8IvC&m&e!=CY4BTTMy(iE?Ttq#8ZP(GmH2VMj#+*E`2){# zzKTj7e4%aBbTRx%OHuqpA-|t>Y%ji6?TvfSc* literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/baseline_visibility_black_18.png b/app/src/main/res/drawable-xhdpi/baseline_visibility_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..133618c9ccc27deb54ba77aab7a93151861c15c7 GIT binary patch literal 482 zcmV<80UiE{P)hDqc!G7P zi9BEq+0zs^`%a|`F<7FD##$dMh(U9gX%#Vn#F(LiEW+8SVgZRUfCJKVlwBDi53Q2& zKSQXKvM_?g@Zn;+0+rC~m^LskjWk z$YY2>9YJM?qJSXnf$brjI;9D=>p@~P5R}CdVsL@TItli|i8)jYR)T%2A-0_Ix{hIE zyD}b8!8x|eW2U^;Sr{uSuWKJRv|Q!YpTdD2U0|+E%0pBc+`(54Q$(T)7(!e0I;v|; z_|R^YgPpSQf)!*>3p^o%y({7a%N-B$4i^V6hYC8%j`?Wg9u|&P9%r~*E5XH|EiEnW Y3jxQZLXcWM5dZ)H07*qoM6N<$f{~@f#Q*>R literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/baseline_visibility_black_24.png b/app/src/main/res/drawable-xhdpi/baseline_visibility_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..a71ac92af3b7888cce615002bcf178fe8dfe0135 GIT binary patch literal 591 zcmV-V0+4lo>wVi<;EI1I%Q6vI#yMG+i| zLl6YRw?Br+LcW)zE%yHW010_7@AE#9&1SQG_-wWY`nbXp0k#O=Y!KiM6MTV#v*uuk z6%vS{829*gj@6#w0IA6yKTokM-w{HNWD6g)*TM>NBDZLumOf(-QFy@$V_d*{)5in> zMClnFRLVyTQFuTXMO|PGQ8=K7QuPrlSA7PP9Lx{(_qpp zkIO?)#rp#lh=YXW>JZvCJ z1EiZkl!g_a{fpcN5Ca{gdxR*haweV_=v7;NAX@}c3X#r(RNaMr#SahzJEZGC3bRk6PuEHb&!zL%ka2I@}`wdaLM7pv0>gP9vC@qk#g@4LBQ?`}=H5WHXAT^0_jTTN;8&m8cB|YN@nmB77Mp)npA>zymhgjnehHzoC*=)8C d-s?s@003Mp>Nep7#>0hVHiRP z7vK9of;X>I>pQ1=+dF@L0F~S6JLlfM{GHF|^Z9%}pU>y>`Fy@(&|PVs~Y;@A>hgh+hnm_TCkf(jB>0ewh9 zbdg2urO`nINth*?NFkQ;m_QP46vt8F3=2y$qlGF$WLHY4p>63)c-`j^Z$T6yba4E^ z)%sxJeJ|j&JBUILIqX^y1Bk*6ob(-{(1MKu+(Q(uV6}#FY1i;+KT{o|(1fe*l^3Z3 zRYgRq1KZ|8bTGtpWq?~0U@B0~q&beUQz^VC4{8~#E4St8ySw3aiV%gLNgT>0%pqHv zA&+%E?0aa3h?J`*Z8+2Ha>$$^V|YzbSRjk73NVH!^s%m?qnS3b_nFPrAWD~pTNKeS z4DL2W=>!{larj1$5T#p(Uu+M?st_&1);WVH4Ge={EGRl&Jy@SuFvY*hLR_z+$pKuT znc)utvEbR^Z3ST1j$a{4L&MQTEGTc<;wKJ&$32Kr$Km{Z#>OrnN_E4(9-*~buv@?yV z@>xq7>k2X6a@WdZT{%R`pH_gKDyw%Ka{|fUl*X=Q(1j@6!C8TY?SGC2QXkw=TUfez zmSn#xL>3N{J=9S|=H0>X1efSzY2m$U*lT6HK@x6?0%9qP9wedeafH}A#Tb$hLxf0F z0d6pd#N-thNOWIuiC=qOG3Q9(pbGJT1;ny9{6GN*Uw{w|^mg3+X6WJyMSS{>QNk(e xxJGNGfjTM(k%7y>`Fy@V{RZ-Nm8KJ-BJBVG002ovPDHLkV1iTKb$|c> literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/baseline_visibility_black_48.png b/app/src/main/res/drawable-xhdpi/baseline_visibility_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..8c736c72fe30aea28a89221a2436b59f02a4b006 GIT binary patch literal 1108 zcmV-a1grarP)E#~6D^%7hpohg8qzd z8P-ap>?Wqek%tNPO6x)aR`Rfc#Owh@rOm+#60;Rt8`I7+BxWOM=3okm*%A&;k_#Ua zqaChrs;(8Lqy-$P=HLMmvldR>H6&*DP;CK;*$`GznvQPMG-4JwqyjovV1?~FA2VFR zg=r2}X?UW`2o?7D1(@XF&T!riF+?6Fl@->5SM$$iZ8#h$C zQ_118`d=KKq2YAkDV>?dG9F>DLL_rBrm14eC4Gh+V z3y6XT990{lU~Or8I7C#A;w@_Zn9;w1Sh#K|K@@}rThtju!4e16f+%SqssTjF6{6}v zlvH8d+TtJLLzK)c4!qwmstHk4L{u*jB|f4$hbXGp9{u<HgDc{R{^{SmzLl*YDZTc*16kPuH*s(|Y;Bwc6mDU6@GPAHRyex4`dq9( zAMeosoqX*HQO1|LgT!nD$M}w3|J_4g={IWEN&XU67bbO&oQ`&A!lav|e_5-h@MbK4 z3zI4bF3eMuU{X=xb>t3bh_zeoorysejPQiu!xe*%0ZK4WXUEk;>^bn27i9hP7v4G4 zawYL zl)ha23=dYSD&3z1=*Bdk<}kpU(#S8tY94%uf(<$-;?PRyBT#(3=pqq0m_QWy7~m3> z508BjRWvZd8lq^3MApF`l2JP}km%}ofn>}xejpX)FhU4Pxi|FTAa#}S8fJIbSh8~6xg-oHO$ zhzqk5>~}ew;~Ha3@rV_+*nQY4ZsFq(rnp5PRX9jp|Js8C5&!@I073s>wfPZ!O6YU{T#FrJ|Vo6lu}A5 zoxdA)FWNe6!M6R=qgHIg9%fw8qcA&8*pqK=#R+S%`5@c{d+T9dT!T&eC#J{gQ4Dk8 z1gKRD6W|1>3Al*~s`>G@EOwj#g$Re-xIu(sTyf$StW%)~S6nzfigMsa8_G~n zXDKLuK?T)e!#|=H{YktU6t*AN)`sH7ou>ju%~ha8M;^Yu4wL}L*ZENb+}HnhlnD3Y z->fJxj#mRpk29bobw_^U)}tzUV!and6W1G2G=04vg`KmMQc5X(0J|^3oWXV3ZU6uP M07*qoM6N<$f*)FcvH$=8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_24.png b/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..720164517d73901d2e63828ae490437ec708e86b GIT binary patch literal 407 zcmV;I0cie-P)D&v_~^J-$=!@QUAs-B5>HBZI7nuwT~XI{-SIq`NPsyw*D2S@L5e>j)+ zH9ys)rIb=iDW#NBvg-wVZMq(@AFLN9#rZo9-F%SrINc0Mi(`i*=wooG50an-+l`TU zlOZkGrvS(aiT?%;WPqf{!H^A-9tT7Biu8t^L}z_rzjYuz(uE_H&)ARap2tYYAE}CS zG)8JuAr)}ONXQ?lh(nN?6Vh3LbB)vtkjRY{a7a%LIUwnA)D@7}jh&{(AxPT|I2TJC zLBR=5aP&C!=eOVlM^$iw6PyJ*+X4!3c7APe*k^)MKzgvp8MNL09Tex=AE)^Gmf&=M zoFWpz>GRPI*FQt@HN-3q3(m#D-AKt3pcpm@&002ovPDHLkV1l)- BvC9Ae literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_36.png b/app/src/main/res/drawable-xxhdpi/baseline_shuffle_black_36.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f293e4a894951e358fad7e58d64b2ec081dfe8 GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz1|<8_!p|}=Fdp)BaSW+oe0!HMjX6=E?V%&1 ztpoq%Xc5*g9F{@+0S^2EERK8vKrRET$nB#H5`tlAPbz;hOti0Lk>1GZIY|YEqQ32U zS9{m_%e&OO_jjcp?mh79?BO~G>E@};W?bC2EOas!Z&+aZCPYRo>hQd4a~E!9Y&K)z ziQ2d9y=20LSJ#VvGTjnb6XPJ=G?hEUc|#FnE=QQ&JI1%gcauLG|I6Vw<9<6KL-u^x zx#Ms3cKC5;$ZpWvzk@HMc7vWHcgEfgSzCCb^w)6dF4%fl>w;0n*$rGqywYf=TI);MNtXj^>n7QeKXx zrq_f*H{>;hCF^e3B$r_t#uui&MJl`TD(~83Q3<8at2c^8^j`2;rs4T!AztV6$qIK2X1CNswPK zgT`u}{{PPppZ_lM`?`bFK;K{i?C@Cfg>LZS6uk<$Ru0 zD@=Uf=(3MpP;!Adr|3`lCYMsPz`4F5--UJ8+jR)&u1*uson@=#@}xSX)G0&(3?b=#lH@<=tICrk+-u zN%gK36&K&U#1NFYxa-cNmy4WS%&T^-V3_zYlTqnPaz{YFqLXdgi&wYosy!}lO`mPM zq~q(4qr(0+deN5`^=}X7h{F?1J;GOd9+iUOZ{T_M)kZ=fZdX zSAjp3jx7G<+Ts4RTcH1xxT4%teJ2~O=pz*&>s}nH2wAQJ41Z80T+&bb>>EFY<$*3J Og?PI9xvXzkSP-j8pe&1SRNY&P31ns~zyQ+Q_+4ADUYWqjGPXkvyB zh|&QQyuiWLyF(v7Bq0ZMuQkac#*h@9&_@ob=in7b$c2317cxkt0+x^nj@X@@AQ8-v zMWX%09-^>70|l6s(83C$u*D4$sjmE$*Qg?FPuM|1@^Oz?Jt`M9feUSUER>78L!|DN zpYbu`lu<5jk1|vhlpF0bU{V#dF+>l~CRf;hF4a|lR zr3TE75pDrlQ2c+&hhy$T34A;X@uwAkYE|=SgmujKtC7UC%-WEc`_K*iko!*-W($bI zOW4EcN_mAZ!>kA|=)Q&m%&HKDDMD9PzPxi}0wTA__RzGPX{ w(8U-Y*4Uk`;9-Og9^m4eX0zFBHk-}%4Nep7#>0hVHiRP z7vK9of;X>I>pQ1=+dF@L0F~S6JLlfM{GHF|^Z9%}pU>y>`Fy@(&|PVs~Y;@A>hgh+hnm_TCkf(jB>0ewh9 zbdg2urO`nINth*?NFkQ;m_QP46vt8F3=2y$qlGF$WLHY4p>63)c-`j^Z$T6yba4E^ z)%sxJeJ|j&JBUILIqX^y1Bk*6ob(-{(1MKu+(Q(uV6}#FY1i;+KT{o|(1fe*l^3Z3 zRYgRq1KZ|8bTGtpWq?~0U@B0~q&beUQz^VC4{8~#E4St8ySw3aiV%gLNgT>0%pqHv zA&+%E?0aa3h?J`*Z8+2Ha>$$^V|YzbSRjk73NVH!^s%m?qnS3b_nFPrAWD~pTNKeS z4DL2W=>!{larj1$5T#p(Uu+M?st_&1);WVH4Ge={EGRl&Jy@SuFvY*hLR_z+$pKuT znc)utvEbR^Z3ST1j$a{4L&MQTEGTc<;wKJ&$32Kr$Km{Z#>OrnN_E4(9-*~buv@?yV z@>xq7>k2X6a@WdZT{%R`pH_gKDyw%Ka{|fUl*X=Q(1j@6!C8TY?SGC2QXkw=TUfez zmSn#xL>3N{J=9S|=H0>X1efSzY2m$U*lT6HK@x6?0%9qP9wedeafH}A#Tb$hLxf0F z0d6pd#N-thNOWIuiC=qOG3Q9(pbGJT1;ny9{6GN*Uw{w|^mg3+X6WJyMSS{>QNk(e xxJGNGfjTM(k%7y>`Fy@V{RZ-Nm8KJ-BJBVG002ovPDHLkV1iTKb$|c> literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_36.png b/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_36.png new file mode 100644 index 0000000000000000000000000000000000000000..e01818ead5bebc3bfc63452b80ee4d6f9f4b62d7 GIT binary patch literal 1227 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz3?z5#SpFYK9S-mbaRt&t9XJ%MRsj0Ju_VYZ zn1MyXz#%%le)9bO#nqGhd#W2Iq_bE z>HdeM)vi_7`lUW38Z6QO&i_HnWKsTOJ{!&NKUvjsD=utaG26_o^T-;z18*-m;p3c^qtmra z(IUcs>i;tiqJi^vu70%YRm-9v_VAWhBBok97A?%K%;^WFP->@xY&w*{r7x6~V>Y8-=(6dV&;m2}Y-+8SL zF6571>T#6Cy?B?WuKV%ZY$2&n;=_(JX~J!O?qj`FUTf4H9?JGV1qQQPW$`FjEb8`dTV8k#4}4%&EVr>tmj zYS8p)t$L=Gb6)$&vIm~p_?&-52E#kA*PMGjPS(AQn6Y;C(z5>7_Ia&^CgrDMW7qo4 zD=67vb>f4=%$-Ns=WBF7K9TXUS;cRj=IsZI-^sdO6LUY7ntP2+U9i@M`<9q%|Dly} z7OTZIUbQQ9z3l$lIWg+y|ByLv3)SA5c<;XR#b>p}^^>m28?P*ADwYh6<~I#h-R30D zXXV@#Ci=d8qTxDYuev__*ZV$g)mwMsoJJKeD%mG5auQv&_0q4)rZQ8uKK{Wi!uEo4S6xbyk$^ijj_{t3_s*AE~r2Qw}Sv1|> qX1dq<&cnZx1YRmYa?gYG@8-NWTyJr|XE+Edl004gT-G@yGywoGp5fyF literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_48.png b/app/src/main/res/drawable-xxhdpi/baseline_visibility_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..874638e7095d767518a95969b4f7ac9ca7ec247f GIT binary patch literal 1509 zcmdUv`#%#30L3Tcu6Ye}EtXa{k6AL*EjMJ0YGh{eh{mqh!i^}8k%`c-(Iji0dF;Vw zx*uY@m77OilhMb}!z+)gJ0bZ9g|2?M_kXzObI$qxe117}cegWYU_CGZ08l%37VELg z{O;W^S*ZH;34I23yv&@bu0uC`<|G@&X1z~;5LV$E;I32bq^a^i)1$d0GNLc zi}6fQSbRO|Ajd(Kr)Yefc3l2}Tu8O}Z$p!omT$yTml$ZM1q5HZ%=x9xs4bwY;Yi=V z)}ePz(`P$^OiO!%iGT2d?MNFsZIkUtJ08xa&OZ?;-axf@Mfl1S*F?_RG&-fOA5}9+ zo5?!9dRb4Q9Z`2S5X|8bKAW;yljJ$oa`iP=u83y-ctg_bfm(Ek z!kbOD=`I8zA!*%8f3l1CYs$h0AU!$AV&#VJ`h3MkNfw%QDGXmk|jruQ*r z5eUBZU%u9()xwqix}5^=GlSt>D%7KU##Gn9VuS~mq^V%qnG*w&dqfRAPejVE%Z3#b za#D4o{G1*`XCaU(<_U~_UfLmP^bK$(sK;X=H5IAkTXKh2F?&|~B;{s-pVi!Ns2Au=$I$Z2VCUw&Bg#E?@37C6f zK%)_I;1*Ozo)S3XV+yss-y~$OP(u8zj%E-_sy7qP!x&6MhV#`NR+rk_ZUcqOU?vDQ z-aw0FbcIX=557POrk{jnrBz~lxw&yKo7?x9Lv0WhIHAd&E@<*Jys)M$ucBjkeF2V_ ziW==~(wm@e99@Qv>d3ehuIqaKo)0#egpN35U(?CFPOsJPFFwl&tMPJ+_?T;pRpf-q(x=y9d`qV>!RC_1v6||fuiHx&hqFNKgmE;m5#}&sQD&v_~^J-$=!@QUAs-B5>HBZI7nuwT~XI{-SIq`NPsyw*D2S@L5e>j)+ zH9ys)rIb=iDW#NBvg-wVZMq(@AFLN9#rZo9-F%SrINc0Mi(`i*=wooG50an-+l`TU zlOZkGrvS(aiT?%;WPqf{!H^A-9tT7Biu8t^L}z_rzjYuz(uE_H&)ARap2tYYAE}CS zG)8JuAr)}ONXQ?lh(nN?6Vh3LbB)vtkjRY{a7a%LIUwnA)D@7}jh&{(AxPT|I2TJC zLBR=5aP&C!=eOVlM^$iw6PyJ*+X4!3c7APe*k^)MKzgvp8MNL09Tex=AE)^Gmf&=M zoFWpz>GRPI*FQt@HN-3q3(m#D-AKt3pcpm@&002ovPDHLkV1l)- BvC9Ae literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_24.png b/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..5d6dc3f5ac66575e5a6ff03ef16f8cd563fb0c35 GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#F1AIbUfi&gd&Z}47fu@L;1o;Is z@T}J8|9|-T{@~v>pB-2v4Dwape?NWQO#G@W0|TRmr;B4q1>@W6rbR3PJS>5_J(-g4 z>w_<^@8wy0X~x>l(7#Ep>#x85T9uz`G?z7h-Sug&;$QC4dGc!&_s)HaOMbN-IMDlq zgXhk@N~fA_0`ht~?-&ePj|NpTu)fpQY5dLQ{b1iA(FN-@xGu!6TgEVf;jinO#ZP$U9AGwfx#Hpvw5mMr@BAcieo|_2+N@s*U@;`~F}1 zTlZ^<>g#NO-`SVKePKK6i`z_J;>FA4FW=Yyx@*JayYkU{^xmi}??2=>=^}gLm((wg z619@G0&ekF?YOK38EP%8IvC&m&e!=CY4BTTMy(iE?Ttq#8ZP(GmH2VMj#+*E`2){# zzKTj7e4%aBbTRx%OHuqpA-|t>Y%ji6?TvfSc* literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_36.png b/app/src/main/res/drawable-xxxhdpi/baseline_shuffle_black_36.png new file mode 100644 index 0000000000000000000000000000000000000000..c61568309b736e512a2365def23129fc733c9d4f GIT binary patch literal 602 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=>;rs4T!AztV6$qIK2X1CNswPK zgT`u}{{PPppZ_lM`?`bFK;K{i?C@Cfg>LZS6uk<$Ru0 zD@=Uf=(3MpP;!Adr|3`lCYMsPz`4F5--UJ8+jR)&u1*uson@=#@}xSX)G0&(3?b=#lH@<=tICrk+-u zN%gK36&K&U#1NFYxa-cNmy4WS%&T^-V3_zYlTqnPaz{YFqLXdgi&wYosy!}lO`mPM zq~q(4qr(0+deN5`^=}X7h{F?1J;GOd9+iUOZ{T_M)kZ=fZdX zSAjp3jx7G<+Ts4RTcH1xxT4%teJ2~O=pz*&>s}nH2wAQJ41Z80T+&bb>>EFY<$*3J Og?PI9xvX15>c4i(^Oy0Y?Sz2zIz+Px0i8awuRGW}?J9j(v7 zz@@amRqRO}x9*9*Vo?)*>uyo_9-ZO%Zu^C%JNXM)ciwm6F51s3qVjLIje^FBzuUh* zPi6=Z__4m!NQ6Vfo)6SA#|@~bK4!x2cBa3Mj?bQN)AaaTNep7#>0hVHiRP z7vK9of;X>I>pQ1=+dF@L0F~S6JLlfM{GHF|^Z9%}pU>y>`Fy@(&|PVs~Y;@A>hgh+hnm_TCkf(jB>0ewh9 zbdg2urO`nINth*?NFkQ;m_QP46vt8F3=2y$qlGF$WLHY4p>63)c-`j^Z$T6yba4E^ z)%sxJeJ|j&JBUILIqX^y1Bk*6ob(-{(1MKu+(Q(uV6}#FY1i;+KT{o|(1fe*l^3Z3 zRYgRq1KZ|8bTGtpWq?~0U@B0~q&beUQz^VC4{8~#E4St8ySw3aiV%gLNgT>0%pqHv zA&+%E?0aa3h?J`*Z8+2Ha>$$^V|YzbSRjk73NVH!^s%m?qnS3b_nFPrAWD~pTNKeS z4DL2W=>!{larj1$5T#p(Uu+M?st_&1);WVH4Ge={EGRl&Jy@SuFvY*hLR_z+$pKuT znc)utvEbR^Z3ST1j$a{4L&MQTEGTc<;wKJ&$32Kr$Km{Z#>OrnN_E4(9-*~buv@?yV z@>xq7>k2X6a@WdZT{%R`pH_gKDyw%Ka{|fUl*X=Q(1j@6!C8TY?SGC2QXkw=TUfez zmSn#xL>3N{J=9S|=H0>X1efSzY2m$U*lT6HK@x6?0%9qP9wedeafH}A#Tb$hLxf0F z0d6pd#N-thNOWIuiC=qOG3Q9(pbGJT1;ny9{6GN*Uw{w|^mg3+X6WJyMSS{>QNk(e xxJGNGfjTM(k%7y>`Fy@V{RZ-Nm8KJ-BJBVG002ovPDHLkV1iTKb$|c> literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_24.png b/app/src/main/res/drawable-xxxhdpi/baseline_visibility_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..8c736c72fe30aea28a89221a2436b59f02a4b006 GIT binary patch literal 1108 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 RhcbUSHz%B9lf%`Ve*lG0EaU(H literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/baseline_shuffle_24.xml b/app/src/main/res/drawable/baseline_shuffle_24.xml new file mode 100644 index 0000000..2469a90 --- /dev/null +++ b/app/src/main/res/drawable/baseline_shuffle_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/baseline_visibility_24.xml b/app/src/main/res/drawable/baseline_visibility_24.xml new file mode 100644 index 0000000..1618495 --- /dev/null +++ b/app/src/main/res/drawable/baseline_visibility_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/fragment_text_input.xml b/app/src/main/res/layout/fragment_text_input.xml index 5519ced..3541b0e 100644 --- a/app/src/main/res/layout/fragment_text_input.xml +++ b/app/src/main/res/layout/fragment_text_input.xml @@ -1,5 +1,6 @@ + + \ No newline at end of file