/* Ċ Ġ* ĠCreated Ġby ĠE du ard ĠZ ay del Ġon Ġ 1 / 4 / 2 0 1 9 Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 9 ĠW aves ĠPlatform . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ Ċ package Ġcom . waves platform . wallet . v 2 . ui . auth . pass code . enter Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . View Ċ import Ġm oxy . presenter . Inject Presenter Ċ import Ġm oxy . presenter . Provide Presenter Ċ import Ġcom . waves platform . wallet . App Ċ import Ġcom . waves platform . wallet . R Ċ import Ġcom . waves platform . wallet . v 2 . util . Prefs Util Ċ import Ġcom . waves platform . wallet . v 2 . data . Constants Ċ import Ġcom . waves platform . wallet . v 2 . ui . auth . fingerprint . Fingerprint Auth Dialog Fragment Ċ import Ġcom . waves platform . wallet . v 2 . ui . auth . new _ account . New Account Activity Ċ import Ġcom . waves platform . wallet . v 2 . ui . auth . pass code . enter . use _ account _ password . Use Account Password Activity Ċ import Ġcom . waves platform . wallet . v 2 . ui . base . view . Base Activity Ċ import Ġcom . waves platform . wallet . v 2 . ui . custom . Pass Code Entry Key pad Ċ import Ġcom . waves platform . wallet . v 2 . util .* Ċ import Ġde . ad ors ys . android . secure storage library . Secure Preferences Ċ import Ġkotlinx . android . synt hetic . main . activity _ enter _ pass code .* Ċ import Ġpers . v ictor . ext . click Ċ import Ġpers . v ictor . ext . inflate Ċ import Ġpers . v ictor . ext . vis iable Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠEnter Pass Code Activity Ġ: ĠBase Activity (), ĠEnter Pass code View Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ Inject Presenter ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠEnter Pass Code Presenter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfingerprint Dialog : ĠF ingerprint Auth Dialog Fragment ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġguid : ĠString ĊĠĠĠ Ġprivate Ġvar Ġuse Fingerprint : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Provide Presenter ĊĠĠĠ Ġfun Ġprovide Presenter (): ĠEnter Pass Code Presenter Ġ= Ġpresenter ĊĊĠĠĠ Ġoverride Ġfun Ġconfig Layout Res () Ġ= ĠR . layout . activity _ enter _ pass code ĊĊĠĠĠ Ġoverride Ġfun Ġask Pass Code () Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( R . anim . null _ animation , ĠR . anim . null _ animation ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Ready ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset StatusBar Color ( R . color . white ) ĊĠĠĠĠĠĠĠ Ġset NavigationBar Color ( R . color . white ) ĊĊĠĠĠĠĠĠĠ Ġval Ġis Process Set Fingerprint Ġ= Ġintent . has Extra ( KEY _ INT ENT _ PROCESS _ SET _ F ING ER PRINT ) ĊĠĠĠĠĠĠĠ Ġval Ġis Available Ġ= ĠF ingerprint Auth Dialog Fragment . is Available ( this ) ĊĠĠĠĠĠĠĠ Ġguid Ġ= Ġget Guid () ĊĊĠĠĠĠĠĠĠ Ġuse Fingerprint Ġ= Ġis Available Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! is Process Set Fingerprint Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! TextUtils . isEmpty ( guid ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . access Manager . is Guid Use F inger Print ( guid ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Enter Pass Code Presenter . over Max Wrong Pass Codes ( guid )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Use Password Screen ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtext _ use _ acc _ password . click Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Use Password Screen ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpass _ key pad . is Fingerprint Available ( use Fingerprint ) ĊĊĠĠĠĠĠĠĠ Ġpass _ key pad . attach Dot s ( p dl _ dots ) ĊĠĠĠĠĠĠĠ Ġpass _ key pad . set Pad Clicked Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠPass Code Entry Key pad . On Pin Entry Pad Clicked Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Pass Code Entered ( pass Code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( pass Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fingerprint Clicked () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( App . access Manager . is Use F inger Print ( guid )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow F inger Print () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( use Fingerprint ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Secure Preferences . contains ( guid Ġ+ ĠKEY _ INT ENT _ PASS _ CODE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpass _ key pad . is Fingerprint Available ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfingerprint Dialog Ġ= ĠF ingerprint Auth Dialog Fragment . newInstance ( get Guid ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfingerprint Dialog . set F inger Print Dialog Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠF ingerprint Auth Dialog Fragment . F inger Print Dialog Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess Re cognized Fingerprint ( pass Code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( pass Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fingerprint Locked ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpass _ key pad . is Fingerprint Available ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Show ErrorMessage ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error ( message , ĠR . id . content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfingerprint Dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Show Message ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Message ( message , ĠR . id . content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfingerprint Dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow F inger Print () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( guid )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit From Screen () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( KEY _ INT ENT _ GUID )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext _ title . text Ġ= ĠApp . access Manager . get Wallet Name ( guid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext _ subtitle . text Ġ= ĠApp . access Manager . get Wallet Address ( guid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext _ subtitle . vis iable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogout . vis iable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogout . click Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear And Logout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Toolbar ( toolbar _ view , Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠR . drawable . ic _ toolbar _ back _ black ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Use Password Screen ( after Over Attempts : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġguid Ġ= Ġget Guid () ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( guid )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrestart App () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Activity < Use Account Password Activity >( REQUEST _ USE _ PASSWORD _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( KEY _ INT ENT _ GUID , Ġguid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( KEY _ AFTER _ OVER _ AT TEMP TS , Ġafter Over Attempts ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Guid (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( intent . has Extra ( KEY _ INT ENT _ GUID )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . extras . getString ( KEY _ INT ENT _ GUID , Ġ"") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! TextUtils . isEmpty ( App . access Manager . getLast LoggedIn Guid ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp . access Manager . getLast LoggedIn Guid () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate ( pass Code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Network Connection ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow ProgressBar ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . validate ( get Guid (), Ġpass Code ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpass _ key pad . pass Codes Not Matches () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonSuccess Validate Pass Code ( password : ĠString , Ġpass Code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( use Fingerprint Ġ&& Ġ! Secure Preferences . contains ( guid Ġ+ ĠKEY _ INT ENT _ PASS _ CODE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSecure Preferences . setValue ( guid Ġ+ ĠKEY _ INT ENT _ PASS _ CODE , Ġpass Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs Util . remove Value ( guid , ĠP refs Util . KEY _ ENCRYPT ED _ PIN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġshow ProgressBar ( false ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġdata . putExtra ( New Account Activity . KEY _ INT ENT _ PASSWORD , Ġpassword ) ĊĠĠĠĠĠĠĠ Ġdata . putExtra ( KEY _ INT ENT _ GUID , Ġget Guid ()) ĊĠĠĠĠĠĠĠ Ġdata . putExtra ( KEY _ INT ENT _ PASS _ CODE , Ġpass Code ) ĊĠĠĠĠĠĠĠ Ġset Result ( Constants . RESULT _ OK , Ġdata ) ĊĠĠĠĠĠĠĠ ĠApp . access Manager . set Wallet ( get Guid (), Ġpassword ) ĊĠĠĠĠĠĠĠ Ġexit From Screen () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Fail Validate Pass Code ( over Max Wrong Pass Code : ĠBoolean , ĠerrorMessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow ProgressBar ( false ) ĊĠĠĠĠĠĠĠ Ġif Ġ( over Max Wrong Pass Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpass _ key pad . pass Codes Not Matches () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Request Password Dialog () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( errorMessage )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpass _ key pad . pass Codes Not Matches () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpass _ key pad . pass Codes Not Matches () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error ( getString ( R . string . unexpected _ error ) Ġ+ Ġ" Ġ($ errorMessage )", ĠR . id . content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow F inger Print () Ġ{ ĊĠĠĠĠĠĠĠ Ġfingerprint Dialog . is Cancel able Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! fingerprint Dialog . is Added ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfingerprint Dialog . show ( support FragmentManager , Ġfingerprint Dialog :: class . java . simple Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( KEY _ INT ENT _ GUID ) Ġ&& Ġ! intent . has Extra ( KEY _ INT ENT _ USE _ BACK _ FOR _ EXIT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Constants . RESULT _ C ANCE LED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit From Screen () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexit From Screen () Ġ{ ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( R . anim . null _ animation , ĠR . anim . slide _ out _ down ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Request Password Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalert Dialog Ġ= ĠAlertDialog . Builder ( this ). create () ĊĠĠĠĠĠĠĠ Ġalert Dialog . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġalert Dialog . setTitle ( getString ( R . string . enter _ pass code _ too _ many _ attempts _ dialog _ title )) ĊĠĠĠĠĠĠĠ Ġalert Dialog . setView ( getDescription View ()) ĊĠĠĠĠĠĠĠ Ġalert Dialog . set Button ( AlertDialog . BUTTON _ POSITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . enter _ pass code _ too _ many _ attempts _ dialog _ positive _ btn _ txt )) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Use Password Screen ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalert Dialog . set Button ( AlertDialog . BUTTON _ NEGATIVE , ĠgetString ( R . string . enter _ pass code _ too _ many _ attempts _ dialog _ negative _ btn _ txt )) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear And Logout () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġalert Dialog . show () ĊĠĠĠĠĠĠĠ Ġalert Dialog . make Styled () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġneed To Show Network Message (): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġon Network Connection Changed ( network Connected : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Network Connection Changed ( network Connected ) ĊĠĠĠĠĠĠĠ Ġpass _ key pad . set Enable ( network Connected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetDescription View (): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinf late ( R . layout . content _ many _ at te pm ts ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ USE _ PASSWORD _ CODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ C ANCE LED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data ?. getBoolean Extra ( KEY _ AFTER _ OVER _ AT TEMP TS , Ġfalse ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear And Logout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ INT ENT _ PASS _ CODE Ġ= Ġ" intent _ pass _ code " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ INT ENT _ GUID Ġ= Ġ" intent _ guid " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ AFTER _ OVER _ AT TEMP TS Ġ= Ġ" after _ over _ attempts " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ INT ENT _ PROCESS _ SET _ F ING ER PRINT Ġ= Ġ" intent _ process _ set _ fingerprint " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ INT ENT _ USE _ BACK _ FOR _ EXIT Ġ= Ġ" intent _ use _ back _ for _ exit " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREQUEST _ ENTER _ PASS _ CODE Ġ= Ġ 5 5 5 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREQUEST _ USE _ PASSWORD _ CODE Ġ= Ġ 7 7 7 ĊĠĠĠ Ġ} Ċ }