úÎ3y/3      !"#$%&'()*+,-./012None+9A trie data structure with bytestring keys, above VCache.»A trie supports keys of arbitrary size, though very large keys may cause performance degradation. Values are directly serialized into nodes, so very large values should use indirection.KA node should either accept a value or branch into at least two children. ðObtain unique address for Trie value. As with VRef addresses, this should be stable while the Trie is reachable, but may change if the value is GC'd and later reconstructed at a new address. Exposed for memoization and similar purposes.  3456789     3456789 Safe-Inferred:;<=>?:;<:;<=>? Safe-Inferred@ABCDE@AB@ABCDENone+ ^function to dereference a Trie cache node. This improves user control over caching on lookup.  Construct Trie with no elements. Construct Trie with one element.!O(1), test whether trie is empty.O(n). Compute size of the trie.6O(n). Obtain a list of (key,val) pairs, sorted by key.*O(n). Obtain list of elements in the trie.&O(n). Obtain a sorted list of of keys.;O(1). Add a common prefix to all keys currently in the Trie1Lookup an object by key with user-provided deref.Lookup an object by key'Obtain a trie rooted at a given prefix.ŠThis operation may need to allocate in VCache, e.g. to delete some fraction of the requested prefix. This isn't optimal for performance.0lookup prefix with user-provided deref function.’Obtain a trie node rooted at a given prefix, if any content exists at this prefix. This operation allows some performance benefits compared to 2 because it never allocates at the VCache layer. 4lookup prefix node with user-provided deref function(Delete all keys sharing a given prefix. F&Delete keys using user-defined lookup.^Insert a single key,value pair into the trie, replacing any existing value at that location.èInsert a list of (key,value) pairs into the trie. At the moment this is just a linear insert, but it may later be replaced by an efficient batch-insert model. If a key appears more than once in this list, the last entry will win."Remove a single key from the trie. ¥Remove a collection of keys from the trie. At the moment this is just a sequential deletion, but it may later be replaced by a more efficient batch-deletion model.!aUpdate an element in the Trie with a given function. Capable of inserts, modifies, and deletes.G!Adjust using an arbitrary action."ZValidate the invariant structure of the Trie. Every node must branch or contain a value.H6Return byte count for prefix common among two strings.8 I JKLMFN !GOP"#$%&Q'()*+,RS-./012THUV*  !"#$%&'()*+,-./012+ ! '()#$-*+,%&./012" 8 I JKLMFN !GOP"#$%&Q'()*+,RS-./012THUVW       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI6JKLMNOPQRSTUvcache-trie-0.2.1Data.VCache.Trie.TypeData.VCache.TrieStrictIdentTrie trie_root trie_spaceChildChildrenNode trie_branch trie_prefix trie_acceptunsafeTrieAddr DerefNodeempty singletonnullsizetoListelemskeystoListBy prefixKeyslookup'lookup lookupPrefix lookupPrefix'lookupPrefixNodelookupPrefixNode' deletePrefixinsert insertListdelete deleteListadjustvalidate foldrWithKey foldrWithKey' foldlWithKey foldlWithKey'foldrfoldr'foldrMfoldlfoldl'foldlM foldrWithKeyM foldlWithKeyMmapmapM mapWithKey mapWithKeyM mkChildren getChildren listChildren putChildren $fShowTrie$fVCacheableTrie$fVCacheableNode runStrict $fMonadStrict$fApplicativeStrict$fFunctorStrictrunIdent $fMonadIdent$fApplicativeIdent$fFunctorIdent deletePrefix'adjustMsharedPrefixLen defaultDeref singletonNode_lookup_lookupP_deleteP collapseIf tryCollapseapwfskip1stskip2ndmbrun indexOfDiffpeekByte