TNB,      !"#$%&'()*+Safe#Extract a field as a value of type a<. If the field does not exist or cannot be parsed as type a, fail.,4 when the field is defined and is true. Otherwise, -.None TA computation that interacts with a CouchDB database. This monad encapsulates the . monad, a persistent HTTP connnection to a CouchDB database and enough information to re-open the connection if it is closed.MDescribes a connection to a CouchDB database. This type is encapsulated by ./login credentials, if needed.0Send a request to the database. If the connection is closed, it is reopened and the request is resent. On other errors, we raise an exception. 1Connects to the CouchDB server at localhost:5984. >Run a CouchDB computation with an existing CouchDB connection. 8Create a CouchDB connection for use with runCouchDBWith.1VCreate a CouchDB connection with password authentication for use with runCouchDBWith. DCreate a CouchDB from an URI connection for use with runCouchDBWith.!Closes an open CouchDB connection234567/8path9:;<0path of the requestdictionary of GET parametersbody of the request=URI to connect hostnameport hostnameport1hostnameportLogin credentials #URI with possible login credentials>?@ABCDEFGHIJKLMNOPQ0 234567/89:;<0= 1 >?@ANoneRNCreates a new database. Throws an exception if the database already exists. SDelete a doc by document identifier (revision number not needed). This operation first retreives the document to get its revision number. It fails if the document doesn't exist or there is a conflict.TXGets a document as a raw JSON value. Returns the document id, revision and value as a Ue. These fields are queried lazily, and may fail later if the response from the server is malformed.VGets a document as a Maybe String. Returns the raw result of what couchdb returns. Returns Nothing if the doc does not exist.WLike Xa, but only returns the keys. Use this for key-only views where the value is completely ignored.YZ[R\$False if the database does not exist]^ database name document name document bodyReturns _ on a conflict. Returns `& with the revision number on success.adatabasedocument and revision new valuebdatabaseall docserror or (id,rev)Sdatabasedocument identifiercdatabasedocument and revisiond database name document bodyid and rev of new documente database name document namef if the doc does not existT database name document namef if the document does not exist.Vgdatabase document nameupdate functionCIf the update succeeds, return the revision number of the result.hi database namejk database name view set nameviewslmdatabseJquery parameters |Returns a list of rows. Each row is a key, value pair.nXdatabasedesignviewJquery parameters |Returns a list of rows. Each row is a key, value pair.Wdatabasedesignviewquery parametersoR\]^abScdeTVgikmXWYZ[R\]^abScdeTVghijklmnXWoNone  Document nameDocument revision number. Database nameHReturns a safe database name. Signals an error if the name is invalid. Returns a RevHReturns a safe document name. Signals an error if the name is invalid.NCreates a new database. Throws an exception if the database already exists. Delete a doc by document identifier (revision number not needed). This operation first retreives the document to get its revision number. It fails if the document doesn't exist or there is a conflict.%XGets a document as a raw JSON value. Returns the document id, revision and value as a Ue. These fields are queried lazily, and may fail later if the response from the server is malformed.+Like *a, but only returns the keys. Use this for key-only views where the value is completely ignored.)pqrstuvwx$False if the database does not exist database name document name document bodyReturns _ on a conflict.databasedocument and revision new valuedatabasenew docs databasedocument identifier!database" database name document bodyid and rev of new document# database name document namef if the doc does not exist$query parameters% database name document namef if the document does not exist.&'database document nameupdate functionCIf the update succeeds, return the revision number of the result.( database name) database name view set nameviews*databasedesignviewJquery parameters |Returns a list of rows. Each row is a key, value pair.+databasedesignviewquery parametersyz{|}~&  !"#$%&'()*+&  "! %&#$'()*+$pqrstuvwx !"#$%&'()*+yz{|}~      !"#$%&'()*+,-./0123124125678  9:;<=>?@ABCDEFGHIGHJGHKGHLGHMGHNGHOGHPGHQGHRGHSGHTGHUGHVGHWGHW%*XYZ+0/[\] !"^_`^_a#$&'(^bc,d-e.f)ghijklmnopqrstuCouch_2kqBaSXLc3H9245TdOG3RmDatabase.CouchDB.JSONDatabase.CouchDBDatabase.CouchDB.HTTPDatabase.CouchDB.Unsafe jsonStringjsonInt jsonObjectjsonBool jsonField jsonIsTrue CouchMonad CouchConn runCouchDBURI runCouchDB runCouchDB'runCouchDBWithcreateCouchConncreateCouchConnFromURIcloseCouchConn CouchViewViewMap ViewMapReduceDocRevDB isDBStringdbrevdoc isDocStringcreateDBdropDB getAllDBs newNamedDoc updateDocbulkUpdateDocsforceDeleteDoc deleteDocnewDocgetDoc getAllDocs getDocPrim getDocRawgetAndUpdateDoc getAllDocIdsnewView queryView queryViewKeysghc-prim GHC.TypesTrueFalseIOccAuthrequestcreateCouchAuthConnccConnccURI ccHostnameccPortmakeURLgetConn getConnAuthreopenConnection makeHeadersfillAuth$fMonadIOCouchMonad$fMonadCouchMonad$fFunctorCouchMonad$fApplicativeCouchMonadHTTP_I3KwBZTyYzDKWfJ8oWET6eNetwork.HTTP.BaseCustomCONNECTTRACEOPTIONSDELETEPOSTGETPUTHEAD RequestMethodrspBody rspHeaders rspReasonrspCodeResponsejson_BZWbu2a2BTV0vyKNayfXOpText.JSON.TypesJSObjectassertJSObject couchResponserequest'base Data.EitherLeftRightGHC.BaseNothing allDocRowcouchViewToJSONtoRowtoRowDocrowKeyunDocunRev isDBFirstChar isDBOtherCharisFirstDocChar isDocChar $fReadDoc $fJSONDoc $fShowDoc $fShowRev$fJSONDB$fShowDB