iBj      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiNone:DRjklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~jkljklNone!"%&*,:<=DORT 1A generic exception holding only a piece of text. ]Crumbs come in two varieties. A normal crumb is a list of key-value pairs. There's also a w where you can put more specific information about the processed HTTP request (if your application is a web server).5Breadcrumbs are the steps that happened before a log.]If a notion of a user exists for your application, you can add this information to your logs.The severity of the log.%A name for a "layer" of your application. Typically, a log will contain a stack of contexts. Think of it as a call stack specific for your application.(6Arbitrary piece of text. Logs contain a list of these.*The logging effect./"Send a single log into the stream.06A generic handler for logs. Since it's polymorphic in mK you can choose to emit more logs and make it a log transformer instead.1LAdd a new context on top of every log that comes from the given computation.2)Get the bottom-most context if it exists.60Log an error and then throw the given exception.7ULog an error and then throw a checked exception. Read about checked exceptions in .8TLog an error and throw a generic exception containing the text of the error message.9fLog a stripped-down version of the logs to the console. Only contains the message and the severity.:(Log everything to the console. Uses the  instance for .;Discard the logs.<>Use the given function to transform and possibly discard logs.=7Only let through logs that satisfy the given predicate.>'Transform logs with the given function.?<Filter out logs that are comming from below a certain depth.@6Filter logs whose depth satisfies the given predicate.AwFor each log, add it's message to the logs breadcrumb list. This is useful so you don't have to manually add crumbs.B:Each log that passes through will get all of the crumbs of the previous logs added. If, for example, you're writing a web server, you might want to have this handler over the request handler so that if an error occurs you can see all the steps that happened before it, during the handling of that request.CAdd a user to every log.DAdd a crumb to every log.EAttach an arbitrary ?< to every log. Typically you want to use this handler on logX functions directly like +setDataTo "some data" (logInfo "some info")F2Attach an arbitrary value to every log using it's Z8 instance. Typically you want to use this handler on logX functions directly like )setDataToJsonOf 123 (logInfo "some info")G2Attach an arbitrary value to every log using it's 8 instance. Typically you want to use this handler on logX functions directly like )setDataToShowOf 123 (logInfo "some info")H"Add the current time to every log.IPrint out the logs in rich format. Truncates at the given length. Logs will contain: message, timestamp, data, user and the call stack.O  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNX,- $!# "%&'()*+./0123456789:;<=>?@ABCDEFGHIO*+N,-()%&' !"#$.M LK J/0123456789:;<=>?@ABCDEFGHI*   !"#$%&'()*+./0123456789:;<=>?@ABCDEFGHIJKLMN,-      !"#$%&&'(())*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopkqrkqsktuktvklwklxklykz{kz|k}~klkkkkkkkkkkkknnnkkkkkkkkkkkkkkkkkkkkzkzkzkzkzkzkzkzkzkzkzkzklklklklklklklklkkkkkkkknnnnnnnnkkkkzkzkkkkkkkkkkkkkkkkzkzkzkzkzkzkkkkkkklklklklklkkkkkkkkkkkkkkkkkkkkk k kl kl kl klnnnnnnnklklklnnnn kz!n"n#k$%k$&k$'()*()+kl,kl-kl.kl/kl0kl1kl2kl3kl4kl5kl6k78k9:k;k<k=k>k?k}@k}Ak}Bk}Ck}Dk}Ek}Fk}Gk}Hk}Ik}Jk}Kk}Lk}MkNOkNPQRSklTk$UQRVQRWQRXQRYZ[\k7]kl^_`abcdbcebcfbcgbchbcibcjbckbclbmnbopboqbrsbrtbrubrvbrwbrxbrybrzbr{br|br}br~brbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbrbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb^bbbbbkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk k k k k kkkkkkkkkkkkkkkk k!k"k#k$k%k&k'k(k)*k)+k),k)-k).k)/k)0k)1k)2k)3k)4k)5k)6k78k9k:k;k<k=k>k?k@Ak@Ak@Bk@Ck@Ck@Dk@Ek@Ek@Fk@Gk@Gk@Hk@Ik@Ik@Jk@Kk@Kk@LkMNk7Ok7PkQRkQSkQTkQUkVWkVXkVXkVYkVYkZ[kZ\kZ]kZ^k_`k_ak_bk_ck_dkekfkgkhkijk9kk9lkmknkokpkqkrksktkukvkwkxkykzk{k|k}k~kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkzkzkzkzkzkzkkkkkkkkkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkqkkkkkkkkkktktkkkkkkkkkkkklklklklklklklkkkkQkQnnn   (  (  QR( ( ( QR( ( ( ( ( ( ( (  !"#$%&%'%(%)%*%+%,%-%-%.%/%/%0%12-simple-logging-0.2.0.1-15gqsuRpkMJ1WmVLwKacOUControl.Effects.Logging InterludeControl.EffectsSignalGenericExceptionLog logMessagelogLevellogTags logContextlogUser logCrumbslogData logTimestamp logCallStack CrumbData DefaultCrumb HttpCrumbcrumbUrl crumbMethodcrumbStatusCode crumbReasonCrumbcrumbTimestamp crumbMessage crumbCategory crumbDataLogUser logUserId logUserEmaillogUserUsernameLevelFatalErrorWarningInfoDebugContext getContextTagLogging LoggingMsg LoggingRes addIfExists logEffect handleLogging layerLogs originContextlogInfo logWarninglogError logAndErrorlogAndThrowsErrlogAndThrowGenericlogMessagesToStdoutlogRawToStdoutmuteLogs witherLogs filterLogsmapLogslogIfDepthLessThan logIfDepthmessagesToCrumbs collectCrumbs addUserToLogsaddCrumbToLogs setDataTosetDataToJsonOfsetDataToShowOfsetTimestampToNowprettyPrintSummary$fExceptionGenericException $fToJSONCrumb$fToJSONCrumbData$fToJSONLogUserD:R:EffectLoggingmethodmr0$fEqTag$fOrdTag $fReadTag $fShowTag $fEqContext $fOrdContext $fReadContext $fShowContext $fEqLevel $fOrdLevel $fReadLevel $fShowLevel $fEqLogUser $fOrdLogUser $fReadLogUser $fShowLogUser $fEqCrumbData$fReadCrumbData$fShowCrumbData $fEqCrumb $fReadCrumb $fShowCrumb $fShowLog$fEqGenericException$fOrdGenericException$fReadGenericException$fShowGenericExceptionpshowputTextprintbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip Data.Tuplefstsnd otherwisemap$GHC.Real fromIntegral realToFrac Control.MonadguardjoinGHC.EnumBoundedminBoundmaxBoundEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumtoEnumsuccpred GHC.ClassesEq==/= GHC.FloatFloatingpiexplogsqrt**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanh Fractional fromRational/recipIntegral toIntegerquotremdivmodquotRemdivModMonadfailreturn>>=>>Functorfmap<$GHC.NumNum*+-negate fromIntegerabssignumOrd>=minmax><<=compareGHC.ReadReadreadList readsPrecReal toRational RealFloat floatRadix floatDigits floatRange decodeFloat encodeFloatexponent significand scaleFloatisNaN isInfiniteisDenormalizedisNegativeZeroisIEEEatan2RealFracproperFractiontruncateroundceilingfloorGHC.ShowShow showsPrecshowshowListControl.Monad.FixMonadFixmfix Applicativepure<*>*><* Data.FoldableFoldablefoldrlengthfoldMapnullfoldlfoldl1sumproductfoldr1maximumminimumelemData.Traversable TraversablemapMsequencetraverse sequenceAData.Semigroup Semigroup<>sconcatstimesMonoidmemptymappendmconcat GHC.TypesBoolFalseTrueCharDoubleFloatInt integer-gmpGHC.Integer.TypeIntegerMaybeNothingJustOrderingLTEQGTRationalIOWord Data.EitherEitherLeftRighttransformers-0.5.2.0Control.Monad.Trans.Class MonadTranslift MonadPlusmzeromplus=<<whenliftMliftM2liftM3liftM4liftM5ap Data.Functorvoid Data.FunctionfixmapM_forM_ sequence_msumforMfilterM>=><=<forever mapAndUnzipMzipWithM zipWithM_foldMfoldM_ replicateM replicateM_unless<$!>mfilterControl.Monad.IO.ClassMonadIOliftIO mtl-2.2.1-BLKBelFsPB3BoFeSWSOYj6Control.Monad.State.Classmodifyideither MonadStategetstateputbytestring-0.10.8.1Data.ByteString.Internal ByteString<$>String#text-1.2.2.2-KC7dWoG09dA1F6jKj5GSqhData.Text.InternalText$aeson-1.2.1.0-LHJixvkcpw43w7SOwXvuIo Data.AesoneitherDecodeStrict' eitherDecode'eitherDecodeStrict eitherDecode decodeStrict'decode' decodeStrictdecodeencodeData.Aeson.TypesfoldableData.Aeson.Types.ClassGToJSON GToEncodingData.Aeson.Types.ToJSON toEncoding2toJSON2 toEncoding1toJSON1genericLiftToEncodinggenericToEncodinggenericLiftToJSON genericToJSONToArgsNoToArgsTo1ArgsToJSONtoJSON toEncoding toJSONListtoEncodingListKeyValue.= ToJSONKey toJSONKey toJSONKeyListToJSONKeyFunction ToJSONKeyTextToJSONKeyValueToJSON1 liftToJSONliftToJSONListliftToEncodingliftToEncodingListToJSON2 liftToJSON2liftToJSONList2liftToEncoding2liftToEncodingList2Data.Aeson.Encoding.Internalpairs fromEncodingEncodingSeriesData.Aeson.Types.FromJSON.!=.:!.:?.:fromJSONwithBoolwithScientific withNumber withArraywithText withObject parseJSON2 parseJSON1genericLiftParseJSONgenericParseJSON GFromJSON gParseJSONFromArgs NoFromArgs From1ArgsFromJSON parseJSON parseJSONList FromJSONKey fromJSONKeyfromJSONKeyListFromJSONKeyFunctionFromJSONKeyCoerceFromJSONKeyTextFromJSONKeyTextParserFromJSONKeyValue FromJSON1 liftParseJSONliftParseJSONList FromJSON2liftParseJSON2liftParseJSONList2Data.Aeson.Parser.Internaljson'jsonData.Aeson.Types.GenericZeroOneData.Aeson.Types.InternaldefaultOptionsobjectResultSuccessObjectArrayValueNumberNull DotNetTimefromDotNetTime GHC.UnicodeisSpaceisAlphaisDigit Text.Readreaddiffoption mtimesDefaultstimesIdempotentstimesIdempotentMonoid stimesMonoidcycle1MingetMinMaxgetMaxArgArgMinArgMaxFirstgetFirstLastgetLast WrappedMonoid WrapMonoid unwrapMonoidOption getOptionControl.ConcurrentthreadWaitWriteSTMthreadWaitReadSTMthreadWaitWritethreadWaitReadrunInUnboundThreadrunInBoundThreadisCurrentThreadBoundforkOSWithUnmaskforkOS forkFinallyrtsSupportsBoundThreadsControl.Concurrent.QSemN signalQSemN waitQSemNnewQSemNQSemNControl.Concurrent.QSem signalQSemwaitQSemnewQSemQSemControl.Concurrent.ChanwriteList2ChangetChanContents isEmptyChan unGetChandupChanreadChan writeChannewChanChan System.IOreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputChar GHC.Conc.IO threadDelayControl.Concurrent.MVar mkWeakMVaraddMVarFinalizermodifyMVarMaskedmodifyMVarMasked_ modifyMVar modifyMVar_withMVarMaskedwithMVarswapMVarreads GHC.Conc.SyncmkWeakThreadIdthreadCapabilityyield myThreadIdthrowTo killThreadsetNumCapabilitiesgetNumCapabilitiesforkOnWithUnmaskforkOnforkIOWithUnmaskforkIOThreadIdGHC.IO.ExceptionioErrornotElemallanyorand concatMapconcat Data.MonoidDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductGHC.IOFilePath userErrorIOError GHC.Exception Exception toException fromExceptiondisplayException Data.Proxy asProxyTypeOfProxyKProxy Data.OldListunwordswordsunlineslines Data.Char isSeparatorisNumberisMarkisLetter digitToInt readLitChar lexLitCharlex readParenText.ParserCombinators.ReadPReadS&ontoTitletoUppertoLowerisLowerisUpperisPrint isControl isAlphaNumisSymbol isPunctuation isHexDigit isOctDigit isAsciiUpper isAsciiLowerisLatin1isAsciigeneralCategoryGeneralCategoryFormatControlUppercaseLetterLowercaseLetterTitlecaseLetterModifierLetter OtherLetterNonSpacingMarkSpacingCombiningMark EnclosingMark DecimalNumber LetterNumber OtherNumberConnectorPunctuationDashPunctuationOpenPunctuationClosePunctuation InitialQuote FinalQuoteOtherPunctuation MathSymbolCurrencySymbolModifierSymbol OtherSymbolSpace LineSeparatorParagraphSeparator Surrogate PrivateUse NotAssignedlcmgcd^^^oddevenGHC.Charchr intToDigit showLitChar showParen showStringshowCharshowsShowSunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrscanl1scanlinitlasttailhead Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybeuncurrycurrysubtractGHC.MVar isEmptyMVar tryReadMVar tryPutMVar tryTakeMVarputMVarreadMVartakeMVarnewMVar newEmptyMVarMVarasTypeOfuntil$!flip.constordGHC.Err undefinederrorWithoutStackTraceerror SomeException&&||not'exceptions-0.8.3-74UMKX8an841ULC0nHtYN7Control.Monad.CatchbracketOnErrorfinallybracket_bracket onExceptioncatchestryJusttry handleJusthandleIf handleAll handleIOErrorhandle catchJustcatchIf catchIOErrorcatchAlluninterruptibleMask_mask_ MonadThrowthrowM MonadCatchcatch MonadMaskmaskuninterruptibleMaskHandlerControl.Monad.Trans.State.LazyrunStateStategetsStateT runStateTmodify' evalState execStatemapState withState evalStateT execStateT mapStateT withStateT(string-conv-0.1.2-GrkAjRoWmiAIOB1vrXZLfhData.String.ConvconvSLconvStoSLtoSLeniencyStrictLenient StringConvstrConv-simple-effects-0.9.0.0-4Rl8WoqHbHU2GE7KJ7zWwm handleEffectMsgOrResMsgResEffect MonadEffecteffectEffectWithKindgetEffectWithKind EffectHandlerunpackEffectHandler MonadEffects