h&3       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           Safe-Inferred    !"#$%&'()*+,/.-016235478<:9;A=>@?FBCEDJGIHKLVMNOPQRSUT^WXYZ[]\a`_fbcednghijkml{opqrstuvwxzy~}|4    !"#$%&'()*+,01/.- Safe-Inferred  Safe-Inferred?  calligraphyAn monadic interface to a fairly primitive line printer. It maintains an indentation level, and provides efficient concatenation through , and that's it. Safe-InferredN calligraphyEnable/disable flags for a . calligraphy"Enable/disable flags for any type. calligraphyEnable/disable flags for any type, without a default (to allow chaining with ) calligraphy Default value calligraphy Flag name calligraphy Help suffix calligraphy Default value calligraphy Enabled value calligraphyDisabled value calligraphyName calligraphy Help suffix calligraphy Enabled value calligraphyDisabled value calligraphyName calligraphy Help suffix Safe-Inferred89:I calligraphyNonsensical bounds, i.e. a left-hand bound larger than the right-hand obund calligraphyTwo identical scopes calligraphyAn attempt to split halfway through a scope, usually the result of two partially overlapping scopes calligraphyAttempting to insert a scope that would not form a tree structure calligraphyOnly works if the height difference of the two trees is at most 2 calligraphyHeight calligraphy*Scopes at the same level, left of this one calligraphy)Left-hand bound of this scope (inclusive) calligraphyChildren calligraphy*Right-hand bound of this scope (exclusive) calligraphy-Scopes at the same level, right of this entry Safe-Inferred8 Safe-Inferred? calligraphyA key that was produced by GHC, c.f. Key that we produced ourselves. We wrap it in a newtype because GHC itself uses a type synonym, but we want conversions to be as explicit as possible. calligraphyA key in our own local space, c.f. a key that was generated by GHC. calligraphyThis is the main type that processing phases will operate on. Note that calls and typing judgments are part of this top-level structure, not of the individual modules.)) Safe-Inferred%&- calligraphyA representation of the call graph that's convenient for rendering. Structurally, it's the same as , in that it's a tree of nodes and a flat list of edges. The differences is that as much of the non-backend-specific preprocessing has already been taken care of. - Nodes and modules have a unique string ID - Nodes and modules contain their desired label - Render roots are guaranteed to be non-empty - Set of calls and types are empty on --hide-{calls, types} - Modules are flattened depending on --no-cluster-modules calligraphy?A directly printable string uniquely identifying a declaration.##  Safe-Inferred"  Safe-Inferred"%&   Safe-Inferred%&A    Safe-Inferred'  Safe-InferredK calligraphyRemove all calls and typings (i.e. edges) where one end is not present in the graph. This is intended to be used after an operation that may have removed nodes from the graph. calligraphyCreate a map of all names, and the keys they correspond to. For every name in the source, this introduces two entries; one naked, and one qualified with the module name. Safe-Inferred6543278<9;:A@?>=FEDCBJIHGKLVUTSRQPONM^]\[ZYXWa`_fedcbnmlkjihg{zyxwvutsrqpo~}|~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXW65432VUTSRQPONMLKJIHGFEDCBA@?>=<9;:87 Safe-Inferred"   Safe-Inferred'  Safe-Inferred? calligraphy1Assigns and maintains a mapping of GHCKeys to Key calligraphy-A declaration extracted from the source code.A single symbol can apparently declare a name multiple times in the same place, with multiple distinct keys D: This happens, for example, with default methods; the name refers to both the method name and the default implementation's name. We have to account for that to _some_ degree, which is why keys is a set. The actual resolution of these happens wit  in mkForest calligraphyThis is the best way I can find of checking whether the name was written by a programmer or not. GHC internally classifies names extensively, but none of those mechanisms seem to allow to distinguish GHC-generated names. calligraphy3Collect declarations, uses, and types in a HIE file   Safe-Inferred Safe-Inferred"%&  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGFHFHIJKLMKLNKLOKLPKLPKQRKQSKQTKQUKQVKQWKQXKQYKQZKQ[KQ\KQ]KQ^KQ_KQ`KQ`KQaKQbKQcKQcKQdKQeKQfKQgKQhKQiKQjKQkKQlKQmKQnKQoKQpKQqKQrKQsKQtKQuKQvKQvKQwKQxKQxKQyKQzKQ{KQ|KQ}KQ~KQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKKKKKKKKKKKKKKKKKKKKKKKKKKK]                          DDDDKLKLKLKLKLKKKKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKQKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK  (calligraphy-0.1.5-77hSKdth15tKKVWrpbXhOTPreludeCalligraphy.Compat.GHCCalligraphy.Util.PrinterCalligraphy.Util.OptparseCalligraphy.Util.LexTreeCalligraphy.Util.LensCalligraphy.Util.Types Calligraphy.Phases.Render.Common!Calligraphy.Phases.Render.Mermaid"Calligraphy.Phases.Render.GraphVizCalligraphy.Phases.NodeFilterCalligraphy.Phases.EdgeCleanup#Calligraphy.Phases.DependencyFilterCalligraphy.Compat.LibCalligraphy.Phases.SearchCalligraphy.Phases.ParseCalligraphy.Compat.Debug CalligraphyPaths_calligraphybaseGHC.Base++GHC.Listfilterzipmemptymappendmconcat Data.FoldableFoldableMonoidsumproductnullminimummaximumlengthfoldr1foldr'foldrfoldl1foldl'foldlfoldMap'foldMapfoldelem traverse_ sequence_ sequenceA_ornotElemmsum minimumBy maximumBymapM_for_forM_foldrMfoldlMfind concatMapconcatasumanyandall Data.OldList isPrefixOf Data.MonoidgetApAp replicatelastghcGHC.Iface.Ext.Binaryhie_file_result_versionhie_file_result_ghc_versionhie_file_result HieFileResultGHC.Iface.Ext.Types TypeIndexSpanNoScope ModuleScope LocalScopeScope RecFieldOcc RecFieldMatch RecFieldDeclRecFieldAssignRecFieldContextnodeTypenodeIdentifiersnodeAnnotationsNodeInfo identType identInfoIdentifierDetails Identifier HieTypeFlatHTyVarTy HTyConAppHQualTyHLitTyHFunTy HForAllTy HCoercionTyHCastTyHAppTyHieType hie_types hie_module hie_hs_src hie_hs_file hie_exportshie_astsHieFilegetAstsHieASTssourcedNodeInfonodeSpan nodeChildrenNodeHieASTSynDec PatSynDecInstDecFamDecDataDecConDecClassDecDeclTypeValBindUse TyVarBindTyDeclRecField PatternBind MatchBindIEThingEvidenceVarUseEvidenceVarBindDecl ClassTyDecl ContextInfo RegularBind InstanceBindBindType hieVersionGHC.Types.Name.Cache NameCache initNameCacheGHC.Iface.TypeifaceTyConNameifaceTyConInfo IfaceTyConGHC.Types.Avail availNamesGHC.Types.Name getOccStringGHC.Unit.Module.NamemoduleNameStringName nameUniqueGHC.Types.SrcLoc RealSrcSpan RealSrcLocsrcSpanStartLinesrcSpanStartColsrcSpanEndLine srcSpanEndCol srcLocLine srcLocColrealSrcSpanStartrealSrcSpanEndGHC.Types.Unique.SupplymkSplitUniqSupplyGHC.Types.UniquegetKeyGHC.Utils.OutputablepprshowSDocUnsafeGHC.Unit.Types moduleName ModuleNamePrintsPrinter runPrinterindentbrackstrLntextLnshowLn$fFunctorPrinter$fApplicativePrinter$fMonadPrinter$fSemigroupPrinter$fMonoidPrinter boolFlags TreeError InvalidBoundsOverlappingBoundsMidSplit LexicalErrorLexTreeTipBinlookup lookupOutertoList foldLexTree emptyLexTreetoForestheightshiftbin insertWithinsert $fEqLexTree$fFunctorTreeError$fFoldableTreeError$fTraversableTreeError $fEqTreeError$fShowTreeError $fShowLexTree$fFunctorLexTree$fFoldableLexTree$fTraversableLexTree Traversal' TraversaloverforT_$fApplicativeConstT$fFunctorConstTLoclocLinelocCol ValueDeclRecDeclConDeclDataDecl ClassDeclGHCKeyunGHCKeyKeyunKeydeclNamedeclKey declGHCKeys declExporteddeclTypedeclLocModule modulePath moduleForest CallGraph_modules_calls_typesmodDecls modForestforestT rekeyCalls ppCallGraph $fShowLoc$fEqLoc$fOrdLoc $fEqDeclType $fOrdDeclType$fShowDeclType $fShowGHCKey $fEnumGHCKey $fEqGHCKey $fOrdGHCKey $fEnumKey $fShowKey$fEqKey$fOrdKey RenderError RenderNodenodeIdnodeLabelLines nodeExported RenderModule moduleLabelmoduleId moduleDecls RenderGraph renderRoots callEdges typeEdgesIDClusterModules ClusterNeverClusterWhenMultiple ClusterAlways RenderConfig showCalls showTypesshowKey showGHCKeysshowModulePathlocModeclusterModules pRenderConfig ppRenderError renderGraphif' renderMermaidGraphVizConfigpGraphVizConfigrenderGraphVizNodeFilterConfig hideLocalscollapseModulescollapseClasses collapseDatacollapseValuescollapseConstructors hideRecordspNodeFilterConfig filterNodes$fEqMode $fShowModeEdgeCleanupConfig cleanupEdgespEdgeCleanupConfigDependencyFilterErrorUnknownRootNameDependencyFilterConfigpDependencyFilterConfig ppFilterErrordependencyFilter getHieFiles sourceInfoshowContextInforeadHieFileCompatisInstanceNodeisTypeSignatureNode isInlineNode isMinimalNodeisDerivingNodeshowAnns mergeSpans isPointSpan SearchConfig searchFiles pSearchConfigParsePhaseDebugInfomodulesLexTrees ParseError _peModuleName _peModulePath_peError ppParseErrorppParsePhaseDebugInfo parseHieFiles$fSemigroupDedup$fMonoidIdentifierType$fSemigroupIdentifierType ppHieFile ppIdentifier showGHCNamemainmainWithConfigghc-primGHC.Primseq System.IOprint Data.Tuplefstsnd otherwisemap$GHC.Real fromIntegral realToFrac Control.MonadguardjoinGHC.EnumBoundedminBoundmaxBoundEnumsuccpredtoEnumfromEnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.ClassesEq==/= GHC.FloatFloatingtanhtansqrtsinhsinpilogBaselogexpcoshcosatanhatanasinhasinacosh**acos Fractionalrecip fromRational/IntegralremquotRemquotmoddivMod toIntegerdivMonad>>=return>>Functorfmap<$GHC.NumNumsignumabs*+negate fromInteger-Ord<<=>maxmin>=compareGHC.ReadReadreadList readsPrecReal toRational RealFloat significand scaleFloatisNegativeZeroisNaN isInfiniteisIEEEisDenormalized floatRange floatRadix floatDigitsexponent encodeFloatatan2 decodeFloatRealFractruncateroundproperFractionceilingfloorGHC.ShowShowshowListshow showsPrecControl.Monad.Fail MonadFailfail Applicative<*pure*><*>Data.Traversable Traversablesequence sequenceAtraversemapM Semigroup<> GHC.TypesBoolFalseTrueStringCharDoubleFloatInt ghc-bignumGHC.Num.IntegerInteger GHC.MaybeMaybeNothingJustOrderingGTLTEQRationalIOWord Data.EitherEitherLeftRight Data.Functor<$>const.id Text.Readread MonadPlusmzeromplus zipWithM_zipWithMunless replicateM_ replicateMmfilter mapAndUnzipMforeverfoldM_foldMfilterM>=><=<<$!>forM writeFilereadLnreadIOreadFileputStrLnputStrputCharinteractgetLine getContentsgetChar appendFileGHC.IO.ExceptionioErrorGHC.IOFilePathIOError userErrorwordsunwordsunlineslinesreadsrightspartitionEithersleftsisRightisLeft fromRightfromLefteither readParenlexText.ParserCombinators.ReadPReadSoddlcmgcdeven^^^ShowSshows showString showParenshowCharzipWith3zipWithzip3unzip3unzip takeWhiletaketailsplitAtspanscanr1scanrscanl1scanlreverserepeatiterateinithead dropWhiledropcyclebreak!! Data.MaybemaybevoiduncurrycurrysubtractwhenuntilliftM5liftM4liftM3liftM2liftMflipasTypeOfap=<<$!GHC.Err undefinederrorWithoutStackTraceerror&&not|| HieHeader writeHieFilereadHieFileWithVersion readHieFilehieMagic GHC.Iface.EnvNameCacheUpdaterNCUupdateNameCache TyVarScopeResolvedScopesUnresolvedScopeSourcedNodeInfogetSourcedNodeInfo NodeOrigin GeneratedInfo SourceInfoNodeIdentifiersNodeAnnotation nodeAnnotTypenodeAnnotConstrIEType ImportHidingImportAsExportImport HieTypeFixRollHiePathHieName LocalName ExternalName KnownKeyNameHieArgs EvVarSource isSuperInstcls EvWrapperBind EvSigBind EvPatternBind EvLetBindEvImplicitBind EvInstBind EvBindDeps getEvBindDeps toHieName pprNodeIdents pprIdentifier pprBindSpan hieNameOcc OrigNameCachensUniqsnsNameslookupOrigNameCacheextendOrigNameCacheextendNameCacheUnhelpfulSpanReasonUnhelpfulWiredInUnhelpfulOtherUnhelpfulNoLocationInfoUnhelpfulGeneratedUnhelpfulInteractiveSrcSpan UnhelpfulSpanSrcLoc UnhelpfulLoc srcSpanFile RealLocatedPsSpan psRealSpan psBufSpan PsLocatedPsLoc psRealLocpsBufPosLocated LayoutInfo VirtualBracesExplicitBraces NoLayoutInfo GenLocatedLBufSpan bufSpanStart bufSpanEndBufPosbufPoswiredInSrcSpanunhelpfulSpanFS unRealSrcSpanunLocsrcSpanToRealSrcSpan srcSpanStartsrcSpanFirstCharactersrcSpanFileName_maybe srcSpanEnd srcLocSpan srcLocFilespanssortRealLocated sortLocatedrightmost_smallestrealSrcLocSpan psSpanStart psSpanEnd pprUserSpanpprUserRealSpanpprUnhelpfulSpanReason pprLocated noSrcSpannoSrcLocnoLoc mkSrcSpanPs mkSrcSpanmkSrcLoc mkRealSrcSpan mkRealSrcLocmkPsSpanmkGeneralSrcSpanmkGeneralSrcLocmkGeneralLocatedmapLoc lookupSrcSpan lookupSrcLocliftLleftmost_smallestleftmost_largestleftmostColumnisZeroWidthSpan isSubspanOfisRealSubspanOf isOneLineSpan isGoodSrcSpanisGeneratedSrcSpaninteractiveSrcSpaninteractiveSrcLocgetRealSrcSpangetLoc getBufSpan getBufPosgeneratedSrcSpangeneratedSrcLoc eqLocated containsSpancombineSrcSpanscombineRealSrcSpans combineLocs cmpLocated cmpBufSpan advanceSrcLoc advancePsLoc advanceBufPosaddCLocversiongetDataFileName getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDir text-1.2.5.0Data.Text.Internal.BuilderBuilderenableDisableFlagsenableDisableFlagsNoDefault<|>removeDeadCalls resolveNamesHieParseRawDecldedup isGeneratedcollect