Dp      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None%&*9;<=ADIORT<Give you access to a database connectin from the connection pool. The connection is released back to the pool once the function terminates.=RRead the application's state. If you wish to have mutable state, you could use a TVar from the STM packge.>Get the session manager?Get the Spock configurationA8Hook into the session manager to trigger custom behaviorD%Configuration for the session managerFname of the client side cookieG$how long shoud a client session liveH,entropy of the session id sent to the clientINif this is true, every page reload will renew the session time to live counterJinitial session for visitorsKstorage interface for sessionsLFhow often should the session manager check for dangeling dead sessionsMhooks into the session managerNjYou can feed Spock with either a connection pool, or instructions on how to build a connection pool. See RRMThe ConnBuilder instructs Spock how to create or close a database connection.WfIf Spock should take care of connection pooling, you need to configure it depending on what you need.\Spock configuration, use defaultSpockCfg# and change single values if needed^ initial application global state_See N`See DaMaximum request size in bytes. % means no limit. Defaults to 5 MB in defaultSpockCfg.brCustom error handlers for implicit errors such as not matching routes or exceptions during a request handler run.cJWhen set to true, all non GET request will require either an HTTP-Header d or a POST-Parameter e# to be set to the value aquired by  getCsrfTokendsee desee efThe f is a specialisation of g with a '()' context.gThe g is the monad of all route-actions. You have access to the context of the request and database, session and state of your application.AInside the SpockAllM monad, you may define routes and middleware.] !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgY !"#$%&'()*+,-./0123456789:;=<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg  !"#$%&'()*+,-./0123456789:;<=>?@ABCD EFGHIJKLMNOPQRSTUVWXYZ[\ ]^_`abcdefgNone:DRnCreate a new session vaultoLoad a sessionp0Store a session, overwriting any previous valuesqRemovea sessionrGet all sessions as lists3Remove all sessions that do not match the predicatetPerform action on all sessionshijklmnopqrstuvwhijklmnopqrstuvklmwhijnopqrstuv hijklmnopqrstuvwNone %&(:OTxyz{|}~ !"#/012345xyz{|}~~5/01234 !"#xyz{|}xyz{|}~None 9:;DORTaRead the heart of Spock. This is useful if you want to construct your own monads that work with < and = using CRun an action inside of Spocks core monad. This allows you to use < and =kRead the connection pool of Spock. This is useful if you want to construct your own monads that work with < and = using   None %&(,:OT Regenerate the users sessionId. This preserves all stored data. Call this prior to logging in a user to prevent session fixation attacks.}Get the current users sessionId. Note that this ID should only be shown to it's owner as otherwise sessions can be hijacked.Write to the current session. Note that all data is stored on the server. The user only reciedes a sessionId to be identified.Modify the stored session,Modify the stored session and return a valueEModify the stored session and return the new value after modificationRead the stored sessionnGlobally delete all existing sessions. This is useful for example if you want to require all users to reloginnApply a transformation to all sessions. Be careful with this, as this may cause many STM transaction retries. 5 5 NoneNOP session hooksNSession configuration with reasonable defaults and an stm based session storeSpock configuration with reasonable defaults such as a basic error page and 5MB request body limit. IMPORTANT: CSRF Protection is turned off by default for now to not break any existing Spock applications. Consider turning it on manually as it will become the default in the future.4$%&'()*+,-.ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdev4\]^_`abcdeNOPQRSTUVWXYZ[DEFGHIJKLMABC$%&'()*+,-.vNone %&(,:OTCreate a spock application using a given db storageLayer and an initial state. Spock works with database libraries that already implement connection pooling and with those that don't come with it out of the box. For more see the N type. Use runSpock to run the app or  spockAsApp to create a Wai.ApplicationGet the CSRF token for the current user. This token must be sent on all non GET requests via a post parameter or HTTP-Header if c" is turned on. See configuration \# documentation for more informationUGet the CSRF token sent by the client. You should not need to call this manually if c is turned on.qCheck that the client sent a valid CSRF token. You should not need to call this manually in non GET requests if c is turned on.VSpecify an action that will be run when a standard HTTP verb and the given route match6Specify an action that will be run when the HTTP verb  and the given route match6Specify an action that will be run when the HTTP verb  and the given route match6Specify an action that will be run when the HTTP verb  'GET'/'POST' and the given route match6Specify an action that will be run when the HTTP verb  and the given route match6Specify an action that will be run when the HTTP verb  and the given route match6Specify an action that will be run when the HTTP verb  and the given route match6Specify an action that will be run when the HTTP verb  and the given route matchTSpecify an action that will be run when a custom HTTP verb and the given route matchSpecify an action that will be run when a standard HTTP verb matches but no defined route matches. The full path is passed as an argumentSpecify an action that will be run when a custom HTTP verb matches but no defined route matches. The full path is passed as an argumentSpecify an action that will be run when a HTTP verb matches but no defined route matches. The full path is passed as an argumentMSpecify an action that will be run when a HTTP verb and the given route match      56789:;=<>?@fg;   fg89:;<=>?67@         !"#$%&&'()*+,-./011234567899::;<=>?@ABCDEFGHIJKKLMMNOPQRSTUVWXYZZ[\]^^_`abbcdefghijklmmnopqrstuvwxyz{||}~AJ      !"#$%Spock-0.12.0.0-DquPzhVrA3Q3Jr7DE7nEdw Web.Spock!Web.Spock.Internal.SessionManagerWeb.Spock.ConfigWeb.Spock.Internal.SessionVaultWeb.Spock.SessionActionsWeb.Spock.Internal.TypesWeb.Spock.Internal.Monad)Spock-core-0.12.0.0-52NkRqJ6UV6UFcnJRpampWeb.Spock.Core renderRoute middleware subcomponentprehook spockAsApprunSpockNoBannerrunSpock&reroute-0.4.1.0-63BpYGFtl2fLuXa1nx9PjpWeb.Routing.CombinatorsVarPathvarstaticrootwildcard'http-types-0.9.1-DZHEfEDnAxjEEutG9PeGCFNetwork.HTTP.Types.Method StdMethodGETPOSTHEADPUTDELETETRACECONNECTOPTIONSPATCHSessionManagersm_getSessionIdsm_getCsrfTokensm_regenerateSessionIdsm_readSessionsm_writeSessionsm_modifySessionsm_mapSessionssm_clearAllSessions sm_middlewaresm_closeSessionManager SessionStoress_runTxss_loadSessionss_deleteSessionss_storeSession ss_toListss_filterSessionsss_mapSessionsSessionStoreInstanceSessionsess_idsess_csrfTokensess_validUntil sess_data SessionId WebStateM WebStateTHasSpock SpockConn SpockState SpockSessionrunQuerygetState getSessMgr getSpockCfgWebState SessionHooks sh_removed SessionCfg sc_cookieName sc_sessionTTLsc_sessionIdEntropysc_sessionExpandTTLsc_emptySessionsc_storesc_housekeepingIntervalsc_hooks PoolOrConnPCPoolPCConn PCNoDatabase ConnBuilder cb_createConncb_destroyConncb_poolConfigurationPoolCfg pc_stripespc_resPerStripepc_keepOpenTimeSpockCfgspc_initialState spc_databasespc_sessionCfgspc_maxRequestSizespc_errorHandlerspc_csrfProtectionspc_csrfHeaderNamespc_csrfPostName SpockActionSpockActionCtx SessionVaultunSessionVault IsSession SessionKey getSessionKeynewSessionVault loadSession storeSession deleteSessiontoListfilterSessions mapSessionsnewStmSessionStore'newStmSessionStore$fIsSessionSession SessionIf si_queryVaultsi_modifyVaultsi_setRawMultiHeader si_vaultKeywithSessionManagercreateSessionManager getSpockHeart runSpockIO getSpockPoolsessionRegenerateId getSessionId writeSession modifySessionmodifySession'modifyReadSession readSessionclearAllSessionsmapAllSessionsdefaultSessionHooksdefaultSessionCfgdefaultSpockCfg RouteSpec SpockCtxMSpockMspock getCsrfTokengetClientCsrfToken csrfCheck hookRoutegetpostgetpostheadputdeletepatchhookRouteCustomhookAny hookAnyCustombaseGHC.BaseNothing SpockAllMSpockSessionManager runWebStateT web_dbConnweb_sessionMgr web_state web_config $fShowSession$fMonadBaseControlbWebStateT$fMonadTransControlWebStateT$fMonadBasebWebStateTregenerateSessionIdImplgetSessionIdImplgetCsrfTokenImplmodifySessionBasereadSessionBasereadSessionImplwriteSessionImplmodifySessionImplmakeSessionIdCookiereadOrNewSessionloadOrSpanSessionsessionMiddlewarenewSessionImplloadSessionImpldeleteSessionImplclearAllSessionsImplmapAllSessionsImplhousekeepSessions createSession randomHashwebMgetSpockCfgImpl runQueryImpl getStateImplgetSessMgrImpl$fHasSpockWebStateT $fHasSpockt errorHandler errorTemplatehookAny' hookRoute'shouldCheckCsrfWeb.Spock.Internal.CoreActioncookiecookies deleteCookie setCookie runInContext getContextwithBasicAuthDatarequireBasicAuthstreamjsonfilehtmltext lazyBytesbytesresponse queryVault modifyVaultmiddlewarePassrespondMiddleware respondAppredirectjumpNextsetRawMultiHeader setHeader setStatusparam'paramparams paramsPost paramsGetfiles jsonBody'jsonBodybody reqMethodpreferredFormat rawHeaderheaderrequestWeb.Spock.Internal.CookiesdefaultCookieSettingsCookieSettingscs_EOLcs_path cs_domain cs_HTTPOnly cs_secure CookieEOLCookieValidUntilCookieValidForCookieValidForSessionCookieValidForeverWeb.Spock.Internal.UtilClientPreferredFormatPrefJSONPrefXMLPrefHTMLPrefText PrefUnknownWeb.Spock.Internal.Wire UploadedFileuf_nameuf_contentTypeuf_tempLocation MultiHeaderMultiHeaderCacheControlMultiHeaderConnectionMultiHeaderContentEncodingMultiHeaderContentLanguageMultiHeaderPragmaMultiHeaderProxyAuthenticateMultiHeaderTrailerMultiHeaderTransferEncodingMultiHeaderUpgradeMultiHeaderViaMultiHeaderWarningMultiHeaderWWWAuthMultiHeaderSetCookieActionT ActionCtxT