!<;3dž      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (c) 2009 Henning ThielemannBSD experimentalnon-portable (not tested)Safe 111(c) 2009 Henning ThielemannBSD experimentalnon-portable (not tested)SafeD http-monadOInserts a header with the given name and value. Allows duplicate header names.E http-monadEAdds the new header only if no previous header shares the same name.F http-monad(Removes old headers with duplicate name.G http-monadInserts multiple headers.H http-monad)Gets a list of headers with a particular :.J http-monadhLookup presence of specific Name in a list of Headers Returns the value from the first matching header. http-monadBJoins consecutive lines where the second line begins with ' ' or '\t'.P6543210/.-,+*)('&%$#"!  987:;<=>?@ABCDEFGHIJKLMNOP987;<:6543210/.-,+*)('&%$#"!  C=>@ABDGEHFJKLMNO?I(c) Henning Thielemann, 2009BSDhttp@henning-thielemann.de experimentalnon-portable (not tested)Safe PQTSRUVWXYZ VUPQTSRWXYZSafe[\]^_`]\[^_`Noneabab SafeN(c) 2009 Henning ThielemannBSD experimentalnon-portable (not tested)SafecedfgjhifgjhicedSafeoqprsturoqpstuNonez{ http-monadchunk size, only relevant for S. | http-monad&dictionary for read and write methods  http-monad chunk size yz{|yz{|(c) 2009 Henning ThielemannBSD experimentalnon-portable (not tested)Safe3  http-monadin contrast to built-in (,,)$, its mappend implementation is lazy http-monaddReceive and parse a HTTP request from the given Stream. Should be used for server side interactions. http-monad!Reads and parses request headers. http-monad=Process request body (called after successful getRequestHead) http-monad|Very simple function, send a HTTP response over the given stream. This could be improved on to use different transfer types. http-monad3Used when we know exactly how many bytes to expect. http-monadUsed when nothing about data is known, Unfortunately waiting for a socket closure causes bad behaviour. Here we just take data once and give up the rest. http-monadA necessary feature of HTTP/1.1 Also the only transfer variety likely to return any footers. Also the only transfer method for infinite data and the prefered one for generated data. http-monadrMaybe in the future we will have a sensible thing to do here, at that time we might want to change the name. http-monadCRemove leading crlfs then call readTillEmpty2 (not required by RFC) http-monadRead lines until an empty line (CRLF), also accepts a connection close as end of input, which is not an HTTP/1.1 compliant thing to do - so probably indicates an error condition. http-monadRead the next line and feed it to an action. If the read line ends with an exception, the subsequent action is not executed. Thus readLine is handled strictly.                      ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D EFGHIJKLMNOPQRSTUVWXYZ[G\]^_`abcde`aG]^_fghijklmnopqrstuvGwfgxyzt{fgxyz|}~   )http-monad-0.1.1.3-2m2DztS5KF3BhJVdA3j4YNNetwork.Monad.HTTP.HeaderNetwork.Monad.TransferNetwork.Monad.ReaderNetwork.Monad.Transfer.IONetwork.Monad.BodyNetwork.Monad.Transfer.Offline#Network.Monad.Transfer.ChunkyLazyIONetwork.Monad.HTTPNetwork.Monad.ExceptionNetwork.Monad.Utility%HTTP-4000.3.12-8Z7cfKlRa6d7BUi4Dstm05Network.HTTP.HeadersHeader HdrCustomHdrContentTransferEncodingHdrLastModified HdrExpiresHdrETagHdrContentTypeHdrContentRange HdrContentMD5HdrContentLocationHdrContentLengthHdrContentLanguageHdrContentEncodingHdrContentBaseHdrAllowHdrWWWAuthenticate HdrWarningHdrVary HdrTrailerHdrTE HdrSetCookie HdrServer HdrRetryAfter HdrPublicHdrProxyAuthenticate HdrLocationHdrAge HdrUserAgent HdrRefererHdrRangeHdrProxyAuthorizationHdrMaxForwardsHdrIfUnmodifiedSince HdrIfRangeHdrIfNoneMatch HdrIfMatchHdrIfModifiedSinceHdrHostHdrFrom HdrExpect HdrCookieHdrAuthorizationHdrAcceptLanguageHdrAcceptEncodingHdrAcceptCharset HdrAcceptHdrVia HdrUpgradeHdrTransferEncoding HdrPragmaHdrDate HdrConnectionHdrCacheControl HeaderName setHeaders getHeaders HasHeadersNameTconsgetNamegetValue dictionarysetManygetMany modifyManyconsNameinsertinsertIfMissingreplace insertMany retrieveMany matchNamefindfindManylookupparse parseManyWarnparseManyStraightConsreadLine readBlock writeBlockAsyncExceptionalSyncExceptionalliftSync liftAsync liftIOSync liftIOAsynctransferrunCharTypefromChartoCharC fromStringtoString isLineTermisEmpty $fCByteString$fCByteString0$fC[]$fCharTypeCharBodysplitAt breakAfter withBuffer$fBodyByteString$fBodyByteString0$fBody[]lengthsendreceiverespond$fMonoidChunkedResponse$fSemigroupChunkedResponse$fShowChunkedResponseAsyncExceptionalTmapbindappendcontinueswitchswitchM joinExtendedcrlfspChunkedResponsegetRequestHeadprocessRequestlinearTransferhopefulTransferchunkedTransferuglyDeathTransferreadTillEmpty1readTillEmpty2readLineSwitch