úÎ!,'21      !"#$%&'()*+,-./0None2 1dtab)everything before and including RB3 AFAIK2dtabseen in Fantasia: Music Evolveddtab{A data value, which may be a subtree. The constructors are ordered by their chunk identification tag in the binary format.dtab=A list of chunks, for either the top-level tree or a subtree.dtabA top-level file.3dtab;DTB string format: 4-byte length, then a string in latin-1.4dtab;DTB string format: 4-byte length, then a string in latin-1.dtabXAssign new sequential node IDs to each tree in a DTA, starting with the top-level tree.512  6Noneå dtab:Using a key to generate an infinite stream of crypt bytes.dtabAn encryption/decryption key.7dtabÿ The way both the new and old DTB encryption algorithms work is by using the key to generate a stream of bytes. Each of these bytes is then XOR'd with the corresponding bytes in the source file. The same algorithm is both the decryption and encryption; this is because (A xor B) xor B == A.dtabVTake the first four bytes of the string as the key, and decrypt the rest of the file.dtabHEncrypt a string with a key, and append the key to the encrypted string.dtab;Decrypt an encrypted DTB file using the given crypt method.dtabEEncrypt an unencrypted DTB file using the given crypt method and key. dtab1Decrypt an encrypted DTB file across two handles.!dtab4Encrypt an unencrypted DTB files across two handles.8dtab=The key iteration function for new DTB encryption/decryption."dtab?The lazy infinite list of crypt bytes for new-style encryption.#dtab?The lazy infinite list of crypt bytes for old-style encryption.  !"# #" !NoneFµ9dtabBEncode a Haskell String to a list of Word8 values, in UTF8 format.:dtabFReads a single-quoted string, by converting it to a double-quoted one.;dtab3Reads the special format for double-quoted strings.<=>?@ABCDEFGHIJKLMNOPQRNone=?Fh"jSdtabvIf instead of this error, "Internal Happy error" is sometimes printed, make sure you are using Happy 1.18.7 or later.TU9 V9 None%³WdtabvAutomatically chooses between horizontal and vertical arrangements, depending on what kind of chunks are in the tree.Xdtab7Produces a raw keyword or single-quoted string literal.$None%ö'  $%&'()*+,-./0'  %()'&+*,-.$/0Y       !"#$%&'()*+,-./0123456789:;<=>?@     ABCDEFGHIJKLLMNO#dtab-1.1.1.1-70BtbG9iSL76g8hD1AZLXnData.DTAData.DTA.Crypt Data.DTA.Base Data.DTA.LexData.DTA.ParseData.DTA.PrettyPrintChunkIntFloatVarKey UnhandledIfDefElseEndIfParensBracesStringBracketsDefineIncludeMergeIfNDefTreenodeID treeChunksDTAbyteZerotopTree renumberFromCryptdecryptencrypt decryptFile encryptFile decryptHandle encryptHandlenewCryptoldCryptsToDTAlFromDTBlToDTBfromDTBhFromDTB hFromDTBv2toDTBhToDTBsFromDTAhFromDTAfromDTAhToDTAtoDTA DTAVersion1 DTAVersion2 putLenStr getLenStr DTAVersion binaryDTAcrypt dtbXor360 utf8EncodereadKey readStringTokenLParenRParenLBraceRBraceLBracketRBracketAlexPosnAlexPnscan parseErrorparseHappyStkppTreeppKey