fR      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ (c) 2004, Graham Klyne BSD-style (see end of this file) Graham Klyne <gk@ninebynine.org> provisionalportableNone 09$%Type for authority value within a URI  anonymous@ www.haskell.org :42ORepresents a general universal resource identifier using its component parts.For example, for the URI 3 foo://anonymous@www.haskell.org:42/ghc?query#fragthe components are: foo: //anonymous@www.haskell.org:42 /ghc ?query #frag  Blank URI &Turn a string containing a URI into a  . Returns RY if the string is not a valid URI; (an absolute URI with optional fragment identifier).?NOTE: this is different from the previous network.URI, whose parseURI function works like  in this module.Parse a URI reference to a  value. Returns Ro if the string is not a valid URI reference. (an absolute or relative URI with optional fragment identifier).Parse a relative URI to a  value. Returns Ra if the string is not a valid relative URI. (a relative URI with optional fragment identifier).Parse an absolute URI to a  value. Returns R^ if the string is not a valid absolute URI. (an absolute URI without a fragment identifier).ZTest if string contains a valid URI (an absolute URI with optional fragment identifier).pTest if string contains a valid URI reference (an absolute or relative URI with optional fragment identifier).bTest if string contains a valid relative URI (a relative URI with optional fragment identifier)._Test if string contains a valid absolute URI (an absolute URI without a fragment identifier).,Test if string contains a valid IPv6 address,Test if string contains a valid IPv4 addressS4Test function: parse and reconstruct a URI referenceReturns T if the character is a "reserved" character in a URI. To include a literal instance of one of these characters in a component of a URI, it must be escaped.Returns T if the character is an "unreserved" character in a URI. These characters do not need to be escaped in a URI. The only characters allowed in a URI are either "reserved", "unreserved", or an escape sequence (% followed by two hex digits).Turn a  into a string.=Uses a supplied function to map the userinfo part of the URI.The Show instance for URI uses a mapping that hides any password that may be present in the URI. Use this function with argument id4 to preserve the password in the formatted output.Returns T& if the character is allowed in a URI.Returns T0 if the character is allowed unescaped in a URI.jEscape character if supplied predicate is not satisfied, otherwise return character as singleton string.4Can be used to make a string valid for use in a URI.WTurns all instances of escaped characters in the string back into literal characters.Returns a new + which represents the value of the first ' interpreted as relative to the second . For example: "foo" `relativeTo` "http://bar.org/" = "http://bar.org/foo" "http:foo" `nonStrictRelativeTo` "http://bar.org/" = "http://bar.org/foo")Algorithm from RFC3986 [3], section 5.2.2 Compute an absolute / for a supplied URI relative to a given base.!Returns a new 7 which represents the relative location of the first  with respect to the second q. Thus, the values supplied are expected to be absolute URIs, and the result returned may be a relative URI.Example: ~"http://example.com/Root/sub1/name2#frag" `relativeFrom` "http://example.com/Root/sub2/name2#frag" == "../sub1/name2#frag"{There is no single correct implementation of this function, but any acceptable implementation must satisfy the following: 6(uabs `relativeFrom` ubase) `relativeTo` ubase == uabs#For any valid absolute URI. (cf.  9http://lists.w3.org/Archives/Public/uri/2003Jan/0008.html  9http://lists.w3.org/Archives/Public/uri/2003Jan/0005.html)"fCase normalization; cf. RFC3986 section 6.2.2.1 NOTE: authority case normalization is not performed#3Encoding normalization; cf. RFC3986 section 6.2.2.2$7Path segment normalization; cf. RFC3986 section 6.2.2.4wU VW SXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~a predicate which returns & if the character should be escapedthe string to processthe resulting URI string !"#$%&'()*+,-..  !"#$%&'()*+,-.   !"#$%&'()*+,-mU VW SXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-.Safe 09"(c) The University of Glasgow 20012BSD-style (see the file libraries/network/LICENSE)libraries@haskell.org provisionalportableSafe 09;3iThis data type might have different constructors depending on what is supported by the operating system.VHost byte order.WNetwork byte order.X;Computes the storage requirements (in bytes) of the given N. This function differs from $ in that the value of the argument is used.Y=Computes the storage requirements (in bytes) required for a N with the given 3.ZUse a N+ with a function requiring a pointer to a N and the length of that N.[ Create a new N3 for use with a function requiring a pointer to a N and the length of that N.\Write the given N to the given memory location.]Read a N from the given memory location.^ Throw an Q corresponding to the current socket error if the IO action returns a result of -1, but retries in case of an interrupted operation. Checks for operations that would block and executes an alternative action before retrying in that case._ Throw an Q corresponding to the current socket error if the IO action returns a result of -13, but retries in case of an interrupted operation.` Throw an Q corresponding to the current socket error if the IO action returns a result of -1>. Discards the result of the IO action after error handling.a Throw an + corresponding to the current socket error.bSOn Windows operating systems, the networking subsystem has to be initialised using b3 before any networking operations can be used. eg. main = withSocketsDo $ do {...}Although this is only strictly necessary on Windows platforms, it is harmless on other platforms, so for portability it is good practice to use it all the time.cZero a structure.73456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^#textual description of the locationFaction to execute before retrying if an immediate retry would blockthe  operation to be executed_#textual description of the locationthe  operation to be executed`#textual description of the locationthe  operation to be executeda)textual description of the error locationbcd13576489:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc1WVSRTUNOPQ]\XYZ[3456789:;<=>?@ABCDEFGHIJKLMa`_^bc3456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd"(c) The University of Glasgow 20012BSD-style (see the file libraries/network/LICENSE)libraries@haskell.org provisionalportableNone 09Tz-Flags that control the querying behaviour of . Socket Types.iThis data type might have different constructors depending on what is supported by the operating system.Either a host name e.g.,  "haskell.org"i or a numeric host address string consisting of a dotted decimal IPv4 address or an IPv6 address e.g.,  "192.168.0.1".1This is the default protocol for a given service.uCreate a new socket using the given address family, socket type and protocol number. The address family is usually 6, 7, or 5. The socket type is usually  or ". The protocol number is usually . If 7 is used, the V socket option is set to 0 so that both IPv4 and IPv6 can be handled with one socket.Build a pair of connected socket objects using the given address family, socket type, and protocol number. Address family, socket type, and protocol number are as for the % function above. Availability: Unix.KBind the socket to an address. The socket must not already be bound. The 3 passed to  bindSocket% must be the same as that passed to . If the special port number @ is passed then the system assigns the next available use port.&Connect to a remote socket at address.Listen for connections made to the socket. The second argument specifies the maximum number of queued connections and should be at least 1; the maximum value is system-dependent (usually 5).yAccept a connection. The socket must be bound to an address and listening for connections. The return value is a pair (conn, address) where connP is a new socket object usable to send and receive data on the connection, and addressH is the address bound to the socket on the other end of the connection.Send data to the socket. The recipient can be specified explicitly, so the socket need not be in a connected state. Returns the number of bytes sent. Applications are responsible for ensuring that all data has been sent.SNOTE: blocking on Windows unless you compile with -threaded (see GHC ticket #1129)Send data to the socket. The recipient can be specified explicitly, so the socket need not be in a connected state. Returns the number of bytes sent. Applications are responsible for ensuring that all data has been sent.TReceive data from the socket. The socket need not be in a connected state. Returns (bytes, nbytes, address) where bytes is a String of length nbytes% representing the data received and address is a N1 representing the address of the sending socket.SNOTE: blocking on Windows unless you compile with -threaded (see GHC ticket #1129)Receive data from the socket, writing it into buffer instead of creating a new string. The socket need not be in a connected state. Returns (nbytes, address) where nbytes& is the number of bytes received and address is a N1 representing the address of the sending socket.SNOTE: blocking on Windows unless you compile with -threaded (see GHC ticket #1129)Send data to the socket. The socket must be connected to a remote socket. Returns the number of bytes sent. Applications are responsible for ensuring that all data has been sent.Receive data from the socket. The socket must be in a connected state. This function may return fewer bytes than specified. If the message is longer than the specified length, it may be discarded depending on the type of socket. This function may block until a message arrives.}Considering hardware and network realities, the maximum number of bytes to receive should be a small power of 2, e.g., 4096.gFor TCP sockets, a zero length return value means the peer has closed its half side of the connection.?Returns the processID, userID and groupID of the socket's peer.GOnly available on platforms that support SO_PEERCRED on domain sockets.The IPv4 wild card address.The IPv6 wild card address.Shut down one or both halves of the connection, depending on the second argument to the function. If the second argument is ., further receives are disallowed. If it is +, further sends are disallowed. If it is ,, further sends and receives are disallowed.Close the socket. All future operations on the socket object will fail. The remote end will receive no more data (after queued data is flushed).Turns a Socket into an 1. By default, the new handle is unbuffered. Use  to change the buffering.Note that since a } is automatically closed by a finalizer when it is no longer referenced, you should avoid doing any more operations on the  after calling . To close the  after , call  on the .Pack a list of values into a bitmask. The possible mappings from value to bit-to-set are given as the first argument. We assume that each value can cause exactly one bit to be set; unpackBits will break if this property is not true.'Unpack a bitmask into a list of values.Indicate whether the given z& will have any effect on this system.&Default hints for address lookup with . The values of the x and y fields are , and are never inspected by .>Resolve a host or service name to one or more addresses. The r+ values that this function returns contain N' values that you can pass directly to  or .^This function is protocol independent. It can return both IPv4 and IPv6 address information.The r argument specifies the preferred query behaviour, socket options, or protocol. You can override these conveniently using Haskell's record update syntax on , for example as follows: G myHints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] }  Values for t? control query behaviour. The supported flags are as follows:  AI_PASSIVEIf no 5 value is provided, the network address in each N4 will be left as a "wild card", i.e. as either  or \. This is useful for server applications that will accept connections from any client. AI_CANONNAMEThe y" field of the first returned r/ will contain the "canonical name" of the host.AI_NUMERICHOSTThe  argument must_ be a numeric address in string form, and network name lookups will not be attempted.Note: Although the following flags are required by RFC 3493, they may not have an effect on all platforms, because the underlying network stack may not support them. To see whether a flag from the list below will have any effect, call . AI_NUMERICSERVThe  argument must[ be a port number in string form, and service name lookups will not be attempted. AI_ADDRCONFIGThe list of returned r values will only contain IPv4 addresses if the local system has at least one IPv4 interface configured, and likewise for IPv6. AI_V4MAPPEDwIf an IPv6 lookup is performed, and no IPv6 addresses are found, IPv6-mapped IPv4 addresses will be returned.AI_ALLIf |e is specified, return all matching IPv6 and IPv4 addresses. Otherwise, this flag has no effect.You must provide a  value for at least one of the  or  arguments.  can be either a numeric network address (dotted quad for IPv4, colon-separated hex for IPv6) or a hostname. In the latter case, its addresses will be looked up unless ~3 is specified as a hint. If you do not provide a  value and do not set a as a hint, network addresses in the result will contain the address of the loopback interface.If the query fails, this function throws an IO exception instead of returning an empty list. Otherwise, it returns a non-empty list of r values.There are several reasons why a query might result in several values. For example, the queried-for host could be multihomed, or the service might be available via several protocols.HNote: the order of arguments is slightly different to that defined for  getaddrinfo in RFC 2553. The r; parameter comes first to make partial application easier. Example: " let hints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] } addrs <- getAddrInfo (Just hints) (Just "www.haskell.org") (Just "http") let addr = head addrs sock <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr) connect sock (addrAddress addr) UResolve an address to a host or service name. This function is protocol independent. The list of lG values controls query behaviour. The supported flags are as follows:  NI_NOFQDNCIf a host is local, return only the hostname part of the FQDN.NI_NUMERICHOSTThe name of the host is not looked up. Instead, a numeric representation of the host's address is returned. For an IPv4 address, this will be a dotted-quad string. For IPv6, it will be colon-separated hexadecimal.NI_NUMERICSERVrThe name of the service is not looked up. Instead, a numeric representation of the service is returned. NI_NAMEREQD@If the hostname cannot be looked up, an IO error is thrown.NI_DGRAMResolve a datagram-based service name. This is required only for the few protocols that have different port numbers for their datagram-based versions than for their stream-based versions.kHostname and service name lookups can be expensive. You can specify which lookups to perform via the two ! arguments. If one of these is 9, the corresponding value in the returned tuple will be R", and no lookup will be performed.sIf a host or service's name cannot be looked up, then the numeric form of the address or service will be returned.9If the query fails, this function throws an IO exception. Example: : (hostName, _) <- getNameInfo [] True False myAddress lmnopqrstuvwxyz{|}~!preferred socket type or protocolhost name to look upservice name to look up%resolved addresses, with "best" first!flags to control lookup behaviourwhether to look up a hostname!whether to look up a service namethe address to look up3576489:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW`blpmnoqrstuvwxyz{|}~3456789:;<=>?@ABCDEFGHIJKLMNOPQWVSRTUrstuvwxyz{|}~lmnopqb`vlmnopqrstuvwxyz{|}~ None 09 (c) Johan Tibell 2007-2010 BSD-stylejohan.tibell@gmail.comstableportableNone 09(c) Johan Tibell 2007-2010 BSD-stylejohan.tibell@gmail.comstableportableNone 09 Send data to the socket. The socket must be connected to a remote socket. Returns the number of bytes sent. Applications are responsible for ensuring that all data has been sent.TSend data to the socket. The socket must be connected to a remote socket. Unlike , this function continues to send data until either all data has been sent or an error occurs. On error, an exception is raised, and there is no way to determine how much data, if any, was successfully sent.Send data to the socket. The recipient can be specified explicitly, so the socket need not be in a connected state. Returns the number of bytes sent. Applications are responsible for ensuring that all data has been sent.~Send data to the socket. The recipient can be specified explicitly, so the socket need not be in a connected state. Unlike , this function continues to send data until either all data has been sent or an error occurs. On error, an exception is raised, and there is no way to determine how much data, if any, was successfully sent.PSend data to the socket. The socket must be in a connected state. The data is sent as if the parts have been concatenated. This function continues to send data until either all data has been sent or an error occurs. On error, an exception is raised, and there is no way to determine how much data, if any, was successfully sent.Send data to the socket. The recipient can be specified explicitly, so the socket need not be in a connected state. The data is sent as if the parts have been concatenated. This function continues to send data until either all data has been sent or an error occurs. On error, an exception is raised, and there is no way to determine how much data, if any, was successfully sent.Receive data from the socket. The socket must be in a connected state. This function may return fewer bytes than specified. If the message is longer than the specified length, it may be discarded depending on the type of socket. This function may block until a message arrives.}Considering hardware and network realities, the maximum number of bytes to receive should be a small power of 2, e.g., 4096.gFor TCP sockets, a zero length return value means the peer has closed its half side of the connection.VReceive data from the socket. The socket need not be in a connected state. Returns (bytes, address) where bytes is a $ representing the data received and address is a N0 representing the address of the sending socket.,Suppose we try to transmit a list of chunks cs0 via a gathering write operation and find that n bytes were sent. Then remainingChunks n cs) is list of chunks remaining to be sent.totalLength cs5 is the sum of the lengths of the chunks in the list cs.withIOVec cs f executes the computation fg, passing as argument a pair consisting of a pointer to a temporarily allocated array of pointers to  made from cs and the number of pointers ( length cs).  Unix only.Connected socket Data to sendNumber of bytes sentConnected socket Data to sendSocket Data to sendRecipient addressNumber of bytes sentSocket Data to sendRecipient addressConnected socket Data to sendSocket Data to sendRecipient addressConnected socket"Maximum number of bytes to receive Data receivedSocket"Maximum number of bytes to receive Data received and sender address(c) Bryan O'Sullivan 2009 BSD-stylebos@serpentine.com experimental POSIX, GHCNone 09Send data to the socket. The socket must be in a connected state. Returns the number of bytes sent. Applications are responsible for ensuring that all data has been sent.Because a lazily generated ! may be arbitrarily long, this function caps the amount it will attempt to send at 4MB. This number is large (so it should not penalize performance on fast networks), but not outrageously so (to avoid demanding lazily computed data unnecessarily early). Before being sent, the lazy ' will be converted to a list of strict s with %; at most 1024 chunks will be sent.  Unix only. Send data to the socket. The socket must be in a connected state. This function continues to send data until either all data has been sent or an error occurs. If there is an error, an exception is raised, and there is no way to determine how much data was sent.  Unix only.Receive data from the socket. The socket must be in a connected state. Data is received on demand, in chunks; each chunk will be sized to reflect the amount of data received by individual  calls.All remaining data from the socket is consumed. When there is no more data to be received, the receiving side of the socket is shut down. If there is an error and an exception is thrown, the socket is not shut down.#Receive data from the socket. The socket must be in a connected state. This function may return fewer bytes than specified. If the received data is longer than the specified length, it may be discarded depending on the type of socket. This function may block until a message arrives.:If there is no more data to be received, returns an empty .Connected socket Data to sendNumber of bytes sentConnected socket Data to sendConnected socket Data receivedConnected socket"Maximum number of bytes to receive Data received"(c) The University of Glasgow 20012BSD-style (see the file libraries/network/LICENSE)libraries@haskell.org experimental non-portableNone 09 !Get service by name."Get the service given a T and  .#Get the T corresponding to the .0 Resolve a  to IPv4 address.1Get a \ corresponding to the given address and family. Note that only IPv4 is currently supported.9Open the network name database. The parameter specifies whether a connection is maintained open between various networkEntry calls:2Close the connection to the network name database.; Get the list of network entries.<cCalling getHostName returns the standard host name for the current processor, as set at boot time.T      !"#$%&'()*+,-./0123456789:;<   =>?@;T      !"#$%&'()*+,-./0123456789:;<;<01/5324!"#'$%& ()*.,+-T     67;98:A      !"#$%&'()*+,-./0123456789:;<   =>?@"(c) The University of Glasgow 20012BSD-style (see the file libraries/network/LICENSE)libraries@haskell.org provisionalportableNone 09LCalling L creates a client side socket which is connected to the given host and port. The Protocol and socket type is derived from the given port identifier. If a port number is given then the result is always an internet family  socket. MKCreates the server side socket which has been bound to the specified port.xNOTE: To avoid the "Address already in use" problems popped up several times on the GHC-Users mailing list we set the h socket option on the listening socket. If you don't want this behaviour, please use the lower level  instead.If available, the X socket option is set to 0 so that both IPv4 and IPv6 can be accepted with this socket.N+Accept a connection on a socket created by M. Normal I/O operations (see  System.IO) can be used on the - returned to communicate with the client. Notice that although you can pass any Socket to Network.accept, only sockets of either AF_UNIX, AF_INET, or AF_INET6 will work (this shouldn't be a problem, though). When using AF_UNIX, HostName will be set to the path of the socket and PortNumber to -1.Q Returns the H associated with a given socket.HIJKL MPort IdentifierConnected Socket NListening SocketTriple of: read/write + for communicating with the client, the  of the peer socket, and the T of the remote connection.OPQ-computation to run first ("acquire resource"),computation to run last ("release resource")computation to run in-betweenTbHJIKLMNOPQHIJKTbMNLOPQ HIJKL M NOPQ     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF]GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~NOJJNOJJJJJKNO               &network-2.3.2.1-K15MlzJfMik1MaubLa3tuE Network.URINetwork.Socket.InternalNetwork.SocketNetwork.Socket.ByteStringNetwork.Socket.ByteString.Lazy Network.BSDNetworkNetwork.Socket.ByteString.IOVec Network.Socket.ByteString.MsgHdr"Network.Socket.ByteString.InternalURIAuth uriUserInfo uriRegNameuriPortURI uriScheme uriAuthorityuriPathuriQuery uriFragmentnullURIparseURIparseURIReferenceparseRelativeReferenceparseAbsoluteURIisURIisURIReferenceisRelativeReference isAbsoluteURI isIPv6address isIPv4address isReserved isUnreserved uriToStringisAllowedInURIisUnescapedInURI escapeURICharescapeURIStringunEscapeStringnonStrictRelativeTo relativeTo relativeFrom normalizeCasenormalizeEscapenormalizePathSegmentsparseabsoluteURI escapeStringreserved unreservedscheme authoritypathqueryfragment $fShowURI $fEqURIAuth $fDataURIAuth$fEqURI $fDataURIFamily AF_UNSPECAF_UNIXAF_INETAF_INET6AF_SNA AF_DECnet AF_APPLETALKAF_ROUTEAF_X25AF_AX25AF_IPXAF_ISDN AF_NETROM AF_BRIDGE AF_ATMPVCAF_ROSE AF_NETBEUI AF_SECURITY AF_PACKETAF_ASH AF_ECONET AF_ATMSVCAF_IRDAAF_PPPOX AF_WANPIPE AF_BLUETOOTHSockAddr SockAddrInet SockAddrInet6 SockAddrUnixScopeIDFlowInfo PortNumberPortNum HostAddress6 HostAddresssizeOfSockAddrsizeOfSockAddrByFamily withSockAddrwithNewSockAddr pokeSockAddr peekSockAddr%throwSocketErrorIfMinus1RetryMayBlockthrowSocketErrorIfMinus1RetrythrowSocketErrorIfMinus1_throwSocketError withSocketsDo zeroMemory$fStorable(,,,)$fEqPortNumber$fOrdPortNumber $fEqSockAddr $fEqFamily $fOrdFamily $fReadFamily $fShowFamily NameInfoFlagNI_DGRAM NI_NAMEREQD NI_NOFQDNNI_NUMERICHOSTNI_NUMERICSERVAddrInfo addrFlags addrFamilyaddrSocketType addrProtocol addrAddress addrCanonName AddrInfoFlag AI_ADDRCONFIGAI_ALL AI_CANONNAMEAI_NUMERICHOSTAI_NUMERICSERV AI_PASSIVE AI_V4MAPPED ShutdownCmdShutdownReceive ShutdownSend ShutdownBoth SocketType NoSocketTypeStreamDatagramRawRDM SeqPacket SocketOptionDummySocketOption__Debug ReuseAddrTypeSoError DontRoute Broadcast SendBuffer RecvBuffer KeepAlive OOBInline TimeToLive MaxSegmentNoDelayCorkLinger ReusePort RecvLowWater SendLowWater RecvTimeOut SendTimeOutIPv6OnlyProtocolNumberSocketMkSocket SocketStatus NotConnectedBound Listening ConnectedConvertedToHandleClosed ServiceNameHostNamemkSocketfdSocketdefaultProtocolsocket socketPair bindSocketconnectlistenacceptsendTo sendBufTorecvFrom recvBufFromsendrecvrecvLen socketPort getPeerName getSocketNamesetSocketOptiongetSocketOption getPeerCredsendFdrecvFd sendAncillary recvAncillary packFamily unpackFamilypackSocketTypeaNY_PORT iNADDR_ANY iN6ADDR_ANY sOMAXCONN sOL_SOCKET sCM_RIGHTSmaxListenQueueshutdownsClose sIsConnectedsIsBound sIsListening sIsReadable sIsWritable inet_addr inet_ntoasocketToHandleaddrInfoFlagImplemented defaultHints getAddrInfo getNameInfo$fStorableAddrInfo$fShowSockAddr$fStorablePortNumber$fIntegralPortNumber$fRealPortNumber$fNumPortNumber$fEnumPortNumber$fShowPortNumber $fShowSocket $fEqSocket$fEqSocketStatus$fShowSocketStatus$fShowSocketOption$fEqSocketType$fOrdSocketType$fReadSocketType$fShowSocketType$fEqAddrInfoFlag$fReadAddrInfoFlag$fShowAddrInfoFlag $fEqAddrInfo$fShowAddrInfo$fEqNameInfoFlag$fReadNameInfoFlag$fShowNameInfoFlagsendAll sendAllTosendMany sendManyTo getContents NetworkEntry networkNamenetworkAliases networkFamilynetworkAddress NetworkName NetworkAddr HostEntryhostName hostAliases hostFamily hostAddresses ProtocolEntry protoName protoAliases protoNumber ServiceEntry serviceNameserviceAliases servicePortserviceProtocol ProtocolNamegetServiceByNamegetServiceByPortgetServicePortNumbergetServiceEntrysetServiceEntryendServiceEntrygetServiceEntriesgetProtocolByNamegetProtocolByNumbergetProtocolNumbergetProtocolEntrysetProtocolEntryendProtocolEntrygetProtocolEntries hostAddress getHostByName getHostByAddr getHostEntry setHostEntry endHostEntrygetHostEntriesgetNetworkByNamegetNetworkByAddrgetNetworkEntrysetNetworkEntryendNetworkEntrygetNetworkEntries getHostName$fStorableNetworkEntry$fStorableHostEntry$fStorableProtocolEntry$fStorableServiceEntry$fShowServiceEntry$fReadProtocolEntry$fShowProtocolEntry$fReadHostEntry$fShowHostEntry$fReadNetworkEntry$fShowNetworkEntryPortIDService UnixSocket connectTolistenOnbaseGHC.BaseNothingtestURIReferenceghc-prim GHC.TypesTrue URIParserdefaultUserInfoMaptestDefaultUserInfoMap parseURIAny isValidParseparseAllescaped isGenDelims isSubDelims genDelims subDelimsunreservedCharurihierPartuscheme uauthorityuserinfohost ipLiteral ipvFutureisIpvFutureChar ipv6address opt_n_h4c_h4ls32h4ch4 ipv4addressdecOctetregNameport pathAbEmptypathAbs pathNoScheme pathRootLess slashSegmentsegment segmentNz segmentNzcpcharucharuquery ufragment uriReference relativeRef relativePart absoluteURI isAlphaChar isDigitCharisAlphaNumCharisHexDigitChar isSchemeChar alphaChar digitChar alphaNumChar hexDigitChar oneThenMany countMinMax notMatchinguriAuthToStringFalse isDefinedremoveDotSegmentselimDots nextSegment splitLast relPathFrom relPathFrom1 relSegsFrom difSegsFrom traceShowtraceValorNullIOVeciovBaseiovLen$fStorableIOVecForeign.StorablesizeOfGHC.IO.ExceptionIOError CSaFamilymemsets6_addr_offsetpeek32poke32IOGHC.IO.Handle.TypesHandle GHC.IO.Handle hSetBufferinghClosepackBits unpackBitsGHC.Err undefinedJustBool c_setsockopt c_getsockopt c_getsockname c_getpeername c_recvfromc_recvc_sendtoc_sendc_listen c_accept4c_accept c_connectc_bindc_socketc_close c_shutdown c_inet_addr c_inet_ntoa c_getnameinfoc_gai_strerrorc_freeaddrinfo c_getaddrinfoc_recvFdc_sendFdc_recvAncillaryc_sendAncillary c_socketpairhtonlhtonsntohsintToPortNumberportNumberToIntsocketOptLevelpackSocketOptionunpackSocketType sdownCmdToInt sIsAcceptable aiFlagMapping niFlagMappingfollowAddrInfo gai_strerror withCStringIfmkInvalidRecvArgError mkEOFErrorcloseMsgHdrmsgName msgNameLenmsgIov msgIovLen$fStorableMsgHdr c_sendmsgc_writevbytestring-0.10.8.1Data.ByteString.Internal ByteStringremainingChunks totalLength withIOVec recvInnerData.ByteString.Lazy.InternalData.ByteString.LazytoChunks c_gethostname c_endnetent c_setnetent c_getnetentc_getnetbyaddrc_getnetbyname c_endhostent c_sethostent c_gethostentc_gethostbyaddrc_gethostbyname c_endprotoent c_setprotoent c_getprotoentc_getprotobynumberc_getprotobyname c_endservent c_setservent c_getserventc_getservbyportc_getservbynamelockwithLock getEntries trySysCallthrowNoSuchThingIfNullconnect'listen'bracketOnErrorcatchIOfirstSuccessful