x0[       None &Parsed Haskell name ending with FName !&Parsed Haskell name ending with MName "-Full Haskell field name: MNames separated by #, ending with a field $.Full Haskell module name: MNames separated by #, ending with a module %%Fully qualified identifier: repeated # then identifier. &#8 separated identifier which may or may start with a dot 'Contains one field name (Contains one module name )Contains one identifier name *,Right (True,_) means the input is a FIName. > Right (False,_) means the input is a DIName (without leading #) +,Right (True,_) means the input is a FIName. > Right (False,_) means the input is a DIName (without leading #) ?,-./012 3!4"56$78%9:&;<'=>(?@)ABCDEFGHIJKLMNOPQ*+RSTUVWXYZ[\]^_7,-./012 3!4"56$78%9:&;<'=>(?@)ABCDEFGHIJKLMNOPQ*+RSTUVW*,-./012 3!4"56$78%9:&;<'=>(?@)ABCDEFGHIJKLMNOPQ*+RSTUVWXYZ[\]^_None6`abcdefghijklmnopqrstuvwxyz{|}~`abcdpqrstuvwxy$`abcdefghijklmnopsrqtyxwvuz{|}~NoneRRNone None  None              None     None None\parseType returns Nothing when the String is user-defined. This means it could be either a I Message or an Enum or a syntax error. The Nothing return is fixed up in 3 Text.ProtocolBuffers.ProtoCompile.Resolve.fqField ]parseLabel recognizes optional, required, and repeated. All other strings result in Nothing  !" !" NoneQ#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs 56789:;DK=#$)('&%*-,+.210/345;:9876<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsNone>tuvwxyz{|}~>tuvwxyz{|}~None<Given a path, tries to find and parse a FileDescriptorProto 9 corresponding to it; returns also a canonicalised path. BAn Entity is some concrete item in the namespace of a proto file. G All Entity values have a leading-dot fully-qualified with the package eName.  The E'BMessage,Group,Service have EMap namespaces to inner Entity items. 9The EMap type is a local namespace attached to an entity The E'RError values come from using unique to resolse name collisions when building EMap ATopLevel corresponds to all items defined in a .proto file. This < includes the FileOptions since this will be consulted when F generating the Haskell module names, and the imported files are only $ known through their TopLevel data. BBy construction Env is 0 or more Local Entity namespaces followed D by 1 or more Global TopLevel namespaces (self and imported files). E Entities in first Global TopLevel namespace can refer to each other L and to Entities in the list of directly imported TopLevel namespaces only. J mimics what I observe protoc --java_out do to convert the file name to a  class name.  This is a helper for resolveEnv :This is used for resolving some UninterpretedOption names N is the query operation for the Env namespace. It recognizes names beginning  with a #V as already being fully-qualified names. This is called from the different monads via ' resolveEnv, resolveMGE, and resolveM 1The returned (Right _::Entity) will never be an E'1Error, which results in (Left _::ErrStr) instead ? is used to lookup the type strings in service method records.  is used by getType and  CThis is a helper for resolveEnv and (Show SEnv) for error messages A separates the Left errors and Right success in the obvious way. The : function is used with Data.Map.fromListWithKey to detect % name collisions and record this as E'Error entries in the map. This constructs new E' Error values " conservatively checks its input.  takes a .proto file'5s FileDescriptorProto and the TopLevel values of its [ directly imported file and constructs the TopLevel of the FileDescriptorProto in a Global  Environment. _This goes to some lengths to be a total function with good error messages. Errors in building V the skeleton of the namespace are detected and reported instead of returning the new  c environment. Collisions in the namespace are only detected when the offending name is looked up,  and will return an E'EError entity with a message and list of colliding Entity items. The a cross-linking of Entity fields may fail and this failure is stored in the corresponding Entity. 2Also caught: name collisions in Enum definitions. The 'mdo'- usage has been replace by modified forms of ! that will generate useful error  values instead of calling  and halting hprotoc. Used from loadProto' Y looks through the current and import directories to find the target file on the system. f It also converts the relative path to a standard form to use as the name of the FileDescriptorProto. 6Given a list of paths to search, loads proto files by & looking for them in the file system.           a        None !"#$%&'()*+,-./0 !"#$%&'()*+,-./01 !"#$%&'()*+,-./0123456789:;<=)*+>/?0@1A2B3C4DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abbcdefghijkklmnopqrstuvwxyz{|}~{~                                    !  " # $ # % & ' ( ) * + , - . j / 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 jkFlmnopqrstuvwxyz{|}~,,V     ~F !"hprotoc-2.0.15(Text.ProtocolBuffers.ProtoCompile.Parser)Text.ProtocolBuffers.ProtoCompile.Resolve1Text.ProtocolBuffers.ProtoCompile.MakeReflections-Text.ProtocolBuffers.ProtoCompile.Identifiers0Text.ProtocolBuffers.ProtoCompile.BreakRecursion%Text.ProtocolBuffers.ProtoCompile.Gen8Text.Google.Protobuf.Compiler.CodeGeneratorResponse.File3Text.Google.Protobuf.Compiler.CodeGeneratorResponse Paths_hprotoc2Text.Google.Protobuf.Compiler.CodeGeneratorRequestText.Google.Protobuf.Compiler+Text.ProtocolBuffers.ProtoCompile.Instances'Text.ProtocolBuffers.ProtoCompile.Lexer parseProto isValidPackedNameMapReMapCanonFP unCanonFPLocalFP unLocalFPTopLeveltop'Path top'Packagetop'FDP top'mValsEnvGlobalLocal PackageID NoPackageID_getNoPackageID _getPackageID getPackageIDgetTLS makeNameMaps loadProtoloadCodeGenRequest serializeFDP makeProtoInfoPFNamePMNameFFNamebaseGHC.Base.FMNameFINameDINameFNameMNameIName checkDIString checkDIUtf8ManglemangleDottedunconspreDotdotsplitDIffNamefmNamefiNamediNamefNamemNameiNamedotPMdotPFdotUtf8 dotStringunullpreUtf8 preString splitUtf8 splitStringtoString fromStringdifisplitFIfqDotsjoinDotsmanglePMmanglePFerrfixUpfixLowreserved$fMangleINameFName$fMangleINameFName0$fMangleINameFName1$fMangleINameMName$fMangleINameMName0$fMangleINameMName1 $fDotted[] $fDottedUtf8ResultrKindrIBootrIKeySCCsGELabelLVvMKey vNeedsKeysvKeysNeedsTypesvTypeNeedsTypesPartKeyFileSourceNormal VertexKindSplitKeyTypeBoot KeyTypeBootTypeBootSimple TopProtoInfoMKeyecartfst3snd3impiguardpKeypfKey displayResultshowSCCsshowGshowEgetKindgetTypegetKey makeResultmakeG makeVertices breakKeysscorecyclespullEach makeEdgesForV breakGraphrejoinVertices breakCyclecull$fMonoidResultnubSortnoWhere$$srclitStrlitIntPlitIntP'litIntlitInt'typeAppprivatepreludelocalisVarisConpvar preludevarlvarpcon preludeconlconpatvarmatchinstdefunmkOpcomposefqModimportPN importPFN mergeImportskeyFilejoinMod baseIdent baseIdent'qualName qualFName unqualName unqualFName mayQualName modulePragmas enumModule enumDeclsenumXinstanceMergeableEnuminstanceBoundedinstanceDefaultEnum declToEnum instanceEnuminstanceWireEnum instanceGPBinstanceReflectEnumhasExt protoModuleembed'ProtoInfo embed'fdpBSdescriptorModulesdescriptorBootModuledescriptorKeyBootModuledescriptorKeyfileModuledescriptorNormalModuleminimalImportsstandardImports keysXType keysXTypeVal makeKeyType makeKeyVal defToSyntax descriptorXinstancesDescriptorinstanceExtendMessageinstanceUnknownMessageinstanceMergeableinstanceDefaultinstanceMessageAPIinstanceWireDescriptorinstanceReflectDescriptorderives derivesEnumuseTypehaskell-src-exts-1.13.5Language.Haskell.Exts.Pretty prettyPrintFilenameinsertion_pointcontent unknown'field$fReflectDescriptorFile $fGPBFile$fMessageAPImsg'(->)File $fWireFile $fDefaultFile$fMergeableFile$fUnknownMessageFileCodeGeneratorResponseerrorfile($fReflectDescriptorCodeGeneratorResponse$fGPBCodeGeneratorResponse)$fMessageAPImsg'(->)CodeGeneratorResponse$fWireCodeGeneratorResponse$fDefaultCodeGeneratorResponse $fMergeableCodeGeneratorResponse%$fUnknownMessageCodeGeneratorResponsecatchIOversionbindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileNameCodeGeneratorRequestfile_to_generate parameter proto_file'$fReflectDescriptorCodeGeneratorRequest$fGPBCodeGeneratorRequest($fMessageAPImsg'(->)CodeGeneratorRequest$fWireCodeGeneratorRequest$fDefaultCodeGeneratorRequest$fMergeableCodeGeneratorRequest$$fUnknownMessageCodeGeneratorRequest protoInfofileDescriptorProto parseType parseLabel showsLabel showsType readLabelreadType<< AlexAccPredAlexAccAlexAccSkipPred AlexAccSkip AlexAccNone AlexLastAcc AlexLastSkipAlexNone AlexReturn AlexTokenAlexSkip AlexErrorAlexEOFAlexAddrAlexA#LexedL_ErrorL_StringL_NameL_Double L_IntegerAlexPosnAlexPn AlexInputBytealexInputPrevChar alexGetByte alexStartPosalexMovealexScanTokens alex_base alex_table alex_check alex_deflt alex_acceptline getLinePoserrAtdieAtwtfAtmayReadparseDecparseOctparseHex parseDoubleparseStr parseNinf parseName parseCharopsDecode alex_action_2 alex_action_3 alex_action_4 alex_action_5 alex_action_6 alex_action_7 alex_action_8 alex_action_9alex_action_10alex_action_11alex_action_12alex_action_13alex_action_14alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkn alexAndPredalexPrevCharIsalexPrevCharMatchesalexPrevCharIsOneOfalexRightContextiUnbox$fFunctorAlexLastAccPtruefalsetokpChareoleolspName rawStrMany getAggregate getNextTokenbsLitstrLitintLitfieldIntenumInt doubleLitfloatLitidentident1 ident_packageboolLitenumLit subParserreturn'fmap'update'parser importFilepackagepOptionE pOptionWithpUnValuemakeUninterpetedOption fileOptionmessage subMessage messageOptionextendfieldsubFielddefaultConstantconstant fieldOptionenumsubEnum enumOptionenumVal subEnumValueenumValueOption extensionsservice serviceOptionrpcsubRpc rpcOptioncEncodeshowRF undoLexerDescriptorReaderEntityEMapconvertFileToPackagetoGlobal resolveHereresolvePredEnv expectMGE entityFieldwhereEnv partEitherunique makeNameMap makeTopLevelControl.Monad.FixmfixGHC.ErrfindFile ConsumeUNO consumeUNOMRMSEErrStrSEnv my'Parentmy'EnvREE'EntityE'ErrorE'OkE'MethodeMsgIneMsgOutE'EnumeValsE'FieldE'KeyeMsgfNumberfTypemVal E'ServiceE'Group E'MessageeNamevalidExtensionsmValsindentishowerrMsgthrowannErrgetJustdefaultPackageName getPackagecheckPackageIDjoinDotcheckFI getExtRangesfpLocalToCanonfpCanonToLocal allowedGlobalallowedT allowedLocal emptyEntityemptyEnvrunSEfqName fiFromString iToString get'mVals'E get'mValsgetTL resolveEnv resolveREmaybeM runMRM'Reader runMRM'WritermrmNamegetNamesdescendkidsmyFixSEmyFixE entityMsg entityEnum entityService entityMethodfqFailfqFileDP fqMessage fqServicefqMethodfqFieldfqEnuminterpretOptionsinterpretOption loadProto' loadFailed$fConsumeUNODescriptorProto$fConsumeUNOFileDescriptorProto $fConsumeUNOFieldDescriptorProto"$fConsumeUNOServiceDescriptorProto!$fConsumeUNOMethodDescriptorProto$$fConsumeUNOEnumValueDescriptorProto$fConsumeUNOEnumDescriptorProto $fShowSEnv$fFunctorPackageIDpnPath toHaskell makeEnumInfo' keyExtendee'makeDescriptorInfo' toFieldInfo'collectedGroupsparseDefaultValue parseDefEnumparseDefDouble parseDefFloatparseDefString parseDefBytesparseDefInteger parseDefBool readSigned'