úÎēmĨl‚      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  €  Safe ‚ƒ„…†‡ˆ‰Š‹ŒŽƒ‰Š‹ŒŽ ‚ƒ„…†‡ˆ‰Š‹ŒŽSafe = flip ;A precedence parser that reads a single specific character.•‘’“”•–—˜™š›œžŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙      !Safe24[List of length 1 or 2.List of length 1List of length 2toTuple (One 1) (1,Nothing)toTuple (Two 1 2) (1,Just 2)toTuple' (One 1) (Nothing,1)toTuple' (Two 1 2) (Just 1,2)Safe24 List of length 0, 1, or 2.List of length 0List of length 1List of length 2    NoneITypes that can be converted to ō.!This class mostly exists so that 8 can be used in situations that would normally call for Ļ (which we cannot use because  does not have an instance of Ĩ). stands for positive integer. You can also think of it as position:, because we use it to represent line and column numbers ( and ).e has instances of several of the standard numeric typeclasses, although many of the operations throw " when non-positive values result.  does not have an Ĩ9 instance, because there is no sensible way to implement ¨.posShowsPrec minPrec 1 """1"posShowsPrec minPrec 42 """42"%readPrec_to_S posReadPrec minPrec "1"[(1,"")]&readPrec_to_S posReadPrec minPrec "42" [(42,"")]%readPrec_to_S posReadPrec minPrec "0"[]&readPrec_to_S posReadPrec minPrec "-1"[]"toEnum 3 :: Pos3toEnum 0 :: Pos#*** Exception: arithmetic underflowfromEnum (3 :: Pos)3$fromInteger 3 :: Pos3fromInteger 0 :: Pos#*** Exception: arithmetic underflow 2 + 3 :: Pos5 3 - 2 :: Pos1 3 - 3 :: Pos#*** Exception: arithmetic underflow 2 * 3 :: Pos6negate 3 :: Pos#*** Exception: arithmetic underflow"#$% !"#$%&'"#$% !"#$%&'None6 Stands for location. Consists of a  and a . You can think of a 6‰ like a caret position in a text editor. Following the normal convention for text editors and such, line and column numbers start with 1.9"locShowsPrec minPrec (loc 3 14) """3:14":(readPrec_to_S locReadPrec minPrec "3:14" [(3:14,"")]; Create a 6& from a line number and column number.<The smallest location: ; 1 1.origin1:1=ģ = :>Á = 9 6&789:;<=>6879:;< 678;<789:6&789:;<=>SafeAA k m is the subset of   m whose keys are less than k.BA k m is the subset of   m whose keys are greater than k.CC k m is the subset of   m& whose keys are less than or equal to k.DD k m is the subset of   m) whose keys are greater than or equal to k.ABCDu'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•– ABCDABCDABCDSafeEFGHEFEFEFGHNone[KA K consists of a start location (L) and an end location (Mx). The end location must be greater than the start location; in other words, empty or backwards spans are not permitted."Construct and combine spans using P, Q, W, and X.N<spanShowsPrec minPrec (fromTo (read "3:14") (read "6:5")) "" "3:14-6:5"O-readPrec_to_S spanReadPrec minPrec "3:14-6:5"[(3:14-6:5,"")]-readPrec_to_S spanReadPrec minPrec "6:5-3:14"[(3:14-6:5,"")],readPrec_to_S spanReadPrec minPrec "6:5-6:5"[]PAttempt to construct a K from two 6~s. The lesser loc will be the start, and the greater loc will be the end. The two locs must not be equal, or else this throws F.%The safe version of this function is Q.QAttempt to construct a K from two 6ws. The lesser loc will be the start, and the greater loc will be the end. If the two locs are not equal, the result is é!, because a span cannot be empty.This is the safe version of P$, which throws an exception instead.R%All of the lines that a span touches.)NonEmpty.toList (lines (read "2:6-2:10"))[2](NonEmpty.toList (lines (read "2:6-8:4"))[2,3,4,5,6,7,8]S=Spans that are directly abutting do not count as overlapping..overlapping (read "1:5-1:8") (read "1:8-1:12")False.But these spans overlap by a single character:.overlapping (read "1:5-1:9") (read "1:8-1:12")TrueBSpans are overlapping if one is contained entirely within another./overlapping (read "1:5-1:15") (read "1:6-1:10")True,Spans are overlapping if they are identical./overlapping (read "1:5-1:15") (read "1:5-1:15")TrueT=Determines whether the two spans touch any of the same lines.2linesOverlapping (read "1:1-1:2") (read "1:1-1:2")True2linesOverlapping (read "1:1-1:2") (read "1:1-2:1")True2linesOverlapping (read "1:1-1:2") (read "2:1-2:2")FalseU{Two spans are considered to "touch" if they are overlapping or abutting; in other words, if there is no space between them.*touching (read "1:1-1:2") (read "1:2-1:3")True*touching (read "1:1-1:2") (read "1:1-1:3")True*touching (read "1:1-1:2") (read "1:3-1:4")FalseV&join (read "1:1-1:2") (read "1:2-1:3")1:1-1:3&join (read "1:1-1:2") (read "1:1-1:3")1:1-1:3W Combine two K(s, merging them if they abut or overlap.read "1:1-1:2" + read "1:2-1:3" One 1:1-1:3read "1:1-1:2" + read "1:1-3:1" One 1:1-3:1 read "1:1-1:2" + read "1:1-11:1" One 1:1-11:1„If the spans are not overlapping or abutting, they are returned unmodified in the same order in which they were given as parameters.read "1:1-1:2" + read "2:1-2:5"Two 1:1-1:2 2:1-2:5read "2:1-2:5" + read "1:1-1:2"Two 2:1-2:5 1:1-1:2XThe difference between two Spanss. a X b contains what is covered by a and not covered by b.read "2:5-4:1" - read "2:9-3:5"Two 2:5-2:9 3:5-4:1read "2:5-4:1" - read "2:5-3:5" One 3:5-4:1read "2:5-4:1" - read "2:2-3:5" One 3:5-4:1/Subtracting a thing from itself yields nothing.let x = read "2:5-4:1" in x - xZeroread "2:5-4:1" - read "2:2-4:4"Zeroread "1:1-8:1" - read "1:2-8:1" One 1:1-1:2YGiven an ascending list of K's, combine those which abut or overlap.Zģ = O[Á = NK—LMNOPQRSTUVWXY A list of Spans sorted in ascending order.!This precondition is not checked.Z[KMLNOPQRSTUVWXYKLMPQLMRSTUVYWXNOK—LMNOPQRSTUVWXYZ[ NoneIT^'A set of non-overlapping, non-abutting Ks. You may also think of an ^. like a span that can be empty or have gaps ."Construct and combine areas using ā, b, a, j, and l.`'readPrec_to_S areaReadPrec minPrec "[]" [([],"")]7readPrec_to_S areaReadPrec minPrec "[3:2-5:5,8:3-11:4]"[([3:2-5:5,8:3-11:4],"")]7readPrec_to_S areaReadPrec minPrec "[3:2-5:5,11:4-8:3]"[([3:2-5:5,8:3-11:4],"")]6readPrec_to_S areaReadPrec minPrec "[3:2-5:5,8:3-8:3]"[]aConstruct a contiguous ^ consisting of a single K specified by two 6|s. The lesser loc will be the start, and the greater loc will be the end. If the two locs are equal, the area will be empty.b Construct an ^ consisting of a single K.spanArea (read "4:5-6:3") [4:5-6:3]cA K from h to i, or é if the ^ is empty.areaSpan memptyNothingareaSpan (read "[3:4-7:2]") Just 3:4-7:2%areaSpan (read "[3:4-7:2,15:6-17:9]") Just 3:4-17:9dA list of the Ks that constitute an ^, sorted in ascending order.spansAsc mempty[]%spansAsc (read "[3:4-7:2,15:6-17:9]")[3:4-7:2,15:6-17:9]espanCount mempty0spanCount (read "[3:4-7:2]")1&spanCount (read "[3:4-7:2,15:6-17:9]")2fThe first contiguous K in the ^, or é if the area is empty.firstSpan memptyNothingfirstSpan (read "[3:4-7:2]") Just 3:4-7:2&firstSpan (read "[3:4-7:2,15:6-17:9]") Just 3:4-7:2gThe last contiguous K in the ^, or é if the area is empty.lastSpan memptyNothinglastSpan (read "[3:4-7:2]") Just 3:4-7:2%lastSpan (read "[3:4-7:2,15:6-17:9]")Just 15:6-17:9hThe 6 at which the ^ starts, or é if the ^ is empty. start memptyNothingstart (read "[3:4-7:2]")Just 3:4"start (read "[3:4-7:2,15:6-17:9]")Just 3:4iThe 6 at which the ^ ends, or é if the ^ is empty. end memptyNothingend (read "[3:4-7:2]")Just 7:2 end (read "[3:4-7:2,15:6-17:9]") Just 17:9jThe union of two ^;s. Spans that overlap or abut will be merged in the result.read "[1:1-1:2]" + mempty [1:1-1:2]#read "[1:1-1:2]" + read "[1:2-1:3]" [1:1-1:3]#read "[1:1-1:2]" + read "[1:1-3:1]" [1:1-3:1]$read "[1:1-1:2]" + read "[1:1-11:1]" [1:1-11:1]+read "[1:1-3:1,6:1-6:2]" + read "[1:1-6:1]" [1:1-6:2]#read "[1:1-3:1]" + read "[5:1-6:2]"[1:1-3:1,5:1-6:2]kk s a is the union of ^ a and K s.3addSpan (read "1:1-6:1") (read "[1:1-3:1,6:1-6:2]") [1:1-6:2]lThe difference between two ^s. a l b contains what is covered by a and not covered by b.˜˜ s a is the subset of ^ a that is not covered by K s.mÜ = joģ = `pÁ = _^™š›œ_`aStartEndbcdefghijkl˜mnop^_`abcdefghijkl^abjlkfghicde_`^™š›œ_`abcdefghijkl˜mnop None uThe smallest location: v 1 1.This is an alias for <.v Create a 6& from a line number and column number.This is an alias for ;.wAttempt to construct a K from two 6~s. The lesser loc will be the start, and the greater loc will be the end. The two locs must not be equal, or else this throws F.%The safe version of this function is x.This is an alias for P.xAttempt to construct a K from two 6ws. The lesser loc will be the start, and the greater loc will be the end. If the two locs are not equal, the result is é!, because a span cannot be empty.This is the safe version of w$, which throws an exception instead.This is an alias for Q.yConstruct a contiguous ^ consisting of a single K specified by two 6|s. The lesser loc will be the start, and the greater loc will be the end. If the two locs are equal, the area will be empty.This is an alias for a.zThe union of two ^;s. Spans that overlap or abut will be merged in the result.This is an alias for j.{The difference between two ^s. a `areaDifference' b contains what is covered by a and not covered by b.This is an alias for l.|A list of the Ks that constitute an ^, sorted in ascending order.This is an alias for d.} Construct an ^ consisting of a single K.This is an alias for b.~ Combine two K(s, merging them if they abut or overlap.This is an alias for W.The difference between two Spanss. a - b contains what is covered by a and not covered by b.This is an alias for X.€This is an alias for L.This is an alias for M. uvwxyz{|}~€ 6EFK^uvwxyz{|}~€6K^vuwxy}|€z{~ EF uvwxyz{|}~€ None6K^6K^  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh i j k [ l m n o p q W X b r c s t u v w x y z G F { | } ~  € l  ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ  Ž   ‘’“”’•–’—˜’—™’“š’“›’œ’žŸ’ Ą’ ĸ’ Ŗ’ ¤’ Ĩ’ Ļ’ §’ ¨’ ŠĒĢŦĒĢ­ĒĢŽ’¯°’œą’œ˛’œŗ’œ´’œĩ’“ļ’“ˇ’“¸’“š’“ē’“ģ’“ŧĒĢŊĒĢžĒĢŋĒĢĀĒĢÁĒĢÂĒĢÃĒĢĒŃÅĮ’ÅȒÅɒÅʒœ˒œĖ’œÍ’ÎĪ’ÎВÎŅ’ÎŌ’“Ķ’“Ô’“Õ’“Ö’×ؒ×Ų’×ڒ×ے×ܒ×Ũ’×Ū’×ߒ×ā’×á’×â’×ã’×ä’×å’׿’×į’×č’éę’éë’ėí’ėî’ėī’ėđ’“ņ’“ō’“ķ’“ôĒõöĒõ÷ĒõøĒõųĒõú’“û’“ü’“ũĒõūĒõ˙ĒõĒõĒõ’’’’ ’  ’  ’  ’ ’ž’é’’’’×’’’’’’’’’ ’!"’!#’!$’!%’&'’&(’)*’)+’),’Î-’Î.’Î/’01’02’“3’“4’“5’“6’“7’“8’“9’:;ĒĢ<ĒĢ=ĒĢ>?@A?BC"#&DA?EF?Eį?EG?EH?EI?@J?@K?@L?@M?@N?@O?@P?@Q?@R?@S?@T?@U?@V?@W?@Ų?@X?@Y?@Z?@[?@\?@]?@^?@_?@`?@a?@b?@c?@d?@ß?@Ū?@č?@Ú?@e?@f?@g?@h?@i?@j?@k?@l?@m?@n?@o?@p?@q?@r?@s?@t?@u?@v?@w?@x?@y?@z?@{?@|?@}?@~?@?@€?@?@‚?@ƒ?@„?@…?@†?@‡?@ˆ?@‰?@Š?@‹?@Œ?@?@Ž?@?@?@‘?@’?@“?@”?@•?@–?@—?@˜?@™?@š?@›?@œ?@?@ž?@Ÿ?@ ?@Ą?@ĸ?@8?@Ŗ?@¤?@Ĩ?@Ļ?@§?@¨?@Š?@Ē?@Ģ?@Ü?@Ŧ?@­V Ž i ¯ ° ą˛"loc-0.1.0.2-4biNRmDvrkiERJeqfpvMwMData.Loc.Internal.PreludeData.Loc.List.OneToTwoData.Loc.List.ZeroToTwo Data.Loc.Pos Data.Loc.LocData.Loc.Internal.MapData.Loc.Exception Data.Loc.Span Data.Loc.AreaData.Loc Paths_locData.Loc.Types<&> readPrecCharOneToTwoOneTwotoTupletoTuple' $fEqOneToTwo $fOrdOneToTwo$fShowOneToTwo$fReadOneToTwo$fFoldableOneToTwo$fFunctorOneToTwo ZeroToTwoZero $fEqZeroToTwo$fOrdZeroToTwo$fShowZeroToTwo$fReadZeroToTwo$fFoldableZeroToTwo$fFunctorZeroToTwoColumnLineToNattoNatPos posShowsPrec posReadPrec $fReadColumn $fShowColumn $fReadLine $fShowLine $fEnumPos $fRealPos$fNumPos $fReadPos $fShowPos $fToNatPos$fEqPos$fOrdPos$fEqLine $fOrdLine $fNumLine $fRealLine $fEnumLine $fToNatLine $fEqColumn $fOrdColumn $fNumColumn $fRealColumn $fEnumColumn $fToNatColumnLoclinecolumn locShowsPrec locReadPreclocorigin $fReadLoc $fShowLoc$fEqLoc$fOrdLocbelowabovebelowInclusiveaboveInclusive LocException EmptySpan$fShowLocException$fExceptionLocException$fEqLocException$fOrdLocExceptionSpanstartend spanShowsPrec spanReadPrecfromTo fromToMaylines overlappinglinesOverlappingtouchingjoin+-joinAsc $fReadSpan $fShowSpan$fEqSpan $fOrdSpanArea areaShowsPrec areaReadPrecspanAreaareaSpanspansAsc spanCount firstSpanlastSpanaddSpan$fSemigroupArea $fMonoidArea $fReadArea $fShowArea $fEqTerminus $fOrdTerminus$fEqArea $fOrdArea spanFromTo spanFromToMay areaFromTo areaUnionareaDifference areaSpansAsc spanUnionspanDifference spanStartspanEndcatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamebaseGHC.Basefmap System.IOprint Data.Tuplefstsnd otherwise$GHC.Real fromIntegral Control.MonadguardGHC.EnumEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumtoEnumsuccpredghc-prim GHC.ClassesEq==/= GHC.Floatsqrt/Integral toIntegerdivquotRemMonad>>=>>returnfailFunctor<$Ord>=minmax><<=compareGHC.ReadRead readsPrecreadListreadPrec readListPrecReal toRationalroundGHC.ShowShow showsPrecshowshowListpure<*>*><* Data.FoldableFoldabletoListfoldrfoldMapnulllengthfoldlfoldl'foldl1sumproductfoldr1maximumminimumelemfoldfoldr'Data.Traversabletraverse sequenceAData.Semigroup Semigroup<>sconcatstimesMonoidmemptymappendmconcat GHC.TypesBoolFalseTrueDoubleIntMaybeNothingJustOrderingLTEQGTIOData.List.NonEmptyNonEmpty:| GHC.NaturalNatural System.Exit exitFailureData.Bifunctor Bifunctorfirstsecondbimapmfilter mapAccumLControl.Category>>><<< Text.Readread traverse_ GHC.Exceptionthrow ExceptionArithExceptionOverflow UnderflowLossOfPrecision DivideByZeroDenormalRatioZeroDenominatorText.ParserCombinators.ReadPrec readPrec_to_S readP_to_PrecminPrecReadPrec Data.Function&on Data.Functorvoid$><$> showStringshowsShowS Data.Maybe catMaybesmaybeflip.constidwhenemptyStringGHC.Err undefined&&||notcontainers-0.5.7.1 Data.Map.BaseMap Data.Set.BaseSetcheckForUnderflowData.Map foldWithKeyinsertLookupWithKey'insertWithKey' insertWith' splitRootvalid showTreeWithshowTree deleteFindMax deleteFindMin splitLookupsplitfromDistinctAscListfromAscListWithKeyfromAscListWith fromAscList toDescList toAscListfromListWithKey fromListWithfromListfromSetkeysSetassocskeyselemsfoldMapWithKey foldlWithKey' foldlWithKey foldrWithKey' foldrWithKeymapKeysMonotonic mapKeysWithmapKeysmapAccumRWithKeymapAccumWithKeymapAccumtraverseWithKey mapWithKeymapmapEitherWithKey mapEithermapMaybeWithKeymapMaybepartitionWithKey partition filterWithKeyfilterisProperSubmapOfByisProperSubmapOf isSubmapOfBy isSubmapOf mergeWithKeyintersectionWithKeyintersectionWith intersectiondifferenceWithKeydifferenceWith difference unionWithKey unionWithunion unionsWithunionsmaxViewminViewmaxViewWithKeyminViewWithKeyupdateMaxWithKeyupdateMinWithKey updateMax updateMin deleteMax deleteMinfindMaxfindMindeleteAtupdateAtelemAt lookupIndex findIndexalterupdateLookupWithKey updateWithKeyupdate adjustWithKeyadjustdeleteinsertLookupWithKey insertWithKey insertWithinsert singletonlookupGElookupLElookupGTlookupLTfindWithDefault notMembermemberlookupsize\\! subtractSpanTerminusStartEnd