package Ġio . uso am ic . web wallet . view Ċ Ċ import Ġio . uso am ic . web 3 kt . b ign umber . Big Number Ċ import Ġio . uso am ic . web 3 kt . b ign umber . extension . to Big Number Ċ import Ġio . uso am ic . web 3 kt . core . contract . model . Estimate Gas Option Ċ import Ġio . uso am ic . web 3 kt . core . contract . util . Coin Ċ import Ġio . uso am ic . web 3 kt . tx . model . Raw Transaction Ċ import Ġio . uso am ic . web 3 kt . util . Eth Unit Ċ import Ġio . uso am ic . web wallet . base . Application Ċ import Ġio . uso am ic . web wallet . base . Transaction View Ċ import Ġio . uso am ic . web wallet . enum cls . Asset Ċ import Ġio . uso am ic . web wallet . enum cls . Transaction Execution Status Ċ import Ġio . uso am ic . web wallet . exception . Validate Util Exception Ċ import Ġio . uso am ic . web wallet . model . Withdraw Tx Data Ċ import Ġio . uso am ic . web wallet . util . Alert Ċ import Ġio . uso am ic . web wallet . util . Validate Util Ċ import Ġjs . external s . jquery . J Query Ċ import Ġjs . external s . jquery . extension .* Ċ import Ġjs . external s . jquery . jQuery Ċ import Ġorg . w 3 c . dom . HTMLElement Ċ Ċ class ĠWith draw View ( application : ĠApplication ) Ġ: ĠTransaction View ( application ) Ġ{ ĊĠĠĠ Ġoverride Ġval Ġview Ġ= ĠjQuery ("# withdraw _ view ") ĊĠĠĠ Ġoverride Ġval Ġnav Bar Item : ĠJ Query < HTMLElement >? Ġ= ĠjQuery ("# withdraw _ item ") ĊĊĠĠĠ Ġprivate Ġval Ġaddress Input Ġ= ĠjQuery ("# withdraw _ address _ input ") ĊĠĠĠ Ġprivate Ġval Ġamount Input Ġ= ĠjQuery ("# withdraw _ amount _ input ") ĊĠĠĠ Ġprivate Ġval Ġgas Price Select Ġ= ĠjQuery ("# withdraw _ gas _ price _ input ") ĊĠĠĠ Ġprivate Ġval Ġpassword Input Ġ= ĠjQuery ("# withdraw _ password _ input ") ĊĊĠĠĠ Ġprivate Ġval Ġwithdraw Eth Btn Ġ= ĠjQuery ("# withdraw _ eth _ button ") ĊĠĠĠ Ġprivate Ġval Ġwithdraw U so Btn Ġ= ĠjQuery ("# withdraw _ uso _ button ") ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġwithdraw Eth Btn . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwithdraw ( Asset . CO IN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwithdraw U so Btn . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwithdraw ( Asset . TOKEN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġwithdraw Eth Btn . stop Loading () ĊĠĠĠĠĠĠĠ Ġwithdraw U so Btn . stop Loading () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Loading ( asset : ĠAsset ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpassword Input . clear Val () ĊĠĠĠĠĠĠĠ Ġwhen Ġ( asset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsset . CO IN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwithdraw U so Btn . disable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwithdraw Eth Btn . start Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsset . TOKEN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwithdraw U so Btn . start Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwithdraw Eth Btn . disable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstop Loading ( asset : ĠAsset ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( asset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsset . CO IN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwithdraw U so Btn . enable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwithdraw Eth Btn . stop Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsset . TOKEN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwithdraw U so Btn . stop Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwithdraw Eth Btn . enable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Exception ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Exception ( t ) ĊĠĠĠĠĠĠĠ Ġpassword Input . clear Val () ĊĠĠĠĠĠĠĠ Ġif Ġ( t Ġ! is ĠValidate Util Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Loading () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwithdraw ( asset : ĠAsset ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġs Address Ġ= Ġaddress Input . content () ĊĠĠĠĠĠĠĠ Ġval Ġs Amount Ġ= Ġamount Input . content () ĊĠĠĠĠĠĠĠ Ġval Ġs Password Ġ= Ġpassword Input . content () ĊĠĠĠĠĠĠĠ Ġval Ġs Gas Price Ġ= Ġgas Price Select . content () ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠValidate Util . validate Address ( s Address ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. validate Transfer Value ( s Amount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. validate Password ( s Password ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Loading ( asset ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Transaction Count Ġ{ Ġnonce Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Loading Text ( asset , ĠTransaction Execution Status . G AS _ PRICE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Gas Price ( s Gas Price ) Ġ{ Ġgas Price Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend With ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠWith draw Tx Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnonce Ġ= Ġnonce , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Ġ= Ġasset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Ġ= Ġs Address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġs Amount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġs Password ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgas Price Ġ= Ġgas Price ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Exception ( t ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend With ( ĊĠĠĠĠĠĠĠ Ġdata : ĠWith draw Tx Data , ĊĠĠĠĠĠĠĠ Ġgas Price : ĠBigNumber ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchange Loading Text ( data . asset , ĠTransaction Execution Status . SIGN ING ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( data . asset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsset . CO IN Ġ-> Ġsend Eth ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġdata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgas Price Ġ= Ġgas Price ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsset . TOKEN Ġ-> Ġsend U so ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġdata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgas Price Ġ= Ġgas Price ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Eth ( ĊĠĠĠĠĠĠĠ Ġdata : ĠWith draw Tx Data , ĊĠĠĠĠĠĠĠ Ġgas Price : ĠBigNumber ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġweb 3 . utils . to Wei ( data . amount , ĠE th Unit . ETHER ). to Big Number () ĊĊĠĠĠĠĠĠĠ Ġval Ġto Ġ= Ġdata . address ĊĊĠĠĠĠĠĠĠ Ġweb 3 . eth . estimate Gas ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEst imate Gas Option . Ether ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ= Ġaddress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= Ġto , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġgas Limit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= ĠRaw Transaction . create Ether Transaction ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ= Ġaddress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnonce Ġ= Ġdata . nonce , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgas Price Ġ= Ġgas Price , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgas Limit Ġ= Ġgas Limit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= Ġto , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Transaction ( Asset . CO IN , Ġtransaction , Ġdata . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. catch (:: on Exception ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend U so ( ĊĠĠĠĠĠĠĠ Ġdata : ĠWith draw Tx Data , ĊĠĠĠĠĠĠĠ Ġgas Price : ĠBigNumber ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġmethods . transfer ( data . address , ĠCoin . from Coin ( data . amount ). toString Sat ()) ĊĊĠĠĠĠĠĠĠ Ġresponse . estimate Gas ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEst imate Gas Option . Contract ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ= Ġaddress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= ĠCONTRACT _ ADDRESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġresponse . encode ABI () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Ġ{ Ġgas Limit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= ĠRaw Transaction . create Contract Transaction ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ= Ġaddress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnonce Ġ= Ġdata . nonce , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgas Price Ġ= Ġgas Price , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgas Limit Ġ= Ġgas Limit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= ĠCONTRACT _ ADDRESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġresponse . encode ABI () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Transaction ( Asset . TOKEN , Ġtransaction , Ġdata . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. catch (:: on Exception ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Transaction ( asset : ĠAsset , Ġtransaction : ĠRaw Transaction , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsend Transaction ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Ġ= Ġtransaction , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Status Changed Ġ= Ġ{ Ġstatus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Loading Text ( asset , Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Stop Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlert . show ( it . transaction Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Loading ( asset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Loading Text ( asset : ĠAsset , Ġstatus : ĠTransaction Execution Status ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Btn Ġ= Ġwhen Ġ( asset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsset . CO IN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwithdraw Eth Btn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsset . TOKEN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwithdraw U so Btn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġwhen Ġ( status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Execution Status . G AS _ PRICE Ġ-> Ġ" Loading ĠG as ĠPrice " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Execution Status . SIGN ING Ġ-> Ġ" Signing " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Execution Status . SEND ING Ġ-> Ġ" With drawing " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcurrent Btn . change Loading Text ( message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ ĠlistOf ( address Input , Ġamount Input , Ġpassword Input ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . clear Content () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠWith draw View ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġopen ( application : ĠApplication ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠWith draw View ( application ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġapplication . open ( instance !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }