h*3.      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0.1.1 Safe-InferredIhttp-semanticsReading n bytes.http-semanticsNaive implementation for readN.  Safe-Inferred" http-semantics(Internal representation for header keys.http-semanticsIndex for value tablehttp-semanticsshould be indexed in HPACKhttp-semanticsis this a pseudo header key?http-semanticsCase insensitive header key http-semantics6Extracting a case insensitive header key from a token. http-semantics,Extracting a folded header key from a token.?http-semanticsA place holder to hold header keys not defined in the static table. | For WarpAhttp-semantics For QPACKUhttp-semanticsMinimum token index.Vhttp-semantics0Maximun token index defined in the static table.Whttp-semanticsMaximum token index.Xhttp-semanticsToken index for !.Yhttp-semanticsIs this token ix for Cookie?Zhttp-semantics0Is this token ix to be held in the place holder?[http-semantics>Is this token ix for a header not defined in the static table?\http-semantics;Is this token for a header not defined in the static table?]http-semantics!Making a token from a header key.&toToken ":authority" == tokenAuthorityTrue toToken "foo"Token {tokenIx = 73, shouldBeIndexed = True, isPseudo = False, tokenKey = "foo"}toToken ":bar"Token {tokenIx = 73, shouldBeIndexed = True, isPseudo = True, tokenKey = ":bar"} ]UVWXZY[\  !"#$%&'()*+,-./0123456789:;<=>?@TABCDEFGHIJKLMNOPQRS  Safe-Inferred $ ^http-semanticsTokenBased header list._http-semanticsTokenBased header.`http-semantics%A pair of token list and value table.ahttp-semantics%A pair of token list and value table.bhttp-semanticsAn array to get d quickly. f+ should be used. Internally, the key is .chttp-semantics Header value.dhttp-semantics Field value.ehttp-semantics Field name. Internal usage only.fhttp-semantics Accessing d with .ghttp-semantics Accessing d with . ed_^`bgacf  Safe-Inferred.hhttp-semantics1Either the next trailers maker or final trailers.khttp-semanticsTrailers maker. A chunks of the response body is passed with 5. The maker should update internal state with the  and return the next trailers maker. When response body reaches its end,  is passed and the maker should generate trailers. An example: {-# LANGUAGE BangPatterns #-} import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as C8 import Crypto.Hash (Context, SHA1) -- cryptonite import qualified Crypto.Hash as CH -- Strictness is important for Context. trailersMaker :: Context SHA1 -> Maybe ByteString -> IO NextTrailersMaker trailersMaker ctx Nothing = return $ Trailers [("X-SHA1", sha1)] where !sha1 = C8.pack $ show $ CH.hashFinalize ctx trailersMaker ctx (Just bs) = return $ NextTrailersMaker $ trailersMaker ctx' where !ctx' = CH.hashUpdate ctx bsUsage example: let h2rsp = responseFile ... maker = trailersMaker (CH.hashInit :: Context SHA1) h2rsp' = setResponseTrailersMaker h2rsp makerlhttp-semantics#TrailersMake to create no trailers.mhttp-semanticsRunning trailers-maker. *bufferIO buf siz $ \bs -> tlrmkr (Just bs)hjiklm  Safe-Inferred2nhttp-semanticsFile specification.phttp-semanticsHow many bytes to readqhttp-semanticsOffset for file.rhttp-semantics Output objectthttp-semanticsAccessor for header.uhttp-semanticsAccessor for outObj body.vhttp-semanticsAccessor for trailers maker.whttp-semantics Input objectyhttp-semanticsAccessor for headers.zhttp-semantics6Accessor for body length specified in content-length:.{http-semanticsAccessor for body.|http-semanticsAccessor for trailers.http-semantics?@TABCDEFGHIJKLMNOPQRSwxyz{|rstuv}~klhijqpnoed_^`bgacf ]UVWXZY[\  !"#$%&'()*+,-./0123456789:;<=>?@TABCDEFGHIJKLMNOPQRS  Safe-Inferred" Safe-Inferredihttp-semanticsClosing a file resource. Its refresher is automatiaclly generated by the internal timer.http-semanticsRefreshing a file resource while reading. Closing the file must be done by its own timer or something.http-semantics&Making a position read and its closer.http-semanticsPosition read for files.http-semanticsPosition read based on . Safe-Inferred"%ihttp-semanticsHTTP/2 push promise or sever push. Pseudo REQUEST headers in push promise is automatically generated. Then, a server push is sent according to .http-semanticsAccessor for a URL path in a push promise (a virtual request from a server). E.g. "/style/default.css".http-semantics4Accessor for response actually pushed from a server.http-semanticsServer type. Server takes a HTTP request, should generate a HTTP response and push promises, then should give them to the sending function. The sending function would throw exceptions so that they can be logged.http-semantics"Getting the method from a request.http-semantics Getting the path from a request.http-semantics%Getting the authority from a request.http-semantics"Getting the scheme from a request.http-semantics#Getting the headers from a request.http-semantics%Getting the body size from a request.http-semantics1Reading a chunk of the request body. An empty  returned when finished.http-semanticsGeneralization of  which also returns if the  is the final onehttp-semanticsReading request trailers. This function must be called after  returns an empty.http-semanticsCreating response without body.http-semanticsCreating response with file.http-semanticsCreating response with builder.http-semantics!Creating response with streaming.http-semanticsGetter for response body size. This value is available for file body.http-semanticsSetting k to .http-semanticsCreating push promise. The third argument is traditional, not used./khijlnoqp/khijlnoqp Safe-Inferred"*http-semantics Client type.http-semantics(Send a request and receive its response.http-semanticsCreating request without body.http-semanticsCreating request with file.http-semanticsCreating request with builder.http-semantics Creating request with streaming.http-semanticsLike +, but run the action with exceptions maskedhttp-semanticsGeneralized version of ,http-semanticsSetting k to .http-semantics!Getting the status of a response.http-semantics$Getting the headers from a response.http-semantics&Getting the body size from a response.http-semantics2Reading a chunk of the response body. An empty  returned when finished.http-semanticsGeneralization of  which also returns if the  is the final onehttp-semanticsReading response trailers. This function must be called after  returns an empty..}~khijlnoqp.}~khijlnoqp Safe-Inferred"%&'.http-semanticsLike =, but with additional argument indicating total bytes writtenhttp-semantics-Action to run prior to terminating the streamhttp-semantics$Indicate that the stream is finishedhttp-semanticsFlush the streamThis will cause the write buffer to be written to the network socket, without waiting for more data.http-semantics9Construct a DATA frame, optionally terminating the stream The optional  argument can be used to ensure that the final DATA frame in the stream is marked as end-of-stream, as opposed to using a separate, empty , data frame with this flag set.http-semanticsRun the chunk, then continue as specified, unless streaming is finishedhttp-semanticsRun - until completion, then continue as specified  Safe-Inferred.Tkhijlmklhjim             ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 y z { | } ~ ~                               +http-semantics-0.1.1-84Rm26H2DJ7H4B7lSHtTzONetwork.HTTP.Semantics.ClientNetwork.HTTP.Semantics.ServerNetwork.HTTP.SemanticsNetwork.HTTP.Semantics.IO&Network.HTTP.Semantics.Server.Internal&Network.HTTP.Semantics.Client.Internalhttp-semanticsNetwork.HTTP.Semantics.ReadNNetwork.HTTP.Semantics.TokenNetwork.HTTP.Semantics.HeaderNetwork.HTTP.Semantics.TrailerNetwork.HTTP.Semantics.TypesNetwork.HTTP.Semantics.StatusNetwork.HTTP.Semantics.FileNetwork.HTTP.Semantics.FillBuf(http-types-0.12.4-425n3mi3HZMDhwRXXXJXUCNetwork.HTTP.Types.MethodMethodReadN defaultReadNTokentokenIxshouldBeIndexedisPseudotokenKey tokenCIKeytokenFoldedKeytokenAuthority tokenMethod tokenPath tokenScheme tokenStatustokenAcceptCharsettokenAcceptEncodingtokenAcceptLanguagetokenAcceptRanges tokenAccepttokenAccessControlAllowOrigintokenAge tokenAllowtokenAuthorizationtokenCacheControltokenContentDispositiontokenContentEncodingtokenContentLanguagetokenContentLengthtokenContentLocationtokenContentRangetokenContentType tokenCookie tokenDate tokenEtag tokenExpect tokenExpires tokenFrom tokenHost tokenIfMatchtokenIfModifiedSincetokenIfNoneMatch tokenIfRangetokenIfUnmodifiedSincetokenLastModified tokenLink tokenLocationtokenMaxForwardstokenProxyAuthenticatetokenProxyAuthorization tokenRange tokenReferer tokenRefreshtokenRetryAfter tokenServertokenSetCookietokenStrictTransportSecuritytokenTransferEncodingtokenUserAgent tokenVarytokenViatokenWwwAuthenticatetokenConnectiontokenTE"tokenAccessControlAllowCredentialstokenAccessControlAllowHeaderstokenAccessControlAllowMethodstokenAccessControlExposeHeaders tokenAccessControlRequestHeaderstokenAccessControlRequestMethod tokenAltSvctokenContentSecurityPolicytokenEarlyData tokenExpectCttokenForwarded tokenOrigin tokenPurposetokenTimingAllowOrigintokenUpgradeInsecureRequeststokenXContentTypeOptionstokenXForwardedFortokenXFrameOptionstokenXXssProtectiontokenMax minTokenIxmaxStaticTokenIx maxTokenIx cookieTokenIxisCookieTokenIx isMaxTokenIxisStaticTokenIx isStaticTokentoTokenTokenHeaderList TokenHeaderTokenHeaderTable HeaderTable ValueTable HeaderValue FieldValue FieldNamegetHeaderValue getFieldValueNextTrailersMakerTrailers TrailersMakerdefaultTrailersMakerrunTrailersMakerFileSpec ByteCount FileOffsetOutObj outObjHeaders outObjBodyoutObjTrailersInpObj inpObjHeadersinpObjBodySize inpObjBodyinpObjTrailers OutBodyIface outBodyUnmask outBodyPushoutBodyPushFinal outBodyFlushOutBody OutBodyNoneOutBodyStreamingOutBodyStreamingUnmaskOutBodyBuilder OutBodyFileInpBodyPath AuthoritySchemeAux auxTimeHandle auxMySockAddrauxPeerSockAddrResponseRequest$fShowResponse $fShowRequestauxPossibleClientStreamsSentinelCloser RefresherPositionReadMaker PositionReaddefaultPositionReadMaker PushPromisepromiseRequestPathpromiseResponseServer requestMethod requestPathrequestAuthority requestSchemerequestHeadersrequestBodySizegetRequestBodyChunkgetRequestBodyChunk'getRequestTrailersresponseNoBody responseFileresponseBuilderresponseStreamingresponseBodySizesetResponseTrailersMaker pushPromiseClient SendRequest requestNoBody requestFilerequestBuilderrequestStreamingrequestStreamingUnmaskrequestStreamingIfacesetRequestTrailersMakerresponseStatusresponseHeadersgetResponseBodyChunkgetResponseBodyChunk'getResponseTrailers CleanupStreamStreamingChunkStreamingFinishedStreamingFlushStreamingBuilderNext BytesFilledDynaNextfillBuilderBodyGetNextfillFileBodyGetNextfillStreamBodyGetNextbase GHC.MaybeJustbytestring-0.11.5.2Data.ByteString.Internal.Type ByteStringNothing getStatus setStatusGHC.IO.Handle.TypesHandle NextWithTotalrunStreamingChunkrunStreamingBuilder Data.ByteString.Builder.InternalBuilder