h$ /      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab c d e f  Safe-Inferred #$< &'0()*+,-./12 &'0()*+,-./12None #$<  34567 3 4567None #$<P3:;<=>?@ABCDEFGHIJKLMNOPQRSTUE3ABCD>?@:;<=FGHIJKLMNOPQRSTUNone #$<VWVWNone #$<  None #$<XXNone #$<7YZ[\]^_[YZ_\]^None #$<j3   !"#%$:;<=>?@ABCDEJKLMNYZ[_a3E ABCD>?@:;<=JKLMN[YZ_a%$ #"!  None #$<bBlammo Construct a [% configured via environment variablescBlammo Construct a [0 configured via environment variables and use it5   !"#%$:=;<>?@ADBCEJKLMNYZ[_abcbc None #$<dBlammoAdd context to any logging done from the request-handling threadeBlammod, but have the g availablefBlammo8Log requests (more accurately, responses) as they happen*In JSON format, logged messages look like: ${ ... message: { text: "GET foo*bar => 200 OK", meta: { method: GET, path: "foobar", query: "?baz=bat&quix=quo", status: { code: 200, message: OK }, durationMs: 1322.2, requestHeaders: { Authorization: "***", Accept: "text/html", Cookie: "***" }, responseHeaders: { Set-Cookie: "***", Expires: "never" } } } } defdef  Safe-Inferred #$<hijklmno             !"#!"$!"%!"&!"'!"(!")!"*!"+!",!"-./0./1./2./3./4./5./6./7./8./9./:./;.<=.<>??@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]M^_`abcdefghiNjklmnopqrstuvw x y z { |}~        %Blammo-1.0.1.1-5XHhIrd0cjC6Cv3YnYDVRvBlammo.LoggingData.Aeson.Compat$Blammo.Logging.LogSettings.LogLevelsBlammo.Logging.ColorsBlammo.Logging.LogSettingsBlammo.Logging.LogSettings.EnvBlammo.Logging.TerminalBlammo.Logging.LoggerBlammo.Logging.SimpleNetwork.Wai.Middleware.Logging Paths_Blammo$aeson-2.0.3.0-1sYQvcgTXG6DultY8HFF9FData.Aeson.Types.ToJSON.=Data.Aeson.Encoding.InternalSeriesData.Aeson.Types.InternalPairData.Aeson.KeyMaptoListfromList singletonnullemptyKeyMapData.Aeson.KeytoTextfromTextKeyexceptions-0.10.4Control.Monad.Catch MonadMask*monad-logger-0.3.36-Aox3JXYja6yEBlRR3Jc6sGControl.Monad.Logger LevelOther LevelError LevelWarn LevelInfo LevelDebugLogLevelmonadLoggerLog MonadLogger askLoggerIO MonadLoggerIOLoggingT1monad-logger-aeson-0.2.0.1-I6YrkWV2xavEA5NGXpwCcMControl.Monad.Logger.AesonmyThreadContextwithThreadContext logOtherNS logErrorNS logWarnNS logInfoNS logDebugNSlogOtherlogErrorlogWarnlogInfologDebug#Control.Monad.Logger.Aeson.Internal:#MessageColorsgrayblackcyanmagentablueyellowgreenredbolddim getColors LogLevels newLogLevels readLogLevelsshouldLogLeveldefaultLogLevels $fEqLogLevels$fShowLogLevelsLogColor LogColorAutoLogColorAlways LogColorNever LogFormat LogFormatJSONLogFormatTerminalLogDestinationLogDestinationStdoutLogDestinationStderrLogDestinationFile LogSettingsreadLogDestination readLogFormat readLogColordefaultLogSettingssetLogSettingsLevelssetLogSettingsDestinationsetLogSettingsFormatsetLogSettingsColorgetLogSettingsLevelsgetLogSettingsDestinationgetLogSettingsFormatgetLogSettingsColorshouldColorAutoshouldColorHandleparseparserreformatTerminal HasLoggerloggerLLoggergetLoggerLoggerSetgetLoggerReformatgetLoggerShouldLog newLogger$fHasLoggerLoggerrunLoggerLoggingT newLoggerEnvrunSimpleLoggingTaddThreadContextaddThreadContextFromRequest requestLogger wai-3.2.3-9ZSZCSBLc5E8dRATG3ipMkNetwork.Wai.InternalRequestversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName