package Ġpl . kw iate km ich al . mk downloader Ċ Ċ import Ġandroid . app . Download Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Environment Ċ import Ġpl . kw iate km ich al . mk downloader . header . Header Ċ import Ġpl . kw iate km ich al . mk downloader . notification . Notification Ċ import Ġpl . kw iate km ich al . mk downloader . util . Utils Ċ import Ġpl . kw iate km ich al . mk downloader . util . is Validate Url Ċ Ċ class ĠMM Request Ġ{ ĊĊĠĠĠ Ġclass ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcontext : ĠContext ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġname : ĠString Ġ= ĠConstants . DEFAULT _ NAME ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġfile Extension : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġuri : ĠUri Ġ= ĠUri . EMPTY ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġheaders : ĠMutable Map < String , ĠString > Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġnetwork Type : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Allowed : ĠBoolean ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Roaming : ĠBoolean ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġnotification : ĠNotification ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Documents Directory Destination : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis M us ics Directory Destination : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Movies Directory Destination : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis P ictures Directory Destination : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Pod casts Directory Destination : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Downloads Directory Destination : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġon MM Downloader Listener : ĠMM Downloader . On MM Downloader Listener ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( context : ĠContext ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . context Ġ= Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfor Name ( name : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfile Extension ( file Extension : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . file Extension Ġ= Ġfile Extension ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( url : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfrom ( Uri . parse ( url )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( uri : ĠUri ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . uri Ġ= Ġuri ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġwith Header ( var arg Ġheaders : ĠHeader ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . headers [ it . header ] Ġ= Ġit . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Allowed Network Types ( type : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . network Type Ġ= Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Allowed Over Meter ed ( is Allowed : ĠBoolean ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Allowed Ġ= Ġis Allowed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Allowed Over Roaming ( is Roaming : ĠBoolean ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Roaming Ġ= Ġis Roaming ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġwith Notification ( notification : ĠNotification ? Ġ= Ġnull ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . notification Ġ= Ġnotification ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġin Documents Dire c ory Destination (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Movies Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is M us ics Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Pod casts Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is P ictures Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Downloads Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Documents Directory Destination Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġin M us ics Dire c ory Destination (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Movies Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Pod casts Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is P ictures Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Downloads Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Documents Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is M us ics Directory Destination Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġin Movies Directory Destination (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is M us ics Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Pod casts Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is P ictures Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Downloads Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Documents Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Movies Directory Destination Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġin P ictures Directory Destination (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is M us ics Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Pod casts Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Downloads Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Documents Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Movies Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is P ictures Directory Destination Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġin Pod casts Directory Destination (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is M us ics Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is P ictures Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Downloads Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Documents Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Movies Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Pod casts Directory Destination Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġin Downloads Destination Destination (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is M us ics Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is P ictures Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Documents Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Movies Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Pod casts Directory Destination Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Downloads Directory Destination Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd On Mk Downloader Listener ( on MM Downloader Listener : ĠMM Downloader . On MM Downloader Listener ?): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . on MM Downloader Listener Ġ= Ġon MM Downloader Listener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġmake (): ĠDownload Manager . Request ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri . toString (). is Validate Url ( this . file Extension ) Ġ-> Ġbuild () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon MM Downloader Listener ?. onError ( MM Downloader Uri Exception ("$ uri Ġis Ġnot Ġvalid Ġuri ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbuild (): ĠDownload Manager . Request Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠDownload Manager . Request ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( headers . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . is Android N ou gat () Ġ-> Ġheaders . forEach Ġ{ Ġ( header , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add Request Header ( header , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfor Ġ(( header , Ġvalue ) Ġin Ġheaders ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add Request Header ( header , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Type ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Allowed Network Types ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Allowed ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Allowed Over Meter ed ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Roaming ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Allowed Over Roaming ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setTitle ( it . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . description . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setDescription ( it . description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Notification Visibility ( it . visibility ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Documents Directory Destination ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Documents Directory ( builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is M us ics Directory Destination ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto M us ics Directory ( builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Movies Directory Destination ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Movies Directory ( builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is P ictures Directory Destination ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto P ictures Directory ( builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Pod casts Directory Destination ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Pod casts Directory ( builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Downloads Directory Destination ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Download Directory ( builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Documents Directory Destination Ġ&& Ġ! is M us ics Directory Destination Ġ&& Ġ! is Movies Directory Destination ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! is P ictures Directory Destination Ġ&& Ġ! is Pod casts Directory Destination Ġ&& Ġ! is Downloads Directory Destination ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Download Directory ( builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbuilder ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġto Documents Directory ( builder : ĠDownload Manager . Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Download Destination ( builder , ĠEnvironment . DIRECTORY _ DOCUMENT S ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġto M us ics Directory ( builder : ĠDownload Manager . Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Download Destination ( builder , ĠEnvironment . DIRECTORY _ M US IC ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġto Movies Directory ( builder : ĠDownload Manager . Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Download Destination ( builder , ĠEnvironment . DIRECTORY _ MO VI ES ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġto P ictures Directory ( builder : ĠDownload Manager . Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Download Destination ( builder , ĠEnvironment . DIRECTORY _ PI CTURE S ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġto Pod casts Directory ( builder : ĠDownload Manager . Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Download Destination ( builder , ĠEnvironment . DIRECTORY _ POD CAST S ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġto Download Directory ( builder : ĠDownload Manager . Request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Download Destination ( builder , ĠEnvironment . DIRECTORY _ DOWNLOAD S ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġprepare Download Destination ( builder : ĠDownload Manager . Request , Ġdestination : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEnvironment . get External Storage Public Directory ( destination ). mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Destination In External Public Dir ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . prepare FileName ( this . name , Ġthis . file Extension , Ġthis . uri . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }