a@N      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr s t u v wxyz{|}~ !!!!!!!!!!!!!!!!"#$%%&&&&&&('     !"#$%&'()*+, !"#$%&'()*+, !"#$%&'()*+,-AThis class is used to overload literal construction based on the  type of the literal. /?The class used to overload lifting operations. To reduce code C duplication, we overload the wrapped constructors (and everything  else, but that'4s irrelevant) to work in patterns, expressions, and  types. 08Build an application node, with a name for a head and a  provided list of arguments. 1Reference a named variable. 2 Lift a TH () 3Tupling 4Listing 8*A simple clause, without where or guards. 9#A default clause with N arguments. :A simple Val clause =,We provide 3 standard instance constructors ; instance_default requires C for each free type variable % instance_none requires no context - instance_context requires a given context @BBuild an instance of a class for a data type, using the heuristic 9 that the type is itself required on all type arguments. AQBuild an instance of a class for a data type, using the class at the given types B#Build a fundecl with a string name C/Build an application node without a given head E/Common pattern: list of a familiy of variables F$Variable based on a letter + number GAMake a list of variables, one for each argument to a constructor H,Make a simple pattern to bind a constructor I!Reference the constructor itself a;Build a chain of expressions, with an appropriate terminal Z sequence__ does not require a unit at the end (all others are optimised automatically) e K-way liftM ;-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde967589:;<=>?@AB/01234C-.DEFGHIJKLNOMQPRSUTVXYZ[\^]W_abdc`e9-../012340123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghfhgfghi$The type of ways to derive classes. ( Should not really be in this module! kThe derivation function proper lThe name of the derivation *      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnijklmnijkljklmnooopppqqq rrr sss ttt uuu vvvwwwxxxyyyzzz{{{|||}}}~~~ !`"Information on argument positions a'Monad that collects required instances b(What argument of the current data type? c%What argument position of that type? (What kind of traversal are we deriving? $On what position are we traversing?  covariant? name of the traversal function Identity traversal  Traversal of a !Apply the sub-traversal function .Apply two non-identity traversals in sequence Traverse a function type *Construct a tuple from applied traversals .Construct a data type from applied traversals -Construct a clause of the traversal function d@An expression representing a traversal of a subpart of the data 9Instance for a Traversable like class with just 1 method &Instance for a Traversable like class  Derive a traverse like function eDerive a clause of a traverse! like function for a constructor fDerive a traversal for a type gBFind all arguments to a type application, then derive a traversal h7Lift a traversal to the argument of a type constructor i)Position of an argument in the data type  In the type  data X a b c ) positions are: a -> 3, b -> 2, c -> 1 j "#$*opqrstuvwxyz{|}~%"Derive an instance of some class. derive only derives instances  for the type of the argument. BDerive for a type and print the code to standard output. This is 7 a internal hook for the use of the Derive executable. k Extract a  value from a type using the TH ()  framework. ii&l@Drop the first _ and everything after it; used to trim GHC name  uniques. .Guess an instantiator from a sample instance. m/A fake constructor for the unary tuple. Helps & to see 7 patterns in progressions of differently sized tuples. >Chop and mangle a String representing Haskell code so that it 4 fits in 80 columns, without regard for prettiness. n8Process a tree produced by a quasiquote, stripping name D uniquifiers and changing applications and tuplings into a standard  form. op+,-./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()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(){()|()}()~()()!!!!!!!!!!!%&&&& derive-0.1.1Language.Haskell.TH.FixedPprLanguage.Haskell.TH.DataLanguage.Haskell.TH.HelperLanguage.Haskell.TH.PeepholeLanguage.Haskell.TH.AllData.Derive.UniplateData.Derive.TypeableData.Derive.TTypeableData.Derive.ShowData.Derive.SetData.Derive.SerialData.Derive.RefData.Derive.ReadData.Derive.PlateTypeableData.Derive.PlateDirectData.Derive.OrdData.Derive.NFDataData.Derive.MonoidData.Derive.LazySetData.Derive.IsData.Derive.HasData.Derive.FromData.Derive.EqData.Derive.EnumCyclicData.Derive.EnumData.Derive.DataData.Derive.BoundedData.Derive.BinaryOldData.Derive.BinaryDeferData.Derive.BinaryData.Derive.Arbitrary2Data.Derive.ArbitraryData.DeriveTraversalData.Derive.FoldableData.Derive.FunctorData.Derive.Traversable Data.DeriveTHData.DeriveGuessLanguage.Haskell.TH.SYBtemplate-haskellLanguage.Haskell.TH.SyntaxData.Derive.AllPprpprppr_list Precedence nestDepthappPrecopPrecnoPrecparensIf showNameRaw isPrefixNamepprName_pprint pprFixity pprExpInfixpprExp pprFields pprMaybeExppprBodypprLitpprPatpprVarStrictType pprStrictType pprParendTypepprTyAppsplitpprCxt where_clause showtextlCtorDefDataDefdataName dataArity dataCtorsctorName ctorArityctorStrictTypes ctorTypes ctorFields dropModulenormDatatypeAppeqConTisTupleTex_argsLitClitValconlKvrraw_littuplst applyWith foldl1With foldr1Withsclause defclausesvalcase'->: instance_noneinstance_defaultinstance_contextsimple_instancegeneric_instancefunNappdataVarsvarsvrnctvctpctcl0l1l2truefalsenilhNil'hZero'consboxreturn'const'hSucc'==:&&:++:>>=:>>:.:>:ap'hCons'&&::++::>>::.:: sequence__liftmkpeephole replaceVars replaceVar DerivationderivationDeriverderivationName derivation derivationQ makeUniplate makeTypeable makeTTypeablemakeShowmakeSet makeSerialmakeRefmakeReadmakePlateTypeablemakePlateDirectmakeOrd makeNFData makeMonoid makeLazySetmakeIsmakeHasmakeFrommakeEqmakeEnumCyclicmakeEnummakeData makeBounded makeBinaryOldmakeBinaryDefer makeBinary makeArbitrary TraveralType traversalArg traversalCo traversalName traversalIdtraversalDirect traversalFunc traversalPlus traverseArrow traverseTuple traverseCtor traverseFunctraversalInstance1traversalInstancederiveTraversal makeFoldable makeFunctormakeTraversablederive_derive_string_instanceDataNameCtorTwo'CtorTwoCtorOneCtorZeroguessppr_sigLitunitid'returnQbindQ sequenceQliftnewNamemkName mkNameG_v mkNameG_d mkNameG_tcmkNameLExpMatchClauseQPatTypeDecFieldExpFieldPatNameFunDep defaultFixity maxPrecedence tupleTypeName tupleDataName showName'showNamemkNameU nameModulenameBase occString mkOccName pkgString mkPkgName modString mkModNamerunIOlocationreifyrecoverreportrunQqRunIO qLocationqReifyqRecoverqReportqNewNameQuasiLiftModNamePkgNameOccNameNameSNameQNameUNameLNameG NameFlavourVarName TcClsName NameSpaceUniqAloneAppliedInfixNameIsloc_end loc_start loc_module loc_package loc_filenameLocCharPosClassIClassOpITyConI PrimTyConIDataConIVarITyVarIInfoFixityInfixLInfixRInfixNFixityDirectionCharLStringLIntegerL RationalLIntPrimL WordPrimL FloatPrimL DoublePrimLLitPVarPTupPConPInfixPTildePAsPWildPRecPListPSigPVarEConELitEAppEInfixELamETupECondELetECaseEDoECompE ArithSeqEListESigERecConERecUpdEGuardedBNormalBBodyNormalGPatGGuardBindSLetSNoBindSParSStmtFromR FromThenRFromToR FromThenToRRangeFunDValDDataDNewtypeDTySynDClassD InstanceDSigDForeignDImportFExportFForeignCCallStdCallCallconvUnsafeSafe ThreadsafeSafetyCxtIsStrict NotStrictStrictNormalCRecCInfixCForallCCon StrictType VarStrictTypeForallTVarTConTTupleTArrowTListTAppT ArgPositions WithInstancesrequiredDataArgrequiredPositionTravderiveTraversalCtorderiveTraversalTypederiveTraversalApp traverseArg argPositionsdefaultTraversalType deriveOneEnvwidthifyunQtup1