úÎ;à94      Safe-InferredM 7Concatenates two filepaths, for example: | | > "ab" <> "c" | "abc" |XFunction composition, but where the inner function's returnvalue | is inside a functor.7Ternary operator: if the predicate function evalues to 5 | , take the second argument; otherwise, the first.  getFileDirectory "a/b/c/d/e.txt"| "abcd!" | | > getFileDirectory "abcd " | "abcd4" | | > getFiledirectory "file.txt" | "."<Takes a list of filepaths, and removes "." and ".." from it.Creates a file at the specified path with the specified contents. | If intermediate directories do not exist, it creates them._Removes the oldest ancestor from a path component, e.g. | | > removeFirstPathComponent "abc" | "b/c" …Gets paths to all files in or in subdirectories of the | specified directory. Returned paths are relative to the | given directory.!KDrops elements from the given list until the predicate function | returns 2 (returned list includes element that passes test)  "! !  "!None)024MDiff between two lists. 3 represents the indices at which to delete, and / represents the indices and contents to add.returns (to delete, to add) !diffSequences "abcdefg" "wabxyze"&SeqDiff {dels = [2,3,5,6], adds = [(0,w),(3,x),(4,y),(5,z)]} !diffSequences "abcdefg" "wabxyze"&SeqDiff {dels = [2,3,5,6], adds = [(0,w),(3,x),(4,y),(5,z)]} applySequenceDiff it "abcdefg" "wabxyze"#¡Compute the longest common (potentially noncontiguous) subsequence between two sequences. Element type is fixed because memoization requires a static type.$When sub2 is a (not necessarily contiguous) subsequence of super,, get the index at which each element of sub appears. E.g. "subsequenceIndices "abe" "abcdefg" 0,1,4%When sub2 is a (not necessarily contiguous) subsequence of super*, get the indices at which elements of sub do *not* appear. E.g. %nonSubsequenceIndices "abe" "abcdefg" 2,3,5,6&O(n). indicesN parameter *must* be sorted in increasing order, and indices must all exist #$%&'( #$%&'(None)0Basic error typeData type for a line/A data type for differences between directories ;The types and sets of changes possible between two files. CompositionAddDel is hack to make ) work properly :/?The basic data type for a difference between two files. The *ü is the "base" file in the base-comp comparison, and is the file to which the patch will be applied. Deletions: a list of indices at which to remove elements. Additions: each line to add comes with the index at which it will eventually reside. +,-./012      +,-./012None)MO(mn)ÿ0. Compute the difference between the two files (more specifically, the minimal number of changes to make to transform the file residing at the location specified by the first parameter into the second). Throws an exception if either or both of the parameters point to a directory, not a file.CFiles are allowed to not exist at either or both of the parameters.ÿ9Compute the difference between the two directories (more specifically, the minimal number of changes to make to transform the directory residing at the location specified by the first parameter into the second). Throws an exception if either or both of the parameters point to a file, not a directory.O(n)%. Apply a diff to a directory or file upon success; 3 upon failure4       !"#$%&'()*+,-./0123456789filediff-0.1.0.3Filediff.SequenceFilediff.TypesFilediffFilediff.UtilsSeqDiffdelsadds diffSequencesapplySequenceDiffErrorLineDiff filediffs FileChangeAddModDelbasecompchange diffFilesdiffDirectories applyToFileapplyToDirectory<.>?:ghc-prim GHC.TypesTruegetFileDirectory removeDotDirscreateFileWithContentsremoveFirstPathComponent!getDirectoryContentsRecursiveSafe dropUntil"getDirectoryContentsRecursiveSafe'longestCommonSubsequencesubsequenceIndicesnonSubsequenceIndicesremoveAtIndices$fMonoidSeqDiff$fDefaultSeqDiff Data.MonoidmappendGHC.IOFilePath excludeBy intersectBy $fMonoidDiff$fMemoTableText $fDefaultDiff$fEqDiff$fMonoidFilediff$fMonoidFileChangeFalse