/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 . ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . google . android . apps . s ant at rack er . tracker . time Ċ Ċ import Ġcom . google . android . apps . s ant at rack er . config . Config Ċ import Ġjava . util . Calendar Ċ import Ġjava . util . G regorian Calendar Ċ import Ġjava . util . Locale Ċ import Ġjava . util . concurrent . Executor Ċ Ċ /** Ċ Ġ* ĠImplementation Ġof Ġ[ Clock ] Ġwhose Ġtime Ġcan Ġbe Ġadjusted Ġby ĠFirebase ĠRemote ĠConfig Ċ Ġ* Ġ( through Ġ[ Config ] Ġclass ). Ċ Ġ*/ Ċ open Ġclass ĠOffset table Clock ( private Ġval Ġconfig : ĠConfig , Ġexecutor : ĠExecutor ) Ġ: ĠClock Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Offset table Clock " ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcached Calendar : ĠCalendar ? Ġ= Ġnull Ġ// ĠOptimization ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTIME _ FORMAT Ġ= Ġ"% 0 2 d :% 0 2 d " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġval Ġtime Offset : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġconfig . get ( Config . TIME _ OFFSET ) ĊĊĠĠĠ Ġoverride Ġfun Ġnow Millis (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnow Millis Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġreturn Ġnow Millis Ġ+ Ġtime Offset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġformat Time ( timestamp : ĠLong ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cached Calendar Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcached Calendar Ġ= ĠG regorian Calendar . getInstance () Ġas ĠG regorian Calendar ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcached Calendar ?. let Ġ{ Ġcalendar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . time In Millis Ġ= Ġadjusted Time ( timestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( Locale . US , ĠTIME _ FORMAT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . get ( G regorian Calendar . HOUR ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . get ( G regorian Calendar . MINUTE )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadjusted Time ( time : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtime Ġ- Ġtime Offset ĊĠĠĠ Ġ} Ċ } Ċ