n*      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                         Safe 569:;<=?QR  Safe 569:;<=?QR    Safe056: !"#$%&'() !"#$%"# !)$('%&  !"#$%&'()Safe 05:<=?TA123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq:123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTVUWXYZ[\]^_`abcdefghijARSTUVWXYNOPQHIJKLMABCDEFG;<=>?@qp89:67345onmlkZ[\]^_`abcdefgh12ij!123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqNone 02569:;<=f|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abch[ZXY\]^_`aOPQRSTUVWMNKLHIJFG@ABCDE89:;<=>?      !"#$%&'()*+,-./01234567bc|}~~}|{zyxwvutsrqponmlkjihgfed|}~   I      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~^5None 059:;<=B4mnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-mnorqpstuwvxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~4xyz{|tuvwnopqrsm      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~}~mnopqrstuvwxyz{|}~ S      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None 059:;<=B      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP AB@ !(9:=<?>78; , #  "$%&')*+-./0123456CEFDGHIJKSPQMRLNOTUWVXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGabcdef>?@BHCDEFGghijklmnopqrstuvwxyz{|}~P[\]^_`XYZTUVWJKLMNOPQRSONIGHCDEFA      !"#$%&'()*+,-./0123456789:;<=>?@ABMLKJI      !"#$%&'()*+,-./0123456789:;<=      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPNone/0T[original annotation\@unique name for function/variable, after variable renaming phase]basic block graph^5unique number for each block during dataflow analysiso+The type of "transformBiM"-family functionsp*The type of "transformBi"-family functionsqBasic block graph.r Basic blocksBObtain either uniqueName or source name from an ExpValue variable.tHGenerate an ExpValue variable with its source name == to its uniqueName.u5Obtain either uniqueName or source program unit name.vNCreate analysis annotations for the program, saving the original annotations.wRRemove analysis annotations from the program, restoring the original annotations.xReturn list of expressions used as the left-hand-side of assignment statements (including for-loops and function-calls by reference).ySReturn list of expressions that are not "left-hand-side" of assignment statements.z,Is this an expression capable of assignment?{"Set of names found in an AST node.|ZSet of names found in the parts of an AST that are the target of an assignment statement.}:Set of expressions used -- not defined -- by an AST-block.~4Set of names used -- not defined -- by an AST-block.%Set of names defined by an AST-block.)YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0OPQRSTUVWYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0vwYZ[\]^_`stu}yklmnabcdefghijOPQRSTUVWxz{|~rqpoYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ NoneT%Mapping of names to type information.oAnnotate AST nodes with type information and also return a type environment mapping names to type information.!           NoneTFAnnotate unique names for variable and function declarations and uses.ITake the unique name annotations and substitute them into the actual AST.\Create a map of unique name => original name for each variable and function in the program.@Perform the rename, stripAnalysis, and extractNameMap functions.KTake a renamed program and its corresponding NameMap, and undo the renames.{Run a function with the program file placed under renaming analysis, then undo the renaming in the result of the function.5 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH/ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH None:T1A mapping of program unit names to bblock graphs.;Insert basic block graphs into each program unit's analysisVCreate a mapping of (non-module) program unit names to their associated bblock graph.Extract graph from SuperBBGr"Extract cluster map from SuperBBGr2Show a basic block graph in a somewhat decent way.,Show a basic block graph without the clutterShow a basic block supergraphFPick out and show the basic block graphs in the program file analysis.)Output a graph in the GraphViz DOT format.Output a supergraph in the GraphViz DOT formatI,Fold a function over the graph. Monadically.J+Map a function over the graph. Monadically.KMap a function over the L labels in a graph. Monadically.QMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~IJK  FMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~IJK None:LT2ACallMap : program unit name -> { name of function or subroutine }7InductionVarMapByASTBlock : AST-block label -> { name }EMap of loop header nodes to the induction variables within that loop.LoopNodeMap : node -> { node }BackEdgeMap : node -> node#Represent "flows" between variablesoFlowsGraph : nodes as AST-block (numbered by label), edges showing which definitions contribute to which uses.UDMap : use -> { definition }DUMap : definition -> { use }-DefMap : variable name -> { AST-block label }BlockMap : AST-block label -> AST-block Each AST-block has been given a unique number label during analysis of basic blocks. The purpose of this map is to provide the ability to lookup AST-blocks by label.?OutF, a function that returns the out-dataflow for a given node=InF, a function that returns the in-dataflow for a given node=InOutMap : node -> (dataflow into node, dataflow out of node)>InOut : (dataflow into the bblock, dataflow out of the bblock)CAn OrderF is a function from graph to a specific ordering of nodes.-IDomMap : node -> immediate dominator of node#DomMap : node -> dominators of nodeCompute dominators of each bblock in the graph. Node A dominates node B when all paths from the start node (0) must pass through node A in order to reach node B. That will be represented as the relation (B, [A, ...]) in the DomMap.jCompute the immediate dominator of each bblock in the graph. The immediate dominator is, in a sense, the closest dominator of a node. Given nodes A and B, you can say that node A is immediately dominated by node B if there does not exist any node C such that: node A dominates node C and node C dominates node B.JThe postordering of a graph outputs the label after traversal of children.Reversed postordering.JThe preordering of a graph outputs the label before traversal of children.Reversed preordering..Compute the set of nodes with no predecessors.-Apply the iterative dataflow analysis method.Build a BlockMap from the AST. This can only be performed after analyseBasicBlocks has operated, created basic blocks, and labeled all of the AST-blocks with unique numbers.}Build a DefMap from the BlockMap. This allows us to quickly look up the AST-block labels that wrote into the given variable.Dataflow analysis for live variables given basic block graph. Muchnick, p. 445: A variable is "live" at a particular program point if there is a path to the exit along which its value may be used before it is redefined. It is "dead" if there is no such path.Iterate KILL" set through a single basic block.Iterate GEN" set through a single basic block.KILL set for a single AST-block.GEN set for a single AST-block.aReaching definitions dataflow analysis. Reaching definitions are the set of variable-defining AST-block labels that may reach a program point. Suppose AST-block with label A defines a variable named v. Label A may reach another program point labeled P if there is at least one program path from label A to label P that does not redefine variable v.hdef-use map: map AST-block labels of defining AST-blocks to the AST-blocks that may use the definition.Invert the DUMap into a UDMapnuse-def map: map AST-block labels of variable-using AST-blocks to the AST-blocks that define those variables.$Convert a UD or DU Map into a graph.Flows-To, analysis. Represent def-use map as a graph.OCreate a map (A -> Bs) where A "flows" or contributes towards the variables Bs.Finds the transitive closure of a directed graph. Given a graph G=(V,E), its transitive closure is the graph: G* = (V,E*) where E*={(i,j): i,j in V and there is a path from i to j in G}Find the edges that 'loop back' in the graph; ones where the target node dominates the source node. If the backedges are viewed as (m -> n) then n is considered the  'loop-header'For each loop in the program, find out which bblock nodes are part of the loop by looking through the backedges (m, n) where n is considered the  'loop-header', delete n from the map, and then do a reverse-depth-first traversal starting from m to find all the nodes of interest. Intersect this with the strongly-connected component containing m, in case of improper& graphs with weird control transfers.nSimilar to loopNodes except it creates a map from loop-header to the set of loop nodes, for each loop-header.9The strongly connected component containing a given node.Basic induction variables are induction variables that are the most easily derived from the syntactic structure of the program: for example, directly appearing in a Do-statement.For each loop in the program, figure out the names of the induction variables: the variables that are used to represent the current iteration of the loop.cGenerate an induction variable map that is indexed by the labels on AST-blocks within those loops..Show some information about dataflow analyses.7Create a call map showing the structure of the program.6basic block graph'initialisation for in and out dataflowsordering function.compute the in-flow given an out-flow function.compute the out-flow given an in-flow functionfinal dataflow for each noderesult of reaching definitions++6 NoneNoneTNoneNoneNone /023459:;<=?@ABDFIJKNOQRTP      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~L      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~9 9 None /023459:;<=?@ABDFIJKNOQRT                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                                 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~     9 9 None /023459:;<=?@ABDFIJKNOQRT:                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~6                               ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 9  9 None !"#$%&'()*+,-./001123456789:;<=>?@ABCDEFFGHIJKLMMNOPQRRSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLLMMNOOPPQRSTUVWXYZZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopoqnrstsuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~nopoqnrstsuvwxyz{|}~      !'(*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOOPQRSTUVVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                    ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6789 : ; < = >  ? @ 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 [ \ ] ^ _ ` 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 { | } ~      j         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./01     23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R      !"#$%&'()*+,-./01      S T23456789:; U V<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M 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 { | } ~                                                                                    N  *fortran-src-0.1.0.2-7wk5StG8EXm2GNwWT3coX7%Language.Fortran.Util.SecondParameter$Language.Fortran.Util.FirstParameterLanguage.Fortran.Util.PositionLanguage.Fortran.ParserMonadLanguage.Fortran.AST Language.Fortran.Lexer.FixedFormLanguage.Fortran.Lexer.FreeFormLanguage.Fortran.AnalysisLanguage.Fortran.Analysis.Types"Language.Fortran.Analysis.Renaming!Language.Fortran.Analysis.BBlocks"Language.Fortran.Analysis.DataFlow.Language.Fortran.Transformation.TransformMonad7Language.Fortran.Transformation.Disambiguation.Function(Language.Fortran.Transformation.GroupingLanguage.Fortran.Transformer!Language.Fortran.Parser.Fortran66!Language.Fortran.Parser.Fortran77!Language.Fortran.Parser.Fortran90Language.Fortran.Parser.AnySecondParametergetSecondParametersetSecondParameter$fParameterLeaf:*:$fParameterLeafM1$fGSecondParameter'K1e$fGSecondParameter'K1e0$fGSecondParameter':*:e$fGSecondParameter'M1e$fGSecondParameter:*:e$fGSecondParameter:+:e$fGSecondParameterM1e$fGSecondParameterK1eGFirstParametergetFirstParameter'setFirstParameter'FirstParametergetFirstParametersetFirstParameter$fGFirstParameter:*:e$fGFirstParameter:+:e$fGFirstParameterM1e$fGFirstParameterK1e$fGFirstParameterK1e0SpannedgetSpansetSpanSrcSpanPositionposAbsoluteOffset posColumnposLineLocgetPos initPosition initSrcSpan$fSpannedSrcSpan $fOutSrcSpan $fShowSrcSpan$fShowPosition $fEqPosition $fOrdPosition$fDataPosition $fEqSrcSpan $fOrdSrcSpan $fDataSrcSpan$fGenericSrcSpanTokeofTokenParseunParse LastToken getLastToken ParseResultParseOk ParseFailed ParseErrorerrPos errLastToken errFilenameerrMsg ParseState psAlexInputpsParanthesesCount psVersion psFilename psContextContextConStartConData ConImplicit ConNamelist ConCommonParanthesesCountpcActual pcHasReached0FortranVersion Fortran66 Fortran77Fortran77Extended Fortran90 Fortran95 Fortran2003 Fortran2008 getVersionputAlexgetAlex topContext popContext pushContext getPosition getSrcSpangetParanthesesCountresetParincPardecParrunParse evalParse execParse collectTokenscollectTokensSafe$fMonadErrorParseErrorParse$fMonadStateParseStateParse$fApplicativeParse$fFunctorParse $fMonadParse$fExceptionParseError$fShowParseError$fOrdFortranVersion$fEqFortranVersion$fShowFortranVersion$fDataFortranVersion$fGenericFortranVersion$fShowParanthesesCount$fEqParanthesesCount $fShowContext $fEqContext$fShowParseStateNamedgetNamesetNameProgramUnitNameNamelessBlockData NamelessMain Conditioned getConditionLabeledgetLabelsetLabel Annotated getAnnotation setAnnotationmodifyAnnotationBinaryOpAddition SubtractionMultiplicationDivisionExponentiation ConcatenationGTGTELTLTEEQNEOrAnd Equivalent NotEquivalent BinCustomUnaryOpPlusMinusNotUnCustomDimensionDeclarator Declarator DeclVariable DeclArrayValue ValIntegerValReal ValComplex ValString ValHollerith ValVariable ValLogical ValOperator ValAssignmentValTypeValStarIndexIxSingleIxRange ExpressionExpValue ExpBinaryExpUnary ExpSubscript ExpDataRefExpFunctionCall ExpImpliedDoExpInitialisation ExpReturnSpecDoSpecification FormatItem FIFormatList FIHollerith FIDelimiterFIFieldDescriptorDEFGFIFieldDescriptorAILFIBlankDescriptor FIScaleFactor DataGroupNamelist CommonGroup ImpElement ImpCharacterImpRangeImpList ControlPairIntentInOutInOut Attribute AttrParameter AttrPublic AttrPrivateAttrAllocatable AttrDimension AttrExternal AttrIntent AttrIntrinsic AttrOptional AttrPointerAttrSave AttrTargetArgumentUse UseRenameUseID Statement StDeclarationStIntent StOptionalStPublic StPrivateStSave StDimension StAllocatable StPointerStTargetStData StNamelist StParameter StExternal StIntrinsicStCommon StEquivalenceStFormat StImplicitStEntry StIncludeStDo StDoWhileStEnddoStCycleStExit StIfLogicalStIfArithmeticStIfThenStElseStElsifStEndif StSelectCaseStCase StEndcase StFunctionStExpressionAssignStPointerAssign StLabelAssignStGotoUnconditionalStGotoAssignedStGotoComputedStCallStReturn StContinueStStopStPauseStReadStRead2StWriteStPrintStOpenStClose StInquireStRewind StRewind2 StBackspace StBackspace2 StEndfile StEndfile2 StAllocate StNullify StDeallocateStWhereStWhereConstruct StElsewhere StEndWhereStUseStModuleProcedureStType StEndType StSequence StFormatBogusBlock BlStatementBlIfBlCaseBlDo BlDoWhile BlInterface BlComment ProgramUnitPUMainPUModule PUSubroutine PUFunction PUBlockData ProgramFileMetaInfo miVersionSelectorTypeSpecBaseType TypeIntegerTypeRealTypeDoublePrecision TypeComplexTypeDoubleComplex TypeLogical TypeCharacter TypeCustomAListNameA0fromListfromReverseListaConsaReverseaStripaMapsetInitialisation getTransSpan $fOutBinaryOp $fOutUnaryOp$fOutControlPair$fOutDimensionDeclarator$fOutDeclarator $fOutBaseType $fOutSelector $fOutTypeSpec $fOutValue$fOutDoSpecification $fOutIndex$fOutExpression$fOutFormatItem $fOutNamelist$fOutDataGroup$fOutCommonGroup $fOutBlock$fOutImpElement $fOutImpList $fOutIntent$fOutAttribute$fOutUse $fOutArgument$fOutStatement $fOutAList$fOutProgramUnit$fOutProgramFile $fOutMetaInfo$fOutFortranVersion$fNamedProgramUnit$fConditionedStatement$fConditionedBlock$fLabeledBlock $fSpanned(,,)$fSpanned(,,)0$fSpanned(,,)1$fSpanned(,,)2 $fSpanned(,) $fSpanned(,)0 $fSpanned(,)1 $fSpanned[]$fSpannedControlPair$fSpannedDimensionDeclarator$fSpannedDeclarator$fSpannedDoSpecification$fSpannedIndex$fSpannedExpression$fSpannedFormatItem$fSpannedNamelist$fSpannedDataGroup$fSpannedCommonGroup$fSpannedBlock$fSpannedImpElement$fSpannedImpList$fSpannedSelector$fSpannedTypeSpec$fSpannedAttribute $fSpannedUse$fSpannedArgument$fSpannedStatement$fSpannedProgramUnit$fSpannedAList$fAnnotatedControlPair$fAnnotatedDimensionDeclarator$fAnnotatedDeclarator$fAnnotatedDoSpecification$fAnnotatedIndex$fAnnotatedExpression$fAnnotatedFormatItem$fAnnotatedNamelist$fAnnotatedDataGroup$fAnnotatedCommonGroup$fAnnotatedImpElement$fAnnotatedImpList$fAnnotatedAttribute$fAnnotatedSelector$fAnnotatedTypeSpec$fAnnotatedUse$fAnnotatedArgument$fAnnotatedStatement$fAnnotatedBlock$fAnnotatedProgramUnit$fAnnotatedAList#$fSecondParameterControlPairSrcSpan+$fSecondParameterDimensionDeclaratorSrcSpan"$fSecondParameterDeclaratorSrcSpan'$fSecondParameterDoSpecificationSrcSpan$fSecondParameterIndexSrcSpan"$fSecondParameterExpressionSrcSpan"$fSecondParameterFormatItemSrcSpan $fSecondParameterNamelistSrcSpan!$fSecondParameterDataGroupSrcSpan#$fSecondParameterCommonGroupSrcSpan"$fSecondParameterImpElementSrcSpan$fSecondParameterImpListSrcSpan!$fSecondParameterAttributeSrcSpan $fSecondParameterSelectorSrcSpan $fSecondParameterTypeSpecSrcSpan$fSecondParameterUseSrcSpan $fSecondParameterArgumentSrcSpan!$fSecondParameterStatementSrcSpan$fSecondParameterBlockSrcSpan#$fSecondParameterProgramUnitSrcSpan$fSecondParameterAListSrcSpan$fFirstParameterControlPaira$$fFirstParameterDimensionDeclaratora$fFirstParameterDeclaratora $fFirstParameterDoSpecificationa$fFirstParameterIndexa$fFirstParameterExpressiona$fFirstParameterFormatItema$fFirstParameterNamelista$fFirstParameterDataGroupa$fFirstParameterCommonGroupa$fFirstParameterImpElementa$fFirstParameterImpLista$fFirstParameterAttributea$fFirstParameterSelectora$fFirstParameterTypeSpeca$fFirstParameterUsea$fFirstParameterArgumenta$fFirstParameterStatementa$fFirstParameterBlocka$fFirstParameterProgramUnita$fFirstParameterALista$fFunctorAList $fEqAList $fShowAList $fDataAList$fGenericAList $fEqBaseType$fShowBaseType$fDataBaseType$fGenericBaseType $fEqMetaInfo$fShowMetaInfo$fDataMetaInfo$fGenericMetaInfo $fEqIntent $fShowIntent $fDataIntent$fGenericIntent$fEqImpElement$fShowImpElement$fDataImpElement$fGenericImpElement$fFunctorImpElement $fEqUnaryOp $fShowUnaryOp $fDataUnaryOp$fGenericUnaryOp $fEqBinaryOp$fShowBinaryOp$fDataBinaryOp$fGenericBinaryOp$fEqExpression$fShowExpression$fDataExpression$fGenericExpression$fFunctorExpression $fEqValue $fShowValue $fDataValue$fGenericValue$fFunctorValue $fEqIndex $fShowIndex $fDataIndex$fGenericIndex$fFunctorIndex$fEqDoSpecification$fShowDoSpecification$fDataDoSpecification$fGenericDoSpecification$fFunctorDoSpecification $fEqStatement$fShowStatement$fDataStatement$fGenericStatement$fFunctorStatement$fEqDeclarator$fShowDeclarator$fDataDeclarator$fGenericDeclarator$fFunctorDeclarator$fEqDimensionDeclarator$fShowDimensionDeclarator$fDataDimensionDeclarator$fGenericDimensionDeclarator$fFunctorDimensionDeclarator$fEqFormatItem$fShowFormatItem$fDataFormatItem$fGenericFormatItem$fFunctorFormatItem $fEqDataGroup$fShowDataGroup$fDataDataGroup$fGenericDataGroup$fFunctorDataGroup $fEqNamelist$fShowNamelist$fDataNamelist$fGenericNamelist$fFunctorNamelist$fEqCommonGroup$fShowCommonGroup$fDataCommonGroup$fGenericCommonGroup$fFunctorCommonGroup $fEqImpList $fShowImpList $fDataImpList$fGenericImpList$fFunctorImpList $fEqTypeSpec$fShowTypeSpec$fDataTypeSpec$fGenericTypeSpec$fFunctorTypeSpec $fEqSelector$fShowSelector$fDataSelector$fGenericSelector$fFunctorSelector$fEqControlPair$fShowControlPair$fDataControlPair$fGenericControlPair$fFunctorControlPair $fEqAttribute$fShowAttribute$fDataAttribute$fGenericAttribute$fFunctorAttribute $fEqArgument$fShowArgument$fDataArgument$fGenericArgument$fFunctorArgument$fEqUse $fShowUse $fDataUse $fGenericUse $fFunctorUse$fEqProgramUnit$fShowProgramUnit$fDataProgramUnit$fGenericProgramUnit$fFunctorProgramUnit $fEqBlock $fShowBlock $fDataBlock$fGenericBlock$fFunctorBlock$fEqProgramFile$fShowProgramFile$fDataProgramFile$fGenericProgramFile$fFunctorProgramFile$fOrdProgramUnitName$fEqProgramUnitName$fShowProgramUnitName$fDataProgramUnitName$fGenericProgramUnitName AlexAccPredAlexAcc AlexAccNone AlexAccSkipAlexAccSkipPred AlexLastAccAlexNone AlexLastSkip AlexReturnAlexEOF AlexErrorAlexSkip AlexTokenAlexAddrAlexA#Move ContinuationCharNewline LexAction AlexInput aiSourceBytes aiEndOffset aiPositionaiBytesaiPreviousCharaiLexemeaiWhiteSensitiveCharCount aiStartCodeaiPreviousTokenaiPreviousTokensInLineLexeme lexemeMatch lexemeStart lexemeEndTokenTLeftPar TRightPar TLeftArrayParTRightArrayParTCommaTDotTColonTIncludeTProgram TFunction TSubroutine TBlockDataTEndTAssign TOpAssignTToTGotoTIfTThenTElseTElsifTEndifTCallTReturnTSave TContinueTStopTExitTPauseTDoTDoWhileTEndDoTReadTWriteTRewind TBackspaceTEndfileTInquireTOpenTCloseTPrint TDimensionTCommon TEquivalence TExternal TIntrinsicTTypeTEntry TImplicitTNone TParameterTDataTFormatTFieldDescriptorDEFGTFieldDescriptorAILTBlankDescriptor TScaleFactorTInt TExponentTBoolTOpPlusTOpMinusTOpExpTStarTSlashTOpOrTOpAndTOpNot TOpEquivalentTOpNotEquivalentTOpLTTOpLETOpEQTOpNETOpGTTOpGETIdTCommentTString THollerithTLabelTNewlineTEOF alex_tab_size alex_base alex_table alex_check alex_deflt alex_acceptformatExtendedPimplicitType77PimplicitTypeExtendedP implicitStP extendedIdPidPdoP equalFollowsPcommentPwithinLabelColsPatColP exponentP fortran66P fortran77P extended77PaddSpanaddSpanAndMatch getLexeme putLexeme resetLexemegetMatchputMatchincWhiteSensitiveCharCountresetWhiteSensitiveCharCountupdatePreviousTokenaddToPreviousTokensInLinecheckPreviousTokensInLine getLexemeSpan lexComment strAutomaton lexHollerithlexNlexFieldDescriptorDEFGlexFieldDescriptorAILlexBlankDescriptorlexScaleFactortakeRepeatDescriptorWidth takeNumbermaybeToKeyword typeSCChangetoSC initLexemevanillaAlexInput updateLexeme alexGetBytealexInputPrevChar takeNChars currentCharisContinuationskipadvance utf8Encodelexerlexer'initParseStatecollectFixedTokenscollectFixedTokensSafeiifkeywordst alex_action_0 alex_action_1 alex_action_2 alex_action_4 alex_action_6 alex_action_7 alex_action_8 alex_action_9alex_action_10alex_action_11alex_action_12alex_action_13alex_action_14alex_action_15alex_action_16alex_action_17alex_action_18alex_action_19alex_action_20alex_action_21alex_action_22alex_action_23alex_action_24alex_action_25alex_action_26alex_action_27alex_action_28alex_action_29alex_action_30alex_action_31alex_action_32alex_action_33alex_action_34alex_action_35alex_action_36alex_action_37alex_action_38alex_action_39alex_action_40alex_action_41alex_action_42alex_action_43alex_action_44alex_action_45alex_action_46alex_action_47alex_action_48alex_action_49alex_action_50alex_action_51alex_action_52alex_action_53alex_action_54alex_action_55alex_action_56alex_action_57alex_action_58alex_action_59alex_action_60alex_action_61alex_action_62alex_action_63alex_action_64alex_action_65alex_action_66alex_action_67alex_action_68alex_action_69alex_action_70alex_action_71alex_action_72alex_action_73alex_action_74alex_action_75alex_action_76alex_action_77alex_action_78alex_action_79alex_action_80alex_action_81alex_action_82alex_action_83alex_action_84alex_action_85alex_action_86alex_action_87alex_action_88alex_action_89alex_action_90alex_action_91alex_action_92alex_action_93alex_action_94alex_action_95alex_action_96alex_action_97alex_action_98alex_action_99alex_action_100alex_action_101alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkn alexAndPredalexPrevCharIsalexPrevCharMatchesalexPrevCharIsOneOfalexRightContext$fFunctorAlexLastAcc$fLastTokenAlexInputToken$fLocAlexInput $fTokToken$fSpannedToken$fFirstParameterTokenSrcSpan$fSpannedLexeme $fShowToken $fEqToken $fOrdToken $fDataToken$fGenericToken $fShowLexeme$fShowAlexInput SpecifiesType isTypeSpecTIntegerLiteral TRealLiteral TBozLiteralTComma2 TSemiColon TDoubleColonTArrowTPercent TLeftPar2 TLeftInitPar TRightInitPar TOpCustom TOpDivisionTLogicalLiteral TEndProgram TEndFunctionTResult TRecursiveTEndSubroutine TEndBlockDataTModule TEndModule TContainsTUseTOnly TInterface TEndInterfaceTModuleProcedure TAssignment TOperatorTPublicTPrivate TAllocatableTIntent TOptionalTPointerTTargetTInTOutTInOut TNamelistTBlob TAllocate TDeallocateTNullifyTWhileTEndIfTCase TSelectCase TEndSelectTDefaultTCycleTWhere TElsewhere TEndWhereTEndType TSequenceTKindTLenTIntegerTRealTDoublePrecisionTLogical TCharacterTComplexUser StartCodescActualscStatusStartCodeStatusReturnStable lexemeIsCmtformatP followsDoP followsColonP selectorPifConditionEndPopPpartOfExpOrPointerAssignmentPprecedesDoubleColon attributePconstructNameP genericSpecP typeSpecPresultPnotPrecedingDotPfollowsIntentPuseStPcaseStP assignStPprevTokenConstrnextTokenConstr seenConstr fillConstr adjustCommentleftParcommaslashOrDivision lexCharacterstabiliseStartCodenormaliseStartCodeinvalidPositionisValidPositionadvanceWithoutContinuationskipContinuationcollectFreeTokensscCscIscNscT alex_action_3 alex_action_5alex_action_102alex_action_103alex_action_104alex_action_105alex_action_106alex_action_107alex_action_108alex_action_109alex_action_110alex_action_111alex_action_112alex_action_113alex_action_114alex_action_115alex_action_116alex_action_117alex_action_118alex_action_119alex_action_120alex_action_121alex_action_122alex_action_123alex_action_124alex_action_125alex_action_126alex_action_127alex_action_128alex_action_129alex_action_130alex_action_131alex_action_132alex_action_133alex_action_134alex_action_135alex_action_136alex_action_137alex_action_138alex_action_139alex_action_140alex_action_141alex_action_142alex_action_143alex_action_144alex_action_145alex_action_146alex_action_147alex_action_148alex_action_149alex_action_150alex_action_151alex_action_152alex_action_153$fSpecifiesType[]$fSpecifiesTypeToken$fShowStartCodeStatus$fShowStartCodeAnalysisprevAnnotation uniqueNamebBlocksinsLabel moduleEnvidTypeIDTypeidVTypeidCType ConstructType CTFunction CTSubroutine CTVariableCTArray CTParameterModEnvNameType NTSubprogram NTVariable TransFuncM TransFuncBBGrBBvarNamegenVarpuName initAnalysis stripAnalysislhsExprsrhsExprsisLExprallVars allLhsVars blockRhsExprs blockVarUses blockVarDefs$fDataGr$fShowNameType $fEqNameType $fOrdNameType$fDataNameType$fDataConstructType$fShowConstructType$fEqConstructType $fDataIDType $fShowIDType $fEqIDType$fDataAnalysis$fShowAnalysis $fEqAnalysisTypeEnv analyseTypes$fShowInferStateNameMapanalyseRenamesrenameextractNameMaprenameAndStripunrename underRenaming$fShowRenameState$fEqRenameState SuperBBGr BBlockMapanalyseBBlocks genBBlockMapsuperBBGrGraphsuperBBGrClusters genSuperBBGrshowBBGrshowAnalysedBBGr showSuperBBGr showBBlocks bbgrToDOTsuperBBGrToDOTCallMapInductionVarMapByASTBlockInductionVarMap LoopNodeMap BackEdgeMap VarFlowsMap FlowsGraphUDMapDUMapDefMapBlockMapOutFInFInOutMapOrderFIDomMapDomMap dominators iDominators postOrder revPostOrderpreOrder revPreOrder noPredNodesdataFlowSolver genBlockMap genDefMapliveVariableAnalysisreachingDefinitionsgenDUMap duMapToUdMapgenUDMapgenFlowsToGraphgenVarFlowsToMapgenBackEdgeMap loopNodesgenLoopNodeMapsccWithgenInductionVarMapgenInductionVarMapByASTBlock showDataFlow genCallMap Transform runTransformgetProgramFileputProgramFilemodifyProgramFiledisambiguateFunction$fIndexedExpression$fIndexedArgumentgroupIfgroupDogroupLabeledDo groupCaseTransformationGroupIf GroupCaseGroupDoGroupLabeledDoDisambiguateFunction transform$fEqTransformationstatementParserexpressionParserfortran66Parserfortran77Parserextended77Parserfortran90ParserParser deduceVersionparserVersions fortranParser ParameterLeafisLeafGSecondParameter'getSecondParameter''setSecondParameter''GSecondParametergetSecondParameter'setSecondParameter' analysis0UniFunc TransType InferFunc InferStateenviron entryPointsInfer annotateTypes programUnit declarator statementannotateExpressionannotateProgramUnit inferState0runInfer recordType recordMType recordCTyperecordBaseTyperecordEntryPointgetRecordedType setIDType getIDTypesetCTypeallProgramUnitsallDeclarators allStatementsisAttrDimensionisAttrParameter isIxSingle RenamerFunc RenameState scopeStackuniqNumsnameMap moduleMapRenamer ModuleMap expression renameState0 runRenamer getUniqNumuniquifyisModuleisUseStatementisUseID initialEnvgetScope getScopes pushScopepopScope addModEnvgetEnvgetEnvs getFromEnv getFromEnvsgetFromEnvsWithTypegetFromEnvsIfSubprogramaddToEnv addUnique addUnique_maybeAddUnique setUniqueName renameSubPUsskimProgramUnitsrenameGenericDecls renameExpDeclrenameDeclDeclsrenameEntryPointDeclrenameEntryPointResultDecl renameExp renameBlockufoldM'gmapM'nmapM'"fgl-5.5.3.0-KO9F4uETTjy3vgLQ22ev7IData.Graph.Inductive.GraphNodeELabelNLabelPUName SuperEdge SuperNodegraphclustersBBlockerBBStateBBSbbGraphcurBBcurNodelabelMapnumstempNumsnewEdgeslabelBlocksInBBGr labelBlockslabelWithinBlockstoBBlocksPerPU insEntryEdgesgenInOutAssignmentsdelInvalidExits insExitEdgesexamineFinalBlockisFinalBlockCtrlXfer lookupBBlockdelEmptyBBlocksdelUnreachablebbs0 execBBlocker processBlocksperBlock perDoBlock processLabel insertLabel addToBBlock closeBBlock closeBBlock_ genBBlock createEdgesgengenTempstripNestedBlocksprocessFunctionCallsprocessFunctionCall extractExp fromJustMsg bbgrToDOT' showPUName showBlockshowAttrshowLab showValueshowExpr showIndexshowUOpshowOpshowTypeshowDeclshowDim aIntercalate noSrcSpan bblockKill bblockGen blockKillblockGen mapToGraphtcbasicInductionVarsrdBblockGenKillrdDefsconvergeTransformationStatetransProgramFileIndexed fromIndexdisambiguateFunctionStatementsdisambiguateFunctionCallsindiciesRangeFree genericGroupgroupIf' decomposeIfcollectNonConditionalBlocksgroupDo'collectNonDoBlocksgroupLabeledDo'collectNonLabeledDoBlocks groupCase' decomposeCasecollectNonCaseBlockscontainsGroupsapplyGroupingToSubblockstransformationMapping HappyAddrHappyA#HappyStk Happy_IntList HappyConsHappyAny HappyAbsSynhappyIn6 happyOut6happyIn7 happyOut7happyIn8 happyOut8happyIn9 happyOut9 happyIn10 happyOut10 happyIn11 happyOut11 happyIn12 happyOut12 happyIn13 happyOut13 happyIn14 happyOut14 happyIn15 happyOut15 happyIn16 happyOut16 happyIn17 happyOut17 happyIn18 happyOut18 happyIn19 happyOut19 happyIn20 happyOut20 happyIn21 happyOut21 happyIn22 happyOut22 happyIn23 happyOut23 happyIn24 happyOut24 happyIn25 happyOut25 happyIn26 happyOut26 happyIn27 happyOut27 happyIn28 happyOut28 happyIn29 happyOut29 happyIn30 happyOut30 happyIn31 happyOut31 happyIn32 happyOut32 happyIn33 happyOut33 happyIn34 happyOut34 happyIn35 happyOut35 happyIn36 happyOut36 happyIn37 happyOut37 happyIn38 happyOut38 happyIn39 happyOut39 happyIn40 happyOut40 happyIn41 happyOut41 happyIn42 happyOut42 happyIn43 happyOut43 happyIn44 happyOut44 happyIn45 happyOut45 happyIn46 happyOut46 happyIn47 happyOut47 happyIn48 happyOut48 happyIn49 happyOut49 happyIn50 happyOut50 happyIn51 happyOut51 happyIn52 happyOut52 happyIn53 happyOut53 happyIn54 happyOut54 happyIn55 happyOut55 happyIn56 happyOut56 happyIn57 happyOut57 happyIn58 happyOut58 happyIn59 happyOut59 happyIn60 happyOut60 happyIn61 happyOut61 happyIn62 happyOut62 happyIn63 happyOut63 happyIn64 happyOut64 happyIn65 happyOut65 happyIn66 happyOut66 happyIn67 happyOut67 happyIn68 happyOut68 happyIn69 happyOut69 happyIn70 happyOut70 happyIn71 happyOut71 happyIn72 happyOut72 happyIn73 happyOut73 happyIn74 happyOut74 happyIn75 happyOut75 happyIn76 happyOut76 happyIn77 happyOut77 happyIn78 happyOut78 happyInTok happyOutTokhappyActOffsetshappyGotoOffsetshappyDefActions happyCheck happyTablehappyReduceArr happy_n_termshappy_n_nonterms happyReduce_3happyReduction_3 happyReduce_4happyReduction_4 happyReduce_5happyReduction_5 happyReduce_6happyReduction_6 happyReduce_7happyReduction_7 happyReduce_8happyReduction_8 happyReduce_9happyReduction_9happyReduce_10happyReduction_10happyReduce_11happyReduction_11happyReduce_12happyReduction_12happyReduce_13happyReduction_13happyReduce_14happyReduction_14happyReduce_15happyReduction_15happyReduce_16happyReduction_16happyReduce_17happyReduction_17happyReduce_18happyReduction_18happyReduce_19happyReduction_19happyReduce_20happyReduction_20happyReduce_21happyReduction_21happyReduce_22happyReduction_22happyReduce_23happyReduction_23happyReduce_24happyReduction_24happyReduce_25happyReduction_25happyReduce_26happyReduction_26happyReduce_27happyReduction_27happyReduce_28happyReduction_28happyReduce_29happyReduction_29happyReduce_30happyReduction_30happyReduce_31happyReduction_31happyReduce_32happyReduction_32happyReduce_33happyReduction_33happyReduce_34happyReduction_34happyReduce_35happyReduction_35happyReduce_36happyReduction_36happyReduce_37happyReduction_37happyReduce_38happyReduction_38happyReduce_39happyReduction_39happyReduce_40happyReduction_40happyReduce_41happyReduction_41happyReduce_42happyReduction_42happyReduce_43happyReduction_43happyReduce_44happyReduction_44happyReduce_45happyReduction_45happyReduce_46happyReduction_46happyReduce_47happyReduction_47happyReduce_48happyReduction_48happyReduce_49happyReduction_49happyReduce_50happyReduction_50happyReduce_51happyReduction_51happyReduce_52happyReduction_52happyReduce_53happyReduction_53happyReduce_54happyReduction_54happyReduce_55happyReduction_55happyReduce_56happyReduction_56happyReduce_57happyReduction_57happyReduce_58happyReduction_58happyReduce_59happyReduction_59happyReduce_60happyReduction_60happyReduce_61happyReduction_61happyReduce_62happyReduction_62happyReduce_63happyReduction_63happyReduce_64happyReduction_64happyReduce_65happyReduction_65happyReduce_66happyReduction_66happyReduce_67happyReduction_67happyReduce_68happyReduction_68happyReduce_69happyReduction_69happyReduce_70happyReduction_70happyReduce_71happyReduction_71happyReduce_72happyReduction_72happyReduce_73happyReduction_73happyReduce_74happyReduction_74happyReduce_75happyReduction_75happyReduce_76happyReduction_76happyReduce_77happyReduction_77happyReduce_78happyReduction_78happyReduce_79happyReduction_79happyReduce_80happyReduction_80happyReduce_81happyReduction_81happyReduce_82happyReduction_82happyReduce_83happyReduction_83happyReduce_84happyReduction_84happyReduce_85happyReduction_85happyReduce_86happyReduction_86happyReduce_87happyReduction_87happyReduce_88happyReduction_88happyReduce_89happyReduction_89happyReduce_90happyReduction_90happyReduce_91happyReduction_91happyReduce_92happyReduction_92happyReduce_93happyReduction_93happyReduce_94happyReduction_94happyReduce_95happyReduction_95happyReduce_96happyReduction_96happyReduce_97happyReduction_97happyReduce_98happyReduction_98happyReduce_99happyReduction_99happyReduce_100happyReduction_100happyReduce_101happyReduction_101happyReduce_102happyReduction_102happyReduce_103happyReduction_103happyReduce_104happyReduction_104happyReduce_105happyReduction_105happyReduce_106happyReduction_106happyReduce_107happyReduction_107happyReduce_108happyReduction_108happyReduce_109happyReduction_109happyReduce_110happyReduction_110happyReduce_111happyReduction_111happyReduce_112happyReduction_112happyReduce_113happyReduction_113happyReduce_114happyReduction_114happyReduce_115happyReduction_115happyReduce_116happyReduction_116happyReduce_117happyReduction_117happyReduce_118happyReduction_118happyReduce_119happyReduction_119happyReduce_120happyReduction_120happyReduce_121happyReduction_121happyReduce_122happyReduction_122happyReduce_123happyReduction_123happyReduce_124happyReduction_124happyReduce_125happyReduction_125happyReduce_126happyReduction_126happyReduce_127happyReduction_127happyReduce_128happyReduction_128happyReduce_129happyReduction_129happyReduce_130happyReduction_130happyReduce_131happyReduction_131happyReduce_132happyReduction_132happyReduce_133happyReduction_133happyReduce_134happyReduction_134happyReduce_135happyReduction_135happyReduce_136happyReduction_136happyReduce_137happyReduction_137happyReduce_138happyReduction_138happyReduce_139happyReduction_139happyReduce_140happyReduction_140happyReduce_141happyReduction_141happyReduce_142happyReduction_142happyReduce_143happyReduction_143happyReduce_144happyReduction_144happyReduce_145happyReduction_145happyReduce_146happyReduction_146happyReduce_147happyReduction_147happyReduce_148happyReduction_148happyReduce_149happyReduction_149happyReduce_150happyReduction_150happyReduce_151happyReduction_151happyReduce_152happyReduction_152happyReduce_153happyReduction_153happyReduce_154happyReduction_154happyReduce_155happyReduction_155happyReduce_156happyReduction_156happyReduce_157happyReduction_157happyReduce_158happyReduction_158happyReduce_159happyReduction_159happyReduce_160happyReduction_160happyReduce_161happyReduction_161happyReduce_162happyReduction_162happyReduce_163happyReduction_163happyReduce_164happyReduction_164happyReduce_165happyReduction_165happyReduce_166happyReduction_166happyReduce_167happyReduction_167happyReduce_168happyReduction_168happyReduce_169happyReduction_169happyReduce_170happyReduction_170happyReduce_171happyReduction_171happyReduce_172happyReduction_172happyReduce_173happyReduction_173happyReduce_174happyReduction_174happyReduce_175happyReduction_175happyReduce_176happyReduction_176happyReduce_177happyReduction_177happyReduce_178happyReduction_178happyReduce_179happyReduction_179happyReduce_180happyReduction_180happyReduce_181happyReduction_181happyReduce_182happyReduction_182happyReduce_183happyReduction_183happyReduce_184happyReduction_184happyReduce_185happyReduction_185happyReduce_186happyReduction_186happyReduce_187happyReduction_187happyReduce_188happyReduction_188happyReduce_189happyReduction_189happyReduce_190happyReduction_190happyReduce_191happyReduction_191happyReduce_192happyReduction_192happyReduce_193happyReduction_193happyReduce_194happyReduction_194happyReduce_195happyReduction_195happyReduce_196happyReduction_196happyReduce_197happyReduction_197happyReduce_198happyReduction_198 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError' programParserhappySeqmakeRealtransformations66 parseError happyParse happyAccept happyDoActionindexShortOffAddr happyShifthappySpecReduce_0happySpecReduce_1happySpecReduce_2happySpecReduce_3 happyReducehappyMonadReducehappyMonad2Reduce happyDrop happyDropStk happyGoto happyFail notHappyAtAll happyTcHack happyDoSeq happyDontSeq happyIn79 happyOut79 happyIn80 happyOut80 happyIn81 happyOut81 happyIn82 happyOut82 happyIn83 happyOut83 happyIn84 happyOut84 happyIn85 happyOut85 happyIn86 happyOut86 happyIn87 happyOut87 happyIn88 happyOut88 happyIn89 happyOut89 happyIn90 happyOut90 happyIn91 happyOut91 happyIn92 happyOut92 happyIn93 happyOut93 happyIn94 happyOut94 happyIn95 happyOut95 happyIn96 happyOut96 happyIn97 happyOut97 happyIn98 happyOut98 happyIn99 happyOut99 happyIn100 happyOut100 happyIn101 happyOut101 happyIn102 happyOut102 happyIn103 happyOut103 happyIn104 happyOut104 happyIn105 happyOut105 happyIn106 happyOut106 happyIn107 happyOut107happyReduce_199happyReduction_199happyReduce_200happyReduction_200happyReduce_201happyReduction_201happyReduce_202happyReduction_202happyReduce_203happyReduction_203happyReduce_204happyReduction_204happyReduce_205happyReduction_205happyReduce_206happyReduction_206happyReduce_207happyReduction_207happyReduce_208happyReduction_208happyReduce_209happyReduction_209happyReduce_210happyReduction_210happyReduce_211happyReduction_211happyReduce_212happyReduction_212happyReduce_213happyReduction_213happyReduce_214happyReduction_214happyReduce_215happyReduction_215happyReduce_216happyReduction_216happyReduce_217happyReduction_217happyReduce_218happyReduction_218happyReduce_219happyReduction_219happyReduce_220happyReduction_220happyReduce_221happyReduction_221happyReduce_222happyReduction_222happyReduce_223happyReduction_223happyReduce_224happyReduction_224happyReduce_225happyReduction_225happyReduce_226happyReduction_226happyReduce_227happyReduction_227happyReduce_228happyReduction_228happyReduce_229happyReduction_229happyReduce_230happyReduction_230happyReduce_231happyReduction_231happyReduce_232happyReduction_232happyReduce_233happyReduction_233happyReduce_234happyReduction_234happyReduce_235happyReduction_235happyReduce_236happyReduction_236happyReduce_237happyReduction_237happyReduce_238happyReduction_238happyReduce_239happyReduction_239happyReduce_240happyReduction_240happyReduce_241happyReduction_241happyReduce_242happyReduction_242happyReduce_243happyReduction_243happyReduce_244happyReduction_244happyReduce_245happyReduction_245happyReduce_246happyReduction_246happyReduce_247happyReduction_247happyReduce_248happyReduction_248happyReduce_249happyReduction_249happyReduce_250happyReduction_250happyReduce_251happyReduction_251happyReduce_252happyReduction_252happyReduce_253happyReduction_253happyReduce_254happyReduction_254happyReduce_255happyReduction_255happyReduce_256happyReduction_256happyReduce_257happyReduction_257happyReduce_258happyReduction_258happyReduce_259happyReduction_259happyReduce_260happyReduction_260happyReduce_261happyReduction_261happyReduce_262happyReduction_262happyReduce_263happyReduction_263happyReduce_264happyReduction_264happyReduce_265happyReduction_265happyReduce_266happyReduction_266happyReduce_267happyReduction_267happyReduce_268happyReduction_268happyReduce_269happyReduction_269happyReduce_270happyReduction_270happyReduce_271happyReduction_271happyReduce_272happyReduction_272happyReduce_273happyReduction_273happyReduce_274happyReduction_274happyReduce_275happyReduction_275happyReduce_276happyReduction_276happyReduce_277happyReduction_277happyReduce_278happyReduction_278happyReduce_279happyReduction_279happyReduce_280happyReduction_280happyReduce_281happyReduction_281happyReduce_282happyReduction_282happyReduce_283happyReduction_283happyReduce_284happyReduction_284happyReduce_285happyReduction_285happyReduce_286happyReduction_286happyReduce_287happyReduction_287happyReduce_288happyReduction_288happyReduce_289happyReduction_289happyReduce_290happyReduction_290happyReduce_291happyReduction_291happyReduce_292happyReduction_292happyReduce_293happyReduction_293happyReduce_294happyReduction_294happyReduce_295happyReduction_295happyReduce_296happyReduction_296happyReduce_297happyReduction_297happyReduce_298happyReduction_298happyReduce_299happyReduction_299happyReduce_300happyReduction_300happyReduce_301happyReduction_301happyReduce_302happyReduction_302happyReduce_303happyReduction_303happyReduce_304happyReduction_304happyReduce_305happyReduction_305happyReduce_306happyReduction_306happyReduce_307happyReduction_307happyReduce_308happyReduction_308happyReduce_309happyReduction_309happyReduce_310happyReduction_310happyReduce_311happyReduction_311happyReduce_312happyReduction_312happyReduce_313happyReduction_313happyReduce_314happyReduction_314happyReduce_315happyReduction_315happyReduce_316happyReduction_316happyReduce_317happyReduction_317happyReduce_318happyReduction_318happyReduce_319happyReduction_319happyReduce_320happyReduction_320happyReduce_321happyReduction_321happyReduce_322happyReduction_322happyReduce_323happyReduction_323happyReduce_324happyReduction_324happyReduce_325happyReduction_325happyReduce_326happyReduction_326happyReduce_327happyReduction_327happyReduce_328happyReduction_328happyReduce_329happyReduction_329happyReduce_330happyReduction_330happyReduce_331happyReduction_331happyReduce_332happyReduction_332happyReduce_333happyReduction_333happyReduce_334happyReduction_334happyReduce_335happyReduction_335happyReduce_336happyReduction_336happyReduce_337happyReduction_337happyReduce_338happyReduction_338happyReduce_339happyReduction_339happyReduce_340happyReduction_340happyReduce_341happyReduction_341happyReduce_342happyReduction_342happyReduce_343happyReduction_343happyReduce_344happyReduction_344happyReduce_345happyReduction_345happyReduce_346happyReduction_346happyReduce_347happyReduction_347happyReduce_348happyReduction_348happyReduce_349happyReduction_349happyReduce_350happyReduction_350parsetransformations77transformations77ExtendedhappyIn5 happyOut5 happyIn108 happyOut108 happyReduce_2happyReduction_2happyReduce_351happyReduction_351happyReduce_352happyReduction_352happyReduce_353happyReduction_353happyReduce_354happyReduction_354happyReduce_355happyReduction_355happyReduce_356happyReduction_356happyReduce_357happyReduction_357happyReduce_358happyReduction_358happyReduce_359happyReduction_359happyReduce_360happyReduction_360happyReduce_361happyReduction_361happyReduce_362happyReduction_362happyReduce_363happyReduction_363happyReduce_364happyReduction_364happyReduce_365happyReduction_365happyReduce_366happyReduction_366happyReduce_367happyReduction_367happyReduce_368happyReduction_368happyReduce_369happyReduction_369happyReduce_370happyReduction_370happyReduce_371happyReduction_371happyReduce_372happyReduction_372happyReduce_373happyReduction_373happyReduce_374happyReduction_374happyReduce_375happyReduction_375happyReduce_376happyReduction_376happyReduce_377happyReduction_377happyReduce_378happyReduction_378happyReduce_379happyReduction_379happyReduce_380happyReduction_380happyReduce_381happyReduction_381happyReduce_382happyReduction_382happyReduce_383happyReduction_383happyReduce_384happyReduction_384happyReduce_385happyReduction_385happyReduce_386happyReduction_386happyReduce_387happyReduction_387happyReduce_388happyReduction_388happyReduce_389happyReduction_389happyReduce_390happyReduction_390happyReduce_391happyReduction_391happyReduce_392happyReduction_392happyReduce_393happyReduction_393happyReduce_394happyReduction_394happyReduce_395happyReduction_395happyReduce_396happyReduction_396happyReduce_397happyReduction_397happyReduce_398happyReduction_398happyReduce_399happyReduction_399happyReduce_400happyReduction_400happyReduce_401happyReduction_401happyReduce_402happyReduction_402happyReduce_403happyReduction_403happyReduce_404happyReduction_404happyReduce_405happyReduction_405happyReduce_406happyReduction_406happyReduce_407happyReduction_407happyReduce_408happyReduction_408happyReduce_409happyReduction_409happyReduce_410happyReduction_410happyReduce_411happyReduction_411 unitNameChecktransformations90