h$6      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdNone gtwain%Parse values from request parameters.twain4Default implementation parses comma-delimited lists.twain is an Either-like monad that can "short-circuit" and return a response, or pass control to the next middleware. This provides convenient branching with do notation for redirects, error responses, etc. twainUseful for creating - instances for things that already implement e.      None ftwainParse form request body.gtwainParse JSON request body.hijklmnofgpqrstuvNone }Ftwain Route request matching optional w and  to .Gtwain#Respond if no other route responds.Sets the status to 404.Itwain+Specify maximum request body size in bytes.Defaults to 64KB.JtwainSpecify x" to use when parsing request body.KtwainGet a parameter. Looks in query, path, cookie, and body (in that order).7If no parameter is found, or parameter fails to parse, W is called which passes control to subsequent routes and middleware.Ltwain5Get a parameter or error if missing or parse failure.MtwainGet an optional parameter.Returns y for missing parameter. Throws   on parse failure.NtwainGet all parameters from query, path, cookie, and body (in that order).Otwain Get uploaded .If missing parameter or empty file, pass control to subsequent routes and middleware.PtwainGet optional uploaded .y9 is returned for missing parameter or empty file content.QtwainGet all uploaded files.Rtwain%Get the JSON value from request body.StwainGet the value of a request z$. Header names are case-insensitive.TtwainGet the request headers.Utwain Get the WAI {.VtwainSend a |. send $ text "Hello, World!"Send an Y response: $send $ html "

Hello, World!

" Modify the ]: *send $ status status404 $ text "Not Found"Send a response ^: :send $ withHeader (hServer, "Twain + Warp") $ text "Hello"Send a response _: ,send $ withCookie "key" "val" $ text "Hello"Wtwain-Pass control to the next route or middleware.Xtwain Construct a } response.1Sets the Content-Type and Content-Length headers.YtwainConstruct an HTML response.1Sets the Content-Type and Content-Length headers.Ztwain Construct a JSON response using ~.1Sets the Content-Type and Content-Length headers.[twainConstruct an XML response.1Sets the Content-Type and Content-Length headers.\twain%Construct a raw response from a lazy .*Sets the Content-Length header if missing.]twainSet the  for a |.^twainAdd a z to response._twain:Add a cookie to the response with the given key and value.Note: This uses .`twainAdd a  to the response.atwain;Add a header to expire (unset) a cookie with the given key.btwain?Create a redirect response with 301 status (Moved Permanently).ctwain3Create a redirect response with 302 status (Found).dtwain2Create a redirect response 303 status (See Other).wz{| ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd,ABCDEFGKLMNOPQRSTUVWbcdXYZ[\]^_`a HJI       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}f~zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{z{z{z{z{z{z{z{z{z{z{z{z{z{z{z{z{z{z{z{z{z{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz$twain-2.0.0.0-DI5Mhzh8o0hGvXoxoyRUcG Web.TwainWeb.Twain.TypesWeb.Twain.Internal&wai-extra-3.1.8-5Xd5TpvjWow4Bws5eaLmsKNetwork.Wai.Parse fileContentfileContentTypefileNameFileInfo ParsableParam parseParamparseParamList PathPattern MatchPathParam HttpError ParsedBodyFormBodyJSONBodyResponderOptionsoptsMaxBodySize optsParseBody ParsedRequestpreqBodypreqCookieParamspreqPathParamspreqQueryParams RouteActionRespondNext ResponderM matchPath readEither$fMonadCatchResponderM$fMonadThrowResponderM$fMonadIOResponderM$fMonadResponderM$fApplicativeResponderM$fFunctorResponderM$fExceptionHttpError$fIsStringPathPattern$fParsableParamNatural$fParsableParamWord64$fParsableParamWord32$fParsableParamWord16$fParsableParamWord8$fParsableParamWord$fParsableParamInteger$fParsableParamInt64$fParsableParamInt32$fParsableParamInt16$fParsableParamInt8$fParsableParamInt$fParsableParamFloat$fParsableParamDouble$fParsableParamBool$fParsableParam[]$fParsableParam()$fParsableParamChar$fParsableParamByteString$fParsableParamByteString0$fParsableParamText$fParsableParamText0 $fEqHttpError$fShowHttpErrorgetputpatchpostdeleteroutenotFound onExceptionwithMaxBodySizewithParseBodyOptsparam paramEither paramMaybeparamsfile fileMaybefilesfromBodyheaderheadersrequestsendnexttexthtmljsonxmlrawstatus withHeader withCookie withCookie' expireCookie redirect301 redirect302 redirect303baseGHC.ReadRead parseBodyForm parseBodyJson parsedReqKeyresponderOptsKeydefaultResponderOpts getRequest setRequest concatParams parseRequestmatchwrapErr wrapMaxReqErr wrapParseErr cookieParamssetCookieByteStringdecodeQueryParam decodeBsParam(http-types-0.12.3-9k8aWsrxzSkHIwn1oMbLDnNetwork.HTTP.Types.MethodMethodParseRequestBodyOptions GHC.MaybeNothingNetwork.HTTP.Types.HeaderHeader wai-3.2.3-JxlKGMsC7f5D6eGVPRW1dkNetwork.Wai.InternalRequestResponse text-1.2.3.2Data.Text.InternalText$aeson-1.5.6.0-5yIByjpZ48f1rXnRlEJ9FKData.Aeson.Types.ToJSONToJSONbytestring-0.10.10.0Data.ByteString.Lazy.Internal ByteStringNetwork.HTTP.Types.StatusStatus#cookie-0.4.5-JoyqOkJeahAEddz6P9VUaR Web.CookiedefaultSetCookie SetCookieNetwork.HTTP.Types.Versionhttp20http11http10http09 HttpVersion httpMajor httpMinorNetwork.HTTP.Types.QueryLike QueryLiketoQueryNetwork.HTTP.Types.URIrenderQueryBuilderPartialEscaperenderQueryPartialEscape decodePath encodePath extractPathdecodePathSegmentsencodePathSegmentsRelativeencodePathSegments urlDecode urlEncodeurlEncodeBuilderparseSimpleQuery parseQueryrenderSimpleQuery renderQueryrenderQueryBuildersimpleQueryToQueryparseQueryTextqueryToQueryTextrenderQueryTextqueryTextToQuery QueryItemQuery QueryTextSimpleQueryItem SimpleQuery EscapeItemQEQNPartialEscapeQueryItemPartialEscapeQuerystatusIsServerErrorstatusIsClientErrorstatusIsRedirectionstatusIsSuccessfulstatusIsInformational networkAuthenticationRequired511 status511httpVersionNotSupported505 status505gatewayTimeout504 status504serviceUnavailable503 status503 badGateway502 status502notImplemented501 status501internalServerError500 status500requestHeaderFieldsTooLarge431 status431tooManyRequests429 status429preconditionRequired428 status428unprocessableEntity422 status422 imATeapot418 status418expectationFailed417 status417requestedRangeNotSatisfiable416 status416unsupportedMediaType415 status415requestURITooLong414 status414requestEntityTooLarge413 status413preconditionFailed412 status412lengthRequired411 status411gone410 status410 conflict409 status409requestTimeout408 status408proxyAuthenticationRequired407 status407notAcceptable406 status406methodNotAllowed405 status405 notFound404 status404 forbidden403 status403paymentRequired402 status402unauthorized401 status401 badRequest400 status400permanentRedirect308 status308temporaryRedirect307 status307 useProxy305 status305notModified304 status304 seeOther303 status303found302 status302movedPermanently301 status301multipleChoices300 status300partialContent206 status206resetContent205 status205 noContent204 status204nonAuthoritative203 status203 accepted202 status202 created201 status201ok200 status200switchingProtocols101 status101 continue100 status100mkStatus statusCode statusMessagerenderStdMethod renderMethod parseMethod methodPatch methodOptions methodConnect methodTrace methodDelete methodPut methodHead methodPost methodGet StdMethodPATCHOPTIONSCONNECTTRACEDELETEPUTHEADGETPOSTparseByteRangesrenderByteRangesrenderByteRangesBuilderrenderByteRangerenderByteRangeBuilderhCookie hUserAgenthServerhRefererhRange hLocation hLastModifiedhIfRangehIfModifiedSincehDate hContentType hContentMD5hContentLengthhContentEncoding hConnection hCacheControlhAuthorizationhAcceptLanguagehAccept HeaderNameRequestHeadersResponseHeaders ByteRangeByteRangeSuffix ByteRangeFromByteRangeFromTo ByteRanges Network.WaiconsumeRequestBodyLazylazyRequestBodyconsumeRequestBodyStrictstrictRequestBody ifRequestmodifyResponsedefaultRequestmapResponseStatusmapResponseHeadersresponseToStreamresponseHeadersresponseStatus responseRawresponseStream responseLBSresponseBuilder responseFile Application MiddlewaregetRequestBodyChunkrequestHeaderUserAgentrequestHeaderRefererrequestHeaderRangerequestHeaderHostrequestBodyLength requestBody queryStringpathInfo remoteHostisSecurerawQueryString rawPathInfo httpVersionrequestHeadersvault requestMethod StreamingBodyRequestBodyLength ChunkedBody KnownLengthFilePartfilePartFileSizefilePartOffsetfilePartByteCountResponseReceived