QD8@     &Prelude for the async-refresh package.(c) Moritz Schulte, 2017BSD3mtesseract@silverratio.net experimentalPOSIXNone Version of  with a deprecated pragma.Modern version of  producing  instead of .Generalization of . !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~HThis module contains the type definitions for the async-refresh package.(c) Moritz Schulte, 2017BSD3mtesseract@silverratio.net experimentalPOSIXNone ,Data type returned by async refresh actions.Actual result.In milliseconds.-Data type denoting a running async refresher.2Data type defining an async refresh configuration.In milliseconds.#Action implementing the refreshing.Refresh factor.To be called after refreshing.Human readable label.)Type synonym for async refresh callbacks.MThis module contains utility functions used within the async-refresh package.(c) Moritz Schulte, 2017BSD3mtesseract@silverratio.net experimentalPOSIXNonezHelper function, which evaluates the given action, logging an error in case of exceptions (and rethrowing the exception).The function 'restrictToInterval a b' is the identify function for numbers in the closed interval [a, b], it is the constant function x mapsto a on (-infty, a) and the constant function x mapsto b on (b, infty).AThis module defines lenses used within the async-refresh package.(c) Moritz Schulte, 2017BSD3mtesseract@silverratio.net experimentalPOSIXNone9;<=?  9This module exposes the API of the async-refresh package.(c) Moritz Schulte, 2017BSD3mtesseract@silverratio.net experimentalPOSIXNone:<=L[3Given a refresh action, create a new configuration. 9Default refresh interval is one minute (in milliseconds)..Default refresh factor. See documentation for  .(The default refresh callback is a no-op.'The default label for configuration is . Set default refresh interval, specified in milliseconds, in the given configuration. If a refresh action fails or does not produce an expiry time, this interval will be used. gSet the label in the provided configuration. This is a human readable text, used for logging purposes.?Extract a human readable label from the provided configuration. Set the refresh factor. When a refresh gives an explicit expiry time after a succesful refresh run, then this expiry time will be multiplied by this factor, yielding the effective expiry time after which a new refresh run will be scheduled. iSet a refresh callback for the provided configuration. This callback will be called after a refresh run.[Start a new thread taking care of refreshing of data according to the given configuration.bMain function of the refresh control thread. Acts as a simple watchdog for the thread defined by  doing the actual work.?Main function for the thread implementing the refreshing logic..This function does the actual refreshing work.QScale the given duration according to the factor specified in the configuration.               !"#$%$&'()*)+,-./01023435363738393:3;3<3=3>3?!@A!@B!@CDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDW0X0Y0Z0[0\0]0^0_0`0a0b0cdefghijklmlnlolplqlrlslt!@u!@v!@w!@x!@y!@z!@{!@|}~}}00DDDDDDDDDDDDDDD000000!!!!!!!!!!!0!!''''''''''''}}    0 0 0000$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/0102)3)4l56789:;<=>?>@AA!@B!@C!@DEFGHIJKLMKLNKLOKLPKLQKLRKLSKLTKLUVWXVWYVWZ[\][\^[\_[\`[\a[\b[\c[\[\d[\e[\f[\g[\h[\i[\j[\k[\l[\m[\n[\o[\p[\q[\r[\s[\t[\u[\v[\w[\x[\y[\z[\{[\|[\}[~[~[~[~[~[~[~[~[~[~[~[~       ,async-refresh-0.2.0.2-EGv1prSrgMw4JFJEfl0o2Q Control.Concurrent.Async.Refresh(Control.Concurrent.Async.Refresh.Prelude&Control.Concurrent.Async.Refresh.Types%Control.Concurrent.Async.Refresh.Util'Control.Concurrent.Async.Refresh.Lenses RefreshResult refreshResult refreshExpiry AsyncRefreshasyncRefreshAsyncAsyncRefreshConfAsyncRefreshCallbacknewAsyncRefreshConfdefaultAsyncRefreshInterval"asyncRefreshConfSetDefaultIntervalasyncRefreshConfSetLabelasyncRefreshConfSetFactorasyncRefreshConfSetCallbacknewAsyncRefresh undefinedtshowbaseGHC.Showshow#text-1.2.2.2-KC7dWoG09dA1F6jKj5GSqhData.Text.InternalTextGHC.BaseString threadDelay GHC.Conc.IO++ghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwiseassertmap$GHC.Real fromIntegral realToFracGHC.EnumBoundedminBoundmaxBoundEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumtoEnumsuccpred GHC.ClassesEq==/= GHC.FloatFloatingpiexplogsqrt**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanh Fractional fromRational/recipIntegral toIntegerquotremdivmodquotRemdivModMonad>>=>>returnfailFunctorfmap<$GHC.NumNum*+-negate fromIntegerabssignumOrd>=minmax><<=compareGHC.ReadRead readsPrecreadListReal toRational RealFloat floatRadix floatDigits floatRange decodeFloat encodeFloatexponent significand scaleFloatisNaN isInfiniteisDenormalizedisNegativeZeroisIEEEatan2RealFracproperFractiontruncateroundceilingfloorShow showsPrecshowListData.Typeable.InternalTypeable Applicativepure<*>*><* Data.FoldableFoldablefoldrlengthnullfoldMapfoldlfoldl1sumproductfoldr1maximumminimumelemData.Traversable TraversabletraversemapM sequenceAsequenceMonoidmemptymappendmconcat GHC.TypesBoolFalseTrueCharDoubleFloatInt integer-gmpGHC.Integer.TypeIntegerMaybeNothingJustOrderingLTEQGTRationalIOWord Data.EitherEitherLeftRight$async-2.1.1.1-8yywY4inVGRLJSCg60gBXjControl.Concurrent.AsyncAsync Text.ReadreadControl.Monad.IO.ClassMonadIO Control.MonadforeverreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharreadsGHC.IO.ExceptionioErrorSomeAsyncExceptionnotElemallanyorand concatMapconcat sequence_mapM_GHC.IOFilePath userError IOExceptionIOError GHC.Exception Exception toException fromExceptiondisplayExceptioneither Data.OldListunwordswordsunlineslineslex readParenText.ParserCombinators.ReadPReadS Data.Functorvoid<$>lcmgcd^^^oddeven showParen showStringshowCharshowsShowSunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrscanl1scanlinitlast Data.Maybe fromMaybemaybeuncurrycurrysubtractasTypeOfuntil$!flip.constid=<<GHC.ErrerrorWithoutStackTraceerror SomeException&&||not+monad-control-1.0.2.0-8y8BVGc9YRZ7gvfMpFAwbControl.Monad.Trans.ControlMonadBaseControl(constraints-0.9.1-1vY3iAr4WcZ3bo55wvbnrdData.Constraint.ForallForall'exceptions-0.8.3-74UMKX8an841ULC0nHtYN7Control.Monad.Catch handleIOError catchIOErroruninterruptibleMask_mask_ MonadThrow MonadCatch MonadMaskmaskuninterruptibleMask)fast-logger-2.4.10-EZEsmtT64vd90y2WPJGK1sSystem.Log.FastLogger.LogStrLogStrToLogStrtoLogStr'formatting-6.2.4-90PTQTxVWl51ZAOpxm4PmDFormatting.Formattersbytes prefixHex prefixOct prefixBinhexoctbinpluralordscommasfitRightfitLeftgroupIntcenterrightleftasIntscifmtscishortestprecfixedexptfloatintbuildfconstbuildercharshownstringstexttextFormatting.InternalformatToStringhprintfprintbprintsformatformatlatermapfnow%.%Format*text-format-0.3.1.1-8ZE4oP9p3tVC9TQlQtvP1wData.Text.Buildable Buildable)lifted-async-0.9.3-73olaWNkPcrFPACtlbCkVz$Control.Concurrent.Async.Lifted.Safe withAsyncasyncPure*monad-logger-0.3.24-3RSf5gjbDzc9f7HVelMpp5Control.Monad.Logger logOtherCS logErrorCS logWarnCS logInfoCS logDebugCS logOtherNS logErrorNS logWarnNS logInfoNS logDebugNS logOtherN logErrorNlogWarnNlogInfoN logDebugN logWithoutLoc defaultLoc filterLoggerwithChannelLoggerunChanLoggingTrunChanLoggingTrunStdoutLoggingTrunStderrLoggingTrunFileLoggingT defaultLogStr logOtherS logErrorSlogWarnSlogInfoS logDebugSliftLoc logOtherSH logErrorSH logWarnSH logInfoSH logDebugSHlogOtherlogErrorlogWarnlogInfologDebugLogLevel LevelDebug LevelInfo LevelWarn LevelError LevelOther LogSource MonadLoggermonadLoggerLog MonadLoggerIO askLoggerIO NoLoggingT runNoLoggingTLoggingT runLoggingTtemplate-haskellLanguage.Haskell.TH.SyntaxLocloc_end loc_start loc_module loc_package loc_filename.safe-exceptions-0.1.5.0-HNMVQy5Y77HBGHOgztdXECControl.Exception.Safe catchesAsync catchesDeepcatchesisAsyncExceptionisSyncExceptiontoAsyncExceptiontoSyncExceptionbracketOnError_bracketOnErrorfinallybracket_bracket withException onExceptiontryJusttryAsync tryAnyDeeptryDeeptryAnytryIOtry handleJust handleAsync handleAnyDeep handleDeep handleAnyhandleIOhandle catchJust catchAsync catchAnyDeep catchDeepcatchAnycatchIOcatch impureThrowthrowTo throwStringthrowMthrowIOthrowStringExceptionSyncExceptionWrapperAsyncExceptionWrapperHandler _asyncRefreshConfDefaultInterval_asyncRefreshConfAction_asyncRefreshConfFactor_asyncRefreshConfCallback_asyncRefreshConfLabel logOnErrorrestrictToIntervalHasLabellabel HasFactorfactorHasDefaultIntervaldefaultInterval HasCallbackcallback HasActionaction$fHasLabelAsyncRefreshConfMaybedefaultAsyncRefreshFactordefaultAsyncRefreshCallbackdefaultAsyncRefreshLabelasyncRefreshConfGetLabelasyncRefreshCtrlThreadasyncRefreshThreadasyncRefreshDocomputeRefreshTime