S M4      Safe2579;HState monad providing context, i.e. function we've already called before.datatype for a token returning a random string$Pretoken, aka token as first read in dataype for a key aka token name0datatype for a double representing a probability@Compare inside the state monad using only the underlying objectsMake O a monoid so we can append them together nicely (since they do generate text). d(Value "Hello") <> (List [(0.5," you"), (0.5, " me")]) (List [(0.5,"Hello you"), (0.5, "Hello me")])   None2579; Drop file Extension"Get directory associated to a file1Function to apply a value on both arguments, e.g. between .$ (char '"')0Normalize pre-tokens/corresponding probabilities-Helper function for creating a cdf from a pdf Show as a T.Text!Pretty-print a ParseError"Strip a pre-token's name#Read a file in as a Text$cAdd a PR for this? Could be useful in Megaparsec idk Allows us to use monoidal addition on parsers  !"#$  !"#  !"#$None257:Datatype for a semantic error%5Throw custom error given by string, within the parser&Throw  error within parser'+Throws argument for circular function calls(-Throws error when a function is defined twice)'Throws error for insufficient arguments*Constant to start s+ Convert a Text to a , for use with a pretty-printer-*big semantics checker that sequences stuff.'helper to filter out stuff that doesn't/fTake the head of the list, or throw the appropriate error given which functions we are trying to call.0:Access argument, or throw error if the list is too short. 1'checker to verify there is at most one :return or  :define key statement2 Checks that we have at most one  `:return` template in the file3+Checks that there are no instances of a key4Derived via our show instance;5 display a ! nicely with coloration & whatnot %6&7'()*+-./012345 %6&7'()*+-./0123 %6&7'()*+-./012345None257  Generate randomized text from a 85Helper function to compute the cdf when we have a pdf 8 8 8Safe2579Draw as a syntax Tree:Function to transform a 8 into a `Tree String` so that it can be pretty-printed. tokToTree 1.0 tok9:9:9:None257;Get the :return value<(Convert the stuff after the number to a =6Build token in tree structure, without concatenating. >2Build the token without concatenating, yielding a $ suitable to be printed as a tree. ?+Given keys naming the tokens, and lists of  , build our @PSort the keys that we have parsed so that dependencies are in the correct placesA.Ordering on the keys to account for dependency BCD;<=>?@A BCD;<=>?@A BCD;<=>?@ANone257E1Parse a lexeme, aka deal with whitespace nicely. F*space consumer with awareness for commentsG6parse a symbol, i.e. string plus surrouding whitespaceHParse a number/probabilityIParse an integerJ-Make sure definition blocks start un-indentedK0Make contents of definition blocks are indented.LParse between quotesMParse a keywordN Parse a varO Parse the O keyword.P Parse the P keyword.Q Parse the  `:return` keyword.R&Parse a template name (what follows a  `:define` or S block)TParse a modifierUParse template into a  of referents and stringsV*Parse a probability/corresponding templateW Parse an PXParse a O blockY Parse the  `:return` blockZParse the program in terms of  and the s to link them. QParse text as a token + context (aka a reader monad with all the other functions)[Parse text as token + context\!Parse text as a list of functions]@Parse text as a list of tokens, suitable for printing as a tree. Parse text given a context fimport qualified Data.Text.IO as TIO f <- TIO.readFile "template.mad" parseTok "filename.mad" [] [] f^8Parse text as a token, suitable for printing as a tree.._Parse inclustionsEFGHIJKLMNOPQRTUVWXYZ [\] ^_EFGHIJKLMNOPQRTUVWXYZ [\] ^_EFGHIJKLMNOPQRTUVWXYZ [\] ^_ None257: Parse a template file into the  data type`'Generate text from file with inclusions:Generate randomized text from a file conatining a templateaRun in the appropriate folder-Run based on text input, with nothing linked.bGet file as contextBParse a template into a RandTok suitable to be displayed as a tree )variables to substitute into the templatefolderfilepath within folderparsed `ab `ab `ab None257 cdatatype for the subcommandsddatatype for the programe/Parser for command-line options for the programfParser for debug subcommandgParser for the run subcommandhParser for the lint subcommandMain program actioniWraps parser with help parserj7given a parsed record perform the appropriate IO actioncklmnopdqrsefghijcklmonpdqrsefghij cklmnoppdqrsefghijNone257     t         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm n o p q r s t u v w x y z { | } ~ r  %madlang-2.1.2.0-FGN0Gjt6G5FprG2vT0PyF Text.MadlibsText.Madlibs.Internal.TypesText.Madlibs.Internal.UtilsText.Madlibs.Cata.SemErrText.Madlibs.Cata.RunText.Madlibs.Cata.DisplayText.Madlibs.Ana.ParseUtilsText.Madlibs.Ana.ParseText.Madlibs.Ana.ResolveText.Madlibs.Exec.MainContextRandTokListValue SemanticErrorNoReturnCircularFunctionCallsInsufficientArgsDoubleDefinition NoContextrun parseTokMparseTok parseFilerunFilerunTextmakeTree runMadlangPreTokKeyProb $fEqStateT$fMonoidRandTokNameapply $fEqPreTok dropExtensiongetDir.$ normalizecdfshow'parseErrorPretty'unTok readFile'$fMonoidParsecT customErrornoReturncircularFunctionCallsdoubleDefinitioninsufficientArgs semErrStarttext',ansi-wl-pprint-0.6.7.3-EqhsHSbxOT2xFHZZJCFwfText.PrettyPrint.ANSI.LeijenDoccheckSemanticssumProbhead'accesscheckKeysingleInstance noInstance$fExceptionSemanticError$fShowSemanticErrorshowCustomError noContextmkCdf displayTree tokToTree takeTemplate concatTokbuildTok buildTreebuildsortKeys orderKeys modifierListjumblestriplexeme spaceConsumersymbolfloatinteger nonIndented indentGuardquotekeywordvardefineincludemainnamebaseGHC.BasereturnmodifierpreStrpair inclusions definitionfinalprogram parseTreeM parseTokF parseTreeF parseTreeparseInclusionsgetInclusionCtx runInFolderparseCtx SubcommandProgramordersdebugtemplintwrappertemplateDebugRunLintversionrepclInputssubinput