q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred4Integer encoding. The first argument is N of prefix. encode 5 10[10] encode 5 1337 [31,154,10] encode 8 42[42]4Integer decoding. The first argument is N of prefix.decode 5 10 $ BS.empty10decode 5 31 $ BS.pack [154,10]1337decode 8 42 $ BS.empty426parseInteger 7 127 $ BS.pack [210,211,212,87,88,89,90](183839313,"XYZ") Safe-InferredNone&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 Bit stream.Data type for Bit.OneZeroFrom  of length 8 to .fromBits [T,F,T,F,T,F,T,F]170fromBits [F,T,F,T,F,T,F,T]85 Safe-Inferred Safe-InferredType for Huffman decoding. Creating .Marking the EOS path   NoneHuffman encoding.toShifted [T,T,T,T] 0Shifted 1 4 "\240"toShifted [T,T,T,T] 4Shifted 1 0 "\SI"toShifted [T,T,T,T] 5Shifted 2 1 "\a\128"Huffman encoding.  None  Safe-Inferred NoneKfromErrorCodeId NoError0"fromErrorCodeId InadequateSecurity12LtoErrorCodeId 0NoErrortoErrorCodeId 0xcInadequateSecuritytoErrorCodeId 0xdUnknownErrorCode 13M)fromSettingsKeyId SettingsHeaderTableSize1,fromSettingsKeyId SettingsMaxHeaderBlockSize6NtoSettingsKeyId 0NothingtoSettingsKeyId 1Just SettingsHeaderTableSizetoSettingsKeyId 6Just SettingsMaxHeaderBlockSizetoSettingsKeyId 7NothingO!Default settings. All values are .PetoSettings [(SettingsHeaderTableSize,10),(SettingsInitialWindowSize,20),(SettingsHeaderTableSize,30)] array (SettingsHeaderTableSize,SettingsMaxHeaderBlockSize) [(SettingsHeaderTableSize,Just 30),(SettingsEnablePush,Nothing),(SettingsMaxConcurrentStreams,Nothing),(SettingsInitialWindowSize,Just 20),(SettingsMaxFrameSize,Nothing),(SettingsMaxHeaderBlockSize,Nothing)]QtfromSettings $ toSettings [(SettingsHeaderTableSize,10),(SettingsInitialWindowSize,20),(SettingsHeaderTableSize,30)]=[(SettingsHeaderTableSize,30),(SettingsInitialWindowSize,20)]RfromFrameTypeId FrameData0!fromFrameTypeId FrameContinuation9StoFrameTypeId 0Just FrameDatatoFrameTypeId 9Just FrameContinuationtoFrameTypeId 10NothingVtestEndStream 0x1TrueW testAck 0x1TrueXtestEndHeader 0x4TrueYtestPadded 0x8TrueZtestPriority 0x20True[setEndStream 01\setAck 01]setEndHeader 04^ setPadded 08_ setPriority 032k  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde5    )('&%$#"! *+,-./0176543289:IHGFEDCBA@?>=<;JKLMNOPQRSTUVWXYZ[\]^_`abcde NoneEf,Parsing byte stream to make an HTTP/2 frame.Helper function to pull off the padding if its there, and will eat up the trailing padding automatically. Calls the parser func passed in with the length of the unpadded portion between the padding octet and the actual padding fHTTP/2 settingsInput byte-stream%(Decoded frame, leftover byte-stream)f fNoneg)Auxiliary information for frame encoding.i!Flags to be set in a frame headerj%Stream id to be set in a frame headerkPadding if anyl(Encoding an HTTP/2 frame to byte stream.ghijkl ghijklghijklNonem  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmfghijkl917654328MN0OPQJ:IHGFEDCBA@?>=<;KL*)('&%$#"! RS  ea`dbcUVWXYZ[\]^_T+,-./ Safe-Inferred+mErrors for decoder.nHeader block is emptyoEncoded string has no lengthp)Eos of huffman string is more than 7 bitsq,Non-eos appears in the end of huffman stringr+Eos appears in the middle of huffman stringsIndex is out of rangetStrategy for HPACK encoding.v$Which compression algorithm is used.w3Whether or not to use Huffman encoding for strings.x*Compression algorithms for HPACK encoding.yUsing indices onlyzUsing the static table only{No compression|Index for table.}%Byte stream in HTTP request/response.To be a  or .~Header. Header value. Header name.Default t. v is y and w is .mnopqrstuvwxyz{|}~mnopqrstuvwxyz{|}~ msrqpontuvwx{zy|}~NoneHuffman decoding.Huffman decoding.   None Safe-Inferred Index or literal. !Whether or not adding to a table. Type for representation. Type for header block.Empty header block.     |        None Encoding  to  according to HuffmanEncoding.Parsing  from . The second : is whether or not huffman encoding is used. The third % is the length of the encoded string.None#Converting the low level format to  .#Converting the low level format to  .  ! forms a pair with corresponding . !"#$%&'()*+,- !"#$%&'()*+,-None. Converting   to the low level format. /.0123456789:. /.0123456789: Safe-Inferred ;>Type for table entry. Size includes the 32 bytes magic number.Size in bytes.<From ~ to ;.=From ; to ~.>Getting the size of ;.?Getting ~.@Getting .AGetting .BDummy ; to initialize a header table.C1How many entries can be stored in a header table? ;DE<=>?@ABC|~;<=>?@ABC ;DE<=>?@ABC Safe-Inferred FGHIJKLMNOPQ FGHIJLMNOPQFIHGJKLMNOPQ Safe-InferredRThe size of static table.SGet ; from the static table.toStaticEntry (SIndex 1)(42,(":authority",""))toStaticEntry (SIndex 8)(42,(":status","200"))toStaticEntry (SIndex 50)(37,("range",""))TPre-defined static table. UVWXYRSTZ[UVWXYRSZ UVWXYRSTZ[NoneE\)Is header key-value stored in the tables?]Which table does | refer to?^Type for header table._An array` Start pointaThe current number of entriesbThe size of the arrayc0The current header table size (defined in HPACK)d,The max header table size (defined in HPACK)eiHeader to the index in Header Table for encoder. Static Table is not included. Nothing for decoder.f Printing ^.g Creating ^q. The default maxHeaderTableSize is 4096 bytes, an array has 128 entries, resulting 1024 bytes in 64bit machineh Creating ^q. The default maxHeaderTableSize is 4096 bytes, an array has 128 entries, resulting 1024 bytes in 64bit machinei Renewing ^ with necessary entries copied.jIs the size of ^ really changed?k Inserting ; to ^ . New ^, the largest new | and a set of dropped OLD | are returned.lLResolving an index from a header. Static table is prefer to header table.mWhich table does | belong to?-no\pqr]st^u_`abcdevwfxyz{|}gh~ijklm|~;<=>?@ABC\pqr]st^fyghijklmno\rqp]ts^u_`abcdevwfxyz{|}gh~ijklmNone Header list. Printing .None <Context for HPACK encoding/decoding. This is destructive!A cache of headers Printing Creating a new 6. The first argument is the size of a header table.Creating a new 6. The first argument is the size of a header table.%Changing the size of Header Table in .The header field is inserted at the beginning of the header table. A reference to the new entry is added to the reference set.The header field is inserted at the beginning of the header table. A reference to the new entry is added to the reference set.Which table does | refer to?Which table contains ~?Getting ; by |. mnopqrs None Decoding   to .Decoding step for one  $. Exporting for the test purpose.None Encoding  to  .  None|    .NoneHPACK decoding, from } to .HPACK encoding, from  to }. Converting * for HTTP request to the low level format.4Converting the low level format for HTTP request to . m would be thrown.mnopqrstuvwxyz{|}~x{zytuvwmsrqpon~}|   ! " # $ % & ' ( ) * + + , - . / / 0 1 2 3 4 5 6 7 8 8 9 : ; < = > ? @ A B C D E F G 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 z { | } ~                    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ<=KLMNOPQRSTUVWXYZ[\]^_``abcdefghiijklmnopqrstuvwxyz{|}~q http2-0.6.0 Network.HTTP2 Network.HPACK!Network.HPACK.HeaderBlock.IntegerNetwork.HPACK.Huffman.Params Network.HPACK.Huffman.ByteStringNetwork.HPACK.Huffman.BitNetwork.HPACK.Huffman.TableNetwork.HPACK.Huffman.TreeNetwork.HPACK.Huffman.EncodeNetwork.HPACK.Builder.Word8Network.HPACK.BuilderNetwork.HTTP2.TypesNetwork.HTTP2.DecodeNetwork.HTTP2.EncodeNetwork.HPACK.TypesNetwork.HPACK.Huffman.DecodeNetwork.HPACK.Huffman%Network.HPACK.HeaderBlock.HeaderField Network.HPACK.HeaderBlock.String Network.HPACK.HeaderBlock.Decode Network.HPACK.HeaderBlock.EncodeNetwork.HPACK.Table.EntryNetwork.HPACK.Table.HashPSQNetwork.HPACK.Table.StaticNetwork.HPACK.Table Network.HPACK.Context.HeaderListNetwork.HPACK.ContextNetwork.HPACK.HeaderBlock.FromNetwork.HPACK.HeaderBlock.ToNetwork.HPACK.HeaderBlock FramePayload UnknownFrameContinuationFrameWindowUpdateFrame GoAwayFrame PingFramePushPromiseFrame SettingsFrameRSTStreamFrame PriorityFrame HeadersFrame DataFrame FrameHeader payloadLengthflagsstreamIdFrame frameHeader framePayloadPaddingHeaderBlockFragmentWindowSizeIncrementPromisedStreamId LastStreamIdStreamDependencyStreamIdentifier FrameFlags PayloadLength FrameTypeIdFrameContinuationFrameWindowUpdate FrameGoAway FramePingFramePushPromise FrameSettingsFrameRSTStream FramePriority FrameHeaders FrameData FrameTypePriority exclusivestreamDependencyweightSettings SettingsKeyIdSettingsMaxHeaderBlockSizeSettingsMaxFrameSizeSettingsInitialWindowSizeSettingsMaxConcurrentStreamsSettingsEnablePushSettingsHeaderTableSize SettingsValue SettingsKey ErrorCodeId UnknownErrorUnknownErrorCodeInadequateSecurityEnhanceYourCalm ConnectErrorCompressionErrorCancel RefusedStreamFrameSizeError StreamClosedSettingsTimeoutFlowControlError InternalError ProtocolErrorNoError ErrorCodefromErrorCodeId toErrorCodeIdfromSettingsKeyIdtoSettingsKeyIddefaultSettings toSettings fromSettingsfromFrameTypeId toFrameTypeIdmaxPayloadLength defaultFlags testEndStreamtestAck testEndHeader testPadded testPriority setEndStreamsetAck setEndHeader setPadded setPrioritytoStreamIdentifierfromStreamIdentifier testExclusive setExclusivestreamIdentifierForSeetingsframePayloadToFrameType decodeFrame EncodeInfo encodeFlagsencodeStreamId encodePadding encodeFrame DecodeError EmptyBlockEmptyEncodedString TooLongEos IllegalEosEosInTheMiddle IndexOverrunEncodeStrategycompressionAlgo useHuffmanCompressionAlgoLinearStaticNaiveIndex ByteStreamHeader HeaderValue HeaderNamedefaultEncodeStrategySize HeaderListContextnewContextForEncodingnewContextForDecoding HPACKDecoding HPACKEncoding encodeHeader decodeHeaderencodedecode parseInteger powerArrayencode'decode'idxEos unpack4bitsc_memcpycopymemcpyBitsBTFfromBitsbaseGHC.WordWord8fromBit huffmanTableHTreetoHTreemarkBinTipEOSInfoeosInfoshowTree showTree' printTreebuildflattenHuffmanEncoding toShiftedShifted ShiftedArrayAOSAaosatoShiftedArray Word8Builder<|w8empty toByteStringBuilder<<empty singletonrun Data.MaybeNothingminSettingsKeyIdmaxSettingsKeyId settingsRange minFrameType maxFrameTypeparseWithPaddingFramePayloadParser protocolErrorframeSizeErrordecodeFrameHeader toErrorCode parseFrameparseFrameHeader doesExceedzeroFrameTypesnonZeroFrameTypesisProtocolErrorpayloadParsersparseFramePayloadparseDataFrameparseHeadersFrameparsePriorityFrameparseRstStreamFrameparseSettingsFrameparsePushPromiseFrameparsePingFrameparseGoAwayFrameparseWindowUpdateFrameparseContinuationFrameparseUnknownFramestreamIdentifierstreamIdentifier'priorityignore intFromWord8intFromWord16beencodeFrameHeaderencodeFramePayload buildFramebuildFrameHeaderbuildFramePayload buildPadding buildPriority buildStreambuildErrorCodeIdbuildFramePayloadDatabuildFramePayloadHeadersbuildFramePayloadPrioritybuildFramePayloadRSTStreambuildFramePayloadSettingsbuildFramePayloadPushPromisebuildFramePayloadPingbuildFramePayloadGoAwaybuildFramePayloadWindowUpdatebuildFramePayloadContinuationbuildFramePayloadUnknown HeaderStuffghc-prim GHC.TypesTrue$fExceptionDecodeErrorHuffmanDecodingWay256Way16PinGoBackForward EndOfStringnextdecway256 constructstepbits4sNamingIndexing HeaderField HeaderBlockemptyHeaderBlockLitIdxNeverNotAddAddLiteralIndexedChangeTableSizebytestring-0.10.4.0Data.ByteString.Internal ByteString parseStringBoolIntfromByteStreamfromByteStreamDebug toHeaderFieldindexedincrementalIndexingmaxSizewithoutIndexing neverIndexing indexedNamenewName headerStuffmask6mask5mask4isIndexedName1isIndexedName2 isHuffman dropHuffman toByteStreamSetterfromHeaderFieldchangeindexset1set01set001set0001set0000setHEntrytoEntry fromEntry entrySize entryHeaderentryHeaderNameentryHeaderValue dummyEntry maxNumbersheaderSizeMagicNumber headerSizeResKVKNHashPSQinsertdeletefromList deleteListsearchstaticTableSize toStaticEntry staticTableSIndexfromStaticIndex toStaticIndex isSIndexValid staticHashPSQstaticTableList HeaderCache WhichTable HeaderTable circularTableoffset numOfEntriesmaxNumOfEntriesheaderTableSizemaxHeaderTableSize reverseIndexprintHeaderTablenewHeaderTableForEncodingnewHeaderTableForDecodingrenewHeaderTable shouldRenew insertEntry lookupTablewhichHIndexKeyValueKeyOnlyNone InStaticTable InHeaderTableTableadj printEntryisHeaderTableEmptyfromHIndexToIndexfromIndexToHIndexfromSIndexToIndexfromIndexToSIndexnewHeaderTable copyTable getEntries copyEntries insertFrontadjustTableSizeadjust insertEnd removeEndisIn toHeaderEntryprintHeaderList headerTable printContextchangeContextForDecodingnewEntryForEncodingnewEntryForDecoding whichTable lookupHeadergetEntryisContextTableEmptyfromHeaderBlock decodeStepStepCtx decodeLoop decodeFinal fromNaming toHeaderBlock encodeFinal encodeLoop naiveStep staticStep linearStep smartStepcheckheadersNotToIndex