h$~nf      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-None Safe-Inferred None :http24Integer decoding. The first argument is N of prefix.decodeInteger 5 10 $ BS.empty10%decodeInteger 5 31 $ BS.pack [154,10]1337decodeInteger 8 42 $ BS.empty42http24Integer decoding. The first argument is N of prefix. None 1http2 Bit stream.http2Data type for Bit.http2Zerohttp2Onehttp2From  of length 8 to .fromBits [T,F,T,F,T,F,T,F]170fromBits [F,T,F,T,F,T,F,T]85 None http2&let bs = BS.pack [0x12,0x34,0xf3,0xab]unpack4bits bs[1,2,3,4,15,3,10,11]unpack4bits $ BS.tail bs[3,4,15,3,10,11]  Safe-Inferred  None 4 None#$ http2Huffman encoding.http2Huffman encoding.None http2Type for Huffman decoding.http2 Creating .None http2(Internal representation for header keys.http2Index for value tablehttp2should be indexed in HPACKhttp2is this a pseudo header key? http2Case insensitive header key http2!Extracting an index from a token. http26Extracting a case insensitive header key from a token. http2,Extracting a folded header key from a token.Ahttp2 Not defined in the static table.Bhttp2 Not defined in the static table.Chttp2A place holder to hold header keys not defined in the static table.Dhttp2Minimum token index.Ehttp20Maximun token index defined in the static table.Fhttp2Maximum token index.Ghttp2Token index for #.Hhttp2Is this token ix for Cookie?Ihttp20Is this token ix to be held in the place holder?Jhttp2>Is this token ix for a header not defined in the static table?Khttp2;Is this token for a header not defined in the static table?Lhttp2!Making a token from a header key.&toToken ":authority" == tokenAuthorityTrue toToken "foo"Token {ix = 54, shouldBeIndexed = True, isPseudo = False, tokenKey = "foo"}toToken ":bar"Token {ix = 54, shouldBeIndexed = True, isPseudo = True, tokenKey = ":bar"}  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL LDEFGIHJK  !"#$%&'()*+,-./0123456789:;<=>?@ABCNone3Ohttp2Errors for decoder.Phttp2Index is out of rangeQhttp2+Eos appears in the middle of huffman stringRhttp2,Non-eos appears in the end of huffman stringShttp2)Eos of huffman string is more than 7 bitsThttp2Encoded string has no lengthUhttp2.A peer set the dynamic table size less than 32Vhttp2Type for table entry. Size includes the 32 bytes magic number.jhttp2Size in bytes.http2From f to .http2Getting the size of .http2Getting d.http2Getting .http2Getting h.http2Getting g.http2Dummy  to initialize a dynamic table.http22How many entries can be stored in a dynamic table?bfghjNone http2The size of static table.http2Get  from the static table.toStaticEntry 1Entry 42 (Token {ix = 0, shouldBeIndexed = True, isPseudo = True, tokenKey = ":authority"}) ""toStaticEntry 8Entry 42 (Token {ix = 4, shouldBeIndexed = True, isPseudo = True, tokenKey = ":status"}) "200"toStaticEntry 50Entry 37 (Token {ix = 40, shouldBeIndexed = True, isPseudo = False, tokenKey = "Range"}) ""None #$None mhttp2Huffman decoding.http2Huffman decoding.NoneNone#$? khttp2Type for dynamic table.http2An arrayhttp2 Start pointhttp2The current number of entrieshttp2The size of the arrayhttp21The current dynamic table size (defined in HPACK)http2-The max dynamic table size (defined in HPACK)http2 Printing k.lhttp2When SETTINGS_HEADER_TABLE_SIZE is received from a peer, its value should be set by this function.mhttp2 Creating k for encoding.nhttp2 Creating k for decoding.http2 Renewing k with necessary entries copied.ohttp2 Creating k< for encoding, performing the action and clearing the k.phttp2 Creating k< for decoding, performing the action and clearing the k.qhttp2 Clearing k. Currently, this frees the temporary buffer for Huffman decoding.http2 Inserting  to k . New k, the largest new b and a set of dropped OLD b are returned.mhttp2The dynamic table sizenhttp2The dynamic table sizehttp21The size of temporary buffer for Huffman decodingohttp2The dynamic table sizephttp2The dynamic table sizehttp2(The size of temporary buffer for Huffman"klmnopqNone! -bfghjklmnopqNone #$% rhttp2 Converting e to the HPACK format. This function has overhead of allocating/freeing a temporary buffer. 5 will be thrown if the temporary buffer is too small.shttp2 Converting c, to the HPACK format directly in the buffer.4th argument is relating to dynamic table size update. When calling this function for a new c, it must be . If  and set by l, dynamic table size update is generated at the beginning of the HPACK format.'The return value is a pair of leftover c and how many bytes are filled in the buffer. If the leftover is empty, the encoding is finished. Otherwise, this function should be called with it again. 4th argument must be .rhttp2The size of a temporary buffer.http2An HPACK formatshttp2 at the first time,  when continued.http2Leftover, filled lengthrsNone #$)thttp2%A pair of token list and value table.uhttp2An array to get g quickly. v+ should be used. Internally, the key is  .vhttp2 Accessing g with .whttp2Converting the HPACK format to e.Headers are decoded as is.O/ would be thrown if the HPACK format is broken. will be thrown if the temporary buffer for Huffman decoding is too small.xhttp2Converting the HPACK format to c and u.,Multiple values of Cookie: are concatenated.0If a pseudo header appears multiple times, Y is thrown.'If unknown pseudo headers appear, Y is thrown.7If pseudo headers are found after normal headers, Y is thrown./If a header key contains capital letters, Y is thrown.O/ would be thrown if the HPACK format is broken. will be thrown if the temporary buffer for Huffman decoding is too small.yhttp27Converting a header list of the http-types style to c and u.whttp2An HPACK formatxhttp2An HPACK formattuvwxyNone)rstuvwxyNone*bzhttp2Default dynamic table size. The value is 4,096 bytes: an array has 128 entries.defaultDynamicTableSize40960OPQRSTUVWXYZ[\]^`_abcdefghijklmnopqrstuvwxyz0rwsxkzmnqopl^`_aZ[\]iOPQRSTUVWXYefhgcdutvyjb Safe-Inferred#$+{http2Internal representation of priority in priority queues. The precedence of a dequeued entry should be specified to enqueue when the entry is enqueued again.http2 For test only{ Safe-Inferred, {None-Ihttp2Starting a thread pool manager. Its action is initially set to 'return ()' and should be set by . This allows that the action can include the manager itself.http2Registering closer for a resource and returning a timer refresher. None-|http2Naive implementation for readN.|None 3@8}http2(The data type for HTTP/2 frame payloads.http2'The data type for HTTP/2 frame headers.http2 The data type for HTTP/2 frames.http2!The type for padding in payloads.http26The type for fragments of a header encoded with HPACK.http2The type for stream identifierhttp2The type for flags.http2The type for frame type.http2The type for raw frame type.http2Type for stream priorityhttp2>The type for weight in priority. Its values are from 1 to 256.http2The type for window size.http2Cooked version of settings. This is suitable to be stored in a HTTP/2 context.http2Association list of SETTINGS.http2 The type for raw SETTINGS value.http2The type for SETTINGS key.http2)The connection error or the stream error.http2The type for error code. See  -https://tools.ietf.org/html/rfc7540#section-7.http2The type for raw error code.http2"The length of HTTP/2 frame header.frameHeaderLength9http2 Converting  to .fromErrorCodeId NoError0"fromErrorCodeId InadequateSecurity12http2 Converting  to .toErrorCodeId 0NoErrortoErrorCodeId 0xcInadequateSecuritytoErrorCodeId 0xeUnknownErrorCode 14http2 Obtaining  from .http2 Converting  to raw value.)fromSettingsKeyId SettingsHeaderTableSize1,fromSettingsKeyId SettingsMaxHeaderBlockSize6http2Converting raw value to .toSettingsKeyId 0NothingtoSettingsKeyId 1Just SettingsHeaderTableSizetoSettingsKeyId 6Just SettingsMaxHeaderBlockSizetoSettingsKeyId 7Nothinghttp2 Checking  and reporting an error if any.*checkSettingsList [(SettingsEnablePush,2)]Just (ConnectionError ProtocolError "enable push must be 0 or 1")http2The default settings.defaultSettingsSettings {headerTableSize = 4096, enablePush = True, maxConcurrentStreams = Nothing, initialWindowSize = 65535, maxFrameSize = 16384, maxHeaderBlockSize = Nothing}http2Updating settings.updateSettings defaultSettings [(SettingsEnablePush,0),(SettingsMaxHeaderBlockSize,200)]Settings {headerTableSize = 4096, enablePush = False, maxConcurrentStreams = Nothing, initialWindowSize = 65535, maxFrameSize = 16384, maxHeaderBlockSize = Just 200}http2 The default initial window size.defaultInitialWindowSize65535http2The maximum window size. maxWindowSize 2147483647http2:Checking if a window size exceeds the maximum window size.isWindowOverflow 10FalseisWindowOverflow maxWindowSizeFalse$isWindowOverflow (maxWindowSize + 1)Truehttp2Default concurrency.recommendedConcurrency100http2+Default priority which depends on stream 0.defaultPriority?Priority {exclusive = False, streamDependency = 0, weight = 16}http2+Highest priority which depends on stream 0.highestPriorityPriority {exclusive = False, streamDependency = 0, weight = 256}http2 Converting  to .fromFrameTypeId FrameData0!fromFrameTypeId FrameContinuation9!fromFrameTypeId (FrameUnknown 10)10http2 Converting  to .toFrameTypeId 0 FrameDatatoFrameTypeId 9FrameContinuationtoFrameTypeId 10FrameUnknown 10http2%The maximum length of HTTP/2 payload.maxPayloadLength16384http2-The initial value of flags. No flags are set. defaultFlags0http2Checking if the END_STREAM flag is set. >>> testEndStream 0x1 Truehttp27Checking if the ACK flag is set. >>> testAck 0x1 Truehttp2(Checking if the END_HEADERS flag is set.testEndHeader 0x4Truehttp2#Checking if the PADDED flag is set.testPadded 0x8Truehttp2%Checking if the PRIORITY flag is set.testPriority 0x20Truehttp2Setting the END_STREAM flag.setEndStream 01http2Setting the ACK flag.setAck 01http2Setting the END_HEADERS flag.setEndHeader 04http2Setting the PADDED flag. setPadded 08http2Setting the PRIORITY flag. setPriority 032http2.Checking if the stream identifier for control. isControl 0True isControl 1Falsehttp2.Checking if the stream identifier for request. isRequest 0False isRequest 1Truehttp2/Checking if the stream identifier for response. isResponse 0False isResponse 2Truehttp2&Checking if the exclusive flag is set.http2Setting the exclusive flag.http2Clearing the exclusive flag.http2Getting  from }.,framePayloadToFrameTypeId (DataFrame "body") FrameDatahttp22Checking if padding is defined in this frame type.isPaddingDefined $ DataFrame ""TrueisPaddingDefined $ PingFrame ""False}~NoneD http2&Abstract data type for priority trees.http2Default precedence.http2 Converting  to {. When an entry is enqueued at the first time, this function should be used.http2Creating a new priority tree.http2Bringing up the structure of the priority tree. This must be used for Priority frame.http2Enqueuing an entry to the priority tree. This must be used for Header frame.http2'Checking if the priority tree is empty.http2'Checking if the priority tree is empty.http2*Dequeuing an entry from the priority tree.http2*Dequeuing an entry from the priority tree.http2$Deleting the entry corresponding to .  and 5 are used to change the priority of a live stream. { {None#$I http2)Auxiliary information for frame encoding.http2!Flags to be set in a frame headerhttp2%Stream id to be set in a frame headerhttp2Padding if any. In the case where this value is set but the priority flag is not set, this value gets preference over the priority flag. So, if this value is set, the priority flag is also set.http2A smart builder of .encodeInfo setAck 0EncodeInfo {encodeFlags = 1, encodeStreamId = 0, encodePadding = Nothing}http2Encoding an HTTP/2 frame to . This function is not efficient enough for high performace program because of the concatenation of .0encodeFrame (encodeInfo id 1) (DataFrame "body")*"\NUL\NUL\EOT\NUL\NUL\NUL\NUL\NUL\SOHbody"http2Encoding an HTTP/2 frame to [$]. This is suitable for sendMany.http2Encoding an HTTP/2 frame header. The frame header must be completed.http2Writing an encoded HTTP/2 frame header to the buffer. The length of the buffer must be larger than or equal to 9 bytes.http2Encoding an HTTP/2 frame payload. This returns a complete frame header and chunks of payload.http2stream identifier  None #$O:http2#The type for frame payload decoder.http2Decoding an HTTP/2 frame to . The second argument must be include the entire of frame. So, this function is not useful for real applications but useful for testing.http28Decoding an HTTP/2 frame header. Must supply 9 bytes.http26Checking a frame header and reporting an error if any.checkFrameHeader defaultSettings (FrameData,(FrameHeader 100 0 0))Left (ConnectionError ProtocolError "cannot used in control stream")http2Decoding an HTTP/2 frame payload. This function is considered to return a frame payload decoder according to a frame type.http2%Frame payload decoder for DATA frame.http2(Frame payload decoder for HEADERS frame.http2)Frame payload decoder for PRIORITY frame.http2+Frame payload decoder for RST_STREAM frame.http2)Frame payload decoder for SETTINGS frame.http2-Frame payload decoder for PUSH_PROMISE frame.http2%Frame payload decoder for PING frame.http2'Frame payload decoder for GOAWAY frame.http2.Frame payload decoder for WINDOW_UPDATE frame.http2-Frame payload decoder for CONTINUATION frame.http2HTTP/2 settingshttp2Input byte-streamhttp2 Decoded frameNone Phttp2The preface of HTTP/2.connectionPreface""PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"http2Length of the preface.connectionPrefaceLength24}~}~!NoneR"None]http2&Making a position read and its closer.http2Manipulating a file resource.http2Closing a file resource. Its refresher is automatiaclly generated by the internal timer.http2Refreshing a file resource while reading. Closing the file must be done by its own timer or something.http2Position read for files.http2How many bytes to readhttp2Offset for file.http2File specification.http2HTTP/2 push promise or sever push. Pseudo REQUEST headers in push promise is automatically generated. Then, a server push is sent according to .http2Accessor for a URL path in a push promise (a virtual request from a server). E.g. "/style/default.css".http24Accessor for response actually pushed from a server.http2Accessor for response weight.http21Either the next trailers maker or final trailers.http2Trailers 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 makerhttp2HTTP response body.http27Streaming body takes a write action and a flush action.http2HTTP response.http2Accessor for response status.http2Accessor for response header.http2Accessor for response body.http2%Accessor for response trailers maker.http2Additional information.http2Time handle for the worker processing this request and response.http2 HTTP request.http2Accessor for request headers.http26Accessor for body length specified in content-length:.http2Accessor for body.http2HTTP/2 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.http2HTTP/2 server configuration..#None %^6$None%^ %None#$%^&None%_http2"The context for HTTP/2 connection.http2RFC 7540 says "Other frames (from any stream) MUST NOT occur between the HEADERS frame and any CONTINUATION frames that might follow". This field is used to implement this requirement.'None #$%`S(None #$%`|)None #$%`*None %`+None #$a http2Running HTTP/2 server.,Noneashttp2Position read based on .-Nonebhttp2Making configuration whose IO is not efficient. A write buffer is allocated internally. That should be deallocated by the returned action.http2Making simple configuration whose IO is not efficient. A write buffer is allocated internally.http26Deallocating the resource of the simple configuration.None #$eZ http21Reading a chunk of the request body. An empty  returned when finished.http2Reading request trailers. This function must be called after  returns an empty.http2Creating response without body.http2Creating response with file.http2Creating response with builder.http2!Creating response with streaming.http2Getter for response body size. This value is available for file body.http2Setting  to .http2#TrailersMake to create no trailers.http2Creating push promise.0|0|./0./1./2./233456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~               """"""""""""""""""""""""""""""""+,---             !!!!!""""""""""""""######################################################$$$$$$$$$$$$%%%&&&&&&&&&&&&&&&&&&&&&&&&'(((((()*+!http2-2.0.6-DF82Vmt5QNybKJqMFknIz Network.HPACKNetwork.HPACK.TokenNetwork.HTTP2.PriorityNetwork.HTTP2.Server Network.HTTP2ImportsNetwork.HPACK.Builder!Network.HPACK.HeaderBlock.IntegerNetwork.HPACK.Huffman.Bit Network.HPACK.Huffman.ByteStringNetwork.HPACK.Huffman.ParamsNetwork.HPACK.Huffman.TableNetwork.HPACK.Huffman.EncodeNetwork.HPACK.Huffman.TreeNetwork.HPACK.TypesNetwork.HPACK.Table.EntryNetwork.HPACK.Table.StaticNetwork.HPACK.Table.RevIndexNetwork.HPACK.Huffman.DecodeNetwork.HPACK.HuffmanNetwork.HPACK.Table.DynamicNetwork.HPACK.Table Network.HPACK.HeaderBlock.Encode Network.HPACK.HeaderBlock.DecodeNetwork.HPACK.HeaderBlockNetwork.HTTP2.Priority.PSQNetwork.HTTP2.Priority.QueueNetwork.HTTP2.Server.ManagerNetwork.HTTP2.Server.ReadNNetwork.HTTP2.TypesNetwork.HTTP2.EncodeNetwork.HTTP2.Decode Network.HTTP2.Server.EncodeFrameNetwork.HTTP2.Server.APINetwork.HTTP2.Server.TypesNetwork.HTTP2.Server.StreamNetwork.HTTP2.Server.QueueNetwork.HTTP2.Server.ContextNetwork.HTTP2.Server.WorkerNetwork.HTTP2.Server.HPACKNetwork.HTTP2.Server.SenderNetwork.HTTP2.Server.ReceiverNetwork.HTTP2.Server.RunNetwork.HTTP2.Server.FileNetwork.HTTP2.Server.Config/network-byte-order-0.1.6-3sHuH4W0kbnGhB4zuCldriNetwork.ByteOrderBuffer BufferSize BufferOverrunTokenixshouldBeIndexedisPseudotokenKeytokenIx tokenCIKeytokenFoldedKeytokenAuthority tokenMethod tokenPath tokenScheme tokenStatustokenAcceptCharsettokenAcceptEncodingtokenAcceptLanguagetokenAcceptRanges tokenAccepttokenAccessControlAllowOrigintokenAge tokenAllowtokenAuthorizationtokenCacheControltokenContentDispositiontokenContentEncodingtokenContentLanguagetokenContentLengthtokenContentLocationtokenContentRangetokenContentType tokenCookie tokenDate tokenEtag tokenExpect tokenExpires tokenFrom tokenHost tokenIfMatchtokenIfModifiedSincetokenIfNoneMatch tokenIfRangetokenIfUnmodifiedSincetokenLastModified tokenLink tokenLocationtokenMaxForwardstokenProxyAuthenticatetokenProxyAuthorization tokenRange tokenReferer tokenRefreshtokenRetryAfter tokenServertokenSetCookietokenStrictTransportSecuritytokenTransferEncodingtokenUserAgent tokenVarytokenViatokenWwwAuthenticatetokenConnectiontokenTEtokenMax minTokenIxmaxStaticTokenIx maxTokenIx cookieTokenIxisCookieTokenIx isMaxTokenIxisStaticTokenIx isStaticTokentoToken $fEqToken $fShowToken DecodeError IndexOverrunEosInTheMiddle IllegalEos TooLongEosEmptyEncodedStringTooSmallTableSizeTooLargeTableSizeIllegalTableSizeUpdateHeaderBlockTruncatedIllegalHeaderNameEncodeStrategycompressionAlgo useHuffmanCompressionAlgoNaiveStaticLinearIndexTokenHeaderList TokenHeader HeaderListHeader HeaderValue HeaderNamedefaultEncodeStrategySize DynamicTablesetLimitForEncodingnewDynamicTableForEncodingnewDynamicTableForDecodingwithDynamicTableForEncodingwithDynamicTableForDecodingclearDynamicTable encodeHeaderencodeTokenHeader HeaderTable ValueTablegetHeaderValue decodeHeaderdecodeTokenHeader toHeaderTabledefaultDynamicTableSize Precedence defaultReadN FramePayload DataFrame HeadersFrame PriorityFrameRSTStreamFrame SettingsFramePushPromiseFrame PingFrame GoAwayFrameWindowUpdateFrameContinuationFrame UnknownFrame FrameHeader payloadLengthflagsstreamIdFrame frameHeader framePayloadPaddingHeaderBlockFragmentStreamId FrameFlags FrameTypeId FrameData FrameHeaders FramePriorityFrameRSTStream FrameSettingsFramePushPromise FramePing FrameGoAwayFrameWindowUpdateFrameContinuation FrameUnknown FrameTypePriority exclusivestreamDependencyweightWeight WindowSizeSettingsheaderTableSize enablePushmaxConcurrentStreamsinitialWindowSize maxFrameSizemaxHeaderBlockSize SettingsList SettingsValue SettingsKeyIdSettingsHeaderTableSizeSettingsEnablePushSettingsMaxConcurrentStreamsSettingsInitialWindowSizeSettingsMaxFrameSizeSettingsMaxHeaderBlockSize HTTP2ErrorConnectionError StreamError ErrorCodeIdNoError ProtocolError InternalErrorFlowControlErrorSettingsTimeout StreamClosedFrameSizeError RefusedStreamCancelCompressionError ConnectErrorEnhanceYourCalmInadequateSecurityHTTP11RequiredUnknownErrorCode ErrorCodeframeHeaderLengthfromErrorCodeId toErrorCodeId errorCodeIdfromSettingsKeyIdtoSettingsKeyIdcheckSettingsListdefaultSettingsupdateSettingsdefaultInitialWindowSize maxWindowSizeisWindowOverflowrecommendedConcurrencydefaultPriorityhighestPriorityfromFrameTypeId toFrameTypeIdmaxPayloadLength defaultFlags testEndStreamtestAck testEndHeader testPadded testPriority setEndStreamsetAck setEndHeader setPadded setPriority isControl isRequest isResponse testExclusive setExclusiveclearExclusiveframePayloadToFrameTypeIdisPaddingDefined PriorityTreedefaultPrecedence toPrecedencenewPriorityTreeprepareenqueueisEmpty isEmptySTMdequeue dequeueSTMdelete EncodeInfo encodeFlagsencodeStreamId encodePadding encodeInfo encodeFrameencodeFrameChunksencodeFrameHeaderencodeFrameHeaderBufencodeFramePayloadFramePayloadDecoder decodeFramedecodeFrameHeadercheckFrameHeaderdecodeFramePayloaddecodeDataFramedecodeHeadersFramedecodePriorityFramedecoderstStreamFramedecodeSettingsFramedecodePushPromiseFramedecodePingFramedecodeGoAwayFramedecodeWindowUpdateFramedecodeContinuationFrameconnectionPrefaceconnectionPrefaceLengthPositionReadMakerSentinelCloser Refresher PositionRead ByteCount FileOffsetFileSpec PushPromisepromiseRequestPathpromiseResponse promiseWeightNextTrailersMakerTrailers TrailersMakerResponseresponseStatusAux auxTimeHandleRequestrequestHeadersrequestBodySizeServerConfigconfWriteBufferconfBufferSize confSendAll confReadNconfPositionReadMakerrundefaultPositionReadMakermakeSimpleConfigallocSimpleConfigfreeSimpleConfiggetRequestBodyChunkgetRequestTrailersresponseNoBody responseFileresponseBuilderresponseStreamingresponseBodySizesetResponseTrailersMakerdefaultTrailersMaker pushPromisebaseGHC.Base++GHC.Listfilterzipmap Control.Monadguardjoin GHC.FloatFloatinglog1mexplog1pexpexpm1log1patanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtlogpiexpMonadreturn>>=>>Functor<$fmapghc-prim GHC.ClassesOrd<<=>maxmin>=compareControl.Monad.Fail MonadFailfail Applicative<*liftA2*>pure<*> Data.FoldableFoldablefoldr'foldMap'foldfoldMaptoListelemminimummaximumfoldr1productsumfoldl1foldl'foldllengthfoldrnullData.TraversablemapMsequence<>Monoidmconcatmemptymappend GHC.TypesIntGHC.IntInt8Int16Int32Int64 GHC.MaybeMaybeNothingJustOrderingGTLTEQWordGHC.WordWord8Word16Word32Word64mfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterM Data.ListisSubsequenceOf mapAccumR mapAccumLforMControl.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipListData.Functor.ConstConstgetConstfindnotElem minimumBy maximumByallanyorand concatMapconcatmsumasum sequence_ sequenceA_forM_mapM_for_ traverse_foldlMfoldrM Data.MonoidFirstgetFirstLastgetLastApgetApData.Semigroup.InternalDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductAltgetAlt Data.OldListunwordswordsunlineslinesunfoldrsortOnsortBysort permutations subsequencestailsinitsgroupBygroupdeleteFirstsByunzip7unzip6unzip5unzip4zipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4genericReplicate genericIndexgenericSplitAt genericDrop genericTake genericLengthinsertByinsert partition transpose intercalate intersperse intersectBy intersectunionByunion\\deleteBynubBynub isInfixOf isSuffixOf isPrefixOf findIndices findIndex elemIndices elemIndex stripPrefix dropWhileEndData.Ord comparingDowngetDownNumericshowOctshowHex showIntAtBase showHFloat showGFloatAlt showFFloatAlt showGFloat showFFloat showEFloatshowInt readSigned readFloatreadHexreadDecreadOctreadIntGHC.Read lexDigitsfromRat floatToDigits showFloat bitReverse64 bitReverse32 bitReverse16 bitReverse8 byteSwap64 byteSwap32 byteSwap16 Data.BitstoIntegralSizedpopCountDefaulttestBitDefault bitDefaultpopCountrotateRrotateL unsafeShiftRshiftR unsafeShiftLshiftLisSignedbitSize bitSizeMaybetestBit complementBitclearBitsetBitbitzeroBitsrotateshift complementxor.&..|. FiniteBitscountTrailingZeros finiteBitSizecountLeadingZerosGHC.Real showSignedunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiterate'iteratescanr1scanrscanl'scanl1scanlfoldl1'initlasttailunconshead Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybe Data.Functorvoid<$>apliftM5liftM4liftM3liftM2liftMwhen=<<liftA3liftA<**> Alternativemanysomeempty<|> MonadPlusmzeromplusbytestring-0.10.10.0Data.ByteString.Internal ByteStringPSBuilder<< singleton decodeIntegerdecode encodeIntegerencodeBitsBFTfromBits unpack4bitscopyidxEos huffmanTable huffmanTable'HuffmanEncoding encodeHuffmanHTreetoHTreeBinTipeosInfoshowTree printTreeflatten HeaderStuffHIndexSIndexDIndexEntrytoEntry entrySizeentryTokenHeader entryTokenentryHeaderNameentryHeaderValue dummyEntry maxNumbers toEntryTokenstaticTableSize toStaticEntrystaticTableListRevIndex newRevIndex renewRevIndexlookupRevIndexlookupRevIndex'insertRevIndexdeleteRevIndexListHuffmanDecoding decodeHuffman circularTableoffset numOfEntriesmaxNumOfEntriesdynamicTableSizemaxDynamicTableSizeprintDynamicTablerenewDynamicTable insertEntryTableSizeActionIgnoreKeepChangecodeInfoCodeInfo DecodeInfotoIndexedEntryfromHIndexToIndexhuffmanDecoderisDynamicTableEmptyisSuitableSizeneedChangeTableSizeresetLimitForEncodingtoDynamicEntry getRevIndexTrueFalse newPrecedence PriorityQueue baseDeficitqueue dependencydeficitKeyTPriorityQueuenewstart setAction timeoutCloseManagerActionstop spawnActionaddMyId deleteMyIdtimeoutKillThread minFrameType maxFrameType goawayFrame resetFrame settingsFrame pingFramewindowUpdateFrame ResponseBody RspStreamingresponseHeaders responseBodyresponseTrailers requestBodyRspFile RspBuilder RspNoBodyrequestTrailers_ RSBuilderRSFlushRSFinishControl CSettings0 CSettingsCFrameCGoawayCFinishNext BytesFilledDynaNext OutputTypeONextOPushOWaitORspnOutputoutputSentinel outputStrmQ outputTypeoutputResponse outputStreamInput StreamTableStreamstreamPrecedence streamWindow streamState streamNumber StreamStateReservedClosedHalfClosedLocalHalfClosedRemoteOpenIdle ClosedCode ResetByMeResetKilledFinished OpenStateBodyHasBodyNoBody Continued JustOpenedisIdleisOpenisHalfClosedRemoteisHalfClosedLocalisClosed newStreamreadStreamStatenewStreamTableremovesearchupdateAllStreamWindowforkAndEnqueueWhenReady enqueueOutputenqueueControlContext continuedconnectionWindowdecodeDynamicTableencodeDynamicTablecontrolQoutputQinputQserverStreamIdclientStreamIdpriorityTreeSize concurrency streamTable firstSettings http2settings newContext clearContext newPushStreamsetStreamStateopenedhalfClosedRemotehalfClosedLocalclosedworker fixHeadershpackEncodeHeaderhpackEncodeHeaderLoophpackDecodeHeaderhpackDecodeTrailerjust frameSender frameReceivergoawayGHC.IO.Handle.TypesHandle