iV      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ^          %Abstract data type for URI Authority Abstract data type for URI    Parsing URI. !"# Getting a hostname from . Getting a port number from . Making a URL string from . Making a URL string from  without port. (Checking whether or not URI starts with "http:". Decoding the %XX encoding. Decoding the %XX encoding.        +Internal information of CGI converted from . A porgram path to be executed. A script name. A path information. A query string. %Control information of how to handle .  is converted into CGI. 2 is converted into a resource (typically a file). ) cannot be converted into any resources. ,The configuration for the basic web server. A mapper from  to . 4Resource obtaining function. The second argument is 9 (offset of the resource, and length from the offset). 2A function to return the size of the resource and $ its modification time if exists. !+A server name specified the Server: field. "$%& for passing CGI. (See c10k library.)  !" !" !" h#Exceptions for Web server $%&'The type for persist connection or not '()*The type for Content-Type. +Field value of HTTP header. ,Field key of HTTP header. -./0123456789:;<=>?@Status of HTTP. ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiVersions of HTTP. jklMethods of HTTP. mnopqrst&uvwxyConverting numeric status to @. z Returning ' for 4xx and 5xx. ()*+{Converting field key to ,. | Converting , to field key. ,-}6Selecting a value of Content-Type from a file suffix. ~The value for text/html. ./0^#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~^#%$$%&)(''()*+,?>=<;:9876543210/.--./0123456789:;<=>?@(hgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBAABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghikjjkltsrqponmmnopqrstuvwxyz{|}~62Abstract data type for Key-values of HTTP header. 1A class to abstract  and . 23%Abstract data type of HTTP response. 4Response status $Abstract data type of HTTP request. 5Request method BURI parsed from absolute URL or relative URL with the Host: field  HTTP version Key-values of request header Entity body if exists +Length of entity body from Content-Length: 6Default Request. 7Default Response. A function to make . A function to make . A function to make . Receiving HTTP request from 8.  If request is broken, 9 is returned. :;<Parsing HTTP header from 8. / This function is useful to parse CGI output. =>?Sending HTTP response to 8.  If (# is specified, the HTTP connection  will be kept. If ). is specified, the connection will be closed.  i should be copied from . @ABCD!Looking up the HTTP field value. !Looking up the HTTP field value. Inserting the HTTP field. Inserting the HTTP field. EFGHIJKLMNOw#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ltsrqponmuikjwv@hgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBAyxz&)('#%$,?>=<;:9876543210/.-+{|*~}The configuration for . 7A hook to be called when an HTTP connection is closed. *A hook to be called when access succeeds. 1A hook to be called when an access error occurs. /A hook to be called when a fatal error occurs. 8A time to unblock receiving an HTTP request in seconds. The type for HTTP server. A function to run an . 8 should be mode by ! converting an accepted socket.  Keep-alive /< termination of HTTP 1.0 and HTTP 1.1 is correctly handled.  So, 8 need not to handle the Connection: header in response. 7 The Date: header is automatically added in response. PQRST  UVWXYZ[\]WW$ Creating  with .  The created  can handle GET / HEAD / POST; 7 OK, Not Found, Not Modified, Moved Permanently, etc; * partial getting; language negotication; $ CGI, chunked data for CGI output;  If http:// example.com/path does not exist but  http:// example.com/path/ exists, the created   redirects it. http:// example.com/path/ is mapped to  / somewhere/path/ by " and index.html and index.html.en ) automatically added and try to read by .  If Accept-Language is xx and yy in order, = index.html.xx, index.html.yy, index.html and index.html.en  are tried. The created  does not dynamically > make index.html for a directory even if index.html does not  exist for security reasons. ^_`abcdefghijklmnopqrstuvwxyz{|}~ !" !"      ! " # $ % & ' ' ( ) * + , - . / 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 z { | } ~        !"#$%&'()*+ ,-./01/01 2345 6 7 8 9 : ; < = >?@ABCDECFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab c d e f g h i j klmnopqrstuvwxyz{|}~webserver-0.4.2Network.Web.URINetwork.Web.Server.BasicNetwork.Web.HTTPNetwork.Web.ServerParsecNetwork.Web.Server.RangeNetwork.Web.Server.LangNetwork.Web.DateNetwork.Web.Server.ParamsNetwork.Web.ParamsNetwork.Web.Server.CGIURIAuth uriUserInfo uriRegNameuriPortURI uriScheme uriAuthorityuriPathuriQuery uriFragmentparseURI uriHostName uriPortNumbertoURL toURLwoPort isAbsoluteURIunEscapeByteStringunEscapeStringCGIprogPath scriptNamepathInfo queryStringPathPathCGIFileNone BasicConfigmapperobtaininfo serverNametcpInfoServerExceptionTerminatedByClientTimeOutPersist PerUnknownKeepCloseCT FieldValueFieldKeyFkOtherFkTransferEncodingFkStatus FkSetCookie2FkServerFkRange FkLocationFkLastModifiedFkIfUnmodifiedSince FkIfRangeFkIfModifiedSinceFkHostFkDateFkCookie FkContentTypeFkContentLength FkConnectionFkCacheControlFkAcceptLanguageStatusHTTPVersionNotSupportedGatewayTimeoutServiceUnavailable BadGatewayNotImplementedInternalServerErrorExpectationFailedRequestedRangeNotSatisfiableUnsupportedMediaTypeRequestURITooLargeRequestEntityTooLargePreconditionFailedLengthRequiredGoneConflictRequestTimeoutProxyAuthenticationRequired NotAcceptableMethodNotAllowedNotFound ForbiddenPaymentRequired Unauthorized BadRequestTemporaryRedirectUseProxy NotModifiedSeeOtherFoundMovedPermanentlyMultipleChoicesPartialContent ResetContent NoContentNonAuthoritativeInformationAcceptedCreatedOKSwitchingProtocolsContinueVersionHTTP11HTTP10Method UnknownMethodCONNECTTRACEDELETEPUTPOSTHEADGETtoMethod fromVersion toVersion fromStatustoStatus badStatus toFieldKey fromFieldKeyselectContentTypetextHtml fromPersist toPersistFieldsCommResponse rspStatus rspFieldsrspBody rspLength rspLogMsgRequest reqMethodreqURI reqVersion reqFieldsreqBody reqLength makeResponse makeResponse2 makeResponse3receive receiveFieldsrespond lookupField lookupField' insertField insertField' WebConfig closedHook accessHook errorHookfatalErrorHookconnectionTimer WebServer connection basicServer<$><$<*>*><*pureparsec-2.1.0.1(Text.ParserCombinators.Parsec.Combinator lookAheadmanyTill notFollowedByeofanyTokenchainr1chainl1chainlchainrcountendByendBy1sepEndBy sepEndBy1sepBy1sepBymany1 skipMany1betweenoptional optionMaybeoptionchoice"Text.ParserCombinators.Parsec.CharstringsatisfyanyCharcharoctDigithexDigitdigitletteralphaNumloweruppertabnewlinespacespacesnoneOfoneOf CharParser"Text.ParserCombinators.Parsec.PrimtokensskipManymany unexpectedlabelslabel tokenPrimEx tokenPrimtokentrypzero runParserparse parseTest parseFromFilesetParserStategetParserStatesetInput setPositiongetInput getPosition updateStatesetStategetState<|>Parser GenParser stateUserstatePos stateInputState#Text.ParserCombinators.Parsec.ErrorerrorPos ParseError!Text.ParserCombinators.Parsec.PossetSourceColumn setSourceLine setSourceNameincSourceColumn incSourceLine sourceColumn sourceLine sourceName SourceNameLineColumn SourcePosRange skipAndSizeadjust parseRange byteRangerangesrange suffixRangenum parseLangacceptLanguage rangeQvalue languageRangelanguagesublangqualityqvalueuptoHttpDate parseDate rfc1123Format rfc850Format asctimeFormatpreferredFormat rfc1123Date rfc850Date asctimeDate utcToDateparseURLparsePathQueryparseAuthority c10k-0.4.0Network.TCPInfoTCPInfo methodAlistghc-primGHC.BoolTrue fieldKeyListfieldStringListstringFieldKeyfieldKeyString<:> capitalize textPlainappOct contentTypeDB getFields setFieldsdefaultRequestdefaultResponsebaseGHC.IO.Handle.TypesHandle Data.MaybeNothingreceiveRequestisEOHreceiveRequestLinetoURItoURI' receiveBodysendStatusLinesendResponseFieldssendResponseBody sendChunk emptyFieldstoFields fromFields copyFields composeField parseFieldparseRequestLinechopchomptrimcrlfspcsession recvRequest sendResponse sendResponse' checkPersistENVVARSgatewayInterface tryGetCGI createHandleexecCGImakeEnvprocessCGIoutput responseAnyresponseInternalServerErrorrunAnyIO runAnyMaybeIO processGET processHEAD processPOST languages>>||>||||ifModifiedSinceifUnmodifiedSinceifRangelookupAndParseDatetryGet tryGetFile tryGetFile' ifmodified ifunmodifiedifrange unconditionaltryHead tryHeadFile tryHeadFile' redirectURI tryRedirecttryRedirectFiletryPostnotFoundresponse responseOKresponseRedirectresponseNotFoundresponseBadRequestresponseNotImplement