package Ġcom . kl ash a . android . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . kl ash a . android . databinding . Activity O tp Binding Ċ Ċ internal Ġclass ĠO tp Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity O tp Binding ĊĠĠĠ Ġprivate Ġvar Ġo tp : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġis O tp : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġtransaction Credentials : ĠTransaction Credentials Ġ= ĠTransaction Credentials . getInstance () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity O tp Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġaction Bar ?. title Ġ= Ġ" OTP " ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġintent . getString Extra (" message ") ĊĠĠĠĠĠĠĠ Ġbinding . otp Message . text Ġ= ĠSp ann able StringBuilder ( message ) ĊĊĠĠĠĠĠĠĠ Ġbinding . button 0 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Action (' 0 ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . button 1 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Action (' 1 ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . button 2 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Action (' 2 ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . button 3 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Action (' 3 ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . button 4 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Action (' 4 ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . button 5 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Action (' 5 ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . button 6 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Action (' 6 ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . button 7 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Action (' 7 ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . button 8 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Action (' 8 ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . button 9 . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Action (' 9 ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . button Back . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġo tp . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( length Ġ> Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo tp Ġ= Ġo tp . slice ( 0 Ġuntil Ġlength Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill O tp Space () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . button Ok . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubmit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbutton Action ( part O tp : ĠChar ){ ĊĠĠĠĠĠĠĠ Ġo tp Ġ+= Ġpart O tp ĊĠĠĠĠĠĠĠ Ġfill O tp Space () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfill O tp Space (){ ĊĠĠĠĠĠĠĠ Ġbinding . otp EditText . text Ġ= ĠSp ann able StringBuilder ( otp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubmit (){ ĊĠĠĠĠĠĠĠ Ġtransaction Credentials . otp Ġ= Ġo tp ĊĠĠĠĠĠĠĠ Ġis O tp Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġsynchronized ( transaction Credentials ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Credentials . notify () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġif Ġ(! is O tp ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Credentials . pin Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( transaction Credentials ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Credentials . notify () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }