h$(Z#      !"None '(/5678hlrdbIsIdentifier means that a is isomorphic to Identifier, usually via newtype. This enables to use genId :: IsIdentifier a => IO a, declared below. It is required that not only is it isomorphic; it must respect the Store instance as well (you get this for free with a newtype anyway).hlrdb=Use the following newtype pattern to declare your identifiers newtype CommentId = CommentId Identifier deriving (Eq,Ord,Show,Store,IsIdentifier) /You may generate a new random identifier using genId (example :: IO CommentId example = genId hlrdbGenerate a new identifier using the current time as the timestamphlrdb1Generate a new identifier for the given timestamphlrdb(Extract the timestamp from an identifierhlrdbIf for some reason you need the actual, raw key name (which you may use with the low-level commands in hedis), you may obtain it via  encodePath. hlrdbDeclare your paths by choosing the declaration for the Redis structure you want to use. You must provide a unique description, which not only serves to document your architecture, but the hash of which is used to distinguish between otherwise identical paths of the same type. cidToComment :: RedisBasic CommentId (Maybe Comment) cidToComment = declareBasic "canonical mapping from CommentId to Comment" hlrdbStandard key-value store, but backed by a primitive integer in Redis, enabling extra commands like incr hlrdbStandard key-value store, but backed by no encoding, thus permitting bitwise operations like getrange, setrange, getbit, and setbit. hlrdbAllows defining your own "zero" value. An example might be RoseTree, where a non-existant value in Redis can be mapped to a sensible empty value in Haskell. hlrdbTransparently compress values before storage using zstd at the specified compression level and optional compression dictionary.hlrdbStandard Redis list, supporting prepends, appends, and range access. If a  TrimScheme is provided, operations will automatically trim the list to the specified length.hlrdb+A sub-hash table, using the sub-index type s. s here is only required to be Storable rather than IsIdentifier, but in practice you'll probably use identifiers for s, too.hlrdbA set in Redis.hlrdbA sorted set in Redis. You may optionally provide a trim scheme, which will automatically manage the sorted set's size for you.hlrdbA global version of  declareBasichlrdbA global version of declareIntegralhlrdbA global version of declareByteStringhlrdbA global version of  declareZerohlrdbA global version of  declareListhlrdbA global version of  declareHSethlrdbA global version of  declareSethlrdbA global version of  declareSSethlrdbNote that despite the pretty type signature, the actual implementation of foldPath in Redis is slow (it uses the global scan command, so its run time is proportional to the number of total keys in Redis, *not* the number of keys specifically related to the given path). You should only use foldPath for administrative tasks, and never for any public API. Further, this method is only guaranteed to work if you've declared your RedisStructures using the declarative tools in this module: if you declared a path yourself, please ensure it is compatible with the pathing convention in this module (namely, a 5-byte prefix).#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~         !"#$%&'()'(*'+,'+-'./01201301401506706806906:06;06<06=06>0?@0?A0?B0?C0?D0?E0?F0?G0?H0?I0?J0?K0?L0MN0MO0MP0MQ0MR0MS0TU0TV0TW0TX0TY0TZ0T[0T\0]^0]_0]`0]a0]b0]c0]d0]e0]f0]g0]h0]i0]j0]k0]l0]m0no0np0nq0nr0ns0ns0nt0nu0nv0wx0yz0yz0y{0y|0y}0y~0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y0y$hlrdb-0.3.2.0-5h7zcUv8QFFIFBfJzbc9cjHLRDB"store-0.7.8-1s06hidwMcsKVhStBnUEK0Data.Store.ImplStore IsIdentifier toIdentifierfromIdentifier IdentifiergenIdgenId'identifierTimestamp encodePath declareBasicdeclareIntegraldeclareByteStringdeclareBasicZerozstd declareList declareHSet declareSet declareSSetdeclareGlobalBasicdeclareGlobalIntegraldeclareGlobalByteStringdeclareGlobalBasicZerodeclareGlobalListdeclareGlobalHSetdeclareGlobalSetdeclareGlobalSSetfoldPath$fStoreIdentifier$fShowIdentifier$fIsIdentifierIdentifier$fIsStringPathName$fGenericIdentifier$fEqIdentifier$fOrdIdentifier$fHashableIdentifier$hedis-0.12.15-C1CtcFEEAzm2p7zGjTEStHDatabase.Redis.ManualCommandscursor0CursorDatabase.Redis.Core MonadRedis liftRedisDatabase.Redis.Core.InternalRedis(hlrdb-core-0.1.6.0-FchJPjVdNiNlJfcsHdXlh HLRDB.CoreexpireatexpirepersistdelHLRDB.Structures.Setsscan srandmemberN srandmemberscardsremsadd sismembersmembersHLRDB.Structures.SSet zrangebyscorezscanzcardzremzincrbyzrevrankzrankzmemberzworstzbestzupdatezaddzscoreHLRDB.Structures.ListlpopllenlremlprependlappendlrangeHLRDB.Structures.HSethscanhsetnxhdelhmsethsethmgethgethgetallHLRDB.Structures.Basicsetbitgetbitsetrangegetrangedecrbydecrincrbyincrsetexmsetliftqsset'setmgetliftqgetHLRDB.Primitives.AggregaterunT bitraverse'remember aggregatePairT⟿~~>QueryHLRDB.InternalMSETHLRDB.Primitives.Redis TrimSchemesoftCardinalitytrimProbabilityRedisStructure RSortedSetRSetRHSetRListRKeyValueByteString RKeyValueRKeyValueInteger RedisBasic RedisIntegralRedisByteString RedisList RedisHSetRedisSet RedisSSetActionPerformedFreshlyCreatedDeletedEREBASICLISTHSETSET SORTEDSETCreationDeletion