packages feed

proto-lens-protoc 0.5.0.0 → 0.6.0.0

raw patch · 20 files changed

+15045/−3229 lines, 20 filesdep +ghcdep +ghc-pathsdep +ghc-source-gendep −haskell-src-extsdep ~basedep ~lens-familydep ~proto-lensPVP ok

version bump matches the API change (PVP)

Dependencies added: ghc, ghc-paths, ghc-source-gen, proto-lens-runtime

Dependencies removed: haskell-src-exts

Dependency ranges changed: base, lens-family, proto-lens

API changes (from Hackage documentation)

- Data.ProtoLens.Compiler.Combinators: (-->) :: Pat -> Exp -> Alt
- Data.ProtoLens.Compiler.Combinators: (<--) :: Pat -> Exp -> Stmt
- Data.ProtoLens.Compiler.Combinators: (@::@) :: Exp -> Type -> Exp
- Data.ProtoLens.Compiler.Combinators: (@@) :: App a => a -> a -> a
- Data.ProtoLens.Compiler.Combinators: CommentedDecl :: Maybe String -> Decl -> CommentedDecl
- Data.ProtoLens.Compiler.Combinators: ImportDecl :: l -> ModuleName l -> Bool -> Bool -> Bool -> Maybe String -> Maybe (ModuleName l) -> Maybe (ImportSpecList l) -> ImportDecl l
- Data.ProtoLens.Compiler.Combinators: Module :: ModuleName -> Maybe [ExportSpec] -> [ModulePragma] -> [ImportDecl ()] -> [CommentedDecl] -> Module
- Data.ProtoLens.Compiler.Combinators: [importAnn] :: ImportDecl l -> l
- Data.ProtoLens.Compiler.Combinators: [importAs] :: ImportDecl l -> Maybe (ModuleName l)
- Data.ProtoLens.Compiler.Combinators: [importModule] :: ImportDecl l -> ModuleName l
- Data.ProtoLens.Compiler.Combinators: [importPkg] :: ImportDecl l -> Maybe String
- Data.ProtoLens.Compiler.Combinators: [importQualified] :: ImportDecl l -> Bool
- Data.ProtoLens.Compiler.Combinators: [importSafe] :: ImportDecl l -> Bool
- Data.ProtoLens.Compiler.Combinators: [importSpecs] :: ImportDecl l -> Maybe (ImportSpecList l)
- Data.ProtoLens.Compiler.Combinators: [importSrc] :: ImportDecl l -> Bool
- Data.ProtoLens.Compiler.Combinators: bangPat :: Pat -> Pat
- Data.ProtoLens.Compiler.Combinators: case' :: Exp -> [Alt] -> Exp
- Data.ProtoLens.Compiler.Combinators: char :: Char -> Literal ()
- Data.ProtoLens.Compiler.Combinators: charExp :: Char -> Exp
- Data.ProtoLens.Compiler.Combinators: class App a
- Data.ProtoLens.Compiler.Combinators: classA :: QName -> [Type] -> Asst
- Data.ProtoLens.Compiler.Combinators: commented :: String -> Decl -> CommentedDecl
- Data.ProtoLens.Compiler.Combinators: con :: QName -> Exp
- Data.ProtoLens.Compiler.Combinators: conDecl :: Name -> [Type] -> ConDecl
- Data.ProtoLens.Compiler.Combinators: cons :: Exp
- Data.ProtoLens.Compiler.Combinators: data CommentedDecl
- Data.ProtoLens.Compiler.Combinators: data ImportDecl l
- Data.ProtoLens.Compiler.Combinators: data Module
- Data.ProtoLens.Compiler.Combinators: dataDecl :: Name -> [ConDecl] -> Deriving -> Decl
- Data.ProtoLens.Compiler.Combinators: dataDeclHelper :: DataOrNew () -> Name -> [ConDecl] -> Deriving -> Decl
- Data.ProtoLens.Compiler.Combinators: deriving' :: [QName] -> Deriving
- Data.ProtoLens.Compiler.Combinators: do' :: [Stmt] -> Exp
- Data.ProtoLens.Compiler.Combinators: emptyList :: Exp
- Data.ProtoLens.Compiler.Combinators: equalP :: Type -> Type -> Asst
- Data.ProtoLens.Compiler.Combinators: exportAll :: QName -> ExportSpec
- Data.ProtoLens.Compiler.Combinators: exportVar :: QName -> ExportSpec
- Data.ProtoLens.Compiler.Combinators: exportWith :: QName -> [Name] -> ExportSpec
- Data.ProtoLens.Compiler.Combinators: fieldUpdate :: QName -> Exp -> FieldUpdate
- Data.ProtoLens.Compiler.Combinators: funBind :: [Match] -> Decl
- Data.ProtoLens.Compiler.Combinators: getModuleName :: Module -> ModuleName
- Data.ProtoLens.Compiler.Combinators: guardedMatch :: Name -> [Pat] -> [(Exp, Exp)] -> Match
- Data.ProtoLens.Compiler.Combinators: if' :: Exp -> Exp -> Exp -> Exp
- Data.ProtoLens.Compiler.Combinators: ihApp :: InstHead -> [Type] -> InstHead
- Data.ProtoLens.Compiler.Combinators: infixl 1 <--
- Data.ProtoLens.Compiler.Combinators: infixl 2 @::@
- Data.ProtoLens.Compiler.Combinators: instDecl :: [Asst] -> InstHead -> [[Match]] -> Decl
- Data.ProtoLens.Compiler.Combinators: instDeclWithTypes :: [Asst] -> InstHead -> [InstDecl ()] -> Decl
- Data.ProtoLens.Compiler.Combinators: instMatch :: [Match] -> InstDecl ()
- Data.ProtoLens.Compiler.Combinators: instType :: Type -> Type -> InstDecl ()
- Data.ProtoLens.Compiler.Combinators: instance Data.ProtoLens.Compiler.Combinators.App Data.ProtoLens.Compiler.Combinators.Exp
- Data.ProtoLens.Compiler.Combinators: instance Data.ProtoLens.Compiler.Combinators.App Data.ProtoLens.Compiler.Combinators.Type
- Data.ProtoLens.Compiler.Combinators: instance Data.String.IsString Data.ProtoLens.Compiler.Combinators.Exp
- Data.ProtoLens.Compiler.Combinators: instance Data.String.IsString Data.ProtoLens.Compiler.Combinators.InstHead
- Data.ProtoLens.Compiler.Combinators: instance Data.String.IsString Data.ProtoLens.Compiler.Combinators.ModuleName
- Data.ProtoLens.Compiler.Combinators: instance Data.String.IsString Data.ProtoLens.Compiler.Combinators.Name
- Data.ProtoLens.Compiler.Combinators: instance Data.String.IsString Data.ProtoLens.Compiler.Combinators.Pat
- Data.ProtoLens.Compiler.Combinators: instance Data.String.IsString Data.ProtoLens.Compiler.Combinators.Promoted
- Data.ProtoLens.Compiler.Combinators: instance Data.String.IsString Data.ProtoLens.Compiler.Combinators.QName
- Data.ProtoLens.Compiler.Combinators: instance Data.String.IsString Data.ProtoLens.Compiler.Combinators.TyVarBind
- Data.ProtoLens.Compiler.Combinators: instance Data.String.IsString Data.ProtoLens.Compiler.Combinators.Type
- Data.ProtoLens.Compiler.Combinators: isIdentChar :: Char -> Bool
- Data.ProtoLens.Compiler.Combinators: lambda :: [Pat] -> Exp -> Exp
- Data.ProtoLens.Compiler.Combinators: languagePragma :: [Name] -> ModulePragma
- Data.ProtoLens.Compiler.Combinators: let' :: [Decl] -> Exp -> Exp
- Data.ProtoLens.Compiler.Combinators: letStmt :: [Decl] -> Stmt
- Data.ProtoLens.Compiler.Combinators: list :: [Exp] -> Exp
- Data.ProtoLens.Compiler.Combinators: litFrac :: Rational -> Exp
- Data.ProtoLens.Compiler.Combinators: litInt :: Integer -> Exp
- Data.ProtoLens.Compiler.Combinators: match :: Name -> [Pat] -> Exp -> Match
- Data.ProtoLens.Compiler.Combinators: modifyModuleName :: (String -> String) -> ModuleName -> ModuleName
- Data.ProtoLens.Compiler.Combinators: newtypeDecl :: Name -> Type -> Deriving -> Decl
- Data.ProtoLens.Compiler.Combinators: optionsGhcPragma :: String -> ModulePragma
- Data.ProtoLens.Compiler.Combinators: pApp :: QName -> [Pat] -> Pat
- Data.ProtoLens.Compiler.Combinators: pLitInt :: Integer -> Pat
- Data.ProtoLens.Compiler.Combinators: pVar :: Name -> Pat
- Data.ProtoLens.Compiler.Combinators: pWildCard :: Pat
- Data.ProtoLens.Compiler.Combinators: patBind :: Pat -> Exp -> Decl
- Data.ProtoLens.Compiler.Combinators: patSyn :: Pat -> Pat -> Decl
- Data.ProtoLens.Compiler.Combinators: patSynSig :: Name -> Type -> Decl
- Data.ProtoLens.Compiler.Combinators: patTypeSig :: Pat -> Type -> Pat
- Data.ProtoLens.Compiler.Combinators: prettyPrim :: Pretty a => a -> Doc
- Data.ProtoLens.Compiler.Combinators: prettyPrint :: Pretty a => a -> String
- Data.ProtoLens.Compiler.Combinators: prettyPrintModule :: Module -> String
- Data.ProtoLens.Compiler.Combinators: qual :: ModuleName -> Name -> QName
- Data.ProtoLens.Compiler.Combinators: recConstr :: QName -> [FieldUpdate] -> Exp
- Data.ProtoLens.Compiler.Combinators: recDecl :: Name -> [(Name, Type)] -> ConDecl
- Data.ProtoLens.Compiler.Combinators: recUpdate :: Exp -> [FieldUpdate] -> Exp
- Data.ProtoLens.Compiler.Combinators: stmt :: Exp -> Stmt
- Data.ProtoLens.Compiler.Combinators: string :: String -> Literal ()
- Data.ProtoLens.Compiler.Combinators: stringExp :: String -> Exp
- Data.ProtoLens.Compiler.Combinators: stringPat :: String -> Pat
- Data.ProtoLens.Compiler.Combinators: tuple :: [Exp] -> Exp
- Data.ProtoLens.Compiler.Combinators: tyBang :: Type -> Type
- Data.ProtoLens.Compiler.Combinators: tyCon :: QName -> Type
- Data.ProtoLens.Compiler.Combinators: tyForAll :: [TyVarBind] -> [Asst] -> Type -> Type
- Data.ProtoLens.Compiler.Combinators: tyFun :: Type -> Type -> Type
- Data.ProtoLens.Compiler.Combinators: tyList :: Type -> Type
- Data.ProtoLens.Compiler.Combinators: tyParen :: Type -> Type
- Data.ProtoLens.Compiler.Combinators: tyPromotedCon :: Promoted -> Type
- Data.ProtoLens.Compiler.Combinators: tyPromotedList :: [Type] -> Type
- Data.ProtoLens.Compiler.Combinators: tyPromotedString :: String -> Type
- Data.ProtoLens.Compiler.Combinators: tyWildCard :: Type
- Data.ProtoLens.Compiler.Combinators: type Alt = Alt ()
- Data.ProtoLens.Compiler.Combinators: type Asst = Asst ()
- Data.ProtoLens.Compiler.Combinators: type ConDecl = ConDecl ()
- Data.ProtoLens.Compiler.Combinators: type Decl = Decl ()
- Data.ProtoLens.Compiler.Combinators: type Deriving = Deriving ()
- Data.ProtoLens.Compiler.Combinators: type Exp = Exp ()
- Data.ProtoLens.Compiler.Combinators: type ExportSpec = ExportSpec ()
- Data.ProtoLens.Compiler.Combinators: type FieldUpdate = FieldUpdate ()
- Data.ProtoLens.Compiler.Combinators: type InstHead = InstHead ()
- Data.ProtoLens.Compiler.Combinators: type Match = Match ()
- Data.ProtoLens.Compiler.Combinators: type ModuleName = ModuleName ()
- Data.ProtoLens.Compiler.Combinators: type ModulePragma = ModulePragma ()
- Data.ProtoLens.Compiler.Combinators: type Name = Name ()
- Data.ProtoLens.Compiler.Combinators: type Pat = Pat ()
- Data.ProtoLens.Compiler.Combinators: type Promoted = Promoted ()
- Data.ProtoLens.Compiler.Combinators: type QName = QName ()
- Data.ProtoLens.Compiler.Combinators: type Stmt = Stmt ()
- Data.ProtoLens.Compiler.Combinators: type TyVarBind = TyVarBind ()
- Data.ProtoLens.Compiler.Combinators: type Type = Type ()
- Data.ProtoLens.Compiler.Combinators: typeApp :: Type -> Exp
- Data.ProtoLens.Compiler.Combinators: typeSig :: [Name] -> Type -> Decl
- Data.ProtoLens.Compiler.Combinators: unQual :: Name -> QName
- Data.ProtoLens.Compiler.Combinators: uncommented :: Decl -> CommentedDecl
- Data.ProtoLens.Compiler.Combinators: unit :: Exp
- Data.ProtoLens.Compiler.Combinators: var :: QName -> Exp
- Data.ProtoLens.Compiler.Definitions: Enum :: EnumInfo n -> Definition n
- Data.ProtoLens.Compiler.Definitions: EnumInfo :: n -> Maybe EnumUnrecognizedInfo -> EnumDescriptorProto -> [EnumValueInfo n] -> EnumInfo n
- Data.ProtoLens.Compiler.Definitions: EnumUnrecognizedInfo :: Name -> Name -> EnumUnrecognizedInfo
- Data.ProtoLens.Compiler.Definitions: EnumValueInfo :: n -> EnumValueDescriptorProto -> Maybe Name -> EnumValueInfo n
- Data.ProtoLens.Compiler.Definitions: FieldInfo :: FieldDescriptorProto -> FieldName -> FieldInfo
- Data.ProtoLens.Compiler.Definitions: FieldName :: Symbol -> Name -> FieldName
- Data.ProtoLens.Compiler.Definitions: MapEntryInfo :: Name -> FieldInfo -> FieldInfo -> MapEntryInfo
- Data.ProtoLens.Compiler.Definitions: MapField :: MapEntryInfo -> FieldKind
- Data.ProtoLens.Compiler.Definitions: Message :: MessageInfo n -> Definition n
- Data.ProtoLens.Compiler.Definitions: MessageInfo :: n -> DescriptorProto -> [PlainFieldInfo] -> [OneofInfo] -> Name -> Maybe Int32 -> MessageInfo n
- Data.ProtoLens.Compiler.Definitions: MethodInfo :: Text -> Text -> Text -> Text -> Bool -> Bool -> MethodInfo
- Data.ProtoLens.Compiler.Definitions: NotPackable :: FieldPacking
- Data.ProtoLens.Compiler.Definitions: OneofCase :: FieldInfo -> Name -> Name -> OneofCase
- Data.ProtoLens.Compiler.Definitions: OneofInfo :: FieldName -> Name -> [OneofCase] -> OneofInfo
- Data.ProtoLens.Compiler.Definitions: OptionalMaybeField :: FieldKind
- Data.ProtoLens.Compiler.Definitions: OptionalValueField :: FieldKind
- Data.ProtoLens.Compiler.Definitions: Packable :: FieldPacking
- Data.ProtoLens.Compiler.Definitions: Packed :: FieldPacking
- Data.ProtoLens.Compiler.Definitions: PlainFieldInfo :: FieldKind -> FieldInfo -> PlainFieldInfo
- Data.ProtoLens.Compiler.Definitions: RepeatedField :: FieldPacking -> FieldKind
- Data.ProtoLens.Compiler.Definitions: RequiredField :: FieldKind
- Data.ProtoLens.Compiler.Definitions: ServiceInfo :: Text -> Text -> [MethodInfo] -> ServiceInfo
- Data.ProtoLens.Compiler.Definitions: [caseConstructorName] :: OneofCase -> Name
- Data.ProtoLens.Compiler.Definitions: [caseField] :: OneofCase -> FieldInfo
- Data.ProtoLens.Compiler.Definitions: [casePrismName] :: OneofCase -> Name
- Data.ProtoLens.Compiler.Definitions: [enumAliasOf] :: EnumValueInfo n -> Maybe Name
- Data.ProtoLens.Compiler.Definitions: [enumDescriptor] :: EnumInfo n -> EnumDescriptorProto
- Data.ProtoLens.Compiler.Definitions: [enumName] :: EnumInfo n -> n
- Data.ProtoLens.Compiler.Definitions: [enumUnrecognized] :: EnumInfo n -> Maybe EnumUnrecognizedInfo
- Data.ProtoLens.Compiler.Definitions: [enumValueDescriptor] :: EnumValueInfo n -> EnumValueDescriptorProto
- Data.ProtoLens.Compiler.Definitions: [enumValueName] :: EnumValueInfo n -> n
- Data.ProtoLens.Compiler.Definitions: [enumValues] :: EnumInfo n -> [EnumValueInfo n]
- Data.ProtoLens.Compiler.Definitions: [fieldDescriptor] :: FieldInfo -> FieldDescriptorProto
- Data.ProtoLens.Compiler.Definitions: [fieldName] :: FieldInfo -> FieldName
- Data.ProtoLens.Compiler.Definitions: [groupFieldNumber] :: MessageInfo n -> Maybe Int32
- Data.ProtoLens.Compiler.Definitions: [haskellRecordFieldName] :: FieldName -> Name
- Data.ProtoLens.Compiler.Definitions: [keyField] :: MapEntryInfo -> FieldInfo
- Data.ProtoLens.Compiler.Definitions: [mapEntryTypeName] :: MapEntryInfo -> Name
- Data.ProtoLens.Compiler.Definitions: [messageDescriptor] :: MessageInfo n -> DescriptorProto
- Data.ProtoLens.Compiler.Definitions: [messageFields] :: MessageInfo n -> [PlainFieldInfo]
- Data.ProtoLens.Compiler.Definitions: [messageName] :: MessageInfo n -> n
- Data.ProtoLens.Compiler.Definitions: [messageOneofFields] :: MessageInfo n -> [OneofInfo]
- Data.ProtoLens.Compiler.Definitions: [messageUnknownFields] :: MessageInfo n -> Name
- Data.ProtoLens.Compiler.Definitions: [methodClientStreaming] :: MethodInfo -> Bool
- Data.ProtoLens.Compiler.Definitions: [methodIdent] :: MethodInfo -> Text
- Data.ProtoLens.Compiler.Definitions: [methodInput] :: MethodInfo -> Text
- Data.ProtoLens.Compiler.Definitions: [methodName] :: MethodInfo -> Text
- Data.ProtoLens.Compiler.Definitions: [methodOutput] :: MethodInfo -> Text
- Data.ProtoLens.Compiler.Definitions: [methodServerStreaming] :: MethodInfo -> Bool
- Data.ProtoLens.Compiler.Definitions: [oneofCases] :: OneofInfo -> [OneofCase]
- Data.ProtoLens.Compiler.Definitions: [oneofFieldName] :: OneofInfo -> FieldName
- Data.ProtoLens.Compiler.Definitions: [oneofTypeName] :: OneofInfo -> Name
- Data.ProtoLens.Compiler.Definitions: [overloadedName] :: FieldName -> Symbol
- Data.ProtoLens.Compiler.Definitions: [plainFieldInfo] :: PlainFieldInfo -> FieldInfo
- Data.ProtoLens.Compiler.Definitions: [plainFieldKind] :: PlainFieldInfo -> FieldKind
- Data.ProtoLens.Compiler.Definitions: [serviceMethods] :: ServiceInfo -> [MethodInfo]
- Data.ProtoLens.Compiler.Definitions: [serviceName] :: ServiceInfo -> Text
- Data.ProtoLens.Compiler.Definitions: [servicePackage] :: ServiceInfo -> Text
- Data.ProtoLens.Compiler.Definitions: [unrecognizedName] :: EnumUnrecognizedInfo -> Name
- Data.ProtoLens.Compiler.Definitions: [unrecognizedValueName] :: EnumUnrecognizedInfo -> Name
- Data.ProtoLens.Compiler.Definitions: [valueField] :: MapEntryInfo -> FieldInfo
- Data.ProtoLens.Compiler.Definitions: camelCase :: Text -> Text
- Data.ProtoLens.Compiler.Definitions: collectDefinitions :: FileDescriptorProto -> Env Name
- Data.ProtoLens.Compiler.Definitions: collectServices :: FileDescriptorProto -> [ServiceInfo]
- Data.ProtoLens.Compiler.Definitions: data Definition n
- Data.ProtoLens.Compiler.Definitions: data EnumInfo n
- Data.ProtoLens.Compiler.Definitions: data EnumUnrecognizedInfo
- Data.ProtoLens.Compiler.Definitions: data EnumValueInfo n
- Data.ProtoLens.Compiler.Definitions: data FieldInfo
- Data.ProtoLens.Compiler.Definitions: data FieldKind
- Data.ProtoLens.Compiler.Definitions: data FieldName
- Data.ProtoLens.Compiler.Definitions: data FieldPacking
- Data.ProtoLens.Compiler.Definitions: data MapEntryInfo
- Data.ProtoLens.Compiler.Definitions: data MessageInfo n
- Data.ProtoLens.Compiler.Definitions: data MethodInfo
- Data.ProtoLens.Compiler.Definitions: data OneofCase
- Data.ProtoLens.Compiler.Definitions: data OneofInfo
- Data.ProtoLens.Compiler.Definitions: data PlainFieldInfo
- Data.ProtoLens.Compiler.Definitions: data ServiceInfo
- Data.ProtoLens.Compiler.Definitions: data Symbol
- Data.ProtoLens.Compiler.Definitions: definedFieldType :: FieldDescriptorProto -> Env QName -> Definition QName
- Data.ProtoLens.Compiler.Definitions: definedType :: Text -> Env QName -> Definition QName
- Data.ProtoLens.Compiler.Definitions: instance Data.String.IsString Data.ProtoLens.Compiler.Definitions.Symbol
- Data.ProtoLens.Compiler.Definitions: instance GHC.Base.Functor Data.ProtoLens.Compiler.Definitions.Definition
- Data.ProtoLens.Compiler.Definitions: instance GHC.Base.Functor Data.ProtoLens.Compiler.Definitions.EnumInfo
- Data.ProtoLens.Compiler.Definitions: instance GHC.Base.Functor Data.ProtoLens.Compiler.Definitions.EnumValueInfo
- Data.ProtoLens.Compiler.Definitions: instance GHC.Base.Functor Data.ProtoLens.Compiler.Definitions.MessageInfo
- Data.ProtoLens.Compiler.Definitions: instance GHC.Base.Monoid Data.ProtoLens.Compiler.Definitions.Symbol
- Data.ProtoLens.Compiler.Definitions: instance GHC.Base.Semigroup Data.ProtoLens.Compiler.Definitions.Symbol
- Data.ProtoLens.Compiler.Definitions: instance GHC.Classes.Eq Data.ProtoLens.Compiler.Definitions.FieldPacking
- Data.ProtoLens.Compiler.Definitions: instance GHC.Classes.Eq Data.ProtoLens.Compiler.Definitions.Symbol
- Data.ProtoLens.Compiler.Definitions: instance GHC.Classes.Eq Data.ProtoLens.Compiler.Definitions.SyntaxType
- Data.ProtoLens.Compiler.Definitions: instance GHC.Classes.Ord Data.ProtoLens.Compiler.Definitions.Symbol
- Data.ProtoLens.Compiler.Definitions: instance GHC.Show.Show Data.ProtoLens.Compiler.Definitions.SyntaxType
- Data.ProtoLens.Compiler.Definitions: nameFromSymbol :: Symbol -> Name
- Data.ProtoLens.Compiler.Definitions: overloadedFieldName :: FieldInfo -> Symbol
- Data.ProtoLens.Compiler.Definitions: promoteSymbol :: Symbol -> Type
- Data.ProtoLens.Compiler.Definitions: qualifyEnv :: ModuleName -> Env Name -> Env QName
- Data.ProtoLens.Compiler.Definitions: type Env n = Map Text (Definition n)
- Data.ProtoLens.Compiler.Definitions: unqualifyEnv :: Env Name -> Env QName
- Data.ProtoLens.Compiler.Generate: generateModule :: ModuleName -> [ModuleName] -> ModifyImports -> Env Name -> Env QName -> [ServiceInfo] -> [Module]
- Data.ProtoLens.Compiler.Generate: instance GHC.Classes.Eq Data.ProtoLens.Compiler.Generate.UseRuntime
- Data.ProtoLens.Compiler.Generate: instance GHC.Read.Read Data.ProtoLens.Compiler.Generate.UseRuntime
- Data.ProtoLens.Compiler.Generate: reexported :: ModifyImports
- Data.ProtoLens.Compiler.Generate: type ModifyImports = ImportDecl () -> ImportDecl ()
- Data.ProtoLens.Compiler.Plugin: ProtoFile :: FileDescriptorProto -> ModuleName -> Env Name -> [ServiceInfo] -> [ProtoFileName] -> Env QName -> ProtoFile
- Data.ProtoLens.Compiler.Plugin: [definitions] :: ProtoFile -> Env Name
- Data.ProtoLens.Compiler.Plugin: [descriptor] :: ProtoFile -> FileDescriptorProto
- Data.ProtoLens.Compiler.Plugin: [exportedEnv] :: ProtoFile -> Env QName
- Data.ProtoLens.Compiler.Plugin: [exports] :: ProtoFile -> [ProtoFileName]
- Data.ProtoLens.Compiler.Plugin: [haskellModule] :: ProtoFile -> ModuleName
- Data.ProtoLens.Compiler.Plugin: [services] :: ProtoFile -> [ServiceInfo]
- Data.ProtoLens.Compiler.Plugin: analyzeProtoFiles :: Text -> [FileDescriptorProto] -> Map ProtoFileName ProtoFile
- Data.ProtoLens.Compiler.Plugin: collectEnvFromDeps :: [ProtoFileName] -> Map ProtoFileName ProtoFile -> Env QName
- Data.ProtoLens.Compiler.Plugin: data ProtoFile
- Data.ProtoLens.Compiler.Plugin: moduleName :: Text -> FileDescriptorProto -> ModuleName
- Data.ProtoLens.Compiler.Plugin: moduleNameStr :: String -> FilePath -> String
- Data.ProtoLens.Compiler.Plugin: outputFilePath :: String -> Text
- Data.ProtoLens.Compiler.Plugin: type ProtoFileName = Text
+ Data.ProtoLens.Compiler.ModuleName: protoModuleName :: FilePath -> String

Files

Changelog.md view
@@ -1,5 +1,23 @@ # Changelog for `proto-lens-protoc` +## v0.6.0.0++### Breaking Changes+- Reexport transitive definitions from modules generated for `.proto` files+  with `import public` statements (#329).+- Bump lower bounds to base-4.10 (ghc-8.2).+- Use `ghc-source-gen` instead of `haskell-src-exts`.  Removes+  `Data.ProtoLens.Compiler.Combinators` and adds+  `Data.ProtoLens.Compiler.Definitions`.+- Limit the exposed library to a single module+  `Data.ProtoLens.Compiler.ModuleName`.  The other modules were not+  used in practice, and exposed internals unnecessarily.++### Backwards-Compatible Changes+- Fix a potential naming conflict when message types and enum values+  are the same except for case.+- Support dependencies on base-4.13 (ghc-8.8) and lens-family-2.0.+ ## v0.5.0.0  ### Breaking Changes
+ app/Data/ProtoLens/Compiler/Definitions.hs view
@@ -0,0 +1,631 @@+-- Copyright 2016 Google Inc. All Rights Reserved.+--+-- Use of this source code is governed by a BSD-style+-- license that can be found in the LICENSE file or at+-- https://developers.google.com/open-source/licenses/bsd++-- | This module takes care of collecting all the definitions in a .proto file+-- and assigning Haskell names to all of the defined things (messages, enums+-- and field names).+{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+module Data.ProtoLens.Compiler.Definitions+    ( Env+    , Definition(..)+    , MessageInfo(..)+    , ServiceInfo(..)+    , MethodInfo(..)+    , PlainFieldInfo(..)+    , FieldInfo(..)+    , FieldKind(..)+    , FieldPacking(..)+    , MapEntryInfo(..)+    , OneofInfo(..)+    , OneofCase(..)+    , FieldName(..)+    , Symbol+    , nameFromSymbol+    , promoteSymbol+    , EnumInfo(..)+    , EnumValueInfo(..)+    , EnumUnrecognizedInfo(..)+    , qualifyEnv+    , unqualifyEnv+    , collectDefinitions+    , collectServices+    , definedFieldType+    , definedType+    , camelCase+    , overloadedFieldName+    ) where++import Control.Applicative (liftA2)+import Data.Char (isUpper, toUpper)+import Data.Int (Int32)+import Data.List (mapAccumL)+import qualified Data.Map as Map+import Data.Maybe (fromMaybe)+#if !MIN_VERSION_base(4,11,0)+import Data.Monoid ((<>))+#endif+import Data.ProtoLens.Labels ()+import qualified Data.Semigroup as Semigroup+import qualified Data.Set as Set+import Data.String (IsString(..))+import Data.Text (Text, cons, splitOn, toLower, uncons, unpack)+import qualified Data.Text as T+import Data.Tree+    ( Tree(..)+    , Forest+    , flatten+    )+import Lens.Family2 ((^.), (^..), toListOf)+import Proto.Google.Protobuf.Descriptor+    ( DescriptorProto+    , EnumDescriptorProto+    , EnumValueDescriptorProto+    , FieldDescriptorProto+    , FieldDescriptorProto'Label(..)+    , FieldDescriptorProto'Type(..)+    , FileDescriptorProto+    , MethodDescriptorProto+    , ServiceDescriptorProto+    )+import GHC.SourceGen+    ( OccNameStr+    , RdrNameStr+    , ModuleNameStr+    , HsType'+    , qual+    , stringTy+    , unqual+    )++-- | 'Env' contains a mapping of proto names (as specified in the .proto file)+-- to Haskell names.  The keys are fully-qualified names, for example,+-- ".package.Message.Submessage".  (The protocol_compiler tool emits all+-- message field types in this form, even if they refer to local definitions.)+--+-- The type 'n' can be either a 'Name' (when talking about definitions within+-- the current file) or a (qualified) 'RdrNameStr' (when talking about definitions+-- either from this or another file).+type Env n = Map.Map Text (Definition n)++data SyntaxType = Proto2 | Proto3+    deriving (Show, Eq)++fileSyntaxType :: FileDescriptorProto -> SyntaxType+fileSyntaxType f = case f ^. #syntax of+    "proto2" -> Proto2+    "proto3" -> Proto3+    "" -> Proto2  -- The proto compiler doesn't set syntax for proto2 files.+    s -> error $ "Unknown syntax type " ++ show s++data Definition n = Message (MessageInfo n) | Enum (EnumInfo n)+    deriving Functor++-- | All the information needed to define or use a proto message type.+data MessageInfo n = MessageInfo+    { messageName :: n  -- ^ Haskell type name+    , messageConstructorName :: n  -- ^ Haskell constructor name+    , messageDescriptor :: DescriptorProto+    , messageFields :: [PlainFieldInfo] -- ^ Fields not belonging to a oneof.+    , messageOneofFields :: [OneofInfo]+      -- ^ The oneofs in this message, associated with the fields that+      --   belong to them.+    , messageUnknownFields :: OccNameStr+      -- ^ The name of the Haskell field in this message that holds the+      -- unknown fields.+    , groupFieldNumber :: Maybe Int32+      -- ^ The number of the field that holds this message, if it is a group.+    } deriving Functor++data ServiceInfo = ServiceInfo+    { serviceName    :: Text+    , servicePackage :: Text+    , serviceMethods :: [MethodInfo]+    }++data MethodInfo = MethodInfo+    { methodName   :: Text+    , methodIdent  :: Text+    , methodInput  :: Text+    , methodOutput :: Text+    , methodClientStreaming :: Bool+    , methodServerStreaming :: Bool+    }++-- | Information about a single field of a proto message,+-- associated with how it is stored.+data PlainFieldInfo = PlainFieldInfo+    { plainFieldKind :: FieldKind+    , plainFieldInfo :: FieldInfo+    }++-- | Information about a single field of a proto message.+data FieldInfo = FieldInfo+    { fieldDescriptor  :: FieldDescriptorProto+    , fieldName :: FieldName+    }++-- | How a field is stored inside of the proto message.+data FieldKind+    = RequiredField+        -- ^ A proto2 required field.  Stored internally as a value.+    | OptionalValueField+        -- ^ A proto3 optional scalar field.  Stored internally as a+        -- value, and defaults to corresponding instance of fieldDefault.+    | OptionalMaybeField+        -- ^ An optional field where the "unset" and "defaulT" values+        -- are distinguishable.  Stored internally as a Maybe.+        -- In particular: proto2 optional fields, proto3 messages,+        -- and "oneof" fields.+    | RepeatedField FieldPacking+        -- ^ A field containing a sequence of values.+        -- Stored internally as either a list or a map, depending on+        -- whether the field's FieldDescriptorProto of the field has+        -- options.map_entry set.+    | MapField MapEntryInfo+       -- ^ A field containing a map of keys to values.+       -- Serialized as a repeated field of an autogenerated "entry"+       -- proto type, each instance of which contains a key-value pair.++data FieldPacking+    = NotPackable  -- ^ Cannot be packed (e.g., strings or messages).+    | Packable     -- ^ Can be decoded as packed, but should not be not be+                   --   encoded as packed by default.+    | Packed       -- ^ Can be decoded as packed, and should be encoded+                   --   as packed by default.+  deriving Eq++data OneofInfo = OneofInfo+    { oneofFieldName :: FieldName+    , oneofTypeName :: OccNameStr+      -- ^ The name of the sum type corresponding to this oneof.+    , oneofCases :: [OneofCase]+      -- ^ The individual fields that make up this oneof.+    }++data OneofCase = OneofCase+    { caseField :: FieldInfo+    , caseConstructorName :: OccNameStr+        -- ^ The constructor for building a 'oneofTypeName' from the+        -- value in this field.+    , casePrismName :: OccNameStr+        -- ^ The name for building 'Prism' definition.+    }++-- | The "entry" type for a map field is a proto message, autogenerated by+-- protoc, that has two fields: a key and a value. The map field should be+-- serialized like a repeated field of the entry messages.+data MapEntryInfo = MapEntryInfo+    { mapEntryTypeName :: OccNameStr+        -- ^ The Haskell name for this type.+    , keyField :: FieldInfo+        -- ^ The field of the entry type corresponding to the map key.+    , valueField :: FieldInfo+        -- ^ The field of the entry type corresponding to the map value.+    }++data FieldName = FieldName+    { overloadedName :: Symbol+      -- ^ The overloaded name of lenses that access this field.+      -- For example, if the field is called "foo_bar" in the .proto+      -- then @overloadedName == "fooBar"@ and we might generate+      -- @fooBar@ and/or @maybe'fooBar@ lenses to access the data.+      --+      -- May be shared between two different message data types in the same+      -- module.+    , haskellRecordFieldName :: OccNameStr+      -- ^ The Haskell name of this internal record field; for example,+      -- "_Foo'Bar'baz.  Unique within each module.+    }++-- | A string that refers to the name (in Haskell) of a lens that accesses a+-- field.+--+-- For example, in the signature of the overloaded lens+--+-- @+--     foo :: HasLens "foo" ... => Lens ...+-- @+--+-- a 'Symbol' is used to construct both the type-level argument to+-- @HasLens@ and the name of the function @foo@.+newtype Symbol = Symbol String+    deriving (Eq, Ord, IsString, Semigroup.Semigroup, Monoid)++nameFromSymbol :: Symbol -> OccNameStr+nameFromSymbol (Symbol s) = fromString s++-- | Construct a promoted, type-level string.+promoteSymbol :: Symbol -> HsType'+promoteSymbol (Symbol s) = stringTy s++-- | All the information needed to define or use a proto enum type.+data EnumInfo n = EnumInfo+    { enumName :: n+    , enumUnrecognized :: Maybe EnumUnrecognizedInfo+    , enumDescriptor :: EnumDescriptorProto+    , enumValues :: [EnumValueInfo n]+    } deriving Functor++-- | Information about the "unrecognized" case of an enum.+data EnumUnrecognizedInfo = EnumUnrecognizedInfo+    { unrecognizedName :: OccNameStr+    , unrecognizedValueName :: OccNameStr+    }++-- | Information about a single value case of a proto enum.+data EnumValueInfo n = EnumValueInfo+    { enumValueName :: n+    , enumValueDescriptor :: EnumValueDescriptorProto+    , enumAliasOf :: Maybe OccNameStr+        -- ^ If 'Nothing', we turn value into a normal constructor of the enum.+        -- If @'Just' n@, we're treating it as an alias of the constructor @n@+        -- (a PatternSynonym in Haskell).  This mirrors the behavior of the+        -- Java API.+    } deriving Functor++mapEnv :: (n -> n') -> Env n -> Env n'+mapEnv f = fmap $ fmap f++-- Lift a set of local definitions into references to a specific module.+qualifyEnv :: ModuleNameStr -> Env OccNameStr -> Env RdrNameStr+qualifyEnv m = mapEnv (qual m)++-- Lift a set of local definitions into references to the current module.+unqualifyEnv :: Env OccNameStr -> Env RdrNameStr+unqualifyEnv = mapEnv unqual++-- | Look up the Haskell name for the type of a given field (message or enum).+definedFieldType :: FieldDescriptorProto -> Env RdrNameStr -> Definition RdrNameStr+definedFieldType fd env = fromMaybe err $ Map.lookup (fd ^. #typeName) env+  where+    err = error $ "definedFieldType: Field type " ++ unpack (fd ^. #typeName)+                  ++ " not found in environment."++-- | Look up the Haskell name for the type of a given type.+definedType :: Text -> Env RdrNameStr -> Definition RdrNameStr+definedType ty = fromMaybe err . Map.lookup ty+  where+    err = error $ "definedType: Type " ++ unpack ty+                  ++ " not found in environment."++-- | Collect all the definitions in the given file (including definitions+-- nested in other messages), and assign Haskell names to them.+collectDefinitions :: FileDescriptorProto -> Env OccNameStr+collectDefinitions fd = let+    protoPrefix = case fd ^. #package of+        "" -> "."+        p -> "." <> p <> "."+    hsPrefix = ""+    in Map.fromList $ concatMap flatten $+            messageAndEnumDefs (fileSyntaxType fd)+                protoPrefix hsPrefix Map.empty+                (fd ^. #messageType) (fd ^. #enumType)++collectServices :: FileDescriptorProto -> [ServiceInfo]+collectServices fd = fmap (toServiceInfo $ fd ^. #package) $ fd ^. #service+  where+    toServiceInfo :: Text -> ServiceDescriptorProto -> ServiceInfo+    toServiceInfo pkg sd =+        ServiceInfo+            { serviceName    = sd ^. #name+            , servicePackage = pkg+            , serviceMethods = fmap toMethodInfo $ sd ^. #method+            }++    toMethodInfo :: MethodDescriptorProto -> MethodInfo+    toMethodInfo md =+        MethodInfo+            { methodName   = md ^. #name+            , methodIdent  = camelCase $ md ^. #name+            , methodInput  = fromString . T.unpack $ md ^. #inputType+            , methodOutput = fromString . T.unpack $ md ^. #outputType+            , methodClientStreaming = md ^. #clientStreaming+            , methodServerStreaming = md ^. #serverStreaming+            }++messageAndEnumDefs ::+    SyntaxType -> Text -> String+    -> GroupMap+        -- ^ Group fields of the parent message (if any).+    -> [DescriptorProto]+    -> [EnumDescriptorProto]+    -> Forest (Text, Definition OccNameStr)+        -- ^ Organized as a list of trees, to make it possible for callers+        -- to get the immediate child nested types.+messageAndEnumDefs syntaxType protoPrefix hsPrefix groups messages enums+    = map (messageDefs syntaxType protoPrefix hsPrefix groups) messages+        ++ map+            (flip Node [] -- Enums have no sub-definitions+                . enumDef syntaxType protoPrefix hsPrefix)+            enums++-- | Generate the definitions for a message and its nested types (if any).+messageDefs :: SyntaxType -> Text -> String -> GroupMap -> DescriptorProto+            -> Tree (Text, Definition OccNameStr)+messageDefs syntaxType protoPrefix hsPrefix groups d+    = Node (protoName, thisDef) subDefs+  where+    protoName = protoPrefix <> d ^. #name+    hsPrefix' = hsPrefix ++ hsName (d ^. #name) ++ "'"+    allFields = groupFieldsByOneofIndex (d ^. #field)+    thisDef =+        Message MessageInfo+            { messageName = fromString $ hsPrefix ++ hsName (d ^. #name)+              -- Set the constructor name to not conflict with enum values.+            , messageConstructorName =+                 fromString $ hsPrefix ++ hsName (d ^. #name)+                                ++ "'_constructor"+            , messageDescriptor = d+            , messageFields =+                  map (liftA2 PlainFieldInfo+                              (fieldKind syntaxType mapEntries) (fieldInfo hsPrefix'))+                      $ Map.findWithDefault [] Nothing allFields+            , messageOneofFields = collectOneofFields hsPrefix' d allFields+            , messageUnknownFields =+                  fromString $ "_" ++ hsPrefix' ++ "_unknownFields"+            , groupFieldNumber = Map.lookup protoName groups+            }+    subDefs = messageAndEnumDefs+                    syntaxType+                    (protoName <> ".")+                    hsPrefix'+                    (collectGroupFields $ d ^. #field)+                    (d ^. #nestedType)+                    (d ^. #enumType)+    -- For efficiency, only look for map entries within the immediate+    -- nested types, rather than recursively searching through all of them.+    mapEntries = collectMapEntries $ map rootLabel subDefs++-- | If this type is a map entry, retrieves the relevant information+-- along with the proto name of this type.+mapEntryInfo :: Definition OccNameStr -> Maybe MapEntryInfo+mapEntryInfo (Message m)+    | messageDescriptor m ^. #options . #mapEntry+    , [keyFd, valueFd] <- messageFields m+    = Just MapEntryInfo+                { mapEntryTypeName = messageName m+                , keyField = plainFieldInfo keyFd+                , valueField = plainFieldInfo valueFd+                }+mapEntryInfo _ = Nothing++-- | Returns a map whose keys are the proto type name of the entry message.+collectMapEntries :: [(Text, Definition OccNameStr)] -> Map.Map Text MapEntryInfo+collectMapEntries defs =+    Map.fromList+        [(protoName, e) | (protoName, d) <- defs, Just e <- [mapEntryInfo d]]++-- | A map whose keys are the proto type names of the groups in a message,+-- and values are the field numbers for those groups.+-- (Every group corresponds to exactly one message field.)+type GroupMap = Map.Map Text Int32++collectGroupFields :: [FieldDescriptorProto] -> GroupMap+collectGroupFields fs = Map.fromList+    [ (f ^. #typeName, f ^. #number)+    | f <- fs+    , f ^. #type' == FieldDescriptorProto'TYPE_GROUP+      ]++fieldInfo :: String -> FieldDescriptorProto -> FieldInfo+fieldInfo hsPrefix f = FieldInfo+                            { fieldDescriptor = f+                            , fieldName = mkFieldName hsPrefix $ f ^. #name+                            }++fieldKind ::+    SyntaxType -> Map.Map Text MapEntryInfo -> FieldDescriptorProto+    -> FieldKind+fieldKind syntaxType mapEntries f = case f ^. #label of+            FieldDescriptorProto'LABEL_OPTIONAL+                | syntaxType == Proto3+                    && f ^. #type' /= FieldDescriptorProto'TYPE_MESSAGE+                    -> OptionalValueField+                | otherwise -> OptionalMaybeField+            FieldDescriptorProto'LABEL_REQUIRED -> RequiredField+            FieldDescriptorProto'LABEL_REPEATED+                | Just entryInfo <- Map.lookup (f ^. #typeName) mapEntries+                    -> MapField entryInfo+                | otherwise -> RepeatedField packed+  where+    packed+        | f ^. #type' `elem` unpackableTypes = NotPackable+        | packedByDefault = Packed+        | otherwise = Packable+    -- If the "packed" attribute isn't set, then default to packed if proto3.+    -- Unfortunately, protoc doesn't implement this logic for us automatically.+    packedByDefault = fromMaybe (syntaxType == Proto3)+                        $ f ^. #options . #maybe'packed+    unpackableTypes =+        [ FieldDescriptorProto'TYPE_MESSAGE+        , FieldDescriptorProto'TYPE_GROUP+        , FieldDescriptorProto'TYPE_STRING+        , FieldDescriptorProto'TYPE_BYTES+        ]++collectOneofFields+    :: String -> DescriptorProto -> Map.Map (Maybe Int32) [FieldDescriptorProto]+    -> [OneofInfo]+collectOneofFields hsPrefix d allFields+    = zipWith oneofInfo [0..] $ d ^.. #oneofDecl . traverse . #name+  where+    oneofInfo idx n = OneofInfo+        { oneofFieldName = mkFieldName hsPrefix n+        , oneofTypeName = fromString $ hsPrefix ++ hsNameUnique subdefTypes n+        , oneofCases = map oneofCase+                          $ Map.findWithDefault [] (Just idx)+                              allFields+        }+    oneofCase f =+        let consName = hsPrefix ++ hsNameUnique subdefCons (f ^. #name)+        in OneofCase+            { caseField = fieldInfo hsPrefix f+            , caseConstructorName =+                  -- Note: oneof case constructors aren't prefixed+                  -- by the oneof name; field names (even inside+                  -- of a oneof) are unique within a message.+                  fromString consName+            , casePrismName =+                  fromString $ "_" ++ consName+            }+    -- Make a name that doesn't overlap with those already defined by submessages+    -- or subenums.+    hsNameUnique ns n+        | n' `elem` ns = n' ++ "'"+        | otherwise = n'+      where+        n' = hsName $ camelCase n+    -- The Haskell "type" namespace+    subdefTypes = Set.fromList $ map hsName+                    $ toListOf (#nestedType . traverse . #name) d+                    ++ toListOf (#enumType . traverse . #name) d+    -- The Haskell "expression" namespace (i.e., constructors)+    subdefCons = Set.fromList $ map hsName+                    $ toListOf (#nestedType . traverse . #name) d+                    ++ toListOf (#enumType . traverse . #value . traverse . #name) d++-- | Group fields by the index of the oneof field that they belong to.+-- (Or 'Nothing' if they don't belong to a oneof.)+groupFieldsByOneofIndex+    :: [FieldDescriptorProto] -> Map.Map (Maybe Int32) [FieldDescriptorProto]+groupFieldsByOneofIndex =+    fmap reverse+    . Map.fromListWith (++)+    . fmap (\f -> (f ^. #maybe'oneofIndex, [f]))++hsName :: Text -> String+hsName = unpack . capitalize++mkFieldName :: String -> Text -> FieldName+mkFieldName hsPrefix n = FieldName+                    { overloadedName = fromString n'+                    , haskellRecordFieldName = fromString $ "_" ++ hsPrefix ++ n'+                    }+      where+        n' = fieldBaseName n++-- | Get the name in Haskell of a proto field, taking care of camel casing and+-- clashes with language keywords.  Doesn't handle the name prefix of the+-- containing type.+fieldBaseName :: Text -> String+fieldBaseName = unpack . disambiguate . camelCase+  where+    disambiguate s+        | s `Set.member` reservedKeywords = s <> "'"+        | otherwise = s++camelCase :: Text -> Text+camelCase s =+    -- Preserve any initial underlines (e.g., "_foo_bar" -> "_fooBar").+    let (underlines, rest) = T.span (== '_') s+    in case splitOn "_" rest of+        -- splitOn always returns a list with at least one element.+        [] -> error $ "camelCase: splitOn returned empty list: "+                        ++ show rest+        [""] -> error $ "camelCase: name consists only of underscores: "+                            ++ show s+        s':ss -> T.concat $ underlines : lowerInitialChars s' : map capitalize ss++-- | Lower-case all initial upper-case characters.+-- For example: "Foo" -> "foo", "FooBar" -> "fooBar", "FOObar" -> "foobar"+lowerInitialChars :: Text -> Text+lowerInitialChars s = toLower pre <> post+  where (pre, post) = T.span isUpper s++-- | A list of reserved keywords that aren't valid as variable names.+reservedKeywords :: Set.Set Text+reservedKeywords = Set.fromList $+    -- Haskell2010 keywords:+    -- https://www.haskell.org/onlinereport/haskell2010/haskellch2.html#x7-180002.4+    -- We don't include keywords that are allowed to be variable names,+    -- in particular: "as", "forall", and "hiding".+    [ "case"+    , "class"+    , "data"+    , "default"+    , "deriving"+    , "do"+    , "else"+    , "foreign"+    , "if"+    , "import"+    , "in"+    , "infix"+    , "infixl"+    , "infixr"+    , "instance"+    , "let"+    , "module"+    , "newtype"+    , "of"+    , "then"+    , "type"+    , "where"+    ]+    ++  -- Nonstandard extensions+    [ "mdo"   -- RecursiveDo+    , "rec"   -- Arrows, RecursiveDo+    , "pattern"  -- PatternSynonyms+    , "proc"  -- Arrows+    ]++-- | Generate the definition for an enum type.+enumDef :: SyntaxType -> Text -> String -> EnumDescriptorProto+          -> (Text, Definition OccNameStr)+enumDef syntaxType protoPrefix hsPrefix d = let+    mkText n = protoPrefix <> n+    mkHsName n = fromString $ hsPrefix ++ case hsName n of+      ('_':xs) -> 'X':xs+      xs       -> xs+    in (mkText (d ^. #name)+       , Enum EnumInfo+            { enumName = mkHsName (d ^. #name)+            , enumUnrecognized = if syntaxType == Proto2+                    then Nothing+                    else Just EnumUnrecognizedInfo+                            { unrecognizedName+                                = mkHsName (d ^. #name <> "'Unrecognized")+                            , unrecognizedValueName+                                = mkHsName (d ^. #name <> "'UnrecognizedValue")+                            }+            , enumDescriptor = d+            , enumValues = collectEnumValues mkHsName $ d ^. #value+            })++-- | Generate the definitions for each enum value.  In particular, decide+-- whether it's a true constructor or a PatternSynonym to another+-- constructor.+--+-- Like Java, we treat the first case of each numeric value as the "real"+-- constructor, and subsequent cases as synonyms.+collectEnumValues :: (Text -> OccNameStr) -> [EnumValueDescriptorProto]+                  -> [EnumValueInfo OccNameStr]+collectEnumValues mkHsName = snd . mapAccumL helper Map.empty+  where+    helper :: Map.Map Int32 OccNameStr -> EnumValueDescriptorProto+           -> (Map.Map Int32 OccNameStr, EnumValueInfo OccNameStr)+    helper seenNames v+        | Just n' <- Map.lookup k seenNames = (seenNames, mkValue (Just n'))+        | otherwise = (Map.insert k n seenNames, mkValue Nothing)+      where+        mkValue = EnumValueInfo n v+        n = mkHsName (v ^. #name)+        k = v ^. #number++-- Haskell types must start with an uppercase letter, so we capitalize message+-- and enum names.+-- OccNameStr collisions will show up as build errors in the generated haskell file.+capitalize :: Text -> Text+capitalize s+    | Just (c, s') <- uncons s = cons (toUpper c) s'+    | otherwise = s++overloadedFieldName :: FieldInfo -> Symbol+overloadedFieldName = overloadedName . fieldName
+ app/Data/ProtoLens/Compiler/Generate.hs view
@@ -0,0 +1,1054 @@+-- Copyright 2016 Google Inc. All Rights Reserved.+--+-- Use of this source code is governed by a BSD-style+-- license that can be found in the LICENSE file or at+-- https://developers.google.com/open-source/licenses/bsd++-- | This module builds the actual, generated Haskell file+-- for a given input .proto file.+{-# LANGUAGE CPP #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+module Data.ProtoLens.Compiler.Generate(+    generateModule,+    ) where+++import Control.Arrow (second)+import qualified Data.Foldable as F+import qualified Data.List as List+import qualified Data.Map as Map+import Data.Maybe (isJust)+#if !MIN_VERSION_base(4,11,0)+import Data.Semigroup ((<>))+#endif+import Data.Ord (comparing)+import qualified Data.Set as Set+import Data.String (fromString)+import Data.Text (unpack)+import qualified Data.Text as T+import Data.Tuple (swap)+import GHC.SourceGen+import HsSyn (ideclName, ideclAs)+import Module (moduleNameString, mkModuleName)+import qualified Outputable+import SrcLoc (unLoc, noLoc)+import Lens.Family2 ((^.))+import Text.Printf (printf)++import Proto.Google.Protobuf.Descriptor+    ( EnumValueDescriptorProto+    , FieldDescriptorProto+    , FieldDescriptorProto'Type(..)+    )++import Data.ProtoLens.Compiler.Definitions+import Data.ProtoLens.Compiler.Generate.Commented+import Data.ProtoLens.Compiler.Generate.Encoding+import Data.ProtoLens.Compiler.Generate.Field+    ( hsFieldType+    , hsFieldVectorType+    )++-- Whether to import the "Runtime" modules or the originals;+-- e.g., Data.ProtoLens.Runtime.Data.Map vs Data.Map.+data UseRuntime = UseRuntime | UseOriginal+    deriving (Eq, Read)++-- | Generate a Haskell module for the given input file(s).+-- input contains all defined names, incl. those in this module+generateModule :: ModuleNameStr+               -> [ModuleNameStr]  -- ^ The imported modules+               -> [ModuleNameStr]  -- ^ The publicly imported modules+               -> Env OccNameStr      -- ^ Definitions in this file+               -> Env RdrNameStr     -- ^ Definitions in the imported modules+               -> [ServiceInfo]+               -> [CommentedModule]+generateModule modName imports publicImports definitions importedEnv services+    = [ CommentedModule pragmas+            (module' (Just modName)+                (Just $ serviceExports+                        ++ concatMap generateExports (Map.elems definitions)+                        ++ map moduleContents publicImports)+                (mainImports ++ sharedImports+                    ++ map importQualified (imports List.\\ publicImports)+                    ++ map import' publicImports)+                [])+          $ (concatMap generateDecls $ Map.toList definitions)+         ++ map uncommented (concatMap (generateServiceDecls env) services)+      , CommentedModule pragmas+            (module' (Just fieldModName) Nothing+                (sharedImports ++ map importQualified imports) [])+          $ map uncommented+          $ concatMap generateFieldDecls allLensNames+      ]+  where+    fieldModName = fromString $ moduleNameString (unModuleNameStr modName) ++ "_Fields"+    pragmas =+          [ languagePragma $ List.intercalate ", " $ map fromString+              ["ScopedTypeVariables", "DataKinds", "TypeFamilies",+               "UndecidableInstances", "GeneralizedNewtypeDeriving",+               "MultiParamTypeClasses", "FlexibleContexts", "FlexibleInstances",+               "PatternSynonyms", "MagicHash", "NoImplicitPrelude",+               "DataKinds", "BangPatterns", "TypeApplications"]+              -- Allow unused imports in case we don't import anything from+              -- Data.Text, Data.Int, etc.+          , optionsGhcPragma "-Wno-unused-imports"+            -- haskell-src-exts doesn't support exporting `Foo(..., A, B)`+            -- in a single entry, so we use two: `Foo(..)` and `Foo(A, B)`.+          , optionsGhcPragma "-Wno-duplicate-exports"+            -- Don't warn if empty "import public" modules are reexported.+          , optionsGhcPragma "-Wno-dodgy-exports"+          ]+    mainImports = map (reexported . importQualified)+                    [ "Control.DeepSeq", "Data.ProtoLens.Prism" ]+    sharedImports = map (reexported . importQualified)+              [ "Prelude", "Data.Int", "Data.Monoid", "Data.Word"+              , "Data.ProtoLens"+              , "Data.ProtoLens.Encoding.Bytes"+              , "Data.ProtoLens.Encoding.Growing"+              , "Data.ProtoLens.Encoding.Parser.Unsafe"+              , "Data.ProtoLens.Encoding.Wire"+              , "Data.ProtoLens.Field"+              , "Data.ProtoLens.Message.Enum"+              , "Data.ProtoLens.Service.Types"+              , "Lens.Family2", "Lens.Family2.Unchecked"+              , "Data.Text",  "Data.Map", "Data.ByteString", "Data.ByteString.Char8"+              , "Data.Text.Encoding"+              , "Data.Vector"+              , "Data.Vector.Generic"+              , "Data.Vector.Unboxed"+              , "Text.Read"+              ]+    env = Map.union (unqualifyEnv definitions) importedEnv+    generateDecls (protoName, Message m)+        = generateMessageDecls fieldModName env (stripDotPrefix protoName) m+       ++ map uncommented (concatMap (generatePrisms env) (messageOneofFields m))+    generateDecls (_, Enum e) = map uncommented $ generateEnumDecls e+    generateExports (Message m) = generateMessageExports m+                               ++ concatMap generatePrismExports (messageOneofFields m)+    generateExports (Enum e) = generateEnumExports e+    serviceExports = fmap generateServiceExports services+    allLensNames = F.toList $ Set.fromList+        [ lensSymbol inst+        | Message m <- Map.elems definitions+        , info <- allMessageFields env m+        , inst <- recordFieldLenses info+        ]+    -- The Env uses the convention that Message names are prefixed with '.'+    -- (since that's how the FileDescriptorProto refers to them).+    -- Strip that off when defining MessageDescriptor.messageName.+    stripDotPrefix s+        | Just ('.', s') <- T.uncons s = s'+        | otherwise = s++allMessageFields :: Env RdrNameStr -> MessageInfo OccNameStr -> [RecordField]+allMessageFields env info =+    map (plainRecordField env) (messageFields info)+        ++ map (oneofRecordField env) (messageOneofFields info)++{- We import modules as follows:++1) Modules from proto-lens-runtime: import qualified, strip the prefix:+     import qualified Data.ProtoLens.Runtime.Data.Text as Data.Text++2) Modules from "import" declarations: import qualified:+     import qualified Proto.Foo.Bar++3) Modules from "import public" declarations: import unqualified:+     import Proto.Foo.Bar+   To reexport the imported declarations from the current module via+     module ... (module Proto.Foo.Bar)+   the module Proto.Foo.Bar needs to be unqualified.+   Alternately we could explicitly enumerate every definition being reexported, but+   that would lead to less readable Haddocks and also make codegen a little more+   complicated.+-}++importQualified :: ModuleNameStr -> ImportDecl'+importQualified = qualified' . import'++type ModifyImports = ImportDecl' -> ImportDecl'++reexported :: ModifyImports+reexported imp = imp { ideclName = noLoc m', ideclAs = Just m }+  where+    m' = mkModuleName $ "Data.ProtoLens.Runtime." ++ moduleNameString (unLoc m)+    m = ideclName imp++messageComment :: ModuleNameStr -> OccNameStr -> [RecordField] -> Outputable.SDoc+messageComment fieldModName n fields =+    Outputable.vcat+        $ [Outputable.text "Fields :", ""]+            ++ map item (concatMap recordFieldLenses fields)+  where+    item :: LensInstance -> Outputable.SDoc+    item l = Outputable.text (printf "    * '%s.%s' @:: "+                 (moduleNameStrToString fieldModName)+                 (occNameStrToString $ nameFromSymbol $ lensSymbol l))+             Outputable.<>+                 (Outputable.ppr $ var "Lens'" @@ t @@ (lensFieldType l))+             Outputable.<> Outputable.char '@'+    t = var (unqual n)++generateMessageExports :: MessageInfo OccNameStr -> [IE']+generateMessageExports m =+    -- Hide the message contructor, but expose "oneof" case constructors.+    thingWith (unqual $ messageName m) []+        : map (thingAll . unqual . oneofTypeName)+                (messageOneofFields m)++generateServiceDecls :: Env RdrNameStr -> ServiceInfo -> [HsDecl']+generateServiceDecls env si =+    -- data MyService = MyService+    [ data' serverDataName []+      [ recordCon serverDataName []+      ]+      []+    ] +++    -- instance Data.ProtoLens.Service.Types.Service MyService where+    --     type ServiceName    MyService = "myService"+    --     type ServicePackage MyService = "some.package"+    --     type ServiceMethods MyService = '["normalMethod", "streamingMethod"]+    [ instance' (var "Data.ProtoLens.Service.Types.Service" @@ serverRecordType)+        [ tyFamInst "ServiceName" [serverRecordType]+                 . stringTy . T.unpack $ serviceName si+        , tyFamInst "ServicePackage" [serverRecordType]+                 . stringTy . T.unpack $ servicePackage si+        , tyFamInst "ServiceMethods" [serverRecordType]+                 $ listPromotedTy+                      [ stringTy . T.unpack $ methodIdent m+                      | m <- List.sortBy (comparing methodIdent) $ serviceMethods si+                      ]+        ]+    ] +++    -- instance Data.ProtoLens.Service.Types.HasMethodImpl MyService "normalMethod" where+    --     type MethodInput       MyService "normalMethod" = Foo+    --     type MethodOutput      MyService "normalMethod" = Bar+    --     type IsClientStreaming MyService "normalMethod" = 'False+    --     type IsServerStreaming MyService "normalMethod" = 'False+    [ instance' (var "Data.ProtoLens.Service.Types.HasMethodImpl" @@ serverRecordType @@ instanceHead)+        [ tyFamInst "MethodName" [serverRecordType, instanceHead]+                 . stringTy . T.unpack $ methodName m+        , tyFamInst "MethodInput" [serverRecordType, instanceHead]+                 . lookupType $ methodInput m+        , tyFamInst "MethodOutput" [serverRecordType, instanceHead]+                 . lookupType $ methodOutput m+        , tyFamInst "MethodStreamingType" [serverRecordType, instanceHead]+                 . tyPromotedVar+                 $ case (methodClientStreaming m, methodServerStreaming m) of+                     (False, False) -> "Data.ProtoLens.Service.Types.NonStreaming"+                     (True,  False) -> "Data.ProtoLens.Service.Types.ClientStreaming"+                     (False, True)  -> "Data.ProtoLens.Service.Types.ServerStreaming"+                     (True,  True)  -> "Data.ProtoLens.Service.Types.BiDiStreaming"+        ]+    | m <- serviceMethods si+    , let instanceHead = stringTy (T.unpack $ methodIdent m)+    ]+  where+    serverDataName = fromString . T.unpack $ serviceName si+    serverRecordType = var $ unqual serverDataName++    lookupType t = case definedType t env of+                       Message msg -> var $ messageName msg+                       Enum _ -> error "Service must have a message type"+++generateMessageDecls :: ModuleNameStr -> Env RdrNameStr -> T.Text -> MessageInfo OccNameStr -> [CommentedDecl]+generateMessageDecls fieldModName env protoName info =+    -- data Bar = Bar {+    --    foo :: Baz+    -- }+    [ commented (messageComment fieldModName (messageName info) allFields)+        $ data' dataName []+            [recordCon (messageConstructorName info) $+                [ (recordFieldName f, strict $ field $ recordFieldType f)+                | f <- allFields+                ]+                ++ [(messageUnknownFields info, strict $ field $ var "Data.ProtoLens.FieldSet")]+            ]+            [deriving' [var "Prelude.Eq", var "Prelude.Ord"]]+    -- instance Show Bar where+    --   showsPrec __x __s = showChar '{' (showString (showMessageShort __x) (showChar '}' s))+    , uncommented $+        instance' (var "Prelude.Show" @@ dataType)+            [funBind "showsPrec" $ match [bvar "_", bvar "__x", bvar "__s"]+                $ var "Prelude.showChar" @@ char '{'+                    @@ (var "Prelude.showString"+                            @@ (var "Data.ProtoLens.showMessageShort" @@ var "__x")+                        @@ (var "Prelude.showChar" @@ char '}' @@ var "__s"))]+    ] +++    -- oneof field data type declarations+    -- proto: message Foo {+    --          oneof bar {+    --            float c = 1;+    --            Sub s = 2;+    --          }+    --        }+    -- haskell: data Foo'Bar = Foo'Bar'c !Prelude.Float+    --                       | Foo'Bar's !Sub+    [ uncommented $ data' (oneofTypeName oneofInfo) []+      [ prefixCon consName [strict $ field $ hsFieldType env f]+      | c <- oneofCases oneofInfo+      , let f = caseField c+      , let consName = caseConstructorName c+      ]+      [deriving' [var "Prelude.Show", var "Prelude.Eq", var "Prelude.Ord"]]+    | oneofInfo <- messageOneofFields info+    ] +++    -- instance HasField Foo "foo" Bar+    --   fieldOf _ = ...+    -- Note: for optional fields, this generates an instance both for "foo" and+    -- for "maybe'foo" (see plainRecordField below).+    [ uncommented $ instance'+        (var "Data.ProtoLens.Field.HasField" @@ dataType @@ sym @@ t)+            [funBind "fieldOf" $ match [wildP] $+                var "Prelude.."+                    @@ rawFieldAccessor (unqual $ recordFieldName li)+                    @@ lensExp i]+    | li <- allFields+    , i <- recordFieldLenses li+    , let t = lensFieldType i+    , let sym = promoteSymbol $ lensSymbol i+    ]+    +++    -- instance Message.Message Bar where+    [ uncommented $ instance' (var "Data.ProtoLens.Message" @@ dataType)+        $ messageInstance env protoName info+    -- instance NFData Bar where+    , uncommented $ instance' (var "Control.DeepSeq.NFData" @@ dataType)+        [valBind "rnf" $ messageRnfExpr info]+    ] +++    -- instance NFData Foo'Bar where+    [ uncommented $+        instance' (var "Control.DeepSeq.NFData" @@+                        var (unqual $ oneofTypeName o))+        [funBinds "rnf" $ map oneofRnfMatch $ oneofCases o]+    | o <- messageOneofFields info+    ]+  where+    dataType = var $ unqual dataName+    dataName = messageName info+    allFields = allMessageFields env info++-- oneof Prism declarations+-- proto: message Foo {+--          oneof bar {+--            float c = 1;+--            Sub s = 2;+--          }+--        }+-- haskell: _Foo'C :: Prism' Bar'C Float+--          _Foo'S :: Prism' Bar'S Sub+--+--  example of the function definition for _Foo'C:+-- _Foo'C :: Prism' Bar'C Float+-- _Foo'C+--   = prism' Bar'C+--       (\ p__ ->+--          case p__ of+--              Bar'C p__val -> Prelude.Just p__val+--              _otherwise -> Prelude.Nothing)+generatePrisms :: Env RdrNameStr -> OneofInfo -> [HsDecl']+generatePrisms env oneofInfo =+    if length cases > 1+       then concatMap (generatePrism altOtherwise) cases+       else concatMap (generatePrism mempty) cases+    where+        cases = oneofCases oneofInfo+        altOtherwise = [match [bvar "_otherwise"] (var "Prelude.Nothing")]++        -- Generate type signature+        -- e.g. Prism' Bar'C Float+        generateTypeSig f funName =+            typeSig funName $ var "Data.ProtoLens.Prism.Prism'"+                                -- The oneof sum type name+                             @@ (var . unqual $ oneofTypeName oneofInfo)+                                -- The field contained in the sum+                             @@ (hsFieldType env f)+        -- Generate function definition+        -- Prism' is constructed with Constructor for building value+        -- and Deconstructor and wrapping in Just for getting value+        generateFunDef :: [RawMatch] -> OccNameStr -> HsExpr'+        generateFunDef otherwiseCase consName =+               var "Data.ProtoLens.Prism.prism'"+               -- Sum type constructor+            @@ var (unqual consName)+               -- Case deconstruction+            @@ (lambda [bvar "p__"] $+                    case' (var "p__") $+                       [ match [conP (unqual consName) [bvar "p__val"]]+                             $ var "Prelude.Just" @@ var "p__val"+                       ]+                       -- We want to generate the otherwise case+                       -- depending on the amount of sum type cases there are+                       ++ otherwiseCase+               )+        generatePrism :: [RawMatch] -> OneofCase -> [HsDecl']+        generatePrism otherwiseCase oneofCase =+            let consName = caseConstructorName oneofCase+                prismName = casePrismName oneofCase+            in [ generateTypeSig (caseField oneofCase) prismName+               , valBind prismName $ generateFunDef otherwiseCase consName+               ]++generatePrismExports :: OneofInfo -> [IE']+generatePrismExports = map (var . unqual . casePrismName) . oneofCases++generateEnumExports :: EnumInfo OccNameStr -> [IE']+generateEnumExports e = [thingAll n, thingWith n aliases] ++ proto3NewType+  where+    n = unqual $ enumName e+    aliases = [enumValueName v | v <- enumValues e, needsManualExport v]+    needsManualExport v = isJust (enumAliasOf v)+    proto3NewType = case enumUnrecognized e of+        Just u -> [var . unqual $ unrecognizedValueName u]+        Nothing -> []++generateServiceExports :: ServiceInfo -> IE'+generateServiceExports si = thingAll $ unqual $ fromString $ T.unpack $ serviceName si++generateEnumDecls :: EnumInfo OccNameStr -> [HsDecl']+generateEnumDecls info =+    -- Proto3-only:+    -- newtype FooEnum'UnrecognizedValue = FooEnum'UnrecognizedValue Data.Int.Int32+    --   deriving (Prelude.Eq, Prelude.Ord, Prelude.Show, Prelude.Read)+    [ newtype' (unrecognizedValueName u) []+       (prefixCon (unrecognizedValueName u) [field $ var "Data.Int.Int32"])+       [deriving' [var "Prelude.Eq", var "Prelude.Ord", var "Prelude.Show"]]+    | Just u <- [unrecognized]+    ]+    ++++    -- data FooEnum+    --     = Enum1+    --     | Enum2+    --     | FooEnum'Unrecognized !FooEnum'UnrecognizedValue+    --   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord, Prelude.Read)+    [ data' dataName []+        (  (flip prefixCon [] <$> constructorNames)+        ++ [ prefixCon (unrecognizedName u)+                [strict $ field $ var $ unqual $ unrecognizedValueName u]+           | Just u <- [unrecognized]+           ]+        )+        [deriving' [var "Prelude.Show", var "Prelude.Eq", var "Prelude.Ord"]]++    -- instance Data.ProtoLens.MessageEnum FooEnum where+    --       maybeToEnum 0 = Prelude.Just Enum1+    --       maybeToEnum 3 = Prelude.Just Enum2+    --       maybeToEnum k+    --         -- Proto3:+    --         = Prelude.Just+    --             (FooEnum'Unrecognized+    --               (FooEnum'UnrecognizedValue (Prelude.fromIntegral k)))+    --         -- Proto2:+    --         = Nothing+    --+    --       showEnum Foo'Enum2 = "Enum2"+    --       showEnum Foo'Enum1 = "Enum1"+    --       showEnum (FooEnum'Unrecognized (FooEnum'UnrecognizedValue k))+    --         = Prelude.show k+    --+    --       readEnum k+    --           | k == "Enum2a" = Prelude.Just Enum2a -- alias+    --           | k == "Enum2" = Prelude.Just Enum2+    --           | k == "Enum1" = Prelude.Just Enum1+    --       readEnum k = Text.Read.readMaybe k >>= maybeToEnum+    , instance' (var "Data.ProtoLens.MessageEnum" @@ dataType)+        [ funBinds "maybeToEnum" $+            [ match [int k] $ var "Prelude.Just" @@ var (unqual c)+            | (c, k) <- constructorNumbers+            ]+            +++            [ case enumUnrecognized info of+                Nothing -> match [wildP] $ var "Prelude.Nothing"+                Just u -> match [bvar "k"]+                            $ var "Prelude.Just" @@+                                (var (unqual $ unrecognizedName u)+                                @@ (var (unqual $ unrecognizedValueName u)+                                    @@ (var "Prelude.fromIntegral" @@ var "k")+                                    )+                                )+            ]+        , funBinds "showEnum" $+            [ match [conP_ (unqual n)] $ string pn+            | v <- filter (null . enumAliasOf) $ enumValues info+            , let n = enumValueName v+            , let pn = T.unpack $ enumValueDescriptor v ^. #name+            ] +++            [ match [conP (unqual $ unrecognizedName u)+                        [conP (unqual $ unrecognizedValueName u) [bvar "k"]]+                    ]+                $ var "Prelude.show" @@ var "k"+            | Just u <- [unrecognized]+            ]+        , funBind "readEnum" $ matchGRHSs [bvar "k"] $ guardedRhs $+              [ guard (var "Prelude.==" @@ var "k" @@ string pn)+                    $ var "Prelude.Just" @@ var (unqual n)+              | v <- enumValues info+              , let n = enumValueName v+              , let pn = T.unpack $ enumValueDescriptor v ^. #name+              ]+              ++ [guard (var "Prelude.otherwise") $ var "Prelude.>>="+                                      @@ (var "Text.Read.readMaybe" @@ var "k")+                                      @@ var "Data.ProtoLens.maybeToEnum"]+        ]++      -- instance Bounded Foo where+      --    minBound = Foo1+      --    maxBound = FooN+      , instance' (var "Prelude.Bounded" @@ dataType)+          [ valBind "minBound" $ var $ unqual minBoundName+          , valBind "maxBound" $ var $ unqual maxBoundName+          ]++      -- instance Enum Foo where+      --    toEnum k = maybe (error ("Foo.toEnum: unknown argument for enum Foo: "+      --                                ++ show k))+      --                  id (maybeToEnum k)+      --    fromEnum Foo1 = 1+      --    fromEnum Foo2 = 2+      --    ..+      --    succ FooN = error "Foo.succ: bad argument FooN."+      --    succ Foo1 = Foo2+      --    succ Foo2 = Foo3+      --    ..+      --    pred Foo1 = error "Foo.succ: bad argument Foo1."+      --    pred Foo2 = Foo1+      --    pred Foo3 = Foo2+      --    ..+      --    enumFrom = messageEnumFrom+      --    enumFromTo = messageEnumFromTo+      --    enumFromThen = messageEnumFromThen+      --    enumFromThenTo = messageEnumFromThenTo+      , instance' (var "Prelude.Enum" @@ dataType)+        [funBind "toEnum" $ match [bvar "k__"]+                  $ var "Prelude.maybe" @@ errorMessageExpr @@ var "Prelude.id"+                        @@ (var "Data.ProtoLens.maybeToEnum" @@ var "k__")+        , funBinds "fromEnum" $+            [ match [conP_ (unqual c)] $ int k+            | (c, k) <- constructorNumbers+            ]+            +++            [ match [conP (unqual $ unrecognizedName u)+                                [conP (unqual $ unrecognizedValueName u) [bvar "k"]]+                                ]+                    $ var "Prelude.fromIntegral" @@ var "k"+            | Just u <- [unrecognized]+            ]+        , succDecl "succ" maxBoundName succPairs+        , succDecl "pred" minBoundName $ map swap succPairs+        , valBind "enumFrom" $ var "Data.ProtoLens.Message.Enum.messageEnumFrom"+        , valBind "enumFromTo" $ var "Data.ProtoLens.Message.Enum.messageEnumFromTo"+        , valBind "enumFromThen" $ var "Data.ProtoLens.Message.Enum.messageEnumFromThen"+        , valBind "enumFromThenTo"+            $ var "Data.ProtoLens.Message.Enum.messageEnumFromThenTo"+        ]++    -- instance Data.ProtoLens.FieldDefault Foo where+    --   fieldDefault = FirstEnumValue+    , instance' (var "Data.ProtoLens.FieldDefault" @@ dataType)+        [valBind "fieldDefault" $ defaultCon]++    -- instance NFData Foo where+    --   rnf x__ = seq x__ ()+    -- (Trivial since enum types are already strict)+    , instance' (var "Control.DeepSeq.NFData" @@ dataType)+        [ funBind "rnf" $ match [bvar "x__"]+            $ var "Prelude.seq" @@ var "x__" @@ var "()" ]+    ] ++++    -- pattern Enum2a :: FooEnum+    -- pattern Enum2a = Enum2+    concat+        [ [ patSynSig aliasName dataType+          , patSynBind aliasName [] (bvar originalName)+          ]+        | EnumValueInfo+            { enumValueName = aliasName+            , enumAliasOf = Just originalName+            } <- enumValues info+        ]++  where+    EnumInfo { enumName = dataName+             , enumUnrecognized = unrecognized+             , enumDescriptor = ed+             } = info+    errorMessage = "toEnum: unknown value for enum " ++ unpack (ed ^. #name)+                      ++ ": "++    errorMessageExpr = var "Prelude.error"+                          @@ (var "Prelude.++" @@ string errorMessage+                              @@ (var "Prelude.show" @@ var "k__"))++    dataType = var $ unqual dataName++    constructors :: [(OccNameStr, EnumValueDescriptorProto)]+    constructors = List.sortBy (comparing ((^. #number) . snd))+                            [(n, d) | EnumValueInfo+                                { enumValueName = n+                                , enumValueDescriptor = d+                                , enumAliasOf = Nothing+                                } <- enumValues info+                            ]+    constructorNames = map fst constructors++    defaultCon = var $ unqual $ head constructorNames++    minBoundName = head constructorNames+    maxBoundName = last constructorNames++    constructorNumbers = map (second (fromIntegral . (^. #number))) constructors++    succPairs = zip constructorNames $ tail constructorNames++    succDecl :: OccNameStr -> OccNameStr -> [(OccNameStr, OccNameStr)] -> RawInstDecl+    succDecl funName boundName thePairs = funBinds funName $+        match [conP_ (unqual boundName)]+            (var "Prelude.error" @@ string (concat+                [ occNameStrToString dataName, "."+                , occNameStrToString funName, ": bad argument "+                , occNameStrToString boundName+                , ". This value would be out of bounds."+                ]))+        :+        [ match [conP_ (unqual from)] $ var $ unqual to+        | (from, to) <- thePairs+        ]+        +++        [ match [conP (unqual $ unrecognizedName u) [wildP]]+            (var "Prelude.error" @@ string (concat+                [ occNameStrToString dataName, "."+                , occNameStrToString funName, ": bad argument: unrecognized value"++                ]))+        | Just u <- [unrecognized]+        ]++generateFieldDecls :: Symbol -> [HsDecl']+generateFieldDecls xStr =+    -- foo :: forall f s a+    --        . (Functor f, HasLens s x a) => LensLike' f s a+    -- foo = fieldOf @s+    [ typeSig x+          $ forall' [bvar "f", bvar "s", bvar "a"]+          $ [ var "Prelude.Functor" @@ var "f"+            , var "Data.ProtoLens.Field.HasField" @@ var "s" @@ xSym @@ var "a"+            ]+          ==> var "Lens.Family2.LensLike'" @@ var "f" @@ var "s" @@ var "a"+    , valBind x $ fieldOfExp xStr+    ]+  where+    x = nameFromSymbol xStr+    xSym = promoteSymbol xStr++------------------------------------------++-- | An individual field of the Haskell type corresponding to a proto message.+data RecordField = RecordField+    { recordFieldName :: OccNameStr  -- ^ The Haskell name of this field (unique+                               --   within the module).+    , recordFieldType :: HsType'  -- ^ Internal type in the record+    , recordFieldLenses :: [LensInstance]+        -- ^ All of the (overloaded) lenses accessing this record field.+    }++-- | An instance of HasLens' for a particular field.+data LensInstance = LensInstance+    { lensSymbol :: Symbol+          -- ^ The overloaded name for this lens.+    , lensFieldType :: HsType'+          -- ^ The type pointed to from this lens.+    , lensExp :: HsExpr'+        -- ^ A lens from the recordFieldType to the lensFieldType; i.e.,+        -- from how it's actually stored in the Haskell record to how the+        -- lens views it.+    }++-- | Compile information about the record field type and type/class instances+-- for this particular field.+--+-- Used for "plain" record fields that are not part of a oneof.+plainRecordField :: Env RdrNameStr -> PlainFieldInfo -> RecordField+plainRecordField env (PlainFieldInfo kind f) = case kind of+    -- data Foo = Foo { _Foo_bar :: Bar }+    -- type instance Field "bar" Foo = Bar+    RequiredField+        -> recordField baseType+                  [LensInstance+                      { lensSymbol = baseName+                      , lensFieldType = baseType+                      , lensExp = rawAccessor+                      }]+    OptionalValueField+              -> recordField baseType+                    [LensInstance+                      { lensSymbol = baseName+                      , lensFieldType = baseType+                      , lensExp = rawAccessor+                      }]+    -- data Foo = Foo { _Foo_bar :: Maybe Bar }+    -- type instance Field "bar" Foo = Bar+    -- type instance Field "maybe'bar" Foo = Maybe Bar+    OptionalMaybeField ->+              recordField maybeType+                  [LensInstance+                      { lensSymbol = baseName+                      , lensFieldType = baseType+                      , lensExp = maybeAccessor+                      }+                  , LensInstance+                      { lensSymbol = "maybe'" <> baseName+                      , lensFieldType = maybeType+                      , lensExp = rawAccessor+                      }+                  ]+        -- data Foo = Foo { _Foo_bar :: Map Bar Baz }+        -- type instance Field "foo" Foo = Map Bar Baz+    MapField entry ->+            let mapType = var "Data.Map.Map"+                            @@ hsFieldType env (keyField entry)+                            @@ hsFieldType env (valueField entry)+            in recordField mapType+                  [LensInstance+                       { lensSymbol = baseName+                       , lensFieldType = mapType+                       , lensExp = rawAccessor+                       }]+        -- data Foo = Foo { _Foo_bar :: [Bar] }+        -- type instance Field "bar" Foo = [Bar]+    RepeatedField {} ->+            recordField vectorType+                  [ LensInstance+                      { lensSymbol = baseName+                      , lensFieldType = listType+                      , lensExp = vectorAccessor+                      }+                  , LensInstance+                      { lensSymbol = "vec'" <> baseName+                      , lensFieldType = vectorType+                      , lensExp = rawAccessor+                      }+                  ]+  where+    recordField = RecordField (haskellRecordFieldName $ fieldName f)+    baseName = overloadedName $ fieldName f+    fd = fieldDescriptor f+    baseType = hsFieldType env f+    maybeType = var "Prelude.Maybe" @@ baseType+    listType = listTy baseType+    vectorType = hsFieldVectorType f @@ baseType+    rawAccessor = var "Prelude.id"+    maybeAccessor = var "Data.ProtoLens.maybeLens"+                          @@ hsFieldValueDefault env fd++vectorAccessor :: HsExpr'+vectorAccessor = var "Lens.Family2.Unchecked.lens" @@ getter @@ setter+  where+    getter = var "Data.Vector.Generic.toList"+    setter = lambda [wildP, bvar "y__"]+                $ var "Data.Vector.Generic.fromList" @@ var "y__"++oneofRecordField :: Env RdrNameStr -> OneofInfo -> RecordField+oneofRecordField env oneofInfo+    = RecordField+        { recordFieldName = haskellRecordFieldName $ oneofFieldName oneofInfo+        , recordFieldType =+              var "Prelude.Maybe" @@ var (unqual $ oneofTypeName oneofInfo)+        , recordFieldLenses = lenses+        }+  where+    lenses =+        -- Only generate a "maybe" version of this lens,+        -- since oneofs don't have a notion of a "default" case.+        -- data Foo = Foo { _Foo'bar = Maybe Foo'Bar }+        -- type instance Field "maybe'bar" Foo = Maybe Foo'Bar+        [LensInstance+          { lensSymbol = "maybe'" <> overloadedName+                                        (oneofFieldName oneofInfo)+          , lensFieldType =+                var "Prelude.Maybe" @@ var (unqual $ oneofTypeName oneofInfo)+          , lensExp = var "Prelude.id"+          }+         ]+         ++ concat+          -- Generate the same lenses for each sub-field of the oneof+          -- as if they were proto2 optional fields.+          -- type instance Field "bar" Foo = Bar+          -- type instance Field "maybe'bar" Foo = Maybe Bar+            [ [ LensInstance+                { lensSymbol = maybeName+                , lensFieldType = var "Prelude.Maybe" @@ baseType+                , lensExp = oneofFieldAccessor c+                }+              , LensInstance+                { lensSymbol = baseName+                , lensFieldType = baseType+                , lensExp = var "Prelude.."+                                @@ oneofFieldAccessor c+                                @@ (var "Data.ProtoLens.maybeLens"+                                              @@ hsFieldValueDefault env+                                                    (fieldDescriptor f))+                }+              ]+            | c <- oneofCases oneofInfo+            , let f = caseField c+            , let baseName = overloadedName $ fieldName f+            , let baseType = hsFieldType env f+            , let maybeName = "maybe'" <> baseName+            ]++hsFieldDefault :: Env RdrNameStr -> PlainFieldInfo -> HsExpr'+hsFieldDefault env f = case plainFieldKind f of+    RequiredField -> hsFieldValueDefault env fd+    OptionalValueField -> hsFieldValueDefault env fd+    OptionalMaybeField -> var "Prelude.Nothing"+    MapField {} -> var "Data.Map.empty"+    RepeatedField {} -> var "Data.Vector.Generic.empty"+  where+    fd = fieldDescriptor (plainFieldInfo f)++hsFieldValueDefault :: Env RdrNameStr -> FieldDescriptorProto -> HsExpr'+hsFieldValueDefault env fd = case fd ^. #type' of+    FieldDescriptorProto'TYPE_MESSAGE -> var "Data.ProtoLens.defMessage"+    FieldDescriptorProto'TYPE_GROUP -> var "Data.ProtoLens.defMessage"+    FieldDescriptorProto'TYPE_ENUM+        | T.null def -> var "Data.ProtoLens.fieldDefault"+        | Enum e <- definedFieldType fd env+        , Just v <- List.lookup def [ (enumValueDescriptor v ^. #name, enumValueName v)+                                    | v <- enumValues e+                                    ]+            -> var v+        | otherwise -> errorMessage "enum"+    -- The rest of the cases are for scalar fields that have a fieldDefault+    -- instance.+    _ | T.null def -> var "Data.ProtoLens.fieldDefault"+    FieldDescriptorProto'TYPE_BOOL+        | def == "true" -> var "Prelude.True"+        | def == "false" -> var "Prelude.False"+        | otherwise -> errorMessage "bool"+    FieldDescriptorProto'TYPE_STRING+        -> var "Data.Text.pack" @@ string (T.unpack def)+    FieldDescriptorProto'TYPE_BYTES+        -> var "Data.ByteString.pack"+                @@ list ((mkByte . fromEnum) <$> T.unpack def)+      where mkByte c+              | c > 0 && c < 255 = int $ fromIntegral c+              | otherwise = errorMessage "bytes"+    FieldDescriptorProto'TYPE_FLOAT -> defaultFrac $ T.unpack def+    FieldDescriptorProto'TYPE_DOUBLE -> defaultFrac $ T.unpack def+    -- Otherwise, assume it's an integral field:+    _ -> defaultInt $ T.unpack def+  where+    def = fd ^. #defaultValue+    errorMessage fieldType+        = error $ "Bad default value " ++ show (T.unpack def)+                    ++ " in default value for " ++ fieldType ++ " field "+                    ++ unpack (fd ^. #name)+    -- float/double fields can use nan, inf and -inf as default values.+    -- The Prelude doesn't provide names for them, so we implement+    -- them as division by zero.+    defaultFrac "nan" = var "Prelude./" @@ frac 0 @@ frac 0+    defaultFrac "inf" = var "Prelude./" @@ frac 1 @@ frac 0+    defaultFrac "-inf" = var "Prelude./" @@ frac (negate 1) @@ frac 0+    defaultFrac s = case reads s of+        [(x, "")] -> frac $ toRational (x :: Double)+        _ -> errorMessage "fractional"+    defaultInt s = case reads s of+        [(x, "")] -> int x+        _ -> errorMessage "integral"++-- | A lens to access an internal field.+--+--   lens _Foo_bar (\x__ y__ -> x__ { _Foo_bar = y__ })+rawFieldAccessor :: RdrNameStr -> HsExpr'+rawFieldAccessor f = var "Lens.Family2.Unchecked.lens" @@ getter @@ setter+  where+    getter = var f+    setter = lambda [bvar "x__", bvar "y__"]+                    $ recordUpd (var "x__") [(f, var "y__")]++-- | A lens that maps from a oneof sum type to one of its individual cases.+--+-- For example, with+--     data Foo = Bar Int32 | Baz Int64+--+-- this will generate a lens of type @Lens' (Maybe Foo) (Maybe Int32)@.+--+-- (Recall that oneofs are stored in a proto message as @Maybe Foo@, where+-- 'Nothing' means that it's either set to an unknown value or unset.)+--+-- lens+--   (\ x__ -> case x__ of+--       Prelude.Just (Foo'c x__val) -> Prelude.Just x__val+--       otherwise -> Prelude.Nothing)+--   (\ _ y__ -> fmap Foo'c y__+oneofFieldAccessor :: OneofCase -> HsExpr'+oneofFieldAccessor o+        = var "Lens.Family2.Unchecked.lens" @@ getter @@ setter+  where+    consName = caseConstructorName o+    getter = lambda [bvar "x__"] $+        case' (var "x__")+            [ match [conP "Prelude.Just" [conP (unqual consName) [bvar "x__val"]]]+                $ var "Prelude.Just" @@ var "x__val"+            , match [bvar "_otherwise"] $ var "Prelude.Nothing"+            ]+    setter = lambda [wildP, bvar "y__"]+                $ var "Prelude.fmap" @@ var (unqual consName) @@ var "y__"++messageInstance :: Env RdrNameStr -> T.Text -> MessageInfo OccNameStr -> [RawInstDecl]+messageInstance env protoName m =+    [ funBind "messageName" $ match [wildP] $+          var "Data.Text.pack" @@ string (T.unpack protoName)+    , valBind "fieldsByTag" $+          let' (map (fieldDescriptorVarBind $ messageName m) $ fields)+              $ var "Data.Map.fromList" @@ list fieldsByTag+    , valBind "unknownFields"+           $ rawFieldAccessor (unqual $ messageUnknownFields m)+    , valBind "defMessage"+           $ recordConE (unqual $ messageConstructorName m) $+                  [ (unqual $ haskellRecordFieldName+                                    $ fieldName $ plainFieldInfo f,+                        hsFieldDefault env f)+                  | f <- messageFields m+                  ] +++                  [ (unqual $ haskellRecordFieldName $ oneofFieldName o,+                        var "Prelude.Nothing")+                  | o <- messageOneofFields m+                  ] +++                  [ (unqual $ messageUnknownFields m, var "[]")]+    , valBind "parseMessage" $ generatedParser env m+    , valBind "buildMessage" $ generatedBuilder m+    ]+  where+    fieldsByTag =+        [tuple+              [ t, fieldDescriptorVar f ]+              | f <- fields+              , let t = var "Data.ProtoLens.Tag"+                          @@ int (fromIntegral+                                      $ fieldDescriptor (plainFieldInfo f) ^. #number)+              ]+    fieldDescriptorVar = var . unqual . fieldDescriptorName+    fieldDescriptorName f+        = nameFromSymbol $ overloadedName (fieldName . plainFieldInfo $ f)+                                <> "__field_descriptor"+    fieldDescriptorVarBind n f+        = valBind (fieldDescriptorName f)+            $ fieldDescriptorExpr env n f+    fields = messageFields m+                ++ (messageOneofFields m >>= fmap casePlainField . oneofCases)+    -- The cases of an optional are always treated like proto2 "maybe" fields.+    casePlainField = PlainFieldInfo OptionalMaybeField . caseField++-- | Get the name of the field when used in a text format proto. Groups are+-- special because their text format field name is the name of their type,+-- not the name of the field in the descriptor (e.g. "Foo", not "foo").+textFormatFieldName :: Env RdrNameStr -> FieldDescriptorProto -> T.Text+textFormatFieldName env descr = case descr ^. #type' of+    FieldDescriptorProto'TYPE_GROUP+        | Message msg <- definedFieldType descr env+              -> messageDescriptor msg ^. #name+        | otherwise -> error $ "expected TYPE_GROUP for type name"+                           ++ T.unpack (descr ^. #typeName)+    _ -> descr ^. #name++fieldDescriptorExpr :: Env RdrNameStr -> OccNameStr -> PlainFieldInfo+                    -> HsExpr'+fieldDescriptorExpr env n f =+    (var "Data.ProtoLens.FieldDescriptor"+        -- Record the original .proto name for text format+        @@ string (T.unpack $ textFormatFieldName env fd)+        -- Force the type signature since it can't be inferred for Map entry+        -- types.+        @@ (fieldTypeDescriptorExpr (fd ^. #type')+                @::@+                    (var "Data.ProtoLens.FieldTypeDescriptor"+                        @@ hsFieldType env (plainFieldInfo f)))+        @@ fieldAccessorExpr f)+    -- TODO: why is this type sig needed?+    @::@+    (var "Data.ProtoLens.FieldDescriptor" @@ var (unqual n))+  where+    fd = fieldDescriptor $ plainFieldInfo f++fieldAccessorExpr :: PlainFieldInfo -> HsExpr'+-- (PlainField Required foo), (OptionalField foo), etc...+fieldAccessorExpr (PlainFieldInfo kind f) = accessorCon @@ fieldOfExp hsFieldName++  where+    accessorCon = case kind of+          RequiredField+                -> var "Data.ProtoLens.PlainField" @@ var "Data.ProtoLens.Required"+          OptionalValueField+                -> var "Data.ProtoLens.PlainField" @@ var "Data.ProtoLens.Optional"+          OptionalMaybeField+                -> var "Data.ProtoLens.OptionalField"+          MapField entry+                  -> var "Data.ProtoLens.MapField"+                         @@ fieldOfExp (overloadedField $ keyField entry)+                         @@ fieldOfExp (overloadedField $ valueField entry)+          RepeatedField packed ->+                var "Data.ProtoLens.RepeatedField"+                  @@ if packed == Packed+                        then var "Data.ProtoLens.Packed"+                        else var "Data.ProtoLens.Unpacked"+    hsFieldName+        = case kind of+            OptionalMaybeField -> "maybe'" <> overloadedField f+            _ -> overloadedField f++fieldOfExp :: Symbol -> HsExpr'+fieldOfExp sym = var "Data.ProtoLens.Field.field" `tyApp` promoteSymbol sym++overloadedField :: FieldInfo -> Symbol+overloadedField = overloadedName . fieldName++fieldTypeDescriptorExpr :: FieldDescriptorProto'Type -> HsExpr'+fieldTypeDescriptorExpr = \case+    FieldDescriptorProto'TYPE_DOUBLE -> mk "ScalarField" "DoubleField"+    FieldDescriptorProto'TYPE_FLOAT -> mk "ScalarField" "FloatField"+    FieldDescriptorProto'TYPE_INT64 -> mk "ScalarField" "Int64Field"+    FieldDescriptorProto'TYPE_UINT64 -> mk "ScalarField" "UInt64Field"+    FieldDescriptorProto'TYPE_INT32 -> mk "ScalarField" "Int32Field"+    FieldDescriptorProto'TYPE_FIXED64 -> mk "ScalarField" "Fixed64Field"+    FieldDescriptorProto'TYPE_FIXED32 -> mk "ScalarField" "Fixed32Field"+    FieldDescriptorProto'TYPE_BOOL -> mk "ScalarField" "BoolField"+    FieldDescriptorProto'TYPE_STRING -> mk "ScalarField" "StringField"+    FieldDescriptorProto'TYPE_GROUP -> mk "MessageField" "GroupType"+    FieldDescriptorProto'TYPE_MESSAGE -> mk "MessageField" "MessageType"+    FieldDescriptorProto'TYPE_BYTES -> mk "ScalarField" "BytesField"+    FieldDescriptorProto'TYPE_UINT32 -> mk "ScalarField" "UInt32Field"+    FieldDescriptorProto'TYPE_ENUM -> mk "ScalarField" "EnumField"+    FieldDescriptorProto'TYPE_SFIXED32 -> mk "ScalarField" "SFixed32Field"+    FieldDescriptorProto'TYPE_SFIXED64 -> mk "ScalarField" "SFixed64Field"+    FieldDescriptorProto'TYPE_SINT32 -> mk "ScalarField" "SInt32Field"+    FieldDescriptorProto'TYPE_SINT64 -> mk "ScalarField" "SInt64Field"+  where+    mk x y = var (fromString ("Data.ProtoLens." ++ x))+              @@ var (fromString ("Data.ProtoLens." ++ y))++-- | Generate the implementation of NFData.rnf for the given message.+--+-- instance NFData Bar where+--    rnf = \x -> deepseq (_Bar'foo x) (deepseq (_Bar'bar x) ())+messageRnfExpr :: MessageInfo OccNameStr -> HsExpr'+messageRnfExpr msg = lambda [bvar "x__"] $ foldr (@@) unit (map seqField fieldNames)+  where+    fieldNames = messageUnknownFields msg+                : map (haskellRecordFieldName . fieldName . plainFieldInfo)+                       (messageFields msg)+                ++ map (haskellRecordFieldName . oneofFieldName)+                       (messageOneofFields msg)+    seqField :: OccNameStr -> HsExpr'+    seqField f = var "Control.DeepSeq.deepseq" @@ (var (unqual f) @@ var "x__")++--   rnf (Foo'a x__) = rnf x__+--   rnf (Bar'b x__) = rnf x__+oneofRnfMatch :: OneofCase -> RawMatch+oneofRnfMatch c = match [unqual (caseConstructorName c) `conP` [bvar "x__"]]+                    $ var "Control.DeepSeq.rnf" @@ var "x__"
+ app/Data/ProtoLens/Compiler/Generate/Commented.hs view
@@ -0,0 +1,48 @@+-- | Enables pretty-printing Haddock comments along with top-level declarations.+module Data.ProtoLens.Compiler.Generate.Commented where++import Data.Maybe (fromMaybe)+import GHC.SourceGen+import Outputable (Outputable(..), SDoc, (<+>), ($+$), vcat, empty, text)+import HsSyn (hsmodName)+import GHC (ModuleName)+import SrcLoc (unLoc)++-- | A declaration, along with an optional comment.+--+-- GHC's pretty-printer omits the contents of comments, so we can't use it here.+data CommentedDecl = CommentedDecl (Maybe SDoc) HsDecl'++instance Outputable CommentedDecl where+    ppr (CommentedDecl maybeComment decl) =+        maybe empty pprComment maybeComment+        $+$ ppr decl+      where+        pprComment c = text "{- |" <+> c <+> text "-}"++uncommented :: HsDecl' -> CommentedDecl+uncommented = CommentedDecl Nothing++commented :: SDoc -> HsDecl' -> CommentedDecl+commented = CommentedDecl . Just++data CommentedModule = CommentedModule+    { pragmaComments :: [String]+    , moduleHeader :: HsModule'+    , commentedDecls :: [CommentedDecl]+    }++getModuleName :: CommentedModule -> ModuleName+getModuleName m =+    fromMaybe (error $ "getModuleName: No explicit name")+        $ fmap unLoc $ hsmodName $ moduleHeader m++instance Outputable CommentedModule where+    ppr m =+        vcat (map text $ pragmaComments m)+        $+$ ppr (moduleHeader m)+        $+$ vcat (map ppr $ commentedDecls m)++languagePragma, optionsGhcPragma :: String -> String+languagePragma s = "{-# LANGUAGE " ++ s ++ "#-}"+optionsGhcPragma s = "{-# OPTIONS_GHC " ++ s ++ "#-}"
+ app/Data/ProtoLens/Compiler/Generate/Encoding.hs view
@@ -0,0 +1,638 @@+-- | This module generates code for decoding and encoding protocol buffer messages.+--+-- Upstream docs: <https://developers.google.com/protocol-buffers/docs/encoding>+{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+module Data.ProtoLens.Compiler.Generate.Encoding+    ( generatedParser+    , generatedBuilder+    ) where++import Data.Int (Int32)+import qualified Data.Map as Map+#if !MIN_VERSION_base(4,11,0)+import Data.Semigroup ((<>))+#endif+import qualified Data.Text as Text+import Lens.Family2 (view, (^.))+import GHC.SourceGen++import Data.ProtoLens.Compiler.Definitions+import Data.ProtoLens.Compiler.Generate.Field+import Data.ProtoLens.Encoding.Wire (joinTypeAndTag)++generatedParser :: Env RdrNameStr -> MessageInfo OccNameStr -> HsExpr'+generatedParser env m =+    {- let loop :: T -> Bool -> Bool -> ...+                   -> MVector RealWorld Int32 -> MVector RealWorld Float -> ...+                   -> Parser T+           loop x required'a required'b ... mutable'a mutable'b ... = ...+       in "package.T" <?> do+            mutable'a <- unsafeLiftIO new+            mutable'b <- unsafeLiftIO new+            ...+            loop defMessage True True ... mutable'a mutable'b ...+    -}+    let' [typeSig loop loopSig+         , funBind loop $ match (bvar <$> loopArgs names) loopExpr+         ]+        $ var "Data.ProtoLens.Encoding.Bytes.<?>"+           @@ do' (startStmts ++ [stmt $ continue startExp])+           @@ string msgName+  where+    ty = var (unqual $ messageName m)+    msgName = Text.unpack (messageDescriptor m ^. #name)+    loopSig = foldr (-->)+        (var "Data.ProtoLens.Encoding.Bytes.Parser" @@ ty)+        (loopArgs $ parseStateTypes env m)++    names = parseStateNames m+    exprs = fmap (var . unqual) names+    tag = bvar "tag"+    end = bvar "end"+    loop = "loop"++    (startStmts, startExp) = startParse names++    continue :: ParseState HsExpr' -> HsExpr'+    continue s = foldl (@@) (var loop) (loopArgs s)++    loopExpr+        {- Group:+            do+              tag <- getVarInt+              case tag of+                {groupEndTag} -> {finish}+                ... -- Regular message fields++          TODO(#282): fail the parse if we find a group-end tag+          with an incorrect field number.+        -}+        | Just g <- groupFieldNumber m = do'+            [ tag <-- getVarInt'+            , stmt $ case' tag $+                (match [int (groupEndTag g)] (finish m exprs))+                    : parseTagCases continue exprs m+            ]+        {- Regular message type:+              do+                end <- atEnd+                if end+                    then {finish}+                    else do+                        tag <- getVarInt+                        case tag of ...+        -}+        | otherwise = do'+            [ end <-- var "Data.ProtoLens.Encoding.Bytes.atEnd"+            , stmt $+                if' end (finish m exprs)+                    $ do'+                        [ tag <-- getVarInt'+                        , stmt $ case' tag $ parseTagCases continue exprs m+                        ]+            ]++-- | A Parser expression that finalizes the message.+finish :: MessageInfo OccNameStr -> ParseState HsExpr' -> HsExpr'+finish m s = do' $+    {- do+        frozen'a <- unsafeLiftIO $ unsafeFreeze mutable'a+        frozen'b <- unsafeLiftIO $ unsafeFreeze mutable'b+        ...+        {checkMissingFields}+        over unknownFields reverse+            $ set field @"vec'a" frozen'a+            $ set field @"vec'b" frozen'b+            ...+            $ {partialMessage}+    -}+    [ bvar frozen <-- unsafeLiftIO' @@+                    (var "Data.ProtoLens.Encoding.Growing.unsafeFreeze"+                        @@ mutable)+    | (frozen, mutable) <- Map.elems $ Map.intersectionWith (,)+                                frozenNames (repeatedFieldMVectors s)+    ]+    +++    [ stmt $ checkMissingFields s+    , stmt $ var "Prelude.return" @@+        (over' unknownFields' (var "Prelude.reverse")+            @@(foldr (@@)+                (partialMessage s)+                (Map.intersectionWith+                    (\finfo frozen ->+                        var "Lens.Family2.set"+                            @@ fieldOfVector finfo+                            @@ var (unqual frozen))+                repeatedInfos frozenNames)))+            ]++  where+    repeatedInfos = repeatedFields m+    frozenNames = (\f -> nameFromSymbol $ "frozen'" <> overloadedFieldName f)+                    <$> repeatedInfos++-- | The state of the parsing loop.  Each instance of @v@ corresponds+-- to an argument of the loop function.+data ParseState v = ParseState+    { partialMessage :: v+        -- ^ The message that we're parsing.+    , requiredFieldsUnset :: Map.Map FieldId v+        -- ^ The required fields of the message, each corresponding to+        -- a @Bool@ argument of the loop.+    , repeatedFieldMVectors :: Map.Map FieldId v+        -- ^ The repeated fields of the message, each corresponding to+        -- an @MVector@ argument of the loop.+    } deriving Functor++-- | Returns a sequence of all arguments of the loop function.+loopArgs :: ParseState v -> [v]+loopArgs s = partialMessage s : Map.elems (requiredFieldsUnset s)+                                ++ Map.elems (repeatedFieldMVectors s)++-- | The proto name of the field.+newtype FieldId = FieldId Text.Text+    deriving (Eq, Ord)++fieldId :: PlainFieldInfo -> FieldId+fieldId f = FieldId $ fieldDescriptor (plainFieldInfo f) ^. #name++-- | The names of the loop arguments.+parseStateNames :: MessageInfo OccNameStr -> ParseState OccNameStr+parseStateNames m = ParseState+    { partialMessage = "x"+    , requiredFieldsUnset = Map.fromList+        [ (fieldId f, nameFromSymbol $ "required'" <> n)+        | f <- messageFields m+        , let info = plainFieldInfo f+        , let n = overloadedFieldName info+        , RequiredField <- [plainFieldKind f]+        ]+    , repeatedFieldMVectors =+        (\f -> nameFromSymbol $ "mutable'" <> overloadedFieldName f)+            <$> repeatedFields m+    }++repeatedFields :: MessageInfo OccNameStr -> Map.Map FieldId FieldInfo+repeatedFields m = Map.fromList+    [ (fieldId f, plainFieldInfo f)+    | f <- messageFields m+    , RepeatedField{} <- [plainFieldKind f]+    ]++-- | Intialize the values of the loop arguments.+startParse :: ParseState OccNameStr -> ([Stmt'], ParseState HsExpr')+startParse names =+    ([ bvar n <-- unsafeLiftIO' @@ var "Data.ProtoLens.Encoding.Growing.new"+     | n <- Map.elems mvectorNames+     ]+    , ParseState+        { partialMessage = var "Data.ProtoLens.defMessage"+        , requiredFieldsUnset = const (var "Prelude.True")+                                    <$> requiredFieldsUnset names+        , repeatedFieldMVectors = var . unqual <$> mvectorNames+        }+    )+  where+    mvectorNames = repeatedFieldMVectors names++-- | The types of the loop arguments.+parseStateTypes :: Env RdrNameStr -> MessageInfo OccNameStr -> ParseState HsType'+parseStateTypes env m = ParseState+    { partialMessage = var $ unqual $ messageName m+    , requiredFieldsUnset = fmap (const $ var "Prelude.Bool")+                            $ requiredFieldsUnset+                            $ parseStateNames m+    , repeatedFieldMVectors = growingType env <$> repeatedFields m+    }++-- | Transform the loop arguments by applying a given function+-- to the intermediate message value.+updateParseState ::+       HsExpr' -- ^ An expression of type @msg -> msg@+    -> ParseState HsExpr'+    -> ParseState HsExpr'+updateParseState f s = s { partialMessage = f @@ (partialMessage s) }++-- | Transform the loop arguments by marking a required field+-- as having been set.+markRequiredField :: FieldId -> ParseState HsExpr' -> ParseState HsExpr'+markRequiredField f s =+    s { requiredFieldsUnset = Map.insert f (var "Prelude.False")+                                $ requiredFieldsUnset s }++-- | Append to the given repeated field.+appendToRepeated :: FieldId -> HsExpr' -> ParseState HsExpr' -> (Stmt', ParseState HsExpr')+appendToRepeated f x s =+    ( v <-- unsafeLiftIO'+                @@ (var "Data.ProtoLens.Encoding.Growing.append"+                        @@ (repeatedFieldMVectors s Map.! f)+                        @@ x)+    , s { repeatedFieldMVectors =+                            Map.insert f v+                                $ repeatedFieldMVectors s+                        }+    )+  where+    v = bvar "v"++-- | Returns an HsExpr' of type @Parser ()@+-- which fails if any of the missing fields aren't set.+checkMissingFields :: ParseState HsExpr' -> HsExpr'+checkMissingFields s =+    {- let missing = (if required'a then ("a":) else id)+                        ((if required'b then ("b":) else id)+                        ... [])+       in if null missing then return ()+          else fail ("Missing required fields: " ++ show missing)+    -}+    let' [valBind missing $ allMissingFields]+    $ if' (var "Prelude.null" @@ var missing) (var "Prelude.return" @@ unit)+    $ var "Prelude.fail"+        @@ (var "Prelude.++"+                @@ string "Missing required fields: "+                @@ (var "Prelude.show" @@ (var missing @::@ listTy (var "Prelude.String"))))+  where+    missing = "missing"+    allMissingFields = Map.foldrWithKey consIfMissing (list []) (requiredFieldsUnset s)+    consIfMissing (FieldId f) e rest =+        (if' e (cons @@ string (Text.unpack f)) (var "Prelude.id")) @@ rest++-- | A list case alternatives for the fields of a message.+--+-- The exact structure of each case differs based on the field type.  However, it+-- generally looks like:+--+-- @+--   {N} -> do+--           {VALUE} <- {PARSE}+--           loop (set {FIELD} {VALUE} x) required'a False required'c ...+-- @+--+-- where:+--  - {N} is an integer representing the wire type + field number,+--  - {VALUE} is an expression of type "V", which is the type of the field,+--  - {PARSE} is an expression of the form "Parser V",+--  - and "loop" and "x" are as in @generatedParser@.+parseTagCases ::+       (ParseState HsExpr' -> HsExpr')+            -- ^ loop continuation, equivalent to "msg -> Bool -> ... -> Bool -> Parser msg".+            -- It continues the loop with the given new value of the message, keeping track+            -- of whether the required fields are still needed.+    -> ParseState HsExpr' -- ^ Previous value of the message and required field states+    -> MessageInfo OccNameStr+    -> [RawMatch]+parseTagCases loop x info =+    concatMap (parseFieldCase loop x) allFields+    -- TODO: currently we ignore unknown fields.+    ++ [unknownFieldCase info loop x]+  where+    allFields = messageFields info+                -- Cases of a oneof are decoded like optional oneof fields.+                ++ [ PlainFieldInfo OptionalMaybeField (caseField c)+                   | o <- messageOneofFields info+                   , c <- oneofCases o+                   ]++-- | A particular parsing case.  See @parseTagCases@ for details.+parseFieldCase ::+    (ParseState HsExpr' -> HsExpr') -> ParseState HsExpr' -> PlainFieldInfo -> [RawMatch]+parseFieldCase loop x f = case plainFieldKind f of+    MapField entryInfo -> [mapCase entryInfo]+    RepeatedField p+        | p == NotPackable -> [unpackedCase]+        | otherwise -> [unpackedCase, packedCase]+    RequiredField -> [requiredCase]+    _ -> [valueCase]+  where+    y = bvar "y"+    entry = bvar "entry"+    info = plainFieldInfo f+    valueCase = match [int (fieldTag info)] $ do'+        [ y <-- parseField info+        , stmt . loop . updateParseState (setField info @@ y)+            $ x+        ]+    requiredCase = match [int (fieldTag info)] $ do'+        [ y <-- parseField info+        , stmt . loop+               . updateParseState (setField info @@ y)+               . markRequiredField (fieldId f)+               $ x+        ]+    unpackedCase = match [int (fieldTag info)]+        $ let (appendStmt, x') = appendToRepeated (fieldId f) y x+        in do'+            [ strictP y <-- parseField info+            , appendStmt+            , stmt . loop $ x'+            ]+    packedCase = match [int (packedFieldTag info)] $ do'+        [ y <-- isolatedLengthy (parsePackedField info+                                    @@ repeatedFieldMVectors x Map.! fieldId f)+        , stmt $ loop x { repeatedFieldMVectors =+                                Map.insert (fieldId f) y+                                    $ repeatedFieldMVectors x }+        ]+    mapCase entryInfo = match [int (fieldTag info)] $ do'+        [ strictP (entry `sigP` var (unqual $ mapEntryTypeName entryInfo))+                <-- parseField info+        , stmt . let' [ valBind "key"+                            $ view' @@ fieldOf (keyField entryInfo)+                                    @@ entry+                      , valBind "value"+                            $ view' @@ fieldOf (valueField entryInfo)+                                    @@ entry+                      ]+               . loop+               . updateParseState+                    (overField info+                                (var "Data.Map.insert" @@ var "key" @@ var "value"))+               $ x+        ]++unknownFieldCase ::+    MessageInfo OccNameStr -> (ParseState HsExpr' -> HsExpr') -> ParseState HsExpr' -> RawMatch+{-+  wire -> do+        !y <- parseTaggedValueFromWire wire+        -- Omitted if not a group:+        case y of+            TaggedValue utag EndGroup+                -> fail ("Mismatched group-end tag number " ++ show utag)+            _ -> return ()+        loop (over unknownFields (\!t -> y:t) x) ...+-}+unknownFieldCase info loop x = match [wire] $ do' $+    [ strictP y <-- var "Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire" @@ wire+    ]+    +++    [ stmt $ case' y+        [ match+            [conP "Data.ProtoLens.Encoding.Wire.TaggedValue"+                [utag, conP_ "Data.ProtoLens.Encoding.Wire.EndGroup"]]+            $ var "Prelude.fail" @@+                (var "Prelude.++"+                    @@ string "Mismatched group-end tag number "+                    @@ (var "Prelude.show" @@ utag))+        , match [wildP] $ var "Prelude.return" @@ unit+        ]+    | Just _ <- [groupFieldNumber info]+    ]+    +++    [ stmt . loop . updateParseState (over' unknownFields' (cons @@ y))+        $ x+    ]+  where+    wire = bvar "wire"+    y = bvar "y"+    utag = bvar "utag"++-- | An expression of type "b -> a -> a", corresponding to a Lens a b+-- for this field.+setField :: FieldInfo -> HsExpr'+setField f = var "Lens.Family2.set" @@ fieldOf f++-- | An expression of type "(b -> b) -> a -> a", corresponding to a+-- Lens a b for this field.+overField :: FieldInfo -> HsExpr' -> HsExpr'+overField f = over' (fieldOf f)++-- | An expression of type "(b -> b) -> a -> a".+--+-- Specifically, this renders to:+--   over f (\!z -> g z) x+-- The extra strictness prevents a space leak due to lists being lazy.+over' :: HsExpr' -> HsExpr' -> HsExpr'+over' f g = var "Lens.Family2.over"+                @@ f+                @@ lambda [strictP t] (g @@ t)+  where+    t = bvar "t"++-- | A "Growing v RealWorld a -> Parser (Growing v RealWorld a)"+-- for a field that can be packed.+parsePackedField :: FieldInfo -> HsExpr'+{- let ploop qs = do+                    packedEnd <- atEnd+                    if packedEnd+                        then return qs+                        else do+                            !q <- {PARSE FIELD}+                            qs' <- append qs q+                            ploop qs'+   in ploop+-}+parsePackedField info = let' [funBind ploop $ match [qs] ploopExp]+                            (var ploop)+  where+    ploop = "ploop"+    q = bvar "q"+    qs = bvar "qs"+    qs' = bvar "qs'"+    packedEnd = bvar "packedEnd"+    ploopExp = do'+        [ packedEnd <-- var "Data.ProtoLens.Encoding.Bytes.atEnd"+        , stmt $+            if' packedEnd+                (var "Prelude.return" @@ qs)+                $ do'+                    [ strictP q <-- parseField info+                    , qs' <-- unsafeLiftIO' @@+                                (var "Data.ProtoLens.Encoding.Growing.append"+                                    @@ qs @@ q)+                    , stmt $ var ploop @@ qs'+                    ]+        ]++generatedBuilder :: MessageInfo OccNameStr -> HsExpr'+generatedBuilder m =+    lambda [x] $ foldMapExp $ map (buildPlainField x) (messageFields m)+                                ++ map (buildOneofField x) (messageOneofFields m)+                            ++ [buildUnknown x]+                            ++ buildGroupEnd+  where+    x = bvar "_x" -- TODO: rename to "x" once it's always used+    -- If this is a group, finish by emitting the end-group tag.+    buildGroupEnd = [ putVarInt' @@ int (groupEndTag g)+               | Just g <- [groupFieldNumber m]+               ]++buildUnknown :: HsExpr' -> HsExpr'+buildUnknown x+    = var "Data.ProtoLens.Encoding.Wire.buildFieldSet"+                @@ (view' @@ unknownFields' @@ x)++-- | Concatenate a list of Monoids into a single value.+-- For example, foldMapExp [a,b,c] will be transformed into+-- the (unrolled) expression a <> b <> c.+foldMapExp :: [HsExpr'] -> HsExpr'+foldMapExp [] = mempty'+foldMapExp [x] = x+foldMapExp (x:xs) = var "Data.Monoid.<>" @@ x @@ foldMapExp xs++-- | An expression of type @Builder@ which encodes the field value+-- @x@ based on the kind and type of the field @f@.+buildPlainField :: HsExpr' -> PlainFieldInfo -> HsExpr'+buildPlainField x f = case plainFieldKind f of+    RequiredField -> buildTaggedField info fieldValue+    OptionalMaybeField -> case' maybeFieldValue+                            [ match [conP_ "Prelude.Nothing"] mempty'+                            , match [conP "Prelude.Just" [v']]+                                $ buildTaggedField info v'+                            ]+    OptionalValueField -> let' [valBind v $ fieldValue]+                          $ if' (var "Prelude.==" @@ v' @@ var "Data.ProtoLens.fieldDefault")+                                mempty'+                                (buildTaggedField info v')+    MapField entryInfo+        -> var "Data.Monoid.mconcat"+            @@ (var "Prelude.map"+                    @@ lambda [v'] (buildEntry entryInfo v')+                    @@ (var "Data.Map.toList" @@ fieldValue))+    RepeatedField Packed -> buildPackedField info vectorFieldValue+    RepeatedField _ -> var "Data.ProtoLens.Encoding.Bytes.foldMapBuilder"+                            @@ lambda [v']+                                    (buildTaggedField info v')+                            @@ vectorFieldValue+  where+    info = plainFieldInfo f+    v = "_v"+    v' = bvar v+    fieldValue = view'+                    @@ fieldOf info+                    @@ x+    maybeFieldValue = view'+                        @@ fieldOfMaybe info+                        @@ x+    vectorFieldValue = view'+                        @@ fieldOfVector info+                        @@ x+    {- Builds a value of the given map entry type+       from the given key/value pair kv.++       ... set (fieldOf {KEY}) (fst kv)+            (set (fieldOf {VALUE}) (snd kv)+                (defMessage :: Foo'Entry)+    -}+    buildEntry entry kv+        = buildTaggedField info+            $ set'+                @@ fieldOf (keyField entry)+                @@ (var "Prelude.fst" @@ kv)+                @@ (set' @@ fieldOf (valueField entry)+                         @@ (var "Prelude.snd" @@ kv)+                         @@ (var "Data.ProtoLens.defMessage"+                                @::@ var (unqual $ mapEntryTypeName entry)))++fieldOf :: FieldInfo -> HsExpr'+fieldOf = fieldOfExp . overloadedFieldName++fieldOfMaybe :: FieldInfo -> HsExpr'+fieldOfMaybe = fieldOfExp . ("maybe'" <>) . overloadedFieldName++fieldOfOneof :: OneofInfo -> HsExpr'+fieldOfOneof =+    fieldOfExp . ("maybe'" <>) . overloadedName . oneofFieldName++fieldOfVector :: FieldInfo -> HsExpr'+fieldOfVector = fieldOfExp . ("vec'" <>) . overloadedFieldName++-- | Build a field along with its tag.+buildTaggedField :: FieldInfo -> HsExpr' -> HsExpr'+buildTaggedField f x = foldMapExp+    [ putVarInt' @@ int (fieldTag f)+    , buildField f @@ x+    ]++-- | Encodes a packed field as a byte string, along with+-- its wire type+number.+buildPackedField :: FieldInfo -> HsExpr' -> HsExpr'+{-+    let p = x -- where x might be a complicated expression+    in if null p then mempty+    else putVarInt {TAG}+            <> ... (runBuilder (mconcat (map {BUILD_ELT} p)))+-}+buildPackedField f x = let' [valBind p x]+    $ if' (var "Data.Vector.Generic.null" @@ var p) mempty'+    $ var "Data.Monoid.<>"+        @@ (putVarInt' @@ int (packedFieldTag f))+        @@ (buildFieldType lengthy+                @@ (var "Data.ProtoLens.Encoding.Bytes.runBuilder"+                    @@ (var "Data.ProtoLens.Encoding.Bytes.foldMapBuilder"+                            @@ buildField f+                            @@ var p)))+  where+    p = "p"++buildOneofField :: HsExpr' -> OneofInfo -> HsExpr'+buildOneofField x info = case' (view' @@ fieldOfOneof info @@ x) $+    (match [conP_ "Prelude.Nothing"] mempty')+    : [ match [conP "Prelude.Just" [conP (unqual $ caseConstructorName c)+                                 [v]]]+            $ buildTaggedField (caseField c) v+      | c <- oneofCases info+      ]+  where+    v = bvar "v"++-- | Compute the proto encoding's representation of the wire type+-- and field number.+--+-- The last three bits of the number store the wire type, and the+-- rest store the field number as a varint.+makeTag :: Int32 -> FieldEncoding -> Integer+makeTag num enc = fromIntegral $ joinTypeAndTag (fromIntegral num) (wireType enc)++fieldTag :: FieldInfo -> Integer+fieldTag f = makeTag (fieldDescriptor f ^. #number) $ fieldInfoEncoding f++packedFieldTag :: FieldInfo -> Integer+packedFieldTag f = makeTag (fieldDescriptor f ^. #number) lengthy++groupEndTag :: Int32 -> Integer+groupEndTag num = makeTag num groupEnd++-- | An expression that selects the overloaded field lens of this name.+--+-- field @"fieldName"+fieldOfExp :: Symbol -> HsExpr'+fieldOfExp sym = tyApp (var "Data.ProtoLens.Field.field") (promoteSymbol sym)++-- | Some functions that are used in multiple places in the generated code.+getVarInt', putVarInt', mempty', view', set', unknownFields', unsafeLiftIO'+    :: HsExpr'+getVarInt' = var "Data.ProtoLens.Encoding.Bytes.getVarInt"+putVarInt' = var "Data.ProtoLens.Encoding.Bytes.putVarInt"+mempty' = var "Data.Monoid.mempty"+view' = var "Lens.Family2.view"+set' = var "Lens.Family2.set"+unknownFields' = var "Data.ProtoLens.unknownFields"+unsafeLiftIO' = var "Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO"++-- | Returns an expression of type @Parser a@ for the given field.+parseField :: FieldInfo -> HsExpr'+parseField f = var "Data.ProtoLens.Encoding.Bytes.<?>"+                    @@ (parseFieldType $ fieldInfoEncoding f)+                    @@ string n+  where+    n = Text.unpack (fieldDescriptor f ^. #name)++-- | Returns a function corresponding to `a -> Builder`:+buildField :: FieldInfo -> HsExpr'+buildField = buildFieldType . fieldInfoEncoding++fieldInfoEncoding :: FieldInfo -> FieldEncoding+fieldInfoEncoding = fieldEncoding . view #type' . fieldDescriptor++growingType :: Env RdrNameStr -> FieldInfo -> HsType'+growingType env f+    = var "Data.ProtoLens.Encoding.Growing.Growing"+        @@ hsFieldVectorType f+        @@ var "Data.ProtoLens.Encoding.Growing.RealWorld"+        @@ hsFieldType env f
+ app/Data/ProtoLens/Compiler/Generate/Field.hs view
@@ -0,0 +1,261 @@+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+-- | This module generates the code for decoding and encoding+-- individual field types.+--+-- Upstream docs:+-- <https://developers.google.com/protocol-buffers/docs/encoding#structure>+module Data.ProtoLens.Compiler.Generate.Field+    ( hsFieldType+    , hsFieldVectorType+    , FieldEncoding(..)+    , fieldEncoding+    , lengthy+    , groupEnd+    , isolatedLengthy+    ) where++import Data.Text (unpack)+import Data.Word (Word8)+import Lens.Family2+import Proto.Google.Protobuf.Descriptor (FieldDescriptorProto'Type(..))++import Data.ProtoLens.Compiler.Definitions++import GHC.SourceGen++hsFieldType :: Env RdrNameStr -> FieldInfo -> HsType'+hsFieldType env f = let+    fd = fieldDescriptor f+    in var $ case fd ^. #type' of+        FieldDescriptorProto'TYPE_DOUBLE -> "Prelude.Double"+        FieldDescriptorProto'TYPE_FLOAT -> "Prelude.Float"+        FieldDescriptorProto'TYPE_INT64 -> "Data.Int.Int64"+        FieldDescriptorProto'TYPE_UINT64 -> "Data.Word.Word64"+        FieldDescriptorProto'TYPE_INT32 -> "Data.Int.Int32"+        FieldDescriptorProto'TYPE_FIXED64 -> "Data.Word.Word64"+        FieldDescriptorProto'TYPE_FIXED32 -> "Data.Word.Word32"+        FieldDescriptorProto'TYPE_BOOL -> "Prelude.Bool"+        FieldDescriptorProto'TYPE_STRING -> "Data.Text.Text"+        FieldDescriptorProto'TYPE_GROUP+            | Message m <- definedFieldType fd env -> messageName m+            | otherwise -> error $ "expected TYPE_GROUP for type name"+                                ++ unpack (fd ^. #typeName)+        FieldDescriptorProto'TYPE_MESSAGE+            | Message m <- definedFieldType fd env -> messageName m+            | otherwise -> error $ "expected TYPE_MESSAGE for type name"+                                ++ unpack (fd ^. #typeName)+        FieldDescriptorProto'TYPE_BYTES -> "Data.ByteString.ByteString"+        FieldDescriptorProto'TYPE_UINT32 -> "Data.Word.Word32"+        FieldDescriptorProto'TYPE_ENUM+            | Enum e <- definedFieldType fd env -> enumName e+            | otherwise -> error $ "expected TYPE_ENUM for type name"+                                ++ unpack (fd ^. #typeName)+        FieldDescriptorProto'TYPE_SFIXED32 -> "Data.Int.Int32"+        FieldDescriptorProto'TYPE_SFIXED64 -> "Data.Int.Int64"+        FieldDescriptorProto'TYPE_SINT32 -> "Data.Int.Int32"+        FieldDescriptorProto'TYPE_SINT64 -> "Data.Int.Int64"++hsFieldVectorType :: FieldInfo -> HsType'+hsFieldVectorType f = case fieldDescriptor f ^. #type' of+    FieldDescriptorProto'TYPE_MESSAGE -> boxed+    -- TODO: store enums in unboxed fields.+    FieldDescriptorProto'TYPE_ENUM -> boxed+    FieldDescriptorProto'TYPE_GROUP -> boxed+    FieldDescriptorProto'TYPE_STRING -> boxed+    FieldDescriptorProto'TYPE_BYTES -> boxed+    _ -> unboxed+  where+    boxed = var "Data.Vector.Vector"+    unboxed = var "Data.Vector.Unboxed.Vector"++-- | A representation for how to encode and decode a particular field type.+data FieldEncoding = FieldEncoding+    { buildFieldType :: HsExpr' -- ^ :: a -> Builder+    , parseFieldType :: HsExpr' -- ^ :: Parser a+    , wireType :: Word8+    }++-- | A variable-length integer, decoded as an unsigned Word64.+varint :: FieldEncoding+varint = FieldEncoding+            { wireType = 0+            , buildFieldType = putVarInt'+            , parseFieldType = getVarInt'+            }++-- | A fixed-length integer (Word64).+fixed64 :: FieldEncoding+fixed64 = FieldEncoding+            { wireType = 1+            , buildFieldType = var "Data.ProtoLens.Encoding.Bytes.putFixed64"+            , parseFieldType = var "Data.ProtoLens.Encoding.Bytes.getFixed64"+            }++-- | A fixed-length integer (Word32).+fixed32 :: FieldEncoding+fixed32 = FieldEncoding+            { wireType = 5+            , buildFieldType = var "Data.ProtoLens.Encoding.Bytes.putFixed32"+            , parseFieldType = var "Data.ProtoLens.Encoding.Bytes.getFixed32"+            }++-- | A ByteString, prefixed by its length (which is encoded as a varint).+lengthy :: FieldEncoding+lengthy = FieldEncoding+            { wireType = 2+            , buildFieldType = buildLengthy+            , parseFieldType = parseLengthy+            }+  where+    bs = bvar "bs"+    len = bvar "len"+    buildLengthy =+        -- Bind x since it may be a nontrivial expression:+        lambda [bs]+            $ var "Data.Monoid.<>"+                @@ (putVarInt'+                        @@ (fromIntegral'+                                @@ (var "Data.ByteString.length" @@ bs)))+                @@ (var "Data.ProtoLens.Encoding.Bytes.putBytes" @@ bs)+    parseLengthy = do'+        [ len <-- getVarInt'+        , stmt $ var "Data.ProtoLens.Encoding.Bytes.getBytes"+                    @@ (fromIntegral' @@ len)+        ]++group :: FieldEncoding+group = FieldEncoding+            { wireType = 3+            , buildFieldType = var "Data.ProtoLens.buildMessage"+            , parseFieldType = var "Data.ProtoLens.parseMessage"+            }++groupEnd :: FieldEncoding+groupEnd = FieldEncoding+            { wireType = 4+            , buildFieldType = var "Prelude.const" @@ var "Data.Monoid.mempty"+            , parseFieldType = var "Prelude.return" @@ unit+            }++-- Wrap a field encoding  with Haskell functions that should always succeed.+bijectField :: HsExpr' -> HsExpr' -> FieldEncoding -> FieldEncoding+bijectField buildF parseF f = FieldEncoding+    { buildFieldType = var "Prelude.." @@ buildFieldType f @@ buildF+    , parseFieldType = var "Prelude.fmap" @@ parseF @@ parseFieldType f+    , wireType = wireType f+    }++-- | Wrap a field encoding with Haskell functions that may fail during parsing.+partialField :: HsExpr' -> (HsExpr' -> HsExpr') -> FieldEncoding -> FieldEncoding+partialField buildF parseF f = FieldEncoding+    { buildFieldType = var "Prelude.." @@ buildFieldType f @@ buildF+    -- do+    --  value <- ...+    --  runEither $ {parseF} value+    , parseFieldType = do'+        [ value <-- parseFieldType f+        , stmt $ runEither @@ parseF value+        ]+    , wireType = wireType f+    }+  where+    value = bvar "value"+    runEither = var "Data.ProtoLens.Encoding.Bytes.runEither"++-- | Convert a field of one integral type to another.+integralField :: FieldEncoding -> FieldEncoding+integralField = bijectField fromIntegral' fromIntegral'++fieldEncoding :: FieldDescriptorProto'Type -> FieldEncoding+fieldEncoding = \case+    FieldDescriptorProto'TYPE_INT64 -> integralField varint+    FieldDescriptorProto'TYPE_UINT64 -> varint+    FieldDescriptorProto'TYPE_INT32 -> integralField varint+    FieldDescriptorProto'TYPE_UINT32 -> integralField varint+    FieldDescriptorProto'TYPE_FIXED64 -> fixed64+    FieldDescriptorProto'TYPE_FIXED32 -> fixed32+    FieldDescriptorProto'TYPE_SFIXED64 -> integralField fixed64+    FieldDescriptorProto'TYPE_SFIXED32 -> integralField fixed32+    FieldDescriptorProto'TYPE_DOUBLE ->+        bijectField+            (var "Data.ProtoLens.Encoding.Bytes.doubleToWord")+            (var "Data.ProtoLens.Encoding.Bytes.wordToDouble")+            fixed64+    FieldDescriptorProto'TYPE_FLOAT ->+        bijectField+            (var "Data.ProtoLens.Encoding.Bytes.floatToWord")+            (var "Data.ProtoLens.Encoding.Bytes.wordToFloat")+            fixed32+    FieldDescriptorProto'TYPE_BOOL ->+        bijectField+            (lambda [bvar "b"] $ if' (var "b") (int 1) (int 0))+            (var "Prelude./=" @@ int 0)+            varint+    FieldDescriptorProto'TYPE_ENUM ->+        -- TODO: don't throw an exception on unknown proto2 enums.+        bijectField (var "Prelude.fromEnum") (var "Prelude.toEnum")+            $ integralField varint+    FieldDescriptorProto'TYPE_SINT64 ->+        bijectField+            (var "Data.ProtoLens.Encoding.Bytes.signedInt64ToWord")+            (var "Data.ProtoLens.Encoding.Bytes.wordToSignedInt64")+            $ integralField varint+    FieldDescriptorProto'TYPE_SINT32 ->+        bijectField+            (var "Data.ProtoLens.Encoding.Bytes.signedInt32ToWord")+            (var "Data.ProtoLens.Encoding.Bytes.wordToSignedInt32")+            $ integralField varint+    FieldDescriptorProto'TYPE_BYTES -> lengthy+    FieldDescriptorProto'TYPE_STRING -> stringField+    FieldDescriptorProto'TYPE_MESSAGE -> message+    FieldDescriptorProto'TYPE_GROUP -> group++-- | A string, represented as Data.Text.Text.+stringField :: FieldEncoding+stringField = partialField (var "Data.Text.Encoding.encodeUtf8") decodeUtf8P lengthy+  where+    {- Translates to:+        case decodeUtf8' bytes of+            Left err -> Left (show err)+            Right r -> r+    Equivalently:+        first show $ decodeUtf8' bytes+    but avoids dragging in Data.Bifunctors.+    -}+    decodeUtf8P bytes =+        case' (var "Data.Text.Encoding.decodeUtf8'" @@ bytes)+            [ match ["Prelude.Left" `conP` [bvar "err"]]+                $ var "Prelude.Left" @@ (var "Prelude.show" @@ var "err")+            , match ["Prelude.Right" `conP` [bvar "r"]]+                $ var "Prelude.Right" @@ var "r"+            ]++-- | A protobuf message type.+message :: FieldEncoding+message = lengthy+        { buildFieldType = var "Prelude.." @@+            buildFieldType lengthy @@+            var "Data.ProtoLens.encodeMessage"+        , parseFieldType = isolatedLengthy (var "Data.ProtoLens.parseMessage")+        }++-- | Takes a @Parser a@, reads a varint and then runs the parser+-- isolated to the given length.+isolatedLengthy :: HsExpr' -> HsExpr'+isolatedLengthy parser = do'+    [ len <-- getVarInt'+    , stmt $ var "Data.ProtoLens.Encoding.Bytes.isolate"+                @@ (fromIntegral' @@ len)+                @@ parser+    ]+  where+    len = bvar "len"++-- | Some functions that are used in multiple places in the generated code.+getVarInt', putVarInt', fromIntegral' :: HsExpr'+getVarInt' = var "Data.ProtoLens.Encoding.Bytes.getVarInt"+putVarInt' = var "Data.ProtoLens.Encoding.Bytes.putVarInt"+fromIntegral' = var "Prelude.fromIntegral"
+ app/Data/ProtoLens/Compiler/Plugin.hs view
@@ -0,0 +1,105 @@+-- Copyright 2016 Google Inc. All Rights Reserved.+--+-- Use of this source code is governed by a BSD-style+-- license that can be found in the LICENSE file or at+-- https://developers.google.com/open-source/licenses/bsd+--+-- Code for writing protocol compiler plugins.++{-# LANGUAGE CPP #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE OverloadedStrings #-}+module Data.ProtoLens.Compiler.Plugin+    ( ProtoFileName+    , ProtoFile(..)+    , analyzeProtoFiles+    , collectEnvFromDeps+    ) where++import Data.List (foldl')+import qualified Data.Map.Strict as Map+import Data.Map.Strict (Map, unions, (!))+import Data.String (fromString)+import qualified Data.Text as T+import Data.Text (Text)+import Lens.Family2+import Proto.Google.Protobuf.Descriptor (FileDescriptorProto)++import Data.ProtoLens.Compiler.Definitions+import Data.ProtoLens.Compiler.ModuleName++import GHC.SourceGen (ModuleNameStr, OccNameStr, RdrNameStr)++-- | The filename of an input .proto file.+type ProtoFileName = Text++data ProtoFile = ProtoFile+    { descriptor :: FileDescriptorProto+    , haskellModule :: ModuleNameStr+    , definitions :: Env OccNameStr+    , services :: [ServiceInfo]+    , exportedEnv :: Env RdrNameStr+    , publicImports :: [ModuleNameStr]+    }++-- Given a list of FileDescriptorProtos, collect information about each file+-- into a map of 'ProtoFile's keyed by 'ProtoFileName'.+analyzeProtoFiles :: [FileDescriptorProto] -> Map ProtoFileName ProtoFile+analyzeProtoFiles files =+    Map.fromList [ (f ^. #name, ingestFile f) | f <- files ]+  where+    filesByName = Map.fromList [(f ^. #name, f) | f <- files]+    moduleNames = fmap fdModuleName filesByName+    -- The definitions in each input proto file, indexed by filename.+    definitionsByName = fmap collectDefinitions filesByName+    servicesByName = fmap collectServices filesByName+    exportsByName = transitiveExports files+    exportedEnvs = fmap (foldMap (definitionsByName !)) exportsByName++    ingestFile f = ProtoFile+        { descriptor = f+        , haskellModule = m+        , definitions = definitionsByName ! n+        , services = servicesByName ! n+        , exportedEnv = qualifyEnv m $ exportedEnvs ! n+        , publicImports = [moduleNames ! i | i <- reexported]+        }+      where+        n = f ^. #name+        m = moduleNames ! n+        reexported =+            [ (f ^. #dependency) !! fromIntegral i+            | i <- f ^. #publicDependency+            ]++collectEnvFromDeps :: [ProtoFileName] -> Map ProtoFileName ProtoFile -> Env RdrNameStr+collectEnvFromDeps deps filesByName =+    unions $ fmap (exportedEnv . (filesByName !)) deps++-- | Get the Haskell 'ModuleName' corresponding to a given .proto file.+fdModuleName :: FileDescriptorProto -> ModuleNameStr+fdModuleName fd+      = fromString $ protoModuleName (T.unpack $ fd ^. #name)++-- | Given a list of .proto files (topologically sorted), determine which+-- files' definitions are exported by which files.+--+-- Files only export their own definitions, along with the definitions exported+-- by any "import public" declarations.  (And any definitions that *those* files+-- "import public", etc.)+transitiveExports :: [FileDescriptorProto] -> Map ProtoFileName [ProtoFileName]+-- Accumulate the transitive dependencies by folding over the files in+-- topological order.+transitiveExports = foldl' setExportsFromFile Map.empty+  where+    setExportsFromFile :: Map ProtoFileName [ProtoFileName]+                       -> FileDescriptorProto+                       -> Map ProtoFileName [ProtoFileName]+    setExportsFromFile prevExports fd+        = flip (Map.insert n) prevExports $+            n : concat [ prevExports ! ((fd ^. #dependency) !! fromIntegral i)+                       -- Note that publicDependency is a list of indices into+                       -- the dependency list.+                       | i <- fd ^. #publicDependency+                       ]+      where n = fd ^. #name
+ app/Proto/Google/Protobuf/Compiler/Plugin.hs view
@@ -0,0 +1,1039 @@+{- This file was auto-generated from google/protobuf/compiler/plugin.proto by the proto-lens-protoc program. -}+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies, UndecidableInstances, GeneralizedNewtypeDeriving, MultiParamTypeClasses, FlexibleContexts, FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude, DataKinds, BangPatterns, TypeApplications#-}+{-# OPTIONS_GHC -Wno-unused-imports#-}+{-# OPTIONS_GHC -Wno-duplicate-exports#-}+{-# OPTIONS_GHC -Wno-dodgy-exports#-}+module Proto.Google.Protobuf.Compiler.Plugin (+        CodeGeneratorRequest(), CodeGeneratorResponse(),+        CodeGeneratorResponse'File(), Version()+    ) where+import qualified Data.ProtoLens.Runtime.Control.DeepSeq as Control.DeepSeq+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Prism as Data.ProtoLens.Prism+import qualified Data.ProtoLens.Runtime.Prelude as Prelude+import qualified Data.ProtoLens.Runtime.Data.Int as Data.Int+import qualified Data.ProtoLens.Runtime.Data.Monoid as Data.Monoid+import qualified Data.ProtoLens.Runtime.Data.Word as Data.Word+import qualified Data.ProtoLens.Runtime.Data.ProtoLens as Data.ProtoLens+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Bytes as Data.ProtoLens.Encoding.Bytes+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Growing as Data.ProtoLens.Encoding.Growing+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Parser.Unsafe as Data.ProtoLens.Encoding.Parser.Unsafe+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Wire as Data.ProtoLens.Encoding.Wire+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Field as Data.ProtoLens.Field+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Message.Enum as Data.ProtoLens.Message.Enum+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Service.Types as Data.ProtoLens.Service.Types+import qualified Data.ProtoLens.Runtime.Lens.Family2 as Lens.Family2+import qualified Data.ProtoLens.Runtime.Lens.Family2.Unchecked as Lens.Family2.Unchecked+import qualified Data.ProtoLens.Runtime.Data.Text as Data.Text+import qualified Data.ProtoLens.Runtime.Data.Map as Data.Map+import qualified Data.ProtoLens.Runtime.Data.ByteString as Data.ByteString+import qualified Data.ProtoLens.Runtime.Data.ByteString.Char8 as Data.ByteString.Char8+import qualified Data.ProtoLens.Runtime.Data.Text.Encoding as Data.Text.Encoding+import qualified Data.ProtoLens.Runtime.Data.Vector as Data.Vector+import qualified Data.ProtoLens.Runtime.Data.Vector.Generic as Data.Vector.Generic+import qualified Data.ProtoLens.Runtime.Data.Vector.Unboxed as Data.Vector.Unboxed+import qualified Data.ProtoLens.Runtime.Text.Read as Text.Read+import qualified Proto.Google.Protobuf.Descriptor+{- | Fields :+     +         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.fileToGenerate' @:: Lens' CodeGeneratorRequest [Data.Text.Text]@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.vec'fileToGenerate' @:: Lens' CodeGeneratorRequest (Data.Vector.Vector Data.Text.Text)@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.parameter' @:: Lens' CodeGeneratorRequest Data.Text.Text@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'parameter' @:: Lens' CodeGeneratorRequest (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.protoFile' @:: Lens' CodeGeneratorRequest [Proto.Google.Protobuf.Descriptor.FileDescriptorProto]@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.vec'protoFile' @:: Lens' CodeGeneratorRequest (Data.Vector.Vector Proto.Google.Protobuf.Descriptor.FileDescriptorProto)@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.compilerVersion' @:: Lens' CodeGeneratorRequest Version@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'compilerVersion' @:: Lens' CodeGeneratorRequest (Prelude.Maybe Version)@ -}+data CodeGeneratorRequest+  = CodeGeneratorRequest'_constructor {_CodeGeneratorRequest'fileToGenerate :: !(Data.Vector.Vector Data.Text.Text),+                                       _CodeGeneratorRequest'parameter :: !(Prelude.Maybe Data.Text.Text),+                                       _CodeGeneratorRequest'protoFile :: !(Data.Vector.Vector Proto.Google.Protobuf.Descriptor.FileDescriptorProto),+                                       _CodeGeneratorRequest'compilerVersion :: !(Prelude.Maybe Version),+                                       _CodeGeneratorRequest'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show CodeGeneratorRequest where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField CodeGeneratorRequest "fileToGenerate" [Data.Text.Text] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorRequest'fileToGenerate+           (\ x__ y__ -> x__ {_CodeGeneratorRequest'fileToGenerate = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField CodeGeneratorRequest "vec'fileToGenerate" (Data.Vector.Vector Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorRequest'fileToGenerate+           (\ x__ y__ -> x__ {_CodeGeneratorRequest'fileToGenerate = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField CodeGeneratorRequest "parameter" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorRequest'parameter+           (\ x__ y__ -> x__ {_CodeGeneratorRequest'parameter = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField CodeGeneratorRequest "maybe'parameter" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorRequest'parameter+           (\ x__ y__ -> x__ {_CodeGeneratorRequest'parameter = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField CodeGeneratorRequest "protoFile" [Proto.Google.Protobuf.Descriptor.FileDescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorRequest'protoFile+           (\ x__ y__ -> x__ {_CodeGeneratorRequest'protoFile = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField CodeGeneratorRequest "vec'protoFile" (Data.Vector.Vector Proto.Google.Protobuf.Descriptor.FileDescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorRequest'protoFile+           (\ x__ y__ -> x__ {_CodeGeneratorRequest'protoFile = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField CodeGeneratorRequest "compilerVersion" Version where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorRequest'compilerVersion+           (\ x__ y__ -> x__ {_CodeGeneratorRequest'compilerVersion = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)+instance Data.ProtoLens.Field.HasField CodeGeneratorRequest "maybe'compilerVersion" (Prelude.Maybe Version) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorRequest'compilerVersion+           (\ x__ y__ -> x__ {_CodeGeneratorRequest'compilerVersion = y__}))+        Prelude.id+instance Data.ProtoLens.Message CodeGeneratorRequest where+  messageName _+    = Data.Text.pack "google.protobuf.compiler.CodeGeneratorRequest"+  fieldsByTag+    = let+        fileToGenerate__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "file_to_generate"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"fileToGenerate")) ::+              Data.ProtoLens.FieldDescriptor CodeGeneratorRequest+        parameter__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "parameter"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'parameter")) ::+              Data.ProtoLens.FieldDescriptor CodeGeneratorRequest+        protoFile__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "proto_file"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor Proto.Google.Protobuf.Descriptor.FileDescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"protoFile")) ::+              Data.ProtoLens.FieldDescriptor CodeGeneratorRequest+        compilerVersion__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "compiler_version"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor Version)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'compilerVersion")) ::+              Data.ProtoLens.FieldDescriptor CodeGeneratorRequest+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, fileToGenerate__field_descriptor),+           (Data.ProtoLens.Tag 2, parameter__field_descriptor),+           (Data.ProtoLens.Tag 15, protoFile__field_descriptor),+           (Data.ProtoLens.Tag 3, compilerVersion__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _CodeGeneratorRequest'_unknownFields+        (\ x__ y__ -> x__ {_CodeGeneratorRequest'_unknownFields = y__})+  defMessage+    = CodeGeneratorRequest'_constructor+        {_CodeGeneratorRequest'fileToGenerate = Data.Vector.Generic.empty,+         _CodeGeneratorRequest'parameter = Prelude.Nothing,+         _CodeGeneratorRequest'protoFile = Data.Vector.Generic.empty,+         _CodeGeneratorRequest'compilerVersion = Prelude.Nothing,+         _CodeGeneratorRequest'_unknownFields = []}+  parseMessage+    = let+        loop ::+          CodeGeneratorRequest+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld Data.Text.Text+             -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld Proto.Google.Protobuf.Descriptor.FileDescriptorProto+                -> Data.ProtoLens.Encoding.Bytes.Parser CodeGeneratorRequest+        loop x mutable'fileToGenerate mutable'protoFile+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'fileToGenerate <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                 (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                    mutable'fileToGenerate)+                      frozen'protoFile <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                            (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                               mutable'protoFile)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'fileToGenerate")+                              frozen'fileToGenerate+                              (Lens.Family2.set+                                 (Data.ProtoLens.Field.field @"vec'protoFile") frozen'protoFile x)))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                        Data.ProtoLens.Encoding.Bytes.getBytes+                                                          (Prelude.fromIntegral len)+                                            Data.ProtoLens.Encoding.Bytes.runEither+                                              (case Data.Text.Encoding.decodeUtf8' value of+                                                 (Prelude.Left err)+                                                   -> Prelude.Left (Prelude.show err)+                                                 (Prelude.Right r) -> Prelude.Right r))+                                        "file_to_generate"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'fileToGenerate y)+                                loop x v mutable'protoFile+                        18+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "parameter"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"parameter") y x)+                                  mutable'fileToGenerate+                                  mutable'protoFile+                        122+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "proto_file"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'protoFile y)+                                loop x mutable'fileToGenerate v+                        26+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                           Data.ProtoLens.Encoding.Bytes.isolate+                                             (Prelude.fromIntegral len) Data.ProtoLens.parseMessage)+                                       "compiler_version"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"compilerVersion") y x)+                                  mutable'fileToGenerate+                                  mutable'protoFile+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'fileToGenerate+                                  mutable'protoFile+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'fileToGenerate <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                          Data.ProtoLens.Encoding.Growing.new+              mutable'protoFile <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                     Data.ProtoLens.Encoding.Growing.new+              loop+                Data.ProtoLens.defMessage mutable'fileToGenerate mutable'protoFile)+          "CodeGeneratorRequest"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                (\ _v+                   -> (Data.Monoid.<>)+                        (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                        ((Prelude..)+                           (\ bs+                              -> (Data.Monoid.<>)+                                   (Data.ProtoLens.Encoding.Bytes.putVarInt+                                      (Prelude.fromIntegral (Data.ByteString.length bs)))+                                   (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                           Data.Text.Encoding.encodeUtf8+                           _v))+                (Lens.Family2.view+                   (Data.ProtoLens.Field.field @"vec'fileToGenerate") _x))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view+                       (Data.ProtoLens.Field.field @"maybe'parameter") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 18)+                          ((Prelude..)+                             (\ bs+                                -> (Data.Monoid.<>)+                                     (Data.ProtoLens.Encoding.Bytes.putVarInt+                                        (Prelude.fromIntegral (Data.ByteString.length bs)))+                                     (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                             Data.Text.Encoding.encodeUtf8+                             _v))+                ((Data.Monoid.<>)+                   (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                      (\ _v+                         -> (Data.Monoid.<>)+                              (Data.ProtoLens.Encoding.Bytes.putVarInt 122)+                              ((Prelude..)+                                 (\ bs+                                    -> (Data.Monoid.<>)+                                         (Data.ProtoLens.Encoding.Bytes.putVarInt+                                            (Prelude.fromIntegral (Data.ByteString.length bs)))+                                         (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                 Data.ProtoLens.encodeMessage+                                 _v))+                      (Lens.Family2.view+                         (Data.ProtoLens.Field.field @"vec'protoFile") _x))+                   ((Data.Monoid.<>)+                      (case+                           Lens.Family2.view+                             (Data.ProtoLens.Field.field @"maybe'compilerVersion") _x+                       of+                         Prelude.Nothing -> Data.Monoid.mempty+                         (Prelude.Just _v)+                           -> (Data.Monoid.<>)+                                (Data.ProtoLens.Encoding.Bytes.putVarInt 26)+                                ((Prelude..)+                                   (\ bs+                                      -> (Data.Monoid.<>)+                                           (Data.ProtoLens.Encoding.Bytes.putVarInt+                                              (Prelude.fromIntegral (Data.ByteString.length bs)))+                                           (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                   Data.ProtoLens.encodeMessage+                                   _v))+                      (Data.ProtoLens.Encoding.Wire.buildFieldSet+                         (Lens.Family2.view Data.ProtoLens.unknownFields _x)))))+instance Control.DeepSeq.NFData CodeGeneratorRequest where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_CodeGeneratorRequest'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_CodeGeneratorRequest'fileToGenerate x__)+                (Control.DeepSeq.deepseq+                   (_CodeGeneratorRequest'parameter x__)+                   (Control.DeepSeq.deepseq+                      (_CodeGeneratorRequest'protoFile x__)+                      (Control.DeepSeq.deepseq+                         (_CodeGeneratorRequest'compilerVersion x__) ()))))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.error' @:: Lens' CodeGeneratorResponse Data.Text.Text@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'error' @:: Lens' CodeGeneratorResponse (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.file' @:: Lens' CodeGeneratorResponse [CodeGeneratorResponse'File]@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.vec'file' @:: Lens' CodeGeneratorResponse (Data.Vector.Vector CodeGeneratorResponse'File)@ -}+data CodeGeneratorResponse+  = CodeGeneratorResponse'_constructor {_CodeGeneratorResponse'error :: !(Prelude.Maybe Data.Text.Text),+                                        _CodeGeneratorResponse'file :: !(Data.Vector.Vector CodeGeneratorResponse'File),+                                        _CodeGeneratorResponse'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show CodeGeneratorResponse where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField CodeGeneratorResponse "error" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorResponse'error+           (\ x__ y__ -> x__ {_CodeGeneratorResponse'error = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField CodeGeneratorResponse "maybe'error" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorResponse'error+           (\ x__ y__ -> x__ {_CodeGeneratorResponse'error = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField CodeGeneratorResponse "file" [CodeGeneratorResponse'File] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorResponse'file+           (\ x__ y__ -> x__ {_CodeGeneratorResponse'file = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField CodeGeneratorResponse "vec'file" (Data.Vector.Vector CodeGeneratorResponse'File) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorResponse'file+           (\ x__ y__ -> x__ {_CodeGeneratorResponse'file = y__}))+        Prelude.id+instance Data.ProtoLens.Message CodeGeneratorResponse where+  messageName _+    = Data.Text.pack "google.protobuf.compiler.CodeGeneratorResponse"+  fieldsByTag+    = let+        error__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "error"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'error")) ::+              Data.ProtoLens.FieldDescriptor CodeGeneratorResponse+        file__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "file"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor CodeGeneratorResponse'File)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked (Data.ProtoLens.Field.field @"file")) ::+              Data.ProtoLens.FieldDescriptor CodeGeneratorResponse+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, error__field_descriptor),+           (Data.ProtoLens.Tag 15, file__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _CodeGeneratorResponse'_unknownFields+        (\ x__ y__ -> x__ {_CodeGeneratorResponse'_unknownFields = y__})+  defMessage+    = CodeGeneratorResponse'_constructor+        {_CodeGeneratorResponse'error = Prelude.Nothing,+         _CodeGeneratorResponse'file = Data.Vector.Generic.empty,+         _CodeGeneratorResponse'_unknownFields = []}+  parseMessage+    = let+        loop ::+          CodeGeneratorResponse+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld CodeGeneratorResponse'File+             -> Data.ProtoLens.Encoding.Bytes.Parser CodeGeneratorResponse+        loop x mutable'file+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'file <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.unsafeFreeze mutable'file)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'file") frozen'file x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "error"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"error") y x)+                                  mutable'file+                        122+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "file"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'file y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'file+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'file <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'file)+          "CodeGeneratorResponse"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'error") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                       ((Prelude..)+                          (\ bs+                             -> (Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                     (Prelude.fromIntegral (Data.ByteString.length bs)))+                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                          Data.Text.Encoding.encodeUtf8+                          _v))+             ((Data.Monoid.<>)+                (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                   (\ _v+                      -> (Data.Monoid.<>)+                           (Data.ProtoLens.Encoding.Bytes.putVarInt 122)+                           ((Prelude..)+                              (\ bs+                                 -> (Data.Monoid.<>)+                                      (Data.ProtoLens.Encoding.Bytes.putVarInt+                                         (Prelude.fromIntegral (Data.ByteString.length bs)))+                                      (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                              Data.ProtoLens.encodeMessage+                              _v))+                   (Lens.Family2.view (Data.ProtoLens.Field.field @"vec'file") _x))+                (Data.ProtoLens.Encoding.Wire.buildFieldSet+                   (Lens.Family2.view Data.ProtoLens.unknownFields _x)))+instance Control.DeepSeq.NFData CodeGeneratorResponse where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_CodeGeneratorResponse'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_CodeGeneratorResponse'error x__)+                (Control.DeepSeq.deepseq (_CodeGeneratorResponse'file x__) ()))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.name' @:: Lens' CodeGeneratorResponse'File Data.Text.Text@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'name' @:: Lens' CodeGeneratorResponse'File (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.insertionPoint' @:: Lens' CodeGeneratorResponse'File Data.Text.Text@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'insertionPoint' @:: Lens' CodeGeneratorResponse'File (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.content' @:: Lens' CodeGeneratorResponse'File Data.Text.Text@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'content' @:: Lens' CodeGeneratorResponse'File (Prelude.Maybe Data.Text.Text)@ -}+data CodeGeneratorResponse'File+  = CodeGeneratorResponse'File'_constructor {_CodeGeneratorResponse'File'name :: !(Prelude.Maybe Data.Text.Text),+                                             _CodeGeneratorResponse'File'insertionPoint :: !(Prelude.Maybe Data.Text.Text),+                                             _CodeGeneratorResponse'File'content :: !(Prelude.Maybe Data.Text.Text),+                                             _CodeGeneratorResponse'File'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show CodeGeneratorResponse'File where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField CodeGeneratorResponse'File "name" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorResponse'File'name+           (\ x__ y__ -> x__ {_CodeGeneratorResponse'File'name = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField CodeGeneratorResponse'File "maybe'name" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorResponse'File'name+           (\ x__ y__ -> x__ {_CodeGeneratorResponse'File'name = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField CodeGeneratorResponse'File "insertionPoint" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorResponse'File'insertionPoint+           (\ x__ y__+              -> x__ {_CodeGeneratorResponse'File'insertionPoint = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField CodeGeneratorResponse'File "maybe'insertionPoint" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorResponse'File'insertionPoint+           (\ x__ y__+              -> x__ {_CodeGeneratorResponse'File'insertionPoint = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField CodeGeneratorResponse'File "content" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorResponse'File'content+           (\ x__ y__ -> x__ {_CodeGeneratorResponse'File'content = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField CodeGeneratorResponse'File "maybe'content" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _CodeGeneratorResponse'File'content+           (\ x__ y__ -> x__ {_CodeGeneratorResponse'File'content = y__}))+        Prelude.id+instance Data.ProtoLens.Message CodeGeneratorResponse'File where+  messageName _+    = Data.Text.pack+        "google.protobuf.compiler.CodeGeneratorResponse.File"+  fieldsByTag+    = let+        name__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'name")) ::+              Data.ProtoLens.FieldDescriptor CodeGeneratorResponse'File+        insertionPoint__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "insertion_point"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'insertionPoint")) ::+              Data.ProtoLens.FieldDescriptor CodeGeneratorResponse'File+        content__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "content"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'content")) ::+              Data.ProtoLens.FieldDescriptor CodeGeneratorResponse'File+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, name__field_descriptor),+           (Data.ProtoLens.Tag 2, insertionPoint__field_descriptor),+           (Data.ProtoLens.Tag 15, content__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _CodeGeneratorResponse'File'_unknownFields+        (\ x__ y__+           -> x__ {_CodeGeneratorResponse'File'_unknownFields = y__})+  defMessage+    = CodeGeneratorResponse'File'_constructor+        {_CodeGeneratorResponse'File'name = Prelude.Nothing,+         _CodeGeneratorResponse'File'insertionPoint = Prelude.Nothing,+         _CodeGeneratorResponse'File'content = Prelude.Nothing,+         _CodeGeneratorResponse'File'_unknownFields = []}+  parseMessage+    = let+        loop ::+          CodeGeneratorResponse'File+          -> Data.ProtoLens.Encoding.Bytes.Parser CodeGeneratorResponse'File+        loop x+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields (\ !t -> Prelude.reverse t) x)+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "name"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"name") y x)+                        18+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "insertion_point"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"insertionPoint") y x)+                        122+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "content"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"content") y x)+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do loop Data.ProtoLens.defMessage) "File"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'name") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                       ((Prelude..)+                          (\ bs+                             -> (Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                     (Prelude.fromIntegral (Data.ByteString.length bs)))+                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                          Data.Text.Encoding.encodeUtf8+                          _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view+                       (Data.ProtoLens.Field.field @"maybe'insertionPoint") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 18)+                          ((Prelude..)+                             (\ bs+                                -> (Data.Monoid.<>)+                                     (Data.ProtoLens.Encoding.Bytes.putVarInt+                                        (Prelude.fromIntegral (Data.ByteString.length bs)))+                                     (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                             Data.Text.Encoding.encodeUtf8+                             _v))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'content") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 122)+                             ((Prelude..)+                                (\ bs+                                   -> (Data.Monoid.<>)+                                        (Data.ProtoLens.Encoding.Bytes.putVarInt+                                           (Prelude.fromIntegral (Data.ByteString.length bs)))+                                        (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                Data.Text.Encoding.encodeUtf8+                                _v))+                   (Data.ProtoLens.Encoding.Wire.buildFieldSet+                      (Lens.Family2.view Data.ProtoLens.unknownFields _x))))+instance Control.DeepSeq.NFData CodeGeneratorResponse'File where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_CodeGeneratorResponse'File'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_CodeGeneratorResponse'File'name x__)+                (Control.DeepSeq.deepseq+                   (_CodeGeneratorResponse'File'insertionPoint x__)+                   (Control.DeepSeq.deepseq+                      (_CodeGeneratorResponse'File'content x__) ())))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.major' @:: Lens' Version Data.Int.Int32@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'major' @:: Lens' Version (Prelude.Maybe Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.minor' @:: Lens' Version Data.Int.Int32@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'minor' @:: Lens' Version (Prelude.Maybe Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.patch' @:: Lens' Version Data.Int.Int32@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'patch' @:: Lens' Version (Prelude.Maybe Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.suffix' @:: Lens' Version Data.Text.Text@+         * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'suffix' @:: Lens' Version (Prelude.Maybe Data.Text.Text)@ -}+data Version+  = Version'_constructor {_Version'major :: !(Prelude.Maybe Data.Int.Int32),+                          _Version'minor :: !(Prelude.Maybe Data.Int.Int32),+                          _Version'patch :: !(Prelude.Maybe Data.Int.Int32),+                          _Version'suffix :: !(Prelude.Maybe Data.Text.Text),+                          _Version'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show Version where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField Version "major" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _Version'major (\ x__ y__ -> x__ {_Version'major = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField Version "maybe'major" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _Version'major (\ x__ y__ -> x__ {_Version'major = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField Version "minor" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _Version'minor (\ x__ y__ -> x__ {_Version'minor = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField Version "maybe'minor" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _Version'minor (\ x__ y__ -> x__ {_Version'minor = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField Version "patch" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _Version'patch (\ x__ y__ -> x__ {_Version'patch = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField Version "maybe'patch" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _Version'patch (\ x__ y__ -> x__ {_Version'patch = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField Version "suffix" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _Version'suffix (\ x__ y__ -> x__ {_Version'suffix = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField Version "maybe'suffix" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _Version'suffix (\ x__ y__ -> x__ {_Version'suffix = y__}))+        Prelude.id+instance Data.ProtoLens.Message Version where+  messageName _ = Data.Text.pack "google.protobuf.compiler.Version"+  fieldsByTag+    = let+        major__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "major"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'major")) ::+              Data.ProtoLens.FieldDescriptor Version+        minor__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "minor"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'minor")) ::+              Data.ProtoLens.FieldDescriptor Version+        patch__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "patch"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'patch")) ::+              Data.ProtoLens.FieldDescriptor Version+        suffix__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "suffix"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'suffix")) ::+              Data.ProtoLens.FieldDescriptor Version+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, major__field_descriptor),+           (Data.ProtoLens.Tag 2, minor__field_descriptor),+           (Data.ProtoLens.Tag 3, patch__field_descriptor),+           (Data.ProtoLens.Tag 4, suffix__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _Version'_unknownFields+        (\ x__ y__ -> x__ {_Version'_unknownFields = y__})+  defMessage+    = Version'_constructor+        {_Version'major = Prelude.Nothing,+         _Version'minor = Prelude.Nothing, _Version'patch = Prelude.Nothing,+         _Version'suffix = Prelude.Nothing, _Version'_unknownFields = []}+  parseMessage+    = let+        loop :: Version -> Data.ProtoLens.Encoding.Bytes.Parser Version+        loop x+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields (\ !t -> Prelude.reverse t) x)+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        8 -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "major"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"major") y x)+                        16+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "minor"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"minor") y x)+                        24+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "patch"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"patch") y x)+                        34+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "suffix"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"suffix") y x)+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do loop Data.ProtoLens.defMessage) "Version"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'major") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 8)+                       ((Prelude..)+                          Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'minor") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 16)+                          ((Prelude..)+                             Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'patch") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 24)+                             ((Prelude..)+                                Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+                   ((Data.Monoid.<>)+                      (case+                           Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'suffix") _x+                       of+                         Prelude.Nothing -> Data.Monoid.mempty+                         (Prelude.Just _v)+                           -> (Data.Monoid.<>)+                                (Data.ProtoLens.Encoding.Bytes.putVarInt 34)+                                ((Prelude..)+                                   (\ bs+                                      -> (Data.Monoid.<>)+                                           (Data.ProtoLens.Encoding.Bytes.putVarInt+                                              (Prelude.fromIntegral (Data.ByteString.length bs)))+                                           (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                   Data.Text.Encoding.encodeUtf8+                                   _v))+                      (Data.ProtoLens.Encoding.Wire.buildFieldSet+                         (Lens.Family2.view Data.ProtoLens.unknownFields _x)))))+instance Control.DeepSeq.NFData Version where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_Version'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_Version'major x__)+                (Control.DeepSeq.deepseq+                   (_Version'minor x__)+                   (Control.DeepSeq.deepseq+                      (_Version'patch x__)+                      (Control.DeepSeq.deepseq (_Version'suffix x__) ()))))
+ app/Proto/Google/Protobuf/Compiler/Plugin_Fields.hs view
@@ -0,0 +1,181 @@+{- This file was auto-generated from google/protobuf/compiler/plugin.proto by the proto-lens-protoc program. -}+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies, UndecidableInstances, GeneralizedNewtypeDeriving, MultiParamTypeClasses, FlexibleContexts, FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude, DataKinds, BangPatterns, TypeApplications#-}+{-# OPTIONS_GHC -Wno-unused-imports#-}+{-# OPTIONS_GHC -Wno-duplicate-exports#-}+{-# OPTIONS_GHC -Wno-dodgy-exports#-}+module Proto.Google.Protobuf.Compiler.Plugin_Fields where+import qualified Data.ProtoLens.Runtime.Prelude as Prelude+import qualified Data.ProtoLens.Runtime.Data.Int as Data.Int+import qualified Data.ProtoLens.Runtime.Data.Monoid as Data.Monoid+import qualified Data.ProtoLens.Runtime.Data.Word as Data.Word+import qualified Data.ProtoLens.Runtime.Data.ProtoLens as Data.ProtoLens+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Bytes as Data.ProtoLens.Encoding.Bytes+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Growing as Data.ProtoLens.Encoding.Growing+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Parser.Unsafe as Data.ProtoLens.Encoding.Parser.Unsafe+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Wire as Data.ProtoLens.Encoding.Wire+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Field as Data.ProtoLens.Field+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Message.Enum as Data.ProtoLens.Message.Enum+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Service.Types as Data.ProtoLens.Service.Types+import qualified Data.ProtoLens.Runtime.Lens.Family2 as Lens.Family2+import qualified Data.ProtoLens.Runtime.Lens.Family2.Unchecked as Lens.Family2.Unchecked+import qualified Data.ProtoLens.Runtime.Data.Text as Data.Text+import qualified Data.ProtoLens.Runtime.Data.Map as Data.Map+import qualified Data.ProtoLens.Runtime.Data.ByteString as Data.ByteString+import qualified Data.ProtoLens.Runtime.Data.ByteString.Char8 as Data.ByteString.Char8+import qualified Data.ProtoLens.Runtime.Data.Text.Encoding as Data.Text.Encoding+import qualified Data.ProtoLens.Runtime.Data.Vector as Data.Vector+import qualified Data.ProtoLens.Runtime.Data.Vector.Generic as Data.Vector.Generic+import qualified Data.ProtoLens.Runtime.Data.Vector.Unboxed as Data.Vector.Unboxed+import qualified Data.ProtoLens.Runtime.Text.Read as Text.Read+import qualified Proto.Google.Protobuf.Descriptor+compilerVersion ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "compilerVersion" a) =>+  Lens.Family2.LensLike' f s a+compilerVersion = Data.ProtoLens.Field.field @"compilerVersion"+content ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "content" a) =>+  Lens.Family2.LensLike' f s a+content = Data.ProtoLens.Field.field @"content"+error ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "error" a) =>+  Lens.Family2.LensLike' f s a+error = Data.ProtoLens.Field.field @"error"+file ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "file" a) =>+  Lens.Family2.LensLike' f s a+file = Data.ProtoLens.Field.field @"file"+fileToGenerate ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "fileToGenerate" a) =>+  Lens.Family2.LensLike' f s a+fileToGenerate = Data.ProtoLens.Field.field @"fileToGenerate"+insertionPoint ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "insertionPoint" a) =>+  Lens.Family2.LensLike' f s a+insertionPoint = Data.ProtoLens.Field.field @"insertionPoint"+major ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "major" a) =>+  Lens.Family2.LensLike' f s a+major = Data.ProtoLens.Field.field @"major"+maybe'compilerVersion ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'compilerVersion" a) =>+  Lens.Family2.LensLike' f s a+maybe'compilerVersion+  = Data.ProtoLens.Field.field @"maybe'compilerVersion"+maybe'content ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'content" a) =>+  Lens.Family2.LensLike' f s a+maybe'content = Data.ProtoLens.Field.field @"maybe'content"+maybe'error ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'error" a) =>+  Lens.Family2.LensLike' f s a+maybe'error = Data.ProtoLens.Field.field @"maybe'error"+maybe'insertionPoint ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'insertionPoint" a) =>+  Lens.Family2.LensLike' f s a+maybe'insertionPoint+  = Data.ProtoLens.Field.field @"maybe'insertionPoint"+maybe'major ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'major" a) =>+  Lens.Family2.LensLike' f s a+maybe'major = Data.ProtoLens.Field.field @"maybe'major"+maybe'minor ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'minor" a) =>+  Lens.Family2.LensLike' f s a+maybe'minor = Data.ProtoLens.Field.field @"maybe'minor"+maybe'name ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'name" a) =>+  Lens.Family2.LensLike' f s a+maybe'name = Data.ProtoLens.Field.field @"maybe'name"+maybe'parameter ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'parameter" a) =>+  Lens.Family2.LensLike' f s a+maybe'parameter = Data.ProtoLens.Field.field @"maybe'parameter"+maybe'patch ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'patch" a) =>+  Lens.Family2.LensLike' f s a+maybe'patch = Data.ProtoLens.Field.field @"maybe'patch"+maybe'suffix ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'suffix" a) =>+  Lens.Family2.LensLike' f s a+maybe'suffix = Data.ProtoLens.Field.field @"maybe'suffix"+minor ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "minor" a) =>+  Lens.Family2.LensLike' f s a+minor = Data.ProtoLens.Field.field @"minor"+name ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "name" a) =>+  Lens.Family2.LensLike' f s a+name = Data.ProtoLens.Field.field @"name"+parameter ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "parameter" a) =>+  Lens.Family2.LensLike' f s a+parameter = Data.ProtoLens.Field.field @"parameter"+patch ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "patch" a) =>+  Lens.Family2.LensLike' f s a+patch = Data.ProtoLens.Field.field @"patch"+protoFile ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "protoFile" a) =>+  Lens.Family2.LensLike' f s a+protoFile = Data.ProtoLens.Field.field @"protoFile"+suffix ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "suffix" a) =>+  Lens.Family2.LensLike' f s a+suffix = Data.ProtoLens.Field.field @"suffix"+vec'file ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'file" a) =>+  Lens.Family2.LensLike' f s a+vec'file = Data.ProtoLens.Field.field @"vec'file"+vec'fileToGenerate ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'fileToGenerate" a) =>+  Lens.Family2.LensLike' f s a+vec'fileToGenerate+  = Data.ProtoLens.Field.field @"vec'fileToGenerate"+vec'protoFile ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'protoFile" a) =>+  Lens.Family2.LensLike' f s a+vec'protoFile = Data.ProtoLens.Field.field @"vec'protoFile"
+ app/Proto/Google/Protobuf/Descriptor.hs view
@@ -0,0 +1,9947 @@+{- This file was auto-generated from google/protobuf/descriptor.proto by the proto-lens-protoc program. -}+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies, UndecidableInstances, GeneralizedNewtypeDeriving, MultiParamTypeClasses, FlexibleContexts, FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude, DataKinds, BangPatterns, TypeApplications#-}+{-# OPTIONS_GHC -Wno-unused-imports#-}+{-# OPTIONS_GHC -Wno-duplicate-exports#-}+{-# OPTIONS_GHC -Wno-dodgy-exports#-}+module Proto.Google.Protobuf.Descriptor (+        DescriptorProto(), DescriptorProto'ExtensionRange(),+        DescriptorProto'ReservedRange(), EnumDescriptorProto(),+        EnumDescriptorProto'EnumReservedRange(), EnumOptions(),+        EnumValueDescriptorProto(), EnumValueOptions(),+        ExtensionRangeOptions(), FieldDescriptorProto(),+        FieldDescriptorProto'Label(..), FieldDescriptorProto'Label(),+        FieldDescriptorProto'Type(..), FieldDescriptorProto'Type(),+        FieldOptions(), FieldOptions'CType(..), FieldOptions'CType(),+        FieldOptions'JSType(..), FieldOptions'JSType(),+        FileDescriptorProto(), FileDescriptorSet(), FileOptions(),+        FileOptions'OptimizeMode(..), FileOptions'OptimizeMode(),+        GeneratedCodeInfo(), GeneratedCodeInfo'Annotation(),+        MessageOptions(), MethodDescriptorProto(), MethodOptions(),+        MethodOptions'IdempotencyLevel(..),+        MethodOptions'IdempotencyLevel(), OneofDescriptorProto(),+        OneofOptions(), ServiceDescriptorProto(), ServiceOptions(),+        SourceCodeInfo(), SourceCodeInfo'Location(), UninterpretedOption(),+        UninterpretedOption'NamePart()+    ) where+import qualified Data.ProtoLens.Runtime.Control.DeepSeq as Control.DeepSeq+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Prism as Data.ProtoLens.Prism+import qualified Data.ProtoLens.Runtime.Prelude as Prelude+import qualified Data.ProtoLens.Runtime.Data.Int as Data.Int+import qualified Data.ProtoLens.Runtime.Data.Monoid as Data.Monoid+import qualified Data.ProtoLens.Runtime.Data.Word as Data.Word+import qualified Data.ProtoLens.Runtime.Data.ProtoLens as Data.ProtoLens+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Bytes as Data.ProtoLens.Encoding.Bytes+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Growing as Data.ProtoLens.Encoding.Growing+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Parser.Unsafe as Data.ProtoLens.Encoding.Parser.Unsafe+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Wire as Data.ProtoLens.Encoding.Wire+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Field as Data.ProtoLens.Field+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Message.Enum as Data.ProtoLens.Message.Enum+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Service.Types as Data.ProtoLens.Service.Types+import qualified Data.ProtoLens.Runtime.Lens.Family2 as Lens.Family2+import qualified Data.ProtoLens.Runtime.Lens.Family2.Unchecked as Lens.Family2.Unchecked+import qualified Data.ProtoLens.Runtime.Data.Text as Data.Text+import qualified Data.ProtoLens.Runtime.Data.Map as Data.Map+import qualified Data.ProtoLens.Runtime.Data.ByteString as Data.ByteString+import qualified Data.ProtoLens.Runtime.Data.ByteString.Char8 as Data.ByteString.Char8+import qualified Data.ProtoLens.Runtime.Data.Text.Encoding as Data.Text.Encoding+import qualified Data.ProtoLens.Runtime.Data.Vector as Data.Vector+import qualified Data.ProtoLens.Runtime.Data.Vector.Generic as Data.Vector.Generic+import qualified Data.ProtoLens.Runtime.Data.Vector.Unboxed as Data.Vector.Unboxed+import qualified Data.ProtoLens.Runtime.Text.Read as Text.Read+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' DescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' DescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.field' @:: Lens' DescriptorProto [FieldDescriptorProto]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'field' @:: Lens' DescriptorProto (Data.Vector.Vector FieldDescriptorProto)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.extension' @:: Lens' DescriptorProto [FieldDescriptorProto]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'extension' @:: Lens' DescriptorProto (Data.Vector.Vector FieldDescriptorProto)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.nestedType' @:: Lens' DescriptorProto [DescriptorProto]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'nestedType' @:: Lens' DescriptorProto (Data.Vector.Vector DescriptorProto)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.enumType' @:: Lens' DescriptorProto [EnumDescriptorProto]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'enumType' @:: Lens' DescriptorProto (Data.Vector.Vector EnumDescriptorProto)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.extensionRange' @:: Lens' DescriptorProto [DescriptorProto'ExtensionRange]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'extensionRange' @:: Lens' DescriptorProto (Data.Vector.Vector DescriptorProto'ExtensionRange)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.oneofDecl' @:: Lens' DescriptorProto [OneofDescriptorProto]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'oneofDecl' @:: Lens' DescriptorProto (Data.Vector.Vector OneofDescriptorProto)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' DescriptorProto MessageOptions@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' DescriptorProto (Prelude.Maybe MessageOptions)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.reservedRange' @:: Lens' DescriptorProto [DescriptorProto'ReservedRange]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'reservedRange' @:: Lens' DescriptorProto (Data.Vector.Vector DescriptorProto'ReservedRange)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.reservedName' @:: Lens' DescriptorProto [Data.Text.Text]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'reservedName' @:: Lens' DescriptorProto (Data.Vector.Vector Data.Text.Text)@ -}+data DescriptorProto+  = DescriptorProto'_constructor {_DescriptorProto'name :: !(Prelude.Maybe Data.Text.Text),+                                  _DescriptorProto'field :: !(Data.Vector.Vector FieldDescriptorProto),+                                  _DescriptorProto'extension :: !(Data.Vector.Vector FieldDescriptorProto),+                                  _DescriptorProto'nestedType :: !(Data.Vector.Vector DescriptorProto),+                                  _DescriptorProto'enumType :: !(Data.Vector.Vector EnumDescriptorProto),+                                  _DescriptorProto'extensionRange :: !(Data.Vector.Vector DescriptorProto'ExtensionRange),+                                  _DescriptorProto'oneofDecl :: !(Data.Vector.Vector OneofDescriptorProto),+                                  _DescriptorProto'options :: !(Prelude.Maybe MessageOptions),+                                  _DescriptorProto'reservedRange :: !(Data.Vector.Vector DescriptorProto'ReservedRange),+                                  _DescriptorProto'reservedName :: !(Data.Vector.Vector Data.Text.Text),+                                  _DescriptorProto'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show DescriptorProto where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField DescriptorProto "name" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'name+           (\ x__ y__ -> x__ {_DescriptorProto'name = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField DescriptorProto "maybe'name" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'name+           (\ x__ y__ -> x__ {_DescriptorProto'name = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField DescriptorProto "field" [FieldDescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'field+           (\ x__ y__ -> x__ {_DescriptorProto'field = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField DescriptorProto "vec'field" (Data.Vector.Vector FieldDescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'field+           (\ x__ y__ -> x__ {_DescriptorProto'field = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField DescriptorProto "extension" [FieldDescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'extension+           (\ x__ y__ -> x__ {_DescriptorProto'extension = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField DescriptorProto "vec'extension" (Data.Vector.Vector FieldDescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'extension+           (\ x__ y__ -> x__ {_DescriptorProto'extension = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField DescriptorProto "nestedType" [DescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'nestedType+           (\ x__ y__ -> x__ {_DescriptorProto'nestedType = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField DescriptorProto "vec'nestedType" (Data.Vector.Vector DescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'nestedType+           (\ x__ y__ -> x__ {_DescriptorProto'nestedType = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField DescriptorProto "enumType" [EnumDescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'enumType+           (\ x__ y__ -> x__ {_DescriptorProto'enumType = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField DescriptorProto "vec'enumType" (Data.Vector.Vector EnumDescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'enumType+           (\ x__ y__ -> x__ {_DescriptorProto'enumType = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField DescriptorProto "extensionRange" [DescriptorProto'ExtensionRange] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'extensionRange+           (\ x__ y__ -> x__ {_DescriptorProto'extensionRange = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField DescriptorProto "vec'extensionRange" (Data.Vector.Vector DescriptorProto'ExtensionRange) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'extensionRange+           (\ x__ y__ -> x__ {_DescriptorProto'extensionRange = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField DescriptorProto "oneofDecl" [OneofDescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'oneofDecl+           (\ x__ y__ -> x__ {_DescriptorProto'oneofDecl = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField DescriptorProto "vec'oneofDecl" (Data.Vector.Vector OneofDescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'oneofDecl+           (\ x__ y__ -> x__ {_DescriptorProto'oneofDecl = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField DescriptorProto "options" MessageOptions where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'options+           (\ x__ y__ -> x__ {_DescriptorProto'options = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)+instance Data.ProtoLens.Field.HasField DescriptorProto "maybe'options" (Prelude.Maybe MessageOptions) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'options+           (\ x__ y__ -> x__ {_DescriptorProto'options = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField DescriptorProto "reservedRange" [DescriptorProto'ReservedRange] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'reservedRange+           (\ x__ y__ -> x__ {_DescriptorProto'reservedRange = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField DescriptorProto "vec'reservedRange" (Data.Vector.Vector DescriptorProto'ReservedRange) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'reservedRange+           (\ x__ y__ -> x__ {_DescriptorProto'reservedRange = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField DescriptorProto "reservedName" [Data.Text.Text] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'reservedName+           (\ x__ y__ -> x__ {_DescriptorProto'reservedName = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField DescriptorProto "vec'reservedName" (Data.Vector.Vector Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'reservedName+           (\ x__ y__ -> x__ {_DescriptorProto'reservedName = y__}))+        Prelude.id+instance Data.ProtoLens.Message DescriptorProto where+  messageName _ = Data.Text.pack "google.protobuf.DescriptorProto"+  fieldsByTag+    = let+        name__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'name")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto+        field__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "field"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked (Data.ProtoLens.Field.field @"field")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto+        extension__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "extension"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"extension")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto+        nestedType__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "nested_type"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor DescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"nestedType")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto+        enumType__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "enum_type"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor EnumDescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"enumType")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto+        extensionRange__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "extension_range"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor DescriptorProto'ExtensionRange)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"extensionRange")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto+        oneofDecl__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "oneof_decl"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor OneofDescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"oneofDecl")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto+        options__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "options"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor MessageOptions)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'options")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto+        reservedRange__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "reserved_range"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor DescriptorProto'ReservedRange)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"reservedRange")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto+        reservedName__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "reserved_name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"reservedName")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, name__field_descriptor),+           (Data.ProtoLens.Tag 2, field__field_descriptor),+           (Data.ProtoLens.Tag 6, extension__field_descriptor),+           (Data.ProtoLens.Tag 3, nestedType__field_descriptor),+           (Data.ProtoLens.Tag 4, enumType__field_descriptor),+           (Data.ProtoLens.Tag 5, extensionRange__field_descriptor),+           (Data.ProtoLens.Tag 8, oneofDecl__field_descriptor),+           (Data.ProtoLens.Tag 7, options__field_descriptor),+           (Data.ProtoLens.Tag 9, reservedRange__field_descriptor),+           (Data.ProtoLens.Tag 10, reservedName__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _DescriptorProto'_unknownFields+        (\ x__ y__ -> x__ {_DescriptorProto'_unknownFields = y__})+  defMessage+    = DescriptorProto'_constructor+        {_DescriptorProto'name = Prelude.Nothing,+         _DescriptorProto'field = Data.Vector.Generic.empty,+         _DescriptorProto'extension = Data.Vector.Generic.empty,+         _DescriptorProto'nestedType = Data.Vector.Generic.empty,+         _DescriptorProto'enumType = Data.Vector.Generic.empty,+         _DescriptorProto'extensionRange = Data.Vector.Generic.empty,+         _DescriptorProto'oneofDecl = Data.Vector.Generic.empty,+         _DescriptorProto'options = Prelude.Nothing,+         _DescriptorProto'reservedRange = Data.Vector.Generic.empty,+         _DescriptorProto'reservedName = Data.Vector.Generic.empty,+         _DescriptorProto'_unknownFields = []}+  parseMessage+    = let+        loop ::+          DescriptorProto+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld EnumDescriptorProto+             -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld FieldDescriptorProto+                -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld DescriptorProto'ExtensionRange+                   -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld FieldDescriptorProto+                      -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld DescriptorProto+                         -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld OneofDescriptorProto+                            -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld Data.Text.Text+                               -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld DescriptorProto'ReservedRange+                                  -> Data.ProtoLens.Encoding.Bytes.Parser DescriptorProto+        loop+          x+          mutable'enumType+          mutable'extension+          mutable'extensionRange+          mutable'field+          mutable'nestedType+          mutable'oneofDecl+          mutable'reservedName+          mutable'reservedRange+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'enumType <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                           (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                              mutable'enumType)+                      frozen'extension <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                            (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                               mutable'extension)+                      frozen'extensionRange <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                 (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                    mutable'extensionRange)+                      frozen'field <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                        (Data.ProtoLens.Encoding.Growing.unsafeFreeze mutable'field)+                      frozen'nestedType <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                             (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                mutable'nestedType)+                      frozen'oneofDecl <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                            (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                               mutable'oneofDecl)+                      frozen'reservedName <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                               (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                  mutable'reservedName)+                      frozen'reservedRange <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                   mutable'reservedRange)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'enumType")+                              frozen'enumType+                              (Lens.Family2.set+                                 (Data.ProtoLens.Field.field @"vec'extension")+                                 frozen'extension+                                 (Lens.Family2.set+                                    (Data.ProtoLens.Field.field @"vec'extensionRange")+                                    frozen'extensionRange+                                    (Lens.Family2.set+                                       (Data.ProtoLens.Field.field @"vec'field")+                                       frozen'field+                                       (Lens.Family2.set+                                          (Data.ProtoLens.Field.field @"vec'nestedType")+                                          frozen'nestedType+                                          (Lens.Family2.set+                                             (Data.ProtoLens.Field.field @"vec'oneofDecl")+                                             frozen'oneofDecl+                                             (Lens.Family2.set+                                                (Data.ProtoLens.Field.field @"vec'reservedName")+                                                frozen'reservedName+                                                (Lens.Family2.set+                                                   (Data.ProtoLens.Field.field @"vec'reservedRange")+                                                   frozen'reservedRange+                                                   x)))))))))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "name"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"name") y x)+                                  mutable'enumType+                                  mutable'extension+                                  mutable'extensionRange+                                  mutable'field+                                  mutable'nestedType+                                  mutable'oneofDecl+                                  mutable'reservedName+                                  mutable'reservedRange+                        18+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "field"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'field y)+                                loop+                                  x+                                  mutable'enumType+                                  mutable'extension+                                  mutable'extensionRange+                                  v+                                  mutable'nestedType+                                  mutable'oneofDecl+                                  mutable'reservedName+                                  mutable'reservedRange+                        50+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "extension"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'extension y)+                                loop+                                  x+                                  mutable'enumType+                                  v+                                  mutable'extensionRange+                                  mutable'field+                                  mutable'nestedType+                                  mutable'oneofDecl+                                  mutable'reservedName+                                  mutable'reservedRange+                        26+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "nested_type"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'nestedType y)+                                loop+                                  x+                                  mutable'enumType+                                  mutable'extension+                                  mutable'extensionRange+                                  mutable'field+                                  v+                                  mutable'oneofDecl+                                  mutable'reservedName+                                  mutable'reservedRange+                        34+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "enum_type"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'enumType y)+                                loop+                                  x+                                  v+                                  mutable'extension+                                  mutable'extensionRange+                                  mutable'field+                                  mutable'nestedType+                                  mutable'oneofDecl+                                  mutable'reservedName+                                  mutable'reservedRange+                        42+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "extension_range"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'extensionRange y)+                                loop+                                  x+                                  mutable'enumType+                                  mutable'extension+                                  v+                                  mutable'field+                                  mutable'nestedType+                                  mutable'oneofDecl+                                  mutable'reservedName+                                  mutable'reservedRange+                        66+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "oneof_decl"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'oneofDecl y)+                                loop+                                  x+                                  mutable'enumType+                                  mutable'extension+                                  mutable'extensionRange+                                  mutable'field+                                  mutable'nestedType+                                  v+                                  mutable'reservedName+                                  mutable'reservedRange+                        58+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                           Data.ProtoLens.Encoding.Bytes.isolate+                                             (Prelude.fromIntegral len) Data.ProtoLens.parseMessage)+                                       "options"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"options") y x)+                                  mutable'enumType+                                  mutable'extension+                                  mutable'extensionRange+                                  mutable'field+                                  mutable'nestedType+                                  mutable'oneofDecl+                                  mutable'reservedName+                                  mutable'reservedRange+                        74+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "reserved_range"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'reservedRange y)+                                loop+                                  x+                                  mutable'enumType+                                  mutable'extension+                                  mutable'extensionRange+                                  mutable'field+                                  mutable'nestedType+                                  mutable'oneofDecl+                                  mutable'reservedName+                                  v+                        82+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                        Data.ProtoLens.Encoding.Bytes.getBytes+                                                          (Prelude.fromIntegral len)+                                            Data.ProtoLens.Encoding.Bytes.runEither+                                              (case Data.Text.Encoding.decodeUtf8' value of+                                                 (Prelude.Left err)+                                                   -> Prelude.Left (Prelude.show err)+                                                 (Prelude.Right r) -> Prelude.Right r))+                                        "reserved_name"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'reservedName y)+                                loop+                                  x+                                  mutable'enumType+                                  mutable'extension+                                  mutable'extensionRange+                                  mutable'field+                                  mutable'nestedType+                                  mutable'oneofDecl+                                  v+                                  mutable'reservedRange+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'enumType+                                  mutable'extension+                                  mutable'extensionRange+                                  mutable'field+                                  mutable'nestedType+                                  mutable'oneofDecl+                                  mutable'reservedName+                                  mutable'reservedRange+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'enumType <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                    Data.ProtoLens.Encoding.Growing.new+              mutable'extension <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                     Data.ProtoLens.Encoding.Growing.new+              mutable'extensionRange <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                          Data.ProtoLens.Encoding.Growing.new+              mutable'field <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                 Data.ProtoLens.Encoding.Growing.new+              mutable'nestedType <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                      Data.ProtoLens.Encoding.Growing.new+              mutable'oneofDecl <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                     Data.ProtoLens.Encoding.Growing.new+              mutable'reservedName <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                        Data.ProtoLens.Encoding.Growing.new+              mutable'reservedRange <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                         Data.ProtoLens.Encoding.Growing.new+              loop+                Data.ProtoLens.defMessage+                mutable'enumType+                mutable'extension+                mutable'extensionRange+                mutable'field+                mutable'nestedType+                mutable'oneofDecl+                mutable'reservedName+                mutable'reservedRange)+          "DescriptorProto"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'name") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                       ((Prelude..)+                          (\ bs+                             -> (Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                     (Prelude.fromIntegral (Data.ByteString.length bs)))+                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                          Data.Text.Encoding.encodeUtf8+                          _v))+             ((Data.Monoid.<>)+                (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                   (\ _v+                      -> (Data.Monoid.<>)+                           (Data.ProtoLens.Encoding.Bytes.putVarInt 18)+                           ((Prelude..)+                              (\ bs+                                 -> (Data.Monoid.<>)+                                      (Data.ProtoLens.Encoding.Bytes.putVarInt+                                         (Prelude.fromIntegral (Data.ByteString.length bs)))+                                      (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                              Data.ProtoLens.encodeMessage+                              _v))+                   (Lens.Family2.view (Data.ProtoLens.Field.field @"vec'field") _x))+                ((Data.Monoid.<>)+                   (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                      (\ _v+                         -> (Data.Monoid.<>)+                              (Data.ProtoLens.Encoding.Bytes.putVarInt 50)+                              ((Prelude..)+                                 (\ bs+                                    -> (Data.Monoid.<>)+                                         (Data.ProtoLens.Encoding.Bytes.putVarInt+                                            (Prelude.fromIntegral (Data.ByteString.length bs)))+                                         (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                 Data.ProtoLens.encodeMessage+                                 _v))+                      (Lens.Family2.view+                         (Data.ProtoLens.Field.field @"vec'extension") _x))+                   ((Data.Monoid.<>)+                      (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                         (\ _v+                            -> (Data.Monoid.<>)+                                 (Data.ProtoLens.Encoding.Bytes.putVarInt 26)+                                 ((Prelude..)+                                    (\ bs+                                       -> (Data.Monoid.<>)+                                            (Data.ProtoLens.Encoding.Bytes.putVarInt+                                               (Prelude.fromIntegral (Data.ByteString.length bs)))+                                            (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                    Data.ProtoLens.encodeMessage+                                    _v))+                         (Lens.Family2.view+                            (Data.ProtoLens.Field.field @"vec'nestedType") _x))+                      ((Data.Monoid.<>)+                         (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                            (\ _v+                               -> (Data.Monoid.<>)+                                    (Data.ProtoLens.Encoding.Bytes.putVarInt 34)+                                    ((Prelude..)+                                       (\ bs+                                          -> (Data.Monoid.<>)+                                               (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                  (Prelude.fromIntegral+                                                     (Data.ByteString.length bs)))+                                               (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                       Data.ProtoLens.encodeMessage+                                       _v))+                            (Lens.Family2.view+                               (Data.ProtoLens.Field.field @"vec'enumType") _x))+                         ((Data.Monoid.<>)+                            (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                               (\ _v+                                  -> (Data.Monoid.<>)+                                       (Data.ProtoLens.Encoding.Bytes.putVarInt 42)+                                       ((Prelude..)+                                          (\ bs+                                             -> (Data.Monoid.<>)+                                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                     (Prelude.fromIntegral+                                                        (Data.ByteString.length bs)))+                                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                          Data.ProtoLens.encodeMessage+                                          _v))+                               (Lens.Family2.view+                                  (Data.ProtoLens.Field.field @"vec'extensionRange") _x))+                            ((Data.Monoid.<>)+                               (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                                  (\ _v+                                     -> (Data.Monoid.<>)+                                          (Data.ProtoLens.Encoding.Bytes.putVarInt 66)+                                          ((Prelude..)+                                             (\ bs+                                                -> (Data.Monoid.<>)+                                                     (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                        (Prelude.fromIntegral+                                                           (Data.ByteString.length bs)))+                                                     (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                             Data.ProtoLens.encodeMessage+                                             _v))+                                  (Lens.Family2.view+                                     (Data.ProtoLens.Field.field @"vec'oneofDecl") _x))+                               ((Data.Monoid.<>)+                                  (case+                                       Lens.Family2.view+                                         (Data.ProtoLens.Field.field @"maybe'options") _x+                                   of+                                     Prelude.Nothing -> Data.Monoid.mempty+                                     (Prelude.Just _v)+                                       -> (Data.Monoid.<>)+                                            (Data.ProtoLens.Encoding.Bytes.putVarInt 58)+                                            ((Prelude..)+                                               (\ bs+                                                  -> (Data.Monoid.<>)+                                                       (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                          (Prelude.fromIntegral+                                                             (Data.ByteString.length bs)))+                                                       (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                               Data.ProtoLens.encodeMessage+                                               _v))+                                  ((Data.Monoid.<>)+                                     (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                                        (\ _v+                                           -> (Data.Monoid.<>)+                                                (Data.ProtoLens.Encoding.Bytes.putVarInt 74)+                                                ((Prelude..)+                                                   (\ bs+                                                      -> (Data.Monoid.<>)+                                                           (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                              (Prelude.fromIntegral+                                                                 (Data.ByteString.length bs)))+                                                           (Data.ProtoLens.Encoding.Bytes.putBytes+                                                              bs))+                                                   Data.ProtoLens.encodeMessage+                                                   _v))+                                        (Lens.Family2.view+                                           (Data.ProtoLens.Field.field @"vec'reservedRange") _x))+                                     ((Data.Monoid.<>)+                                        (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                                           (\ _v+                                              -> (Data.Monoid.<>)+                                                   (Data.ProtoLens.Encoding.Bytes.putVarInt 82)+                                                   ((Prelude..)+                                                      (\ bs+                                                         -> (Data.Monoid.<>)+                                                              (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                 (Prelude.fromIntegral+                                                                    (Data.ByteString.length bs)))+                                                              (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                 bs))+                                                      Data.Text.Encoding.encodeUtf8+                                                      _v))+                                           (Lens.Family2.view+                                              (Data.ProtoLens.Field.field @"vec'reservedName") _x))+                                        (Data.ProtoLens.Encoding.Wire.buildFieldSet+                                           (Lens.Family2.view+                                              Data.ProtoLens.unknownFields _x)))))))))))+instance Control.DeepSeq.NFData DescriptorProto where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_DescriptorProto'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_DescriptorProto'name x__)+                (Control.DeepSeq.deepseq+                   (_DescriptorProto'field x__)+                   (Control.DeepSeq.deepseq+                      (_DescriptorProto'extension x__)+                      (Control.DeepSeq.deepseq+                         (_DescriptorProto'nestedType x__)+                         (Control.DeepSeq.deepseq+                            (_DescriptorProto'enumType x__)+                            (Control.DeepSeq.deepseq+                               (_DescriptorProto'extensionRange x__)+                               (Control.DeepSeq.deepseq+                                  (_DescriptorProto'oneofDecl x__)+                                  (Control.DeepSeq.deepseq+                                     (_DescriptorProto'options x__)+                                     (Control.DeepSeq.deepseq+                                        (_DescriptorProto'reservedRange x__)+                                        (Control.DeepSeq.deepseq+                                           (_DescriptorProto'reservedName x__) ()))))))))))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.start' @:: Lens' DescriptorProto'ExtensionRange Data.Int.Int32@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'start' @:: Lens' DescriptorProto'ExtensionRange (Prelude.Maybe Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.end' @:: Lens' DescriptorProto'ExtensionRange Data.Int.Int32@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'end' @:: Lens' DescriptorProto'ExtensionRange (Prelude.Maybe Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' DescriptorProto'ExtensionRange ExtensionRangeOptions@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' DescriptorProto'ExtensionRange (Prelude.Maybe ExtensionRangeOptions)@ -}+data DescriptorProto'ExtensionRange+  = DescriptorProto'ExtensionRange'_constructor {_DescriptorProto'ExtensionRange'start :: !(Prelude.Maybe Data.Int.Int32),+                                                 _DescriptorProto'ExtensionRange'end :: !(Prelude.Maybe Data.Int.Int32),+                                                 _DescriptorProto'ExtensionRange'options :: !(Prelude.Maybe ExtensionRangeOptions),+                                                 _DescriptorProto'ExtensionRange'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show DescriptorProto'ExtensionRange where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField DescriptorProto'ExtensionRange "start" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'ExtensionRange'start+           (\ x__ y__ -> x__ {_DescriptorProto'ExtensionRange'start = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField DescriptorProto'ExtensionRange "maybe'start" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'ExtensionRange'start+           (\ x__ y__ -> x__ {_DescriptorProto'ExtensionRange'start = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField DescriptorProto'ExtensionRange "end" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'ExtensionRange'end+           (\ x__ y__ -> x__ {_DescriptorProto'ExtensionRange'end = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField DescriptorProto'ExtensionRange "maybe'end" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'ExtensionRange'end+           (\ x__ y__ -> x__ {_DescriptorProto'ExtensionRange'end = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField DescriptorProto'ExtensionRange "options" ExtensionRangeOptions where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'ExtensionRange'options+           (\ x__ y__ -> x__ {_DescriptorProto'ExtensionRange'options = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)+instance Data.ProtoLens.Field.HasField DescriptorProto'ExtensionRange "maybe'options" (Prelude.Maybe ExtensionRangeOptions) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'ExtensionRange'options+           (\ x__ y__ -> x__ {_DescriptorProto'ExtensionRange'options = y__}))+        Prelude.id+instance Data.ProtoLens.Message DescriptorProto'ExtensionRange where+  messageName _+    = Data.Text.pack "google.protobuf.DescriptorProto.ExtensionRange"+  fieldsByTag+    = let+        start__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "start"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'start")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto'ExtensionRange+        end__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "end"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'end")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto'ExtensionRange+        options__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "options"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor ExtensionRangeOptions)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'options")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto'ExtensionRange+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, start__field_descriptor),+           (Data.ProtoLens.Tag 2, end__field_descriptor),+           (Data.ProtoLens.Tag 3, options__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _DescriptorProto'ExtensionRange'_unknownFields+        (\ x__ y__+           -> x__ {_DescriptorProto'ExtensionRange'_unknownFields = y__})+  defMessage+    = DescriptorProto'ExtensionRange'_constructor+        {_DescriptorProto'ExtensionRange'start = Prelude.Nothing,+         _DescriptorProto'ExtensionRange'end = Prelude.Nothing,+         _DescriptorProto'ExtensionRange'options = Prelude.Nothing,+         _DescriptorProto'ExtensionRange'_unknownFields = []}+  parseMessage+    = let+        loop ::+          DescriptorProto'ExtensionRange+          -> Data.ProtoLens.Encoding.Bytes.Parser DescriptorProto'ExtensionRange+        loop x+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields (\ !t -> Prelude.reverse t) x)+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        8 -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "start"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"start") y x)+                        16+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "end"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"end") y x)+                        26+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                           Data.ProtoLens.Encoding.Bytes.isolate+                                             (Prelude.fromIntegral len) Data.ProtoLens.parseMessage)+                                       "options"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"options") y x)+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do loop Data.ProtoLens.defMessage) "ExtensionRange"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'start") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 8)+                       ((Prelude..)+                          Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'end") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 16)+                          ((Prelude..)+                             Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'options") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 26)+                             ((Prelude..)+                                (\ bs+                                   -> (Data.Monoid.<>)+                                        (Data.ProtoLens.Encoding.Bytes.putVarInt+                                           (Prelude.fromIntegral (Data.ByteString.length bs)))+                                        (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                Data.ProtoLens.encodeMessage+                                _v))+                   (Data.ProtoLens.Encoding.Wire.buildFieldSet+                      (Lens.Family2.view Data.ProtoLens.unknownFields _x))))+instance Control.DeepSeq.NFData DescriptorProto'ExtensionRange where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_DescriptorProto'ExtensionRange'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_DescriptorProto'ExtensionRange'start x__)+                (Control.DeepSeq.deepseq+                   (_DescriptorProto'ExtensionRange'end x__)+                   (Control.DeepSeq.deepseq+                      (_DescriptorProto'ExtensionRange'options x__) ())))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.start' @:: Lens' DescriptorProto'ReservedRange Data.Int.Int32@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'start' @:: Lens' DescriptorProto'ReservedRange (Prelude.Maybe Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.end' @:: Lens' DescriptorProto'ReservedRange Data.Int.Int32@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'end' @:: Lens' DescriptorProto'ReservedRange (Prelude.Maybe Data.Int.Int32)@ -}+data DescriptorProto'ReservedRange+  = DescriptorProto'ReservedRange'_constructor {_DescriptorProto'ReservedRange'start :: !(Prelude.Maybe Data.Int.Int32),+                                                _DescriptorProto'ReservedRange'end :: !(Prelude.Maybe Data.Int.Int32),+                                                _DescriptorProto'ReservedRange'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show DescriptorProto'ReservedRange where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField DescriptorProto'ReservedRange "start" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'ReservedRange'start+           (\ x__ y__ -> x__ {_DescriptorProto'ReservedRange'start = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField DescriptorProto'ReservedRange "maybe'start" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'ReservedRange'start+           (\ x__ y__ -> x__ {_DescriptorProto'ReservedRange'start = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField DescriptorProto'ReservedRange "end" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'ReservedRange'end+           (\ x__ y__ -> x__ {_DescriptorProto'ReservedRange'end = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField DescriptorProto'ReservedRange "maybe'end" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _DescriptorProto'ReservedRange'end+           (\ x__ y__ -> x__ {_DescriptorProto'ReservedRange'end = y__}))+        Prelude.id+instance Data.ProtoLens.Message DescriptorProto'ReservedRange where+  messageName _+    = Data.Text.pack "google.protobuf.DescriptorProto.ReservedRange"+  fieldsByTag+    = let+        start__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "start"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'start")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto'ReservedRange+        end__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "end"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'end")) ::+              Data.ProtoLens.FieldDescriptor DescriptorProto'ReservedRange+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, start__field_descriptor),+           (Data.ProtoLens.Tag 2, end__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _DescriptorProto'ReservedRange'_unknownFields+        (\ x__ y__+           -> x__ {_DescriptorProto'ReservedRange'_unknownFields = y__})+  defMessage+    = DescriptorProto'ReservedRange'_constructor+        {_DescriptorProto'ReservedRange'start = Prelude.Nothing,+         _DescriptorProto'ReservedRange'end = Prelude.Nothing,+         _DescriptorProto'ReservedRange'_unknownFields = []}+  parseMessage+    = let+        loop ::+          DescriptorProto'ReservedRange+          -> Data.ProtoLens.Encoding.Bytes.Parser DescriptorProto'ReservedRange+        loop x+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields (\ !t -> Prelude.reverse t) x)+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        8 -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "start"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"start") y x)+                        16+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "end"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"end") y x)+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do loop Data.ProtoLens.defMessage) "ReservedRange"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'start") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 8)+                       ((Prelude..)+                          Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'end") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 16)+                          ((Prelude..)+                             Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+                (Data.ProtoLens.Encoding.Wire.buildFieldSet+                   (Lens.Family2.view Data.ProtoLens.unknownFields _x)))+instance Control.DeepSeq.NFData DescriptorProto'ReservedRange where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_DescriptorProto'ReservedRange'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_DescriptorProto'ReservedRange'start x__)+                (Control.DeepSeq.deepseq+                   (_DescriptorProto'ReservedRange'end x__) ()))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' EnumDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' EnumDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.value' @:: Lens' EnumDescriptorProto [EnumValueDescriptorProto]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'value' @:: Lens' EnumDescriptorProto (Data.Vector.Vector EnumValueDescriptorProto)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' EnumDescriptorProto EnumOptions@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' EnumDescriptorProto (Prelude.Maybe EnumOptions)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.reservedRange' @:: Lens' EnumDescriptorProto [EnumDescriptorProto'EnumReservedRange]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'reservedRange' @:: Lens' EnumDescriptorProto (Data.Vector.Vector EnumDescriptorProto'EnumReservedRange)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.reservedName' @:: Lens' EnumDescriptorProto [Data.Text.Text]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'reservedName' @:: Lens' EnumDescriptorProto (Data.Vector.Vector Data.Text.Text)@ -}+data EnumDescriptorProto+  = EnumDescriptorProto'_constructor {_EnumDescriptorProto'name :: !(Prelude.Maybe Data.Text.Text),+                                      _EnumDescriptorProto'value :: !(Data.Vector.Vector EnumValueDescriptorProto),+                                      _EnumDescriptorProto'options :: !(Prelude.Maybe EnumOptions),+                                      _EnumDescriptorProto'reservedRange :: !(Data.Vector.Vector EnumDescriptorProto'EnumReservedRange),+                                      _EnumDescriptorProto'reservedName :: !(Data.Vector.Vector Data.Text.Text),+                                      _EnumDescriptorProto'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show EnumDescriptorProto where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField EnumDescriptorProto "name" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'name+           (\ x__ y__ -> x__ {_EnumDescriptorProto'name = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField EnumDescriptorProto "maybe'name" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'name+           (\ x__ y__ -> x__ {_EnumDescriptorProto'name = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField EnumDescriptorProto "value" [EnumValueDescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'value+           (\ x__ y__ -> x__ {_EnumDescriptorProto'value = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField EnumDescriptorProto "vec'value" (Data.Vector.Vector EnumValueDescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'value+           (\ x__ y__ -> x__ {_EnumDescriptorProto'value = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField EnumDescriptorProto "options" EnumOptions where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'options+           (\ x__ y__ -> x__ {_EnumDescriptorProto'options = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)+instance Data.ProtoLens.Field.HasField EnumDescriptorProto "maybe'options" (Prelude.Maybe EnumOptions) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'options+           (\ x__ y__ -> x__ {_EnumDescriptorProto'options = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField EnumDescriptorProto "reservedRange" [EnumDescriptorProto'EnumReservedRange] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'reservedRange+           (\ x__ y__ -> x__ {_EnumDescriptorProto'reservedRange = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField EnumDescriptorProto "vec'reservedRange" (Data.Vector.Vector EnumDescriptorProto'EnumReservedRange) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'reservedRange+           (\ x__ y__ -> x__ {_EnumDescriptorProto'reservedRange = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField EnumDescriptorProto "reservedName" [Data.Text.Text] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'reservedName+           (\ x__ y__ -> x__ {_EnumDescriptorProto'reservedName = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField EnumDescriptorProto "vec'reservedName" (Data.Vector.Vector Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'reservedName+           (\ x__ y__ -> x__ {_EnumDescriptorProto'reservedName = y__}))+        Prelude.id+instance Data.ProtoLens.Message EnumDescriptorProto where+  messageName _+    = Data.Text.pack "google.protobuf.EnumDescriptorProto"+  fieldsByTag+    = let+        name__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'name")) ::+              Data.ProtoLens.FieldDescriptor EnumDescriptorProto+        value__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "value"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor EnumValueDescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked (Data.ProtoLens.Field.field @"value")) ::+              Data.ProtoLens.FieldDescriptor EnumDescriptorProto+        options__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "options"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor EnumOptions)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'options")) ::+              Data.ProtoLens.FieldDescriptor EnumDescriptorProto+        reservedRange__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "reserved_range"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor EnumDescriptorProto'EnumReservedRange)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"reservedRange")) ::+              Data.ProtoLens.FieldDescriptor EnumDescriptorProto+        reservedName__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "reserved_name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"reservedName")) ::+              Data.ProtoLens.FieldDescriptor EnumDescriptorProto+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, name__field_descriptor),+           (Data.ProtoLens.Tag 2, value__field_descriptor),+           (Data.ProtoLens.Tag 3, options__field_descriptor),+           (Data.ProtoLens.Tag 4, reservedRange__field_descriptor),+           (Data.ProtoLens.Tag 5, reservedName__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _EnumDescriptorProto'_unknownFields+        (\ x__ y__ -> x__ {_EnumDescriptorProto'_unknownFields = y__})+  defMessage+    = EnumDescriptorProto'_constructor+        {_EnumDescriptorProto'name = Prelude.Nothing,+         _EnumDescriptorProto'value = Data.Vector.Generic.empty,+         _EnumDescriptorProto'options = Prelude.Nothing,+         _EnumDescriptorProto'reservedRange = Data.Vector.Generic.empty,+         _EnumDescriptorProto'reservedName = Data.Vector.Generic.empty,+         _EnumDescriptorProto'_unknownFields = []}+  parseMessage+    = let+        loop ::+          EnumDescriptorProto+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld Data.Text.Text+             -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld EnumDescriptorProto'EnumReservedRange+                -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld EnumValueDescriptorProto+                   -> Data.ProtoLens.Encoding.Bytes.Parser EnumDescriptorProto+        loop x mutable'reservedName mutable'reservedRange mutable'value+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'reservedName <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                               (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                  mutable'reservedName)+                      frozen'reservedRange <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                   mutable'reservedRange)+                      frozen'value <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                        (Data.ProtoLens.Encoding.Growing.unsafeFreeze mutable'value)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'reservedName")+                              frozen'reservedName+                              (Lens.Family2.set+                                 (Data.ProtoLens.Field.field @"vec'reservedRange")+                                 frozen'reservedRange+                                 (Lens.Family2.set+                                    (Data.ProtoLens.Field.field @"vec'value") frozen'value x))))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "name"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"name") y x)+                                  mutable'reservedName+                                  mutable'reservedRange+                                  mutable'value+                        18+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "value"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'value y)+                                loop x mutable'reservedName mutable'reservedRange v+                        26+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                           Data.ProtoLens.Encoding.Bytes.isolate+                                             (Prelude.fromIntegral len) Data.ProtoLens.parseMessage)+                                       "options"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"options") y x)+                                  mutable'reservedName+                                  mutable'reservedRange+                                  mutable'value+                        34+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "reserved_range"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'reservedRange y)+                                loop x mutable'reservedName v mutable'value+                        42+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                        Data.ProtoLens.Encoding.Bytes.getBytes+                                                          (Prelude.fromIntegral len)+                                            Data.ProtoLens.Encoding.Bytes.runEither+                                              (case Data.Text.Encoding.decodeUtf8' value of+                                                 (Prelude.Left err)+                                                   -> Prelude.Left (Prelude.show err)+                                                 (Prelude.Right r) -> Prelude.Right r))+                                        "reserved_name"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'reservedName y)+                                loop x v mutable'reservedRange mutable'value+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'reservedName+                                  mutable'reservedRange+                                  mutable'value+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'reservedName <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                        Data.ProtoLens.Encoding.Growing.new+              mutable'reservedRange <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                         Data.ProtoLens.Encoding.Growing.new+              mutable'value <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                 Data.ProtoLens.Encoding.Growing.new+              loop+                Data.ProtoLens.defMessage+                mutable'reservedName+                mutable'reservedRange+                mutable'value)+          "EnumDescriptorProto"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'name") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                       ((Prelude..)+                          (\ bs+                             -> (Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                     (Prelude.fromIntegral (Data.ByteString.length bs)))+                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                          Data.Text.Encoding.encodeUtf8+                          _v))+             ((Data.Monoid.<>)+                (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                   (\ _v+                      -> (Data.Monoid.<>)+                           (Data.ProtoLens.Encoding.Bytes.putVarInt 18)+                           ((Prelude..)+                              (\ bs+                                 -> (Data.Monoid.<>)+                                      (Data.ProtoLens.Encoding.Bytes.putVarInt+                                         (Prelude.fromIntegral (Data.ByteString.length bs)))+                                      (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                              Data.ProtoLens.encodeMessage+                              _v))+                   (Lens.Family2.view (Data.ProtoLens.Field.field @"vec'value") _x))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'options") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 26)+                             ((Prelude..)+                                (\ bs+                                   -> (Data.Monoid.<>)+                                        (Data.ProtoLens.Encoding.Bytes.putVarInt+                                           (Prelude.fromIntegral (Data.ByteString.length bs)))+                                        (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                Data.ProtoLens.encodeMessage+                                _v))+                   ((Data.Monoid.<>)+                      (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                         (\ _v+                            -> (Data.Monoid.<>)+                                 (Data.ProtoLens.Encoding.Bytes.putVarInt 34)+                                 ((Prelude..)+                                    (\ bs+                                       -> (Data.Monoid.<>)+                                            (Data.ProtoLens.Encoding.Bytes.putVarInt+                                               (Prelude.fromIntegral (Data.ByteString.length bs)))+                                            (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                    Data.ProtoLens.encodeMessage+                                    _v))+                         (Lens.Family2.view+                            (Data.ProtoLens.Field.field @"vec'reservedRange") _x))+                      ((Data.Monoid.<>)+                         (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                            (\ _v+                               -> (Data.Monoid.<>)+                                    (Data.ProtoLens.Encoding.Bytes.putVarInt 42)+                                    ((Prelude..)+                                       (\ bs+                                          -> (Data.Monoid.<>)+                                               (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                  (Prelude.fromIntegral+                                                     (Data.ByteString.length bs)))+                                               (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                       Data.Text.Encoding.encodeUtf8+                                       _v))+                            (Lens.Family2.view+                               (Data.ProtoLens.Field.field @"vec'reservedName") _x))+                         (Data.ProtoLens.Encoding.Wire.buildFieldSet+                            (Lens.Family2.view Data.ProtoLens.unknownFields _x))))))+instance Control.DeepSeq.NFData EnumDescriptorProto where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_EnumDescriptorProto'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_EnumDescriptorProto'name x__)+                (Control.DeepSeq.deepseq+                   (_EnumDescriptorProto'value x__)+                   (Control.DeepSeq.deepseq+                      (_EnumDescriptorProto'options x__)+                      (Control.DeepSeq.deepseq+                         (_EnumDescriptorProto'reservedRange x__)+                         (Control.DeepSeq.deepseq+                            (_EnumDescriptorProto'reservedName x__) ())))))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.start' @:: Lens' EnumDescriptorProto'EnumReservedRange Data.Int.Int32@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'start' @:: Lens' EnumDescriptorProto'EnumReservedRange (Prelude.Maybe Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.end' @:: Lens' EnumDescriptorProto'EnumReservedRange Data.Int.Int32@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'end' @:: Lens' EnumDescriptorProto'EnumReservedRange (Prelude.Maybe Data.Int.Int32)@ -}+data EnumDescriptorProto'EnumReservedRange+  = EnumDescriptorProto'EnumReservedRange'_constructor {_EnumDescriptorProto'EnumReservedRange'start :: !(Prelude.Maybe Data.Int.Int32),+                                                        _EnumDescriptorProto'EnumReservedRange'end :: !(Prelude.Maybe Data.Int.Int32),+                                                        _EnumDescriptorProto'EnumReservedRange'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show EnumDescriptorProto'EnumReservedRange where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField EnumDescriptorProto'EnumReservedRange "start" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'EnumReservedRange'start+           (\ x__ y__+              -> x__ {_EnumDescriptorProto'EnumReservedRange'start = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField EnumDescriptorProto'EnumReservedRange "maybe'start" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'EnumReservedRange'start+           (\ x__ y__+              -> x__ {_EnumDescriptorProto'EnumReservedRange'start = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField EnumDescriptorProto'EnumReservedRange "end" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'EnumReservedRange'end+           (\ x__ y__+              -> x__ {_EnumDescriptorProto'EnumReservedRange'end = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField EnumDescriptorProto'EnumReservedRange "maybe'end" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumDescriptorProto'EnumReservedRange'end+           (\ x__ y__+              -> x__ {_EnumDescriptorProto'EnumReservedRange'end = y__}))+        Prelude.id+instance Data.ProtoLens.Message EnumDescriptorProto'EnumReservedRange where+  messageName _+    = Data.Text.pack+        "google.protobuf.EnumDescriptorProto.EnumReservedRange"+  fieldsByTag+    = let+        start__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "start"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'start")) ::+              Data.ProtoLens.FieldDescriptor EnumDescriptorProto'EnumReservedRange+        end__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "end"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'end")) ::+              Data.ProtoLens.FieldDescriptor EnumDescriptorProto'EnumReservedRange+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, start__field_descriptor),+           (Data.ProtoLens.Tag 2, end__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _EnumDescriptorProto'EnumReservedRange'_unknownFields+        (\ x__ y__+           -> x__+                {_EnumDescriptorProto'EnumReservedRange'_unknownFields = y__})+  defMessage+    = EnumDescriptorProto'EnumReservedRange'_constructor+        {_EnumDescriptorProto'EnumReservedRange'start = Prelude.Nothing,+         _EnumDescriptorProto'EnumReservedRange'end = Prelude.Nothing,+         _EnumDescriptorProto'EnumReservedRange'_unknownFields = []}+  parseMessage+    = let+        loop ::+          EnumDescriptorProto'EnumReservedRange+          -> Data.ProtoLens.Encoding.Bytes.Parser EnumDescriptorProto'EnumReservedRange+        loop x+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields (\ !t -> Prelude.reverse t) x)+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        8 -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "start"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"start") y x)+                        16+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "end"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"end") y x)+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do loop Data.ProtoLens.defMessage) "EnumReservedRange"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'start") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 8)+                       ((Prelude..)+                          Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'end") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 16)+                          ((Prelude..)+                             Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+                (Data.ProtoLens.Encoding.Wire.buildFieldSet+                   (Lens.Family2.view Data.ProtoLens.unknownFields _x)))+instance Control.DeepSeq.NFData EnumDescriptorProto'EnumReservedRange where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_EnumDescriptorProto'EnumReservedRange'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_EnumDescriptorProto'EnumReservedRange'start x__)+                (Control.DeepSeq.deepseq+                   (_EnumDescriptorProto'EnumReservedRange'end x__) ()))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.allowAlias' @:: Lens' EnumOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'allowAlias' @:: Lens' EnumOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' EnumOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' EnumOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' EnumOptions [UninterpretedOption]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'uninterpretedOption' @:: Lens' EnumOptions (Data.Vector.Vector UninterpretedOption)@ -}+data EnumOptions+  = EnumOptions'_constructor {_EnumOptions'allowAlias :: !(Prelude.Maybe Prelude.Bool),+                              _EnumOptions'deprecated :: !(Prelude.Maybe Prelude.Bool),+                              _EnumOptions'uninterpretedOption :: !(Data.Vector.Vector UninterpretedOption),+                              _EnumOptions'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show EnumOptions where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField EnumOptions "allowAlias" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumOptions'allowAlias+           (\ x__ y__ -> x__ {_EnumOptions'allowAlias = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField EnumOptions "maybe'allowAlias" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumOptions'allowAlias+           (\ x__ y__ -> x__ {_EnumOptions'allowAlias = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField EnumOptions "deprecated" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumOptions'deprecated+           (\ x__ y__ -> x__ {_EnumOptions'deprecated = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField EnumOptions "maybe'deprecated" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumOptions'deprecated+           (\ x__ y__ -> x__ {_EnumOptions'deprecated = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField EnumOptions "uninterpretedOption" [UninterpretedOption] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_EnumOptions'uninterpretedOption = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField EnumOptions "vec'uninterpretedOption" (Data.Vector.Vector UninterpretedOption) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_EnumOptions'uninterpretedOption = y__}))+        Prelude.id+instance Data.ProtoLens.Message EnumOptions where+  messageName _ = Data.Text.pack "google.protobuf.EnumOptions"+  fieldsByTag+    = let+        allowAlias__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "allow_alias"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'allowAlias")) ::+              Data.ProtoLens.FieldDescriptor EnumOptions+        deprecated__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "deprecated"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'deprecated")) ::+              Data.ProtoLens.FieldDescriptor EnumOptions+        uninterpretedOption__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "uninterpreted_option"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"uninterpretedOption")) ::+              Data.ProtoLens.FieldDescriptor EnumOptions+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 2, allowAlias__field_descriptor),+           (Data.ProtoLens.Tag 3, deprecated__field_descriptor),+           (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _EnumOptions'_unknownFields+        (\ x__ y__ -> x__ {_EnumOptions'_unknownFields = y__})+  defMessage+    = EnumOptions'_constructor+        {_EnumOptions'allowAlias = Prelude.Nothing,+         _EnumOptions'deprecated = Prelude.Nothing,+         _EnumOptions'uninterpretedOption = Data.Vector.Generic.empty,+         _EnumOptions'_unknownFields = []}+  parseMessage+    = let+        loop ::+          EnumOptions+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld UninterpretedOption+             -> Data.ProtoLens.Encoding.Bytes.Parser EnumOptions+        loop x mutable'uninterpretedOption+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                      (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                         mutable'uninterpretedOption)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'uninterpretedOption")+                              frozen'uninterpretedOption+                              x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        16+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "allow_alias"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"allowAlias") y x)+                                  mutable'uninterpretedOption+                        24+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "deprecated"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"deprecated") y x)+                                  mutable'uninterpretedOption+                        7994+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "uninterpreted_option"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'uninterpretedOption y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'uninterpretedOption+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                               Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'uninterpretedOption)+          "EnumOptions"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view+                    (Data.ProtoLens.Field.field @"maybe'allowAlias") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 16)+                       ((Prelude..)+                          Data.ProtoLens.Encoding.Bytes.putVarInt+                          (\ b -> if b then 1 else 0)+                          _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view+                       (Data.ProtoLens.Field.field @"maybe'deprecated") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 24)+                          ((Prelude..)+                             Data.ProtoLens.Encoding.Bytes.putVarInt+                             (\ b -> if b then 1 else 0)+                             _v))+                ((Data.Monoid.<>)+                   (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                      (\ _v+                         -> (Data.Monoid.<>)+                              (Data.ProtoLens.Encoding.Bytes.putVarInt 7994)+                              ((Prelude..)+                                 (\ bs+                                    -> (Data.Monoid.<>)+                                         (Data.ProtoLens.Encoding.Bytes.putVarInt+                                            (Prelude.fromIntegral (Data.ByteString.length bs)))+                                         (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                 Data.ProtoLens.encodeMessage+                                 _v))+                      (Lens.Family2.view+                         (Data.ProtoLens.Field.field @"vec'uninterpretedOption") _x))+                   (Data.ProtoLens.Encoding.Wire.buildFieldSet+                      (Lens.Family2.view Data.ProtoLens.unknownFields _x))))+instance Control.DeepSeq.NFData EnumOptions where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_EnumOptions'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_EnumOptions'allowAlias x__)+                (Control.DeepSeq.deepseq+                   (_EnumOptions'deprecated x__)+                   (Control.DeepSeq.deepseq+                      (_EnumOptions'uninterpretedOption x__) ())))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' EnumValueDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' EnumValueDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.number' @:: Lens' EnumValueDescriptorProto Data.Int.Int32@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'number' @:: Lens' EnumValueDescriptorProto (Prelude.Maybe Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' EnumValueDescriptorProto EnumValueOptions@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' EnumValueDescriptorProto (Prelude.Maybe EnumValueOptions)@ -}+data EnumValueDescriptorProto+  = EnumValueDescriptorProto'_constructor {_EnumValueDescriptorProto'name :: !(Prelude.Maybe Data.Text.Text),+                                           _EnumValueDescriptorProto'number :: !(Prelude.Maybe Data.Int.Int32),+                                           _EnumValueDescriptorProto'options :: !(Prelude.Maybe EnumValueOptions),+                                           _EnumValueDescriptorProto'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show EnumValueDescriptorProto where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField EnumValueDescriptorProto "name" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumValueDescriptorProto'name+           (\ x__ y__ -> x__ {_EnumValueDescriptorProto'name = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField EnumValueDescriptorProto "maybe'name" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumValueDescriptorProto'name+           (\ x__ y__ -> x__ {_EnumValueDescriptorProto'name = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField EnumValueDescriptorProto "number" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumValueDescriptorProto'number+           (\ x__ y__ -> x__ {_EnumValueDescriptorProto'number = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField EnumValueDescriptorProto "maybe'number" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumValueDescriptorProto'number+           (\ x__ y__ -> x__ {_EnumValueDescriptorProto'number = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField EnumValueDescriptorProto "options" EnumValueOptions where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumValueDescriptorProto'options+           (\ x__ y__ -> x__ {_EnumValueDescriptorProto'options = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)+instance Data.ProtoLens.Field.HasField EnumValueDescriptorProto "maybe'options" (Prelude.Maybe EnumValueOptions) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumValueDescriptorProto'options+           (\ x__ y__ -> x__ {_EnumValueDescriptorProto'options = y__}))+        Prelude.id+instance Data.ProtoLens.Message EnumValueDescriptorProto where+  messageName _+    = Data.Text.pack "google.protobuf.EnumValueDescriptorProto"+  fieldsByTag+    = let+        name__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'name")) ::+              Data.ProtoLens.FieldDescriptor EnumValueDescriptorProto+        number__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "number"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'number")) ::+              Data.ProtoLens.FieldDescriptor EnumValueDescriptorProto+        options__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "options"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor EnumValueOptions)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'options")) ::+              Data.ProtoLens.FieldDescriptor EnumValueDescriptorProto+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, name__field_descriptor),+           (Data.ProtoLens.Tag 2, number__field_descriptor),+           (Data.ProtoLens.Tag 3, options__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _EnumValueDescriptorProto'_unknownFields+        (\ x__ y__ -> x__ {_EnumValueDescriptorProto'_unknownFields = y__})+  defMessage+    = EnumValueDescriptorProto'_constructor+        {_EnumValueDescriptorProto'name = Prelude.Nothing,+         _EnumValueDescriptorProto'number = Prelude.Nothing,+         _EnumValueDescriptorProto'options = Prelude.Nothing,+         _EnumValueDescriptorProto'_unknownFields = []}+  parseMessage+    = let+        loop ::+          EnumValueDescriptorProto+          -> Data.ProtoLens.Encoding.Bytes.Parser EnumValueDescriptorProto+        loop x+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields (\ !t -> Prelude.reverse t) x)+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "name"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"name") y x)+                        16+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "number"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"number") y x)+                        26+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                           Data.ProtoLens.Encoding.Bytes.isolate+                                             (Prelude.fromIntegral len) Data.ProtoLens.parseMessage)+                                       "options"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"options") y x)+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do loop Data.ProtoLens.defMessage) "EnumValueDescriptorProto"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'name") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                       ((Prelude..)+                          (\ bs+                             -> (Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                     (Prelude.fromIntegral (Data.ByteString.length bs)))+                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                          Data.Text.Encoding.encodeUtf8+                          _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'number") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 16)+                          ((Prelude..)+                             Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'options") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 26)+                             ((Prelude..)+                                (\ bs+                                   -> (Data.Monoid.<>)+                                        (Data.ProtoLens.Encoding.Bytes.putVarInt+                                           (Prelude.fromIntegral (Data.ByteString.length bs)))+                                        (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                Data.ProtoLens.encodeMessage+                                _v))+                   (Data.ProtoLens.Encoding.Wire.buildFieldSet+                      (Lens.Family2.view Data.ProtoLens.unknownFields _x))))+instance Control.DeepSeq.NFData EnumValueDescriptorProto where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_EnumValueDescriptorProto'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_EnumValueDescriptorProto'name x__)+                (Control.DeepSeq.deepseq+                   (_EnumValueDescriptorProto'number x__)+                   (Control.DeepSeq.deepseq+                      (_EnumValueDescriptorProto'options x__) ())))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' EnumValueOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' EnumValueOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' EnumValueOptions [UninterpretedOption]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'uninterpretedOption' @:: Lens' EnumValueOptions (Data.Vector.Vector UninterpretedOption)@ -}+data EnumValueOptions+  = EnumValueOptions'_constructor {_EnumValueOptions'deprecated :: !(Prelude.Maybe Prelude.Bool),+                                   _EnumValueOptions'uninterpretedOption :: !(Data.Vector.Vector UninterpretedOption),+                                   _EnumValueOptions'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show EnumValueOptions where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField EnumValueOptions "deprecated" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumValueOptions'deprecated+           (\ x__ y__ -> x__ {_EnumValueOptions'deprecated = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField EnumValueOptions "maybe'deprecated" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumValueOptions'deprecated+           (\ x__ y__ -> x__ {_EnumValueOptions'deprecated = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField EnumValueOptions "uninterpretedOption" [UninterpretedOption] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumValueOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_EnumValueOptions'uninterpretedOption = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField EnumValueOptions "vec'uninterpretedOption" (Data.Vector.Vector UninterpretedOption) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _EnumValueOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_EnumValueOptions'uninterpretedOption = y__}))+        Prelude.id+instance Data.ProtoLens.Message EnumValueOptions where+  messageName _ = Data.Text.pack "google.protobuf.EnumValueOptions"+  fieldsByTag+    = let+        deprecated__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "deprecated"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'deprecated")) ::+              Data.ProtoLens.FieldDescriptor EnumValueOptions+        uninterpretedOption__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "uninterpreted_option"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"uninterpretedOption")) ::+              Data.ProtoLens.FieldDescriptor EnumValueOptions+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, deprecated__field_descriptor),+           (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _EnumValueOptions'_unknownFields+        (\ x__ y__ -> x__ {_EnumValueOptions'_unknownFields = y__})+  defMessage+    = EnumValueOptions'_constructor+        {_EnumValueOptions'deprecated = Prelude.Nothing,+         _EnumValueOptions'uninterpretedOption = Data.Vector.Generic.empty,+         _EnumValueOptions'_unknownFields = []}+  parseMessage+    = let+        loop ::+          EnumValueOptions+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld UninterpretedOption+             -> Data.ProtoLens.Encoding.Bytes.Parser EnumValueOptions+        loop x mutable'uninterpretedOption+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                      (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                         mutable'uninterpretedOption)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'uninterpretedOption")+                              frozen'uninterpretedOption+                              x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        8 -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "deprecated"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"deprecated") y x)+                                  mutable'uninterpretedOption+                        7994+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "uninterpreted_option"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'uninterpretedOption y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'uninterpretedOption+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                               Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'uninterpretedOption)+          "EnumValueOptions"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view+                    (Data.ProtoLens.Field.field @"maybe'deprecated") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 8)+                       ((Prelude..)+                          Data.ProtoLens.Encoding.Bytes.putVarInt+                          (\ b -> if b then 1 else 0)+                          _v))+             ((Data.Monoid.<>)+                (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                   (\ _v+                      -> (Data.Monoid.<>)+                           (Data.ProtoLens.Encoding.Bytes.putVarInt 7994)+                           ((Prelude..)+                              (\ bs+                                 -> (Data.Monoid.<>)+                                      (Data.ProtoLens.Encoding.Bytes.putVarInt+                                         (Prelude.fromIntegral (Data.ByteString.length bs)))+                                      (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                              Data.ProtoLens.encodeMessage+                              _v))+                   (Lens.Family2.view+                      (Data.ProtoLens.Field.field @"vec'uninterpretedOption") _x))+                (Data.ProtoLens.Encoding.Wire.buildFieldSet+                   (Lens.Family2.view Data.ProtoLens.unknownFields _x)))+instance Control.DeepSeq.NFData EnumValueOptions where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_EnumValueOptions'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_EnumValueOptions'deprecated x__)+                (Control.DeepSeq.deepseq+                   (_EnumValueOptions'uninterpretedOption x__) ()))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' ExtensionRangeOptions [UninterpretedOption]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'uninterpretedOption' @:: Lens' ExtensionRangeOptions (Data.Vector.Vector UninterpretedOption)@ -}+data ExtensionRangeOptions+  = ExtensionRangeOptions'_constructor {_ExtensionRangeOptions'uninterpretedOption :: !(Data.Vector.Vector UninterpretedOption),+                                        _ExtensionRangeOptions'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show ExtensionRangeOptions where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField ExtensionRangeOptions "uninterpretedOption" [UninterpretedOption] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _ExtensionRangeOptions'uninterpretedOption+           (\ x__ y__+              -> x__ {_ExtensionRangeOptions'uninterpretedOption = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField ExtensionRangeOptions "vec'uninterpretedOption" (Data.Vector.Vector UninterpretedOption) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _ExtensionRangeOptions'uninterpretedOption+           (\ x__ y__+              -> x__ {_ExtensionRangeOptions'uninterpretedOption = y__}))+        Prelude.id+instance Data.ProtoLens.Message ExtensionRangeOptions where+  messageName _+    = Data.Text.pack "google.protobuf.ExtensionRangeOptions"+  fieldsByTag+    = let+        uninterpretedOption__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "uninterpreted_option"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"uninterpretedOption")) ::+              Data.ProtoLens.FieldDescriptor ExtensionRangeOptions+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _ExtensionRangeOptions'_unknownFields+        (\ x__ y__ -> x__ {_ExtensionRangeOptions'_unknownFields = y__})+  defMessage+    = ExtensionRangeOptions'_constructor+        {_ExtensionRangeOptions'uninterpretedOption = Data.Vector.Generic.empty,+         _ExtensionRangeOptions'_unknownFields = []}+  parseMessage+    = let+        loop ::+          ExtensionRangeOptions+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld UninterpretedOption+             -> Data.ProtoLens.Encoding.Bytes.Parser ExtensionRangeOptions+        loop x mutable'uninterpretedOption+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                      (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                         mutable'uninterpretedOption)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'uninterpretedOption")+                              frozen'uninterpretedOption+                              x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        7994+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "uninterpreted_option"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'uninterpretedOption y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'uninterpretedOption+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                               Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'uninterpretedOption)+          "ExtensionRangeOptions"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                (\ _v+                   -> (Data.Monoid.<>)+                        (Data.ProtoLens.Encoding.Bytes.putVarInt 7994)+                        ((Prelude..)+                           (\ bs+                              -> (Data.Monoid.<>)+                                   (Data.ProtoLens.Encoding.Bytes.putVarInt+                                      (Prelude.fromIntegral (Data.ByteString.length bs)))+                                   (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                           Data.ProtoLens.encodeMessage+                           _v))+                (Lens.Family2.view+                   (Data.ProtoLens.Field.field @"vec'uninterpretedOption") _x))+             (Data.ProtoLens.Encoding.Wire.buildFieldSet+                (Lens.Family2.view Data.ProtoLens.unknownFields _x))+instance Control.DeepSeq.NFData ExtensionRangeOptions where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_ExtensionRangeOptions'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_ExtensionRangeOptions'uninterpretedOption x__) ())+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' FieldDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.number' @:: Lens' FieldDescriptorProto Data.Int.Int32@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'number' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.label' @:: Lens' FieldDescriptorProto FieldDescriptorProto'Label@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'label' @:: Lens' FieldDescriptorProto (Prelude.Maybe FieldDescriptorProto'Label)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.type'' @:: Lens' FieldDescriptorProto FieldDescriptorProto'Type@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'type'' @:: Lens' FieldDescriptorProto (Prelude.Maybe FieldDescriptorProto'Type)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.typeName' @:: Lens' FieldDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'typeName' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.extendee' @:: Lens' FieldDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'extendee' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.defaultValue' @:: Lens' FieldDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'defaultValue' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.oneofIndex' @:: Lens' FieldDescriptorProto Data.Int.Int32@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'oneofIndex' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.jsonName' @:: Lens' FieldDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'jsonName' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' FieldDescriptorProto FieldOptions@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' FieldDescriptorProto (Prelude.Maybe FieldOptions)@ -}+data FieldDescriptorProto+  = FieldDescriptorProto'_constructor {_FieldDescriptorProto'name :: !(Prelude.Maybe Data.Text.Text),+                                       _FieldDescriptorProto'number :: !(Prelude.Maybe Data.Int.Int32),+                                       _FieldDescriptorProto'label :: !(Prelude.Maybe FieldDescriptorProto'Label),+                                       _FieldDescriptorProto'type' :: !(Prelude.Maybe FieldDescriptorProto'Type),+                                       _FieldDescriptorProto'typeName :: !(Prelude.Maybe Data.Text.Text),+                                       _FieldDescriptorProto'extendee :: !(Prelude.Maybe Data.Text.Text),+                                       _FieldDescriptorProto'defaultValue :: !(Prelude.Maybe Data.Text.Text),+                                       _FieldDescriptorProto'oneofIndex :: !(Prelude.Maybe Data.Int.Int32),+                                       _FieldDescriptorProto'jsonName :: !(Prelude.Maybe Data.Text.Text),+                                       _FieldDescriptorProto'options :: !(Prelude.Maybe FieldOptions),+                                       _FieldDescriptorProto'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show FieldDescriptorProto where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "name" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'name+           (\ x__ y__ -> x__ {_FieldDescriptorProto'name = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "maybe'name" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'name+           (\ x__ y__ -> x__ {_FieldDescriptorProto'name = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "number" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'number+           (\ x__ y__ -> x__ {_FieldDescriptorProto'number = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "maybe'number" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'number+           (\ x__ y__ -> x__ {_FieldDescriptorProto'number = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "label" FieldDescriptorProto'Label where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'label+           (\ x__ y__ -> x__ {_FieldDescriptorProto'label = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "maybe'label" (Prelude.Maybe FieldDescriptorProto'Label) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'label+           (\ x__ y__ -> x__ {_FieldDescriptorProto'label = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "type'" FieldDescriptorProto'Type where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'type'+           (\ x__ y__ -> x__ {_FieldDescriptorProto'type' = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "maybe'type'" (Prelude.Maybe FieldDescriptorProto'Type) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'type'+           (\ x__ y__ -> x__ {_FieldDescriptorProto'type' = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "typeName" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'typeName+           (\ x__ y__ -> x__ {_FieldDescriptorProto'typeName = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "maybe'typeName" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'typeName+           (\ x__ y__ -> x__ {_FieldDescriptorProto'typeName = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "extendee" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'extendee+           (\ x__ y__ -> x__ {_FieldDescriptorProto'extendee = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "maybe'extendee" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'extendee+           (\ x__ y__ -> x__ {_FieldDescriptorProto'extendee = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "defaultValue" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'defaultValue+           (\ x__ y__ -> x__ {_FieldDescriptorProto'defaultValue = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "maybe'defaultValue" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'defaultValue+           (\ x__ y__ -> x__ {_FieldDescriptorProto'defaultValue = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "oneofIndex" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'oneofIndex+           (\ x__ y__ -> x__ {_FieldDescriptorProto'oneofIndex = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "maybe'oneofIndex" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'oneofIndex+           (\ x__ y__ -> x__ {_FieldDescriptorProto'oneofIndex = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "jsonName" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'jsonName+           (\ x__ y__ -> x__ {_FieldDescriptorProto'jsonName = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "maybe'jsonName" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'jsonName+           (\ x__ y__ -> x__ {_FieldDescriptorProto'jsonName = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "options" FieldOptions where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'options+           (\ x__ y__ -> x__ {_FieldDescriptorProto'options = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)+instance Data.ProtoLens.Field.HasField FieldDescriptorProto "maybe'options" (Prelude.Maybe FieldOptions) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldDescriptorProto'options+           (\ x__ y__ -> x__ {_FieldDescriptorProto'options = y__}))+        Prelude.id+instance Data.ProtoLens.Message FieldDescriptorProto where+  messageName _+    = Data.Text.pack "google.protobuf.FieldDescriptorProto"+  fieldsByTag+    = let+        name__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'name")) ::+              Data.ProtoLens.FieldDescriptor FieldDescriptorProto+        number__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "number"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'number")) ::+              Data.ProtoLens.FieldDescriptor FieldDescriptorProto+        label__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "label"+              (Data.ProtoLens.ScalarField Data.ProtoLens.EnumField ::+                 Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto'Label)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'label")) ::+              Data.ProtoLens.FieldDescriptor FieldDescriptorProto+        type'__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "type"+              (Data.ProtoLens.ScalarField Data.ProtoLens.EnumField ::+                 Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto'Type)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'type'")) ::+              Data.ProtoLens.FieldDescriptor FieldDescriptorProto+        typeName__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "type_name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'typeName")) ::+              Data.ProtoLens.FieldDescriptor FieldDescriptorProto+        extendee__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "extendee"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'extendee")) ::+              Data.ProtoLens.FieldDescriptor FieldDescriptorProto+        defaultValue__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "default_value"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'defaultValue")) ::+              Data.ProtoLens.FieldDescriptor FieldDescriptorProto+        oneofIndex__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "oneof_index"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'oneofIndex")) ::+              Data.ProtoLens.FieldDescriptor FieldDescriptorProto+        jsonName__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "json_name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'jsonName")) ::+              Data.ProtoLens.FieldDescriptor FieldDescriptorProto+        options__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "options"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor FieldOptions)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'options")) ::+              Data.ProtoLens.FieldDescriptor FieldDescriptorProto+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, name__field_descriptor),+           (Data.ProtoLens.Tag 3, number__field_descriptor),+           (Data.ProtoLens.Tag 4, label__field_descriptor),+           (Data.ProtoLens.Tag 5, type'__field_descriptor),+           (Data.ProtoLens.Tag 6, typeName__field_descriptor),+           (Data.ProtoLens.Tag 2, extendee__field_descriptor),+           (Data.ProtoLens.Tag 7, defaultValue__field_descriptor),+           (Data.ProtoLens.Tag 9, oneofIndex__field_descriptor),+           (Data.ProtoLens.Tag 10, jsonName__field_descriptor),+           (Data.ProtoLens.Tag 8, options__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _FieldDescriptorProto'_unknownFields+        (\ x__ y__ -> x__ {_FieldDescriptorProto'_unknownFields = y__})+  defMessage+    = FieldDescriptorProto'_constructor+        {_FieldDescriptorProto'name = Prelude.Nothing,+         _FieldDescriptorProto'number = Prelude.Nothing,+         _FieldDescriptorProto'label = Prelude.Nothing,+         _FieldDescriptorProto'type' = Prelude.Nothing,+         _FieldDescriptorProto'typeName = Prelude.Nothing,+         _FieldDescriptorProto'extendee = Prelude.Nothing,+         _FieldDescriptorProto'defaultValue = Prelude.Nothing,+         _FieldDescriptorProto'oneofIndex = Prelude.Nothing,+         _FieldDescriptorProto'jsonName = Prelude.Nothing,+         _FieldDescriptorProto'options = Prelude.Nothing,+         _FieldDescriptorProto'_unknownFields = []}+  parseMessage+    = let+        loop ::+          FieldDescriptorProto+          -> Data.ProtoLens.Encoding.Bytes.Parser FieldDescriptorProto+        loop x+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields (\ !t -> Prelude.reverse t) x)+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "name"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"name") y x)+                        24+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "number"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"number") y x)+                        32+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.toEnum+                                          (Prelude.fmap+                                             Prelude.fromIntegral+                                             Data.ProtoLens.Encoding.Bytes.getVarInt))+                                       "label"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"label") y x)+                        40+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.toEnum+                                          (Prelude.fmap+                                             Prelude.fromIntegral+                                             Data.ProtoLens.Encoding.Bytes.getVarInt))+                                       "type"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"type'") y x)+                        50+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "type_name"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"typeName") y x)+                        18+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "extendee"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"extendee") y x)+                        58+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "default_value"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"defaultValue") y x)+                        72+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "oneof_index"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"oneofIndex") y x)+                        82+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "json_name"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"jsonName") y x)+                        66+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                           Data.ProtoLens.Encoding.Bytes.isolate+                                             (Prelude.fromIntegral len) Data.ProtoLens.parseMessage)+                                       "options"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"options") y x)+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do loop Data.ProtoLens.defMessage) "FieldDescriptorProto"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'name") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                       ((Prelude..)+                          (\ bs+                             -> (Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                     (Prelude.fromIntegral (Data.ByteString.length bs)))+                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                          Data.Text.Encoding.encodeUtf8+                          _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'number") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 24)+                          ((Prelude..)+                             Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'label") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 32)+                             ((Prelude..)+                                ((Prelude..)+                                   Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral)+                                Prelude.fromEnum+                                _v))+                   ((Data.Monoid.<>)+                      (case+                           Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'type'") _x+                       of+                         Prelude.Nothing -> Data.Monoid.mempty+                         (Prelude.Just _v)+                           -> (Data.Monoid.<>)+                                (Data.ProtoLens.Encoding.Bytes.putVarInt 40)+                                ((Prelude..)+                                   ((Prelude..)+                                      Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral)+                                   Prelude.fromEnum+                                   _v))+                      ((Data.Monoid.<>)+                         (case+                              Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'typeName") _x+                          of+                            Prelude.Nothing -> Data.Monoid.mempty+                            (Prelude.Just _v)+                              -> (Data.Monoid.<>)+                                   (Data.ProtoLens.Encoding.Bytes.putVarInt 50)+                                   ((Prelude..)+                                      (\ bs+                                         -> (Data.Monoid.<>)+                                              (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                 (Prelude.fromIntegral (Data.ByteString.length bs)))+                                              (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                      Data.Text.Encoding.encodeUtf8+                                      _v))+                         ((Data.Monoid.<>)+                            (case+                                 Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'extendee") _x+                             of+                               Prelude.Nothing -> Data.Monoid.mempty+                               (Prelude.Just _v)+                                 -> (Data.Monoid.<>)+                                      (Data.ProtoLens.Encoding.Bytes.putVarInt 18)+                                      ((Prelude..)+                                         (\ bs+                                            -> (Data.Monoid.<>)+                                                 (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                    (Prelude.fromIntegral+                                                       (Data.ByteString.length bs)))+                                                 (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                         Data.Text.Encoding.encodeUtf8+                                         _v))+                            ((Data.Monoid.<>)+                               (case+                                    Lens.Family2.view+                                      (Data.ProtoLens.Field.field @"maybe'defaultValue") _x+                                of+                                  Prelude.Nothing -> Data.Monoid.mempty+                                  (Prelude.Just _v)+                                    -> (Data.Monoid.<>)+                                         (Data.ProtoLens.Encoding.Bytes.putVarInt 58)+                                         ((Prelude..)+                                            (\ bs+                                               -> (Data.Monoid.<>)+                                                    (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                       (Prelude.fromIntegral+                                                          (Data.ByteString.length bs)))+                                                    (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                            Data.Text.Encoding.encodeUtf8+                                            _v))+                               ((Data.Monoid.<>)+                                  (case+                                       Lens.Family2.view+                                         (Data.ProtoLens.Field.field @"maybe'oneofIndex") _x+                                   of+                                     Prelude.Nothing -> Data.Monoid.mempty+                                     (Prelude.Just _v)+                                       -> (Data.Monoid.<>)+                                            (Data.ProtoLens.Encoding.Bytes.putVarInt 72)+                                            ((Prelude..)+                                               Data.ProtoLens.Encoding.Bytes.putVarInt+                                               Prelude.fromIntegral+                                               _v))+                                  ((Data.Monoid.<>)+                                     (case+                                          Lens.Family2.view+                                            (Data.ProtoLens.Field.field @"maybe'jsonName") _x+                                      of+                                        Prelude.Nothing -> Data.Monoid.mempty+                                        (Prelude.Just _v)+                                          -> (Data.Monoid.<>)+                                               (Data.ProtoLens.Encoding.Bytes.putVarInt 82)+                                               ((Prelude..)+                                                  (\ bs+                                                     -> (Data.Monoid.<>)+                                                          (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                             (Prelude.fromIntegral+                                                                (Data.ByteString.length bs)))+                                                          (Data.ProtoLens.Encoding.Bytes.putBytes+                                                             bs))+                                                  Data.Text.Encoding.encodeUtf8+                                                  _v))+                                     ((Data.Monoid.<>)+                                        (case+                                             Lens.Family2.view+                                               (Data.ProtoLens.Field.field @"maybe'options") _x+                                         of+                                           Prelude.Nothing -> Data.Monoid.mempty+                                           (Prelude.Just _v)+                                             -> (Data.Monoid.<>)+                                                  (Data.ProtoLens.Encoding.Bytes.putVarInt 66)+                                                  ((Prelude..)+                                                     (\ bs+                                                        -> (Data.Monoid.<>)+                                                             (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                (Prelude.fromIntegral+                                                                   (Data.ByteString.length bs)))+                                                             (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                bs))+                                                     Data.ProtoLens.encodeMessage+                                                     _v))+                                        (Data.ProtoLens.Encoding.Wire.buildFieldSet+                                           (Lens.Family2.view+                                              Data.ProtoLens.unknownFields _x)))))))))))+instance Control.DeepSeq.NFData FieldDescriptorProto where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_FieldDescriptorProto'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_FieldDescriptorProto'name x__)+                (Control.DeepSeq.deepseq+                   (_FieldDescriptorProto'number x__)+                   (Control.DeepSeq.deepseq+                      (_FieldDescriptorProto'label x__)+                      (Control.DeepSeq.deepseq+                         (_FieldDescriptorProto'type' x__)+                         (Control.DeepSeq.deepseq+                            (_FieldDescriptorProto'typeName x__)+                            (Control.DeepSeq.deepseq+                               (_FieldDescriptorProto'extendee x__)+                               (Control.DeepSeq.deepseq+                                  (_FieldDescriptorProto'defaultValue x__)+                                  (Control.DeepSeq.deepseq+                                     (_FieldDescriptorProto'oneofIndex x__)+                                     (Control.DeepSeq.deepseq+                                        (_FieldDescriptorProto'jsonName x__)+                                        (Control.DeepSeq.deepseq+                                           (_FieldDescriptorProto'options x__) ()))))))))))+data FieldDescriptorProto'Label+  = FieldDescriptorProto'LABEL_OPTIONAL |+    FieldDescriptorProto'LABEL_REQUIRED |+    FieldDescriptorProto'LABEL_REPEATED+  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)+instance Data.ProtoLens.MessageEnum FieldDescriptorProto'Label where+  maybeToEnum 1 = Prelude.Just FieldDescriptorProto'LABEL_OPTIONAL+  maybeToEnum 2 = Prelude.Just FieldDescriptorProto'LABEL_REQUIRED+  maybeToEnum 3 = Prelude.Just FieldDescriptorProto'LABEL_REPEATED+  maybeToEnum _ = Prelude.Nothing+  showEnum FieldDescriptorProto'LABEL_OPTIONAL = "LABEL_OPTIONAL"+  showEnum FieldDescriptorProto'LABEL_REQUIRED = "LABEL_REQUIRED"+  showEnum FieldDescriptorProto'LABEL_REPEATED = "LABEL_REPEATED"+  readEnum k+    | (Prelude.==) k "LABEL_OPTIONAL"+    = Prelude.Just FieldDescriptorProto'LABEL_OPTIONAL+    | (Prelude.==) k "LABEL_REQUIRED"+    = Prelude.Just FieldDescriptorProto'LABEL_REQUIRED+    | (Prelude.==) k "LABEL_REPEATED"+    = Prelude.Just FieldDescriptorProto'LABEL_REPEATED+    | Prelude.otherwise+    = (Prelude.>>=) (Text.Read.readMaybe k) Data.ProtoLens.maybeToEnum+instance Prelude.Bounded FieldDescriptorProto'Label where+  minBound = FieldDescriptorProto'LABEL_OPTIONAL+  maxBound = FieldDescriptorProto'LABEL_REPEATED+instance Prelude.Enum FieldDescriptorProto'Label where+  toEnum k__+    = Prelude.maybe+        (Prelude.error+           ((Prelude.++)+              "toEnum: unknown value for enum Label: " (Prelude.show k__)))+        Prelude.id+        (Data.ProtoLens.maybeToEnum k__)+  fromEnum FieldDescriptorProto'LABEL_OPTIONAL = 1+  fromEnum FieldDescriptorProto'LABEL_REQUIRED = 2+  fromEnum FieldDescriptorProto'LABEL_REPEATED = 3+  succ FieldDescriptorProto'LABEL_REPEATED+    = Prelude.error+        "FieldDescriptorProto'Label.succ: bad argument FieldDescriptorProto'LABEL_REPEATED. This value would be out of bounds."+  succ FieldDescriptorProto'LABEL_OPTIONAL+    = FieldDescriptorProto'LABEL_REQUIRED+  succ FieldDescriptorProto'LABEL_REQUIRED+    = FieldDescriptorProto'LABEL_REPEATED+  pred FieldDescriptorProto'LABEL_OPTIONAL+    = Prelude.error+        "FieldDescriptorProto'Label.pred: bad argument FieldDescriptorProto'LABEL_OPTIONAL. This value would be out of bounds."+  pred FieldDescriptorProto'LABEL_REQUIRED+    = FieldDescriptorProto'LABEL_OPTIONAL+  pred FieldDescriptorProto'LABEL_REPEATED+    = FieldDescriptorProto'LABEL_REQUIRED+  enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom+  enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo+  enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen+  enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo+instance Data.ProtoLens.FieldDefault FieldDescriptorProto'Label where+  fieldDefault = FieldDescriptorProto'LABEL_OPTIONAL+instance Control.DeepSeq.NFData FieldDescriptorProto'Label where+  rnf x__ = Prelude.seq x__ ()+data FieldDescriptorProto'Type+  = FieldDescriptorProto'TYPE_DOUBLE |+    FieldDescriptorProto'TYPE_FLOAT |+    FieldDescriptorProto'TYPE_INT64 |+    FieldDescriptorProto'TYPE_UINT64 |+    FieldDescriptorProto'TYPE_INT32 |+    FieldDescriptorProto'TYPE_FIXED64 |+    FieldDescriptorProto'TYPE_FIXED32 |+    FieldDescriptorProto'TYPE_BOOL |+    FieldDescriptorProto'TYPE_STRING |+    FieldDescriptorProto'TYPE_GROUP |+    FieldDescriptorProto'TYPE_MESSAGE |+    FieldDescriptorProto'TYPE_BYTES |+    FieldDescriptorProto'TYPE_UINT32 |+    FieldDescriptorProto'TYPE_ENUM |+    FieldDescriptorProto'TYPE_SFIXED32 |+    FieldDescriptorProto'TYPE_SFIXED64 |+    FieldDescriptorProto'TYPE_SINT32 |+    FieldDescriptorProto'TYPE_SINT64+  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)+instance Data.ProtoLens.MessageEnum FieldDescriptorProto'Type where+  maybeToEnum 1 = Prelude.Just FieldDescriptorProto'TYPE_DOUBLE+  maybeToEnum 2 = Prelude.Just FieldDescriptorProto'TYPE_FLOAT+  maybeToEnum 3 = Prelude.Just FieldDescriptorProto'TYPE_INT64+  maybeToEnum 4 = Prelude.Just FieldDescriptorProto'TYPE_UINT64+  maybeToEnum 5 = Prelude.Just FieldDescriptorProto'TYPE_INT32+  maybeToEnum 6 = Prelude.Just FieldDescriptorProto'TYPE_FIXED64+  maybeToEnum 7 = Prelude.Just FieldDescriptorProto'TYPE_FIXED32+  maybeToEnum 8 = Prelude.Just FieldDescriptorProto'TYPE_BOOL+  maybeToEnum 9 = Prelude.Just FieldDescriptorProto'TYPE_STRING+  maybeToEnum 10 = Prelude.Just FieldDescriptorProto'TYPE_GROUP+  maybeToEnum 11 = Prelude.Just FieldDescriptorProto'TYPE_MESSAGE+  maybeToEnum 12 = Prelude.Just FieldDescriptorProto'TYPE_BYTES+  maybeToEnum 13 = Prelude.Just FieldDescriptorProto'TYPE_UINT32+  maybeToEnum 14 = Prelude.Just FieldDescriptorProto'TYPE_ENUM+  maybeToEnum 15 = Prelude.Just FieldDescriptorProto'TYPE_SFIXED32+  maybeToEnum 16 = Prelude.Just FieldDescriptorProto'TYPE_SFIXED64+  maybeToEnum 17 = Prelude.Just FieldDescriptorProto'TYPE_SINT32+  maybeToEnum 18 = Prelude.Just FieldDescriptorProto'TYPE_SINT64+  maybeToEnum _ = Prelude.Nothing+  showEnum FieldDescriptorProto'TYPE_DOUBLE = "TYPE_DOUBLE"+  showEnum FieldDescriptorProto'TYPE_FLOAT = "TYPE_FLOAT"+  showEnum FieldDescriptorProto'TYPE_INT64 = "TYPE_INT64"+  showEnum FieldDescriptorProto'TYPE_UINT64 = "TYPE_UINT64"+  showEnum FieldDescriptorProto'TYPE_INT32 = "TYPE_INT32"+  showEnum FieldDescriptorProto'TYPE_FIXED64 = "TYPE_FIXED64"+  showEnum FieldDescriptorProto'TYPE_FIXED32 = "TYPE_FIXED32"+  showEnum FieldDescriptorProto'TYPE_BOOL = "TYPE_BOOL"+  showEnum FieldDescriptorProto'TYPE_STRING = "TYPE_STRING"+  showEnum FieldDescriptorProto'TYPE_GROUP = "TYPE_GROUP"+  showEnum FieldDescriptorProto'TYPE_MESSAGE = "TYPE_MESSAGE"+  showEnum FieldDescriptorProto'TYPE_BYTES = "TYPE_BYTES"+  showEnum FieldDescriptorProto'TYPE_UINT32 = "TYPE_UINT32"+  showEnum FieldDescriptorProto'TYPE_ENUM = "TYPE_ENUM"+  showEnum FieldDescriptorProto'TYPE_SFIXED32 = "TYPE_SFIXED32"+  showEnum FieldDescriptorProto'TYPE_SFIXED64 = "TYPE_SFIXED64"+  showEnum FieldDescriptorProto'TYPE_SINT32 = "TYPE_SINT32"+  showEnum FieldDescriptorProto'TYPE_SINT64 = "TYPE_SINT64"+  readEnum k+    | (Prelude.==) k "TYPE_DOUBLE"+    = Prelude.Just FieldDescriptorProto'TYPE_DOUBLE+    | (Prelude.==) k "TYPE_FLOAT"+    = Prelude.Just FieldDescriptorProto'TYPE_FLOAT+    | (Prelude.==) k "TYPE_INT64"+    = Prelude.Just FieldDescriptorProto'TYPE_INT64+    | (Prelude.==) k "TYPE_UINT64"+    = Prelude.Just FieldDescriptorProto'TYPE_UINT64+    | (Prelude.==) k "TYPE_INT32"+    = Prelude.Just FieldDescriptorProto'TYPE_INT32+    | (Prelude.==) k "TYPE_FIXED64"+    = Prelude.Just FieldDescriptorProto'TYPE_FIXED64+    | (Prelude.==) k "TYPE_FIXED32"+    = Prelude.Just FieldDescriptorProto'TYPE_FIXED32+    | (Prelude.==) k "TYPE_BOOL"+    = Prelude.Just FieldDescriptorProto'TYPE_BOOL+    | (Prelude.==) k "TYPE_STRING"+    = Prelude.Just FieldDescriptorProto'TYPE_STRING+    | (Prelude.==) k "TYPE_GROUP"+    = Prelude.Just FieldDescriptorProto'TYPE_GROUP+    | (Prelude.==) k "TYPE_MESSAGE"+    = Prelude.Just FieldDescriptorProto'TYPE_MESSAGE+    | (Prelude.==) k "TYPE_BYTES"+    = Prelude.Just FieldDescriptorProto'TYPE_BYTES+    | (Prelude.==) k "TYPE_UINT32"+    = Prelude.Just FieldDescriptorProto'TYPE_UINT32+    | (Prelude.==) k "TYPE_ENUM"+    = Prelude.Just FieldDescriptorProto'TYPE_ENUM+    | (Prelude.==) k "TYPE_SFIXED32"+    = Prelude.Just FieldDescriptorProto'TYPE_SFIXED32+    | (Prelude.==) k "TYPE_SFIXED64"+    = Prelude.Just FieldDescriptorProto'TYPE_SFIXED64+    | (Prelude.==) k "TYPE_SINT32"+    = Prelude.Just FieldDescriptorProto'TYPE_SINT32+    | (Prelude.==) k "TYPE_SINT64"+    = Prelude.Just FieldDescriptorProto'TYPE_SINT64+    | Prelude.otherwise+    = (Prelude.>>=) (Text.Read.readMaybe k) Data.ProtoLens.maybeToEnum+instance Prelude.Bounded FieldDescriptorProto'Type where+  minBound = FieldDescriptorProto'TYPE_DOUBLE+  maxBound = FieldDescriptorProto'TYPE_SINT64+instance Prelude.Enum FieldDescriptorProto'Type where+  toEnum k__+    = Prelude.maybe+        (Prelude.error+           ((Prelude.++)+              "toEnum: unknown value for enum Type: " (Prelude.show k__)))+        Prelude.id+        (Data.ProtoLens.maybeToEnum k__)+  fromEnum FieldDescriptorProto'TYPE_DOUBLE = 1+  fromEnum FieldDescriptorProto'TYPE_FLOAT = 2+  fromEnum FieldDescriptorProto'TYPE_INT64 = 3+  fromEnum FieldDescriptorProto'TYPE_UINT64 = 4+  fromEnum FieldDescriptorProto'TYPE_INT32 = 5+  fromEnum FieldDescriptorProto'TYPE_FIXED64 = 6+  fromEnum FieldDescriptorProto'TYPE_FIXED32 = 7+  fromEnum FieldDescriptorProto'TYPE_BOOL = 8+  fromEnum FieldDescriptorProto'TYPE_STRING = 9+  fromEnum FieldDescriptorProto'TYPE_GROUP = 10+  fromEnum FieldDescriptorProto'TYPE_MESSAGE = 11+  fromEnum FieldDescriptorProto'TYPE_BYTES = 12+  fromEnum FieldDescriptorProto'TYPE_UINT32 = 13+  fromEnum FieldDescriptorProto'TYPE_ENUM = 14+  fromEnum FieldDescriptorProto'TYPE_SFIXED32 = 15+  fromEnum FieldDescriptorProto'TYPE_SFIXED64 = 16+  fromEnum FieldDescriptorProto'TYPE_SINT32 = 17+  fromEnum FieldDescriptorProto'TYPE_SINT64 = 18+  succ FieldDescriptorProto'TYPE_SINT64+    = Prelude.error+        "FieldDescriptorProto'Type.succ: bad argument FieldDescriptorProto'TYPE_SINT64. This value would be out of bounds."+  succ FieldDescriptorProto'TYPE_DOUBLE+    = FieldDescriptorProto'TYPE_FLOAT+  succ FieldDescriptorProto'TYPE_FLOAT+    = FieldDescriptorProto'TYPE_INT64+  succ FieldDescriptorProto'TYPE_INT64+    = FieldDescriptorProto'TYPE_UINT64+  succ FieldDescriptorProto'TYPE_UINT64+    = FieldDescriptorProto'TYPE_INT32+  succ FieldDescriptorProto'TYPE_INT32+    = FieldDescriptorProto'TYPE_FIXED64+  succ FieldDescriptorProto'TYPE_FIXED64+    = FieldDescriptorProto'TYPE_FIXED32+  succ FieldDescriptorProto'TYPE_FIXED32+    = FieldDescriptorProto'TYPE_BOOL+  succ FieldDescriptorProto'TYPE_BOOL+    = FieldDescriptorProto'TYPE_STRING+  succ FieldDescriptorProto'TYPE_STRING+    = FieldDescriptorProto'TYPE_GROUP+  succ FieldDescriptorProto'TYPE_GROUP+    = FieldDescriptorProto'TYPE_MESSAGE+  succ FieldDescriptorProto'TYPE_MESSAGE+    = FieldDescriptorProto'TYPE_BYTES+  succ FieldDescriptorProto'TYPE_BYTES+    = FieldDescriptorProto'TYPE_UINT32+  succ FieldDescriptorProto'TYPE_UINT32+    = FieldDescriptorProto'TYPE_ENUM+  succ FieldDescriptorProto'TYPE_ENUM+    = FieldDescriptorProto'TYPE_SFIXED32+  succ FieldDescriptorProto'TYPE_SFIXED32+    = FieldDescriptorProto'TYPE_SFIXED64+  succ FieldDescriptorProto'TYPE_SFIXED64+    = FieldDescriptorProto'TYPE_SINT32+  succ FieldDescriptorProto'TYPE_SINT32+    = FieldDescriptorProto'TYPE_SINT64+  pred FieldDescriptorProto'TYPE_DOUBLE+    = Prelude.error+        "FieldDescriptorProto'Type.pred: bad argument FieldDescriptorProto'TYPE_DOUBLE. This value would be out of bounds."+  pred FieldDescriptorProto'TYPE_FLOAT+    = FieldDescriptorProto'TYPE_DOUBLE+  pred FieldDescriptorProto'TYPE_INT64+    = FieldDescriptorProto'TYPE_FLOAT+  pred FieldDescriptorProto'TYPE_UINT64+    = FieldDescriptorProto'TYPE_INT64+  pred FieldDescriptorProto'TYPE_INT32+    = FieldDescriptorProto'TYPE_UINT64+  pred FieldDescriptorProto'TYPE_FIXED64+    = FieldDescriptorProto'TYPE_INT32+  pred FieldDescriptorProto'TYPE_FIXED32+    = FieldDescriptorProto'TYPE_FIXED64+  pred FieldDescriptorProto'TYPE_BOOL+    = FieldDescriptorProto'TYPE_FIXED32+  pred FieldDescriptorProto'TYPE_STRING+    = FieldDescriptorProto'TYPE_BOOL+  pred FieldDescriptorProto'TYPE_GROUP+    = FieldDescriptorProto'TYPE_STRING+  pred FieldDescriptorProto'TYPE_MESSAGE+    = FieldDescriptorProto'TYPE_GROUP+  pred FieldDescriptorProto'TYPE_BYTES+    = FieldDescriptorProto'TYPE_MESSAGE+  pred FieldDescriptorProto'TYPE_UINT32+    = FieldDescriptorProto'TYPE_BYTES+  pred FieldDescriptorProto'TYPE_ENUM+    = FieldDescriptorProto'TYPE_UINT32+  pred FieldDescriptorProto'TYPE_SFIXED32+    = FieldDescriptorProto'TYPE_ENUM+  pred FieldDescriptorProto'TYPE_SFIXED64+    = FieldDescriptorProto'TYPE_SFIXED32+  pred FieldDescriptorProto'TYPE_SINT32+    = FieldDescriptorProto'TYPE_SFIXED64+  pred FieldDescriptorProto'TYPE_SINT64+    = FieldDescriptorProto'TYPE_SINT32+  enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom+  enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo+  enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen+  enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo+instance Data.ProtoLens.FieldDefault FieldDescriptorProto'Type where+  fieldDefault = FieldDescriptorProto'TYPE_DOUBLE+instance Control.DeepSeq.NFData FieldDescriptorProto'Type where+  rnf x__ = Prelude.seq x__ ()+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.ctype' @:: Lens' FieldOptions FieldOptions'CType@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'ctype' @:: Lens' FieldOptions (Prelude.Maybe FieldOptions'CType)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.packed' @:: Lens' FieldOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'packed' @:: Lens' FieldOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.jstype' @:: Lens' FieldOptions FieldOptions'JSType@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'jstype' @:: Lens' FieldOptions (Prelude.Maybe FieldOptions'JSType)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.lazy' @:: Lens' FieldOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'lazy' @:: Lens' FieldOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' FieldOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' FieldOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.weak' @:: Lens' FieldOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'weak' @:: Lens' FieldOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' FieldOptions [UninterpretedOption]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'uninterpretedOption' @:: Lens' FieldOptions (Data.Vector.Vector UninterpretedOption)@ -}+data FieldOptions+  = FieldOptions'_constructor {_FieldOptions'ctype :: !(Prelude.Maybe FieldOptions'CType),+                               _FieldOptions'packed :: !(Prelude.Maybe Prelude.Bool),+                               _FieldOptions'jstype :: !(Prelude.Maybe FieldOptions'JSType),+                               _FieldOptions'lazy :: !(Prelude.Maybe Prelude.Bool),+                               _FieldOptions'deprecated :: !(Prelude.Maybe Prelude.Bool),+                               _FieldOptions'weak :: !(Prelude.Maybe Prelude.Bool),+                               _FieldOptions'uninterpretedOption :: !(Data.Vector.Vector UninterpretedOption),+                               _FieldOptions'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show FieldOptions where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField FieldOptions "ctype" FieldOptions'CType where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'ctype (\ x__ y__ -> x__ {_FieldOptions'ctype = y__}))+        (Data.ProtoLens.maybeLens FieldOptions'STRING)+instance Data.ProtoLens.Field.HasField FieldOptions "maybe'ctype" (Prelude.Maybe FieldOptions'CType) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'ctype (\ x__ y__ -> x__ {_FieldOptions'ctype = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldOptions "packed" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'packed+           (\ x__ y__ -> x__ {_FieldOptions'packed = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FieldOptions "maybe'packed" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'packed+           (\ x__ y__ -> x__ {_FieldOptions'packed = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldOptions "jstype" FieldOptions'JSType where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'jstype+           (\ x__ y__ -> x__ {_FieldOptions'jstype = y__}))+        (Data.ProtoLens.maybeLens FieldOptions'JS_NORMAL)+instance Data.ProtoLens.Field.HasField FieldOptions "maybe'jstype" (Prelude.Maybe FieldOptions'JSType) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'jstype+           (\ x__ y__ -> x__ {_FieldOptions'jstype = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldOptions "lazy" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'lazy (\ x__ y__ -> x__ {_FieldOptions'lazy = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField FieldOptions "maybe'lazy" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'lazy (\ x__ y__ -> x__ {_FieldOptions'lazy = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldOptions "deprecated" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'deprecated+           (\ x__ y__ -> x__ {_FieldOptions'deprecated = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField FieldOptions "maybe'deprecated" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'deprecated+           (\ x__ y__ -> x__ {_FieldOptions'deprecated = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldOptions "weak" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'weak (\ x__ y__ -> x__ {_FieldOptions'weak = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField FieldOptions "maybe'weak" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'weak (\ x__ y__ -> x__ {_FieldOptions'weak = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FieldOptions "uninterpretedOption" [UninterpretedOption] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_FieldOptions'uninterpretedOption = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField FieldOptions "vec'uninterpretedOption" (Data.Vector.Vector UninterpretedOption) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FieldOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_FieldOptions'uninterpretedOption = y__}))+        Prelude.id+instance Data.ProtoLens.Message FieldOptions where+  messageName _ = Data.Text.pack "google.protobuf.FieldOptions"+  fieldsByTag+    = let+        ctype__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "ctype"+              (Data.ProtoLens.ScalarField Data.ProtoLens.EnumField ::+                 Data.ProtoLens.FieldTypeDescriptor FieldOptions'CType)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'ctype")) ::+              Data.ProtoLens.FieldDescriptor FieldOptions+        packed__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "packed"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'packed")) ::+              Data.ProtoLens.FieldDescriptor FieldOptions+        jstype__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "jstype"+              (Data.ProtoLens.ScalarField Data.ProtoLens.EnumField ::+                 Data.ProtoLens.FieldTypeDescriptor FieldOptions'JSType)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'jstype")) ::+              Data.ProtoLens.FieldDescriptor FieldOptions+        lazy__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "lazy"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'lazy")) ::+              Data.ProtoLens.FieldDescriptor FieldOptions+        deprecated__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "deprecated"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'deprecated")) ::+              Data.ProtoLens.FieldDescriptor FieldOptions+        weak__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "weak"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'weak")) ::+              Data.ProtoLens.FieldDescriptor FieldOptions+        uninterpretedOption__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "uninterpreted_option"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"uninterpretedOption")) ::+              Data.ProtoLens.FieldDescriptor FieldOptions+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, ctype__field_descriptor),+           (Data.ProtoLens.Tag 2, packed__field_descriptor),+           (Data.ProtoLens.Tag 6, jstype__field_descriptor),+           (Data.ProtoLens.Tag 5, lazy__field_descriptor),+           (Data.ProtoLens.Tag 3, deprecated__field_descriptor),+           (Data.ProtoLens.Tag 10, weak__field_descriptor),+           (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _FieldOptions'_unknownFields+        (\ x__ y__ -> x__ {_FieldOptions'_unknownFields = y__})+  defMessage+    = FieldOptions'_constructor+        {_FieldOptions'ctype = Prelude.Nothing,+         _FieldOptions'packed = Prelude.Nothing,+         _FieldOptions'jstype = Prelude.Nothing,+         _FieldOptions'lazy = Prelude.Nothing,+         _FieldOptions'deprecated = Prelude.Nothing,+         _FieldOptions'weak = Prelude.Nothing,+         _FieldOptions'uninterpretedOption = Data.Vector.Generic.empty,+         _FieldOptions'_unknownFields = []}+  parseMessage+    = let+        loop ::+          FieldOptions+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld UninterpretedOption+             -> Data.ProtoLens.Encoding.Bytes.Parser FieldOptions+        loop x mutable'uninterpretedOption+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                      (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                         mutable'uninterpretedOption)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'uninterpretedOption")+                              frozen'uninterpretedOption+                              x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        8 -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.toEnum+                                          (Prelude.fmap+                                             Prelude.fromIntegral+                                             Data.ProtoLens.Encoding.Bytes.getVarInt))+                                       "ctype"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"ctype") y x)+                                  mutable'uninterpretedOption+                        16+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "packed"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"packed") y x)+                                  mutable'uninterpretedOption+                        48+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.toEnum+                                          (Prelude.fmap+                                             Prelude.fromIntegral+                                             Data.ProtoLens.Encoding.Bytes.getVarInt))+                                       "jstype"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"jstype") y x)+                                  mutable'uninterpretedOption+                        40+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "lazy"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"lazy") y x)+                                  mutable'uninterpretedOption+                        24+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "deprecated"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"deprecated") y x)+                                  mutable'uninterpretedOption+                        80+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "weak"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"weak") y x)+                                  mutable'uninterpretedOption+                        7994+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "uninterpreted_option"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'uninterpretedOption y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'uninterpretedOption+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                               Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'uninterpretedOption)+          "FieldOptions"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'ctype") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 8)+                       ((Prelude..)+                          ((Prelude..)+                             Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral)+                          Prelude.fromEnum+                          _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'packed") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 16)+                          ((Prelude..)+                             Data.ProtoLens.Encoding.Bytes.putVarInt+                             (\ b -> if b then 1 else 0)+                             _v))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'jstype") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 48)+                             ((Prelude..)+                                ((Prelude..)+                                   Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral)+                                Prelude.fromEnum+                                _v))+                   ((Data.Monoid.<>)+                      (case+                           Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'lazy") _x+                       of+                         Prelude.Nothing -> Data.Monoid.mempty+                         (Prelude.Just _v)+                           -> (Data.Monoid.<>)+                                (Data.ProtoLens.Encoding.Bytes.putVarInt 40)+                                ((Prelude..)+                                   Data.ProtoLens.Encoding.Bytes.putVarInt+                                   (\ b -> if b then 1 else 0)+                                   _v))+                      ((Data.Monoid.<>)+                         (case+                              Lens.Family2.view+                                (Data.ProtoLens.Field.field @"maybe'deprecated") _x+                          of+                            Prelude.Nothing -> Data.Monoid.mempty+                            (Prelude.Just _v)+                              -> (Data.Monoid.<>)+                                   (Data.ProtoLens.Encoding.Bytes.putVarInt 24)+                                   ((Prelude..)+                                      Data.ProtoLens.Encoding.Bytes.putVarInt+                                      (\ b -> if b then 1 else 0)+                                      _v))+                         ((Data.Monoid.<>)+                            (case+                                 Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'weak") _x+                             of+                               Prelude.Nothing -> Data.Monoid.mempty+                               (Prelude.Just _v)+                                 -> (Data.Monoid.<>)+                                      (Data.ProtoLens.Encoding.Bytes.putVarInt 80)+                                      ((Prelude..)+                                         Data.ProtoLens.Encoding.Bytes.putVarInt+                                         (\ b -> if b then 1 else 0)+                                         _v))+                            ((Data.Monoid.<>)+                               (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                                  (\ _v+                                     -> (Data.Monoid.<>)+                                          (Data.ProtoLens.Encoding.Bytes.putVarInt 7994)+                                          ((Prelude..)+                                             (\ bs+                                                -> (Data.Monoid.<>)+                                                     (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                        (Prelude.fromIntegral+                                                           (Data.ByteString.length bs)))+                                                     (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                             Data.ProtoLens.encodeMessage+                                             _v))+                                  (Lens.Family2.view+                                     (Data.ProtoLens.Field.field @"vec'uninterpretedOption") _x))+                               (Data.ProtoLens.Encoding.Wire.buildFieldSet+                                  (Lens.Family2.view Data.ProtoLens.unknownFields _x))))))))+instance Control.DeepSeq.NFData FieldOptions where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_FieldOptions'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_FieldOptions'ctype x__)+                (Control.DeepSeq.deepseq+                   (_FieldOptions'packed x__)+                   (Control.DeepSeq.deepseq+                      (_FieldOptions'jstype x__)+                      (Control.DeepSeq.deepseq+                         (_FieldOptions'lazy x__)+                         (Control.DeepSeq.deepseq+                            (_FieldOptions'deprecated x__)+                            (Control.DeepSeq.deepseq+                               (_FieldOptions'weak x__)+                               (Control.DeepSeq.deepseq+                                  (_FieldOptions'uninterpretedOption x__) ())))))))+data FieldOptions'CType+  = FieldOptions'STRING |+    FieldOptions'CORD |+    FieldOptions'STRING_PIECE+  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)+instance Data.ProtoLens.MessageEnum FieldOptions'CType where+  maybeToEnum 0 = Prelude.Just FieldOptions'STRING+  maybeToEnum 1 = Prelude.Just FieldOptions'CORD+  maybeToEnum 2 = Prelude.Just FieldOptions'STRING_PIECE+  maybeToEnum _ = Prelude.Nothing+  showEnum FieldOptions'STRING = "STRING"+  showEnum FieldOptions'CORD = "CORD"+  showEnum FieldOptions'STRING_PIECE = "STRING_PIECE"+  readEnum k+    | (Prelude.==) k "STRING" = Prelude.Just FieldOptions'STRING+    | (Prelude.==) k "CORD" = Prelude.Just FieldOptions'CORD+    | (Prelude.==) k "STRING_PIECE"+    = Prelude.Just FieldOptions'STRING_PIECE+    | Prelude.otherwise+    = (Prelude.>>=) (Text.Read.readMaybe k) Data.ProtoLens.maybeToEnum+instance Prelude.Bounded FieldOptions'CType where+  minBound = FieldOptions'STRING+  maxBound = FieldOptions'STRING_PIECE+instance Prelude.Enum FieldOptions'CType where+  toEnum k__+    = Prelude.maybe+        (Prelude.error+           ((Prelude.++)+              "toEnum: unknown value for enum CType: " (Prelude.show k__)))+        Prelude.id+        (Data.ProtoLens.maybeToEnum k__)+  fromEnum FieldOptions'STRING = 0+  fromEnum FieldOptions'CORD = 1+  fromEnum FieldOptions'STRING_PIECE = 2+  succ FieldOptions'STRING_PIECE+    = Prelude.error+        "FieldOptions'CType.succ: bad argument FieldOptions'STRING_PIECE. This value would be out of bounds."+  succ FieldOptions'STRING = FieldOptions'CORD+  succ FieldOptions'CORD = FieldOptions'STRING_PIECE+  pred FieldOptions'STRING+    = Prelude.error+        "FieldOptions'CType.pred: bad argument FieldOptions'STRING. This value would be out of bounds."+  pred FieldOptions'CORD = FieldOptions'STRING+  pred FieldOptions'STRING_PIECE = FieldOptions'CORD+  enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom+  enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo+  enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen+  enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo+instance Data.ProtoLens.FieldDefault FieldOptions'CType where+  fieldDefault = FieldOptions'STRING+instance Control.DeepSeq.NFData FieldOptions'CType where+  rnf x__ = Prelude.seq x__ ()+data FieldOptions'JSType+  = FieldOptions'JS_NORMAL |+    FieldOptions'JS_STRING |+    FieldOptions'JS_NUMBER+  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)+instance Data.ProtoLens.MessageEnum FieldOptions'JSType where+  maybeToEnum 0 = Prelude.Just FieldOptions'JS_NORMAL+  maybeToEnum 1 = Prelude.Just FieldOptions'JS_STRING+  maybeToEnum 2 = Prelude.Just FieldOptions'JS_NUMBER+  maybeToEnum _ = Prelude.Nothing+  showEnum FieldOptions'JS_NORMAL = "JS_NORMAL"+  showEnum FieldOptions'JS_STRING = "JS_STRING"+  showEnum FieldOptions'JS_NUMBER = "JS_NUMBER"+  readEnum k+    | (Prelude.==) k "JS_NORMAL" = Prelude.Just FieldOptions'JS_NORMAL+    | (Prelude.==) k "JS_STRING" = Prelude.Just FieldOptions'JS_STRING+    | (Prelude.==) k "JS_NUMBER" = Prelude.Just FieldOptions'JS_NUMBER+    | Prelude.otherwise+    = (Prelude.>>=) (Text.Read.readMaybe k) Data.ProtoLens.maybeToEnum+instance Prelude.Bounded FieldOptions'JSType where+  minBound = FieldOptions'JS_NORMAL+  maxBound = FieldOptions'JS_NUMBER+instance Prelude.Enum FieldOptions'JSType where+  toEnum k__+    = Prelude.maybe+        (Prelude.error+           ((Prelude.++)+              "toEnum: unknown value for enum JSType: " (Prelude.show k__)))+        Prelude.id+        (Data.ProtoLens.maybeToEnum k__)+  fromEnum FieldOptions'JS_NORMAL = 0+  fromEnum FieldOptions'JS_STRING = 1+  fromEnum FieldOptions'JS_NUMBER = 2+  succ FieldOptions'JS_NUMBER+    = Prelude.error+        "FieldOptions'JSType.succ: bad argument FieldOptions'JS_NUMBER. This value would be out of bounds."+  succ FieldOptions'JS_NORMAL = FieldOptions'JS_STRING+  succ FieldOptions'JS_STRING = FieldOptions'JS_NUMBER+  pred FieldOptions'JS_NORMAL+    = Prelude.error+        "FieldOptions'JSType.pred: bad argument FieldOptions'JS_NORMAL. This value would be out of bounds."+  pred FieldOptions'JS_STRING = FieldOptions'JS_NORMAL+  pred FieldOptions'JS_NUMBER = FieldOptions'JS_STRING+  enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom+  enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo+  enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen+  enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo+instance Data.ProtoLens.FieldDefault FieldOptions'JSType where+  fieldDefault = FieldOptions'JS_NORMAL+instance Control.DeepSeq.NFData FieldOptions'JSType where+  rnf x__ = Prelude.seq x__ ()+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' FileDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' FileDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.package' @:: Lens' FileDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'package' @:: Lens' FileDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.dependency' @:: Lens' FileDescriptorProto [Data.Text.Text]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'dependency' @:: Lens' FileDescriptorProto (Data.Vector.Vector Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.publicDependency' @:: Lens' FileDescriptorProto [Data.Int.Int32]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'publicDependency' @:: Lens' FileDescriptorProto (Data.Vector.Unboxed.Vector Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.weakDependency' @:: Lens' FileDescriptorProto [Data.Int.Int32]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'weakDependency' @:: Lens' FileDescriptorProto (Data.Vector.Unboxed.Vector Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.messageType' @:: Lens' FileDescriptorProto [DescriptorProto]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'messageType' @:: Lens' FileDescriptorProto (Data.Vector.Vector DescriptorProto)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.enumType' @:: Lens' FileDescriptorProto [EnumDescriptorProto]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'enumType' @:: Lens' FileDescriptorProto (Data.Vector.Vector EnumDescriptorProto)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.service' @:: Lens' FileDescriptorProto [ServiceDescriptorProto]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'service' @:: Lens' FileDescriptorProto (Data.Vector.Vector ServiceDescriptorProto)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.extension' @:: Lens' FileDescriptorProto [FieldDescriptorProto]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'extension' @:: Lens' FileDescriptorProto (Data.Vector.Vector FieldDescriptorProto)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' FileDescriptorProto FileOptions@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' FileDescriptorProto (Prelude.Maybe FileOptions)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.sourceCodeInfo' @:: Lens' FileDescriptorProto SourceCodeInfo@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'sourceCodeInfo' @:: Lens' FileDescriptorProto (Prelude.Maybe SourceCodeInfo)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.syntax' @:: Lens' FileDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'syntax' @:: Lens' FileDescriptorProto (Prelude.Maybe Data.Text.Text)@ -}+data FileDescriptorProto+  = FileDescriptorProto'_constructor {_FileDescriptorProto'name :: !(Prelude.Maybe Data.Text.Text),+                                      _FileDescriptorProto'package :: !(Prelude.Maybe Data.Text.Text),+                                      _FileDescriptorProto'dependency :: !(Data.Vector.Vector Data.Text.Text),+                                      _FileDescriptorProto'publicDependency :: !(Data.Vector.Unboxed.Vector Data.Int.Int32),+                                      _FileDescriptorProto'weakDependency :: !(Data.Vector.Unboxed.Vector Data.Int.Int32),+                                      _FileDescriptorProto'messageType :: !(Data.Vector.Vector DescriptorProto),+                                      _FileDescriptorProto'enumType :: !(Data.Vector.Vector EnumDescriptorProto),+                                      _FileDescriptorProto'service :: !(Data.Vector.Vector ServiceDescriptorProto),+                                      _FileDescriptorProto'extension :: !(Data.Vector.Vector FieldDescriptorProto),+                                      _FileDescriptorProto'options :: !(Prelude.Maybe FileOptions),+                                      _FileDescriptorProto'sourceCodeInfo :: !(Prelude.Maybe SourceCodeInfo),+                                      _FileDescriptorProto'syntax :: !(Prelude.Maybe Data.Text.Text),+                                      _FileDescriptorProto'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show FileDescriptorProto where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField FileDescriptorProto "name" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'name+           (\ x__ y__ -> x__ {_FileDescriptorProto'name = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileDescriptorProto "maybe'name" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'name+           (\ x__ y__ -> x__ {_FileDescriptorProto'name = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileDescriptorProto "package" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'package+           (\ x__ y__ -> x__ {_FileDescriptorProto'package = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileDescriptorProto "maybe'package" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'package+           (\ x__ y__ -> x__ {_FileDescriptorProto'package = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileDescriptorProto "dependency" [Data.Text.Text] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'dependency+           (\ x__ y__ -> x__ {_FileDescriptorProto'dependency = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField FileDescriptorProto "vec'dependency" (Data.Vector.Vector Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'dependency+           (\ x__ y__ -> x__ {_FileDescriptorProto'dependency = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileDescriptorProto "publicDependency" [Data.Int.Int32] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'publicDependency+           (\ x__ y__ -> x__ {_FileDescriptorProto'publicDependency = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField FileDescriptorProto "vec'publicDependency" (Data.Vector.Unboxed.Vector Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'publicDependency+           (\ x__ y__ -> x__ {_FileDescriptorProto'publicDependency = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileDescriptorProto "weakDependency" [Data.Int.Int32] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'weakDependency+           (\ x__ y__ -> x__ {_FileDescriptorProto'weakDependency = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField FileDescriptorProto "vec'weakDependency" (Data.Vector.Unboxed.Vector Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'weakDependency+           (\ x__ y__ -> x__ {_FileDescriptorProto'weakDependency = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileDescriptorProto "messageType" [DescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'messageType+           (\ x__ y__ -> x__ {_FileDescriptorProto'messageType = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField FileDescriptorProto "vec'messageType" (Data.Vector.Vector DescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'messageType+           (\ x__ y__ -> x__ {_FileDescriptorProto'messageType = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileDescriptorProto "enumType" [EnumDescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'enumType+           (\ x__ y__ -> x__ {_FileDescriptorProto'enumType = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField FileDescriptorProto "vec'enumType" (Data.Vector.Vector EnumDescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'enumType+           (\ x__ y__ -> x__ {_FileDescriptorProto'enumType = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileDescriptorProto "service" [ServiceDescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'service+           (\ x__ y__ -> x__ {_FileDescriptorProto'service = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField FileDescriptorProto "vec'service" (Data.Vector.Vector ServiceDescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'service+           (\ x__ y__ -> x__ {_FileDescriptorProto'service = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileDescriptorProto "extension" [FieldDescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'extension+           (\ x__ y__ -> x__ {_FileDescriptorProto'extension = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField FileDescriptorProto "vec'extension" (Data.Vector.Vector FieldDescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'extension+           (\ x__ y__ -> x__ {_FileDescriptorProto'extension = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileDescriptorProto "options" FileOptions where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'options+           (\ x__ y__ -> x__ {_FileDescriptorProto'options = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)+instance Data.ProtoLens.Field.HasField FileDescriptorProto "maybe'options" (Prelude.Maybe FileOptions) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'options+           (\ x__ y__ -> x__ {_FileDescriptorProto'options = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileDescriptorProto "sourceCodeInfo" SourceCodeInfo where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'sourceCodeInfo+           (\ x__ y__ -> x__ {_FileDescriptorProto'sourceCodeInfo = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)+instance Data.ProtoLens.Field.HasField FileDescriptorProto "maybe'sourceCodeInfo" (Prelude.Maybe SourceCodeInfo) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'sourceCodeInfo+           (\ x__ y__ -> x__ {_FileDescriptorProto'sourceCodeInfo = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileDescriptorProto "syntax" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'syntax+           (\ x__ y__ -> x__ {_FileDescriptorProto'syntax = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileDescriptorProto "maybe'syntax" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorProto'syntax+           (\ x__ y__ -> x__ {_FileDescriptorProto'syntax = y__}))+        Prelude.id+instance Data.ProtoLens.Message FileDescriptorProto where+  messageName _+    = Data.Text.pack "google.protobuf.FileDescriptorProto"+  fieldsByTag+    = let+        name__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'name")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorProto+        package__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "package"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'package")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorProto+        dependency__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "dependency"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"dependency")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorProto+        publicDependency__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "public_dependency"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"publicDependency")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorProto+        weakDependency__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "weak_dependency"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"weakDependency")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorProto+        messageType__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "message_type"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor DescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"messageType")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorProto+        enumType__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "enum_type"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor EnumDescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"enumType")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorProto+        service__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "service"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor ServiceDescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked (Data.ProtoLens.Field.field @"service")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorProto+        extension__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "extension"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"extension")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorProto+        options__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "options"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor FileOptions)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'options")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorProto+        sourceCodeInfo__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "source_code_info"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor SourceCodeInfo)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'sourceCodeInfo")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorProto+        syntax__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "syntax"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'syntax")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorProto+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, name__field_descriptor),+           (Data.ProtoLens.Tag 2, package__field_descriptor),+           (Data.ProtoLens.Tag 3, dependency__field_descriptor),+           (Data.ProtoLens.Tag 10, publicDependency__field_descriptor),+           (Data.ProtoLens.Tag 11, weakDependency__field_descriptor),+           (Data.ProtoLens.Tag 4, messageType__field_descriptor),+           (Data.ProtoLens.Tag 5, enumType__field_descriptor),+           (Data.ProtoLens.Tag 6, service__field_descriptor),+           (Data.ProtoLens.Tag 7, extension__field_descriptor),+           (Data.ProtoLens.Tag 8, options__field_descriptor),+           (Data.ProtoLens.Tag 9, sourceCodeInfo__field_descriptor),+           (Data.ProtoLens.Tag 12, syntax__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _FileDescriptorProto'_unknownFields+        (\ x__ y__ -> x__ {_FileDescriptorProto'_unknownFields = y__})+  defMessage+    = FileDescriptorProto'_constructor+        {_FileDescriptorProto'name = Prelude.Nothing,+         _FileDescriptorProto'package = Prelude.Nothing,+         _FileDescriptorProto'dependency = Data.Vector.Generic.empty,+         _FileDescriptorProto'publicDependency = Data.Vector.Generic.empty,+         _FileDescriptorProto'weakDependency = Data.Vector.Generic.empty,+         _FileDescriptorProto'messageType = Data.Vector.Generic.empty,+         _FileDescriptorProto'enumType = Data.Vector.Generic.empty,+         _FileDescriptorProto'service = Data.Vector.Generic.empty,+         _FileDescriptorProto'extension = Data.Vector.Generic.empty,+         _FileDescriptorProto'options = Prelude.Nothing,+         _FileDescriptorProto'sourceCodeInfo = Prelude.Nothing,+         _FileDescriptorProto'syntax = Prelude.Nothing,+         _FileDescriptorProto'_unknownFields = []}+  parseMessage+    = let+        loop ::+          FileDescriptorProto+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld Data.Text.Text+             -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld EnumDescriptorProto+                -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld FieldDescriptorProto+                   -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld DescriptorProto+                      -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Unboxed.Vector Data.ProtoLens.Encoding.Growing.RealWorld Data.Int.Int32+                         -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld ServiceDescriptorProto+                            -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Unboxed.Vector Data.ProtoLens.Encoding.Growing.RealWorld Data.Int.Int32+                               -> Data.ProtoLens.Encoding.Bytes.Parser FileDescriptorProto+        loop+          x+          mutable'dependency+          mutable'enumType+          mutable'extension+          mutable'messageType+          mutable'publicDependency+          mutable'service+          mutable'weakDependency+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'dependency <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                             (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                mutable'dependency)+                      frozen'enumType <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                           (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                              mutable'enumType)+                      frozen'extension <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                            (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                               mutable'extension)+                      frozen'messageType <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                              (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                 mutable'messageType)+                      frozen'publicDependency <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                   (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                      mutable'publicDependency)+                      frozen'service <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                          (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                             mutable'service)+                      frozen'weakDependency <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                 (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                    mutable'weakDependency)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'dependency")+                              frozen'dependency+                              (Lens.Family2.set+                                 (Data.ProtoLens.Field.field @"vec'enumType")+                                 frozen'enumType+                                 (Lens.Family2.set+                                    (Data.ProtoLens.Field.field @"vec'extension")+                                    frozen'extension+                                    (Lens.Family2.set+                                       (Data.ProtoLens.Field.field @"vec'messageType")+                                       frozen'messageType+                                       (Lens.Family2.set+                                          (Data.ProtoLens.Field.field @"vec'publicDependency")+                                          frozen'publicDependency+                                          (Lens.Family2.set+                                             (Data.ProtoLens.Field.field @"vec'service")+                                             frozen'service+                                             (Lens.Family2.set+                                                (Data.ProtoLens.Field.field @"vec'weakDependency")+                                                frozen'weakDependency+                                                x))))))))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "name"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"name") y x)+                                  mutable'dependency+                                  mutable'enumType+                                  mutable'extension+                                  mutable'messageType+                                  mutable'publicDependency+                                  mutable'service+                                  mutable'weakDependency+                        18+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "package"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"package") y x)+                                  mutable'dependency+                                  mutable'enumType+                                  mutable'extension+                                  mutable'messageType+                                  mutable'publicDependency+                                  mutable'service+                                  mutable'weakDependency+                        26+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                        Data.ProtoLens.Encoding.Bytes.getBytes+                                                          (Prelude.fromIntegral len)+                                            Data.ProtoLens.Encoding.Bytes.runEither+                                              (case Data.Text.Encoding.decodeUtf8' value of+                                                 (Prelude.Left err)+                                                   -> Prelude.Left (Prelude.show err)+                                                 (Prelude.Right r) -> Prelude.Right r))+                                        "dependency"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'dependency y)+                                loop+                                  x+                                  v+                                  mutable'enumType+                                  mutable'extension+                                  mutable'messageType+                                  mutable'publicDependency+                                  mutable'service+                                  mutable'weakDependency+                        80+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (Prelude.fmap+                                           Prelude.fromIntegral+                                           Data.ProtoLens.Encoding.Bytes.getVarInt)+                                        "public_dependency"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'publicDependency y)+                                loop+                                  x+                                  mutable'dependency+                                  mutable'enumType+                                  mutable'extension+                                  mutable'messageType+                                  v+                                  mutable'service+                                  mutable'weakDependency+                        82+                          -> do y <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                        Data.ProtoLens.Encoding.Bytes.isolate+                                          (Prelude.fromIntegral len)+                                          ((let+                                              ploop qs+                                                = do packedEnd <- Data.ProtoLens.Encoding.Bytes.atEnd+                                                     if packedEnd then+                                                         Prelude.return qs+                                                     else+                                                         do !q <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                                                    (Prelude.fmap+                                                                       Prelude.fromIntegral+                                                                       Data.ProtoLens.Encoding.Bytes.getVarInt)+                                                                    "public_dependency"+                                                            qs' <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                                     (Data.ProtoLens.Encoding.Growing.append+                                                                        qs q)+                                                            ploop qs'+                                            in ploop)+                                             mutable'publicDependency)+                                loop+                                  x+                                  mutable'dependency+                                  mutable'enumType+                                  mutable'extension+                                  mutable'messageType+                                  y+                                  mutable'service+                                  mutable'weakDependency+                        88+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (Prelude.fmap+                                           Prelude.fromIntegral+                                           Data.ProtoLens.Encoding.Bytes.getVarInt)+                                        "weak_dependency"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'weakDependency y)+                                loop+                                  x+                                  mutable'dependency+                                  mutable'enumType+                                  mutable'extension+                                  mutable'messageType+                                  mutable'publicDependency+                                  mutable'service+                                  v+                        90+                          -> do y <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                        Data.ProtoLens.Encoding.Bytes.isolate+                                          (Prelude.fromIntegral len)+                                          ((let+                                              ploop qs+                                                = do packedEnd <- Data.ProtoLens.Encoding.Bytes.atEnd+                                                     if packedEnd then+                                                         Prelude.return qs+                                                     else+                                                         do !q <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                                                    (Prelude.fmap+                                                                       Prelude.fromIntegral+                                                                       Data.ProtoLens.Encoding.Bytes.getVarInt)+                                                                    "weak_dependency"+                                                            qs' <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                                     (Data.ProtoLens.Encoding.Growing.append+                                                                        qs q)+                                                            ploop qs'+                                            in ploop)+                                             mutable'weakDependency)+                                loop+                                  x+                                  mutable'dependency+                                  mutable'enumType+                                  mutable'extension+                                  mutable'messageType+                                  mutable'publicDependency+                                  mutable'service+                                  y+                        34+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "message_type"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'messageType y)+                                loop+                                  x+                                  mutable'dependency+                                  mutable'enumType+                                  mutable'extension+                                  v+                                  mutable'publicDependency+                                  mutable'service+                                  mutable'weakDependency+                        42+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "enum_type"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'enumType y)+                                loop+                                  x+                                  mutable'dependency+                                  v+                                  mutable'extension+                                  mutable'messageType+                                  mutable'publicDependency+                                  mutable'service+                                  mutable'weakDependency+                        50+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "service"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'service y)+                                loop+                                  x+                                  mutable'dependency+                                  mutable'enumType+                                  mutable'extension+                                  mutable'messageType+                                  mutable'publicDependency+                                  v+                                  mutable'weakDependency+                        58+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "extension"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'extension y)+                                loop+                                  x+                                  mutable'dependency+                                  mutable'enumType+                                  v+                                  mutable'messageType+                                  mutable'publicDependency+                                  mutable'service+                                  mutable'weakDependency+                        66+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                           Data.ProtoLens.Encoding.Bytes.isolate+                                             (Prelude.fromIntegral len) Data.ProtoLens.parseMessage)+                                       "options"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"options") y x)+                                  mutable'dependency+                                  mutable'enumType+                                  mutable'extension+                                  mutable'messageType+                                  mutable'publicDependency+                                  mutable'service+                                  mutable'weakDependency+                        74+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                           Data.ProtoLens.Encoding.Bytes.isolate+                                             (Prelude.fromIntegral len) Data.ProtoLens.parseMessage)+                                       "source_code_info"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"sourceCodeInfo") y x)+                                  mutable'dependency+                                  mutable'enumType+                                  mutable'extension+                                  mutable'messageType+                                  mutable'publicDependency+                                  mutable'service+                                  mutable'weakDependency+                        98+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "syntax"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"syntax") y x)+                                  mutable'dependency+                                  mutable'enumType+                                  mutable'extension+                                  mutable'messageType+                                  mutable'publicDependency+                                  mutable'service+                                  mutable'weakDependency+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'dependency+                                  mutable'enumType+                                  mutable'extension+                                  mutable'messageType+                                  mutable'publicDependency+                                  mutable'service+                                  mutable'weakDependency+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'dependency <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                      Data.ProtoLens.Encoding.Growing.new+              mutable'enumType <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                    Data.ProtoLens.Encoding.Growing.new+              mutable'extension <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                     Data.ProtoLens.Encoding.Growing.new+              mutable'messageType <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       Data.ProtoLens.Encoding.Growing.new+              mutable'publicDependency <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                            Data.ProtoLens.Encoding.Growing.new+              mutable'service <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                   Data.ProtoLens.Encoding.Growing.new+              mutable'weakDependency <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                          Data.ProtoLens.Encoding.Growing.new+              loop+                Data.ProtoLens.defMessage+                mutable'dependency+                mutable'enumType+                mutable'extension+                mutable'messageType+                mutable'publicDependency+                mutable'service+                mutable'weakDependency)+          "FileDescriptorProto"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'name") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                       ((Prelude..)+                          (\ bs+                             -> (Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                     (Prelude.fromIntegral (Data.ByteString.length bs)))+                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                          Data.Text.Encoding.encodeUtf8+                          _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'package") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 18)+                          ((Prelude..)+                             (\ bs+                                -> (Data.Monoid.<>)+                                     (Data.ProtoLens.Encoding.Bytes.putVarInt+                                        (Prelude.fromIntegral (Data.ByteString.length bs)))+                                     (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                             Data.Text.Encoding.encodeUtf8+                             _v))+                ((Data.Monoid.<>)+                   (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                      (\ _v+                         -> (Data.Monoid.<>)+                              (Data.ProtoLens.Encoding.Bytes.putVarInt 26)+                              ((Prelude..)+                                 (\ bs+                                    -> (Data.Monoid.<>)+                                         (Data.ProtoLens.Encoding.Bytes.putVarInt+                                            (Prelude.fromIntegral (Data.ByteString.length bs)))+                                         (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                 Data.Text.Encoding.encodeUtf8+                                 _v))+                      (Lens.Family2.view+                         (Data.ProtoLens.Field.field @"vec'dependency") _x))+                   ((Data.Monoid.<>)+                      (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                         (\ _v+                            -> (Data.Monoid.<>)+                                 (Data.ProtoLens.Encoding.Bytes.putVarInt 80)+                                 ((Prelude..)+                                    Data.ProtoLens.Encoding.Bytes.putVarInt+                                    Prelude.fromIntegral+                                    _v))+                         (Lens.Family2.view+                            (Data.ProtoLens.Field.field @"vec'publicDependency") _x))+                      ((Data.Monoid.<>)+                         (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                            (\ _v+                               -> (Data.Monoid.<>)+                                    (Data.ProtoLens.Encoding.Bytes.putVarInt 88)+                                    ((Prelude..)+                                       Data.ProtoLens.Encoding.Bytes.putVarInt+                                       Prelude.fromIntegral+                                       _v))+                            (Lens.Family2.view+                               (Data.ProtoLens.Field.field @"vec'weakDependency") _x))+                         ((Data.Monoid.<>)+                            (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                               (\ _v+                                  -> (Data.Monoid.<>)+                                       (Data.ProtoLens.Encoding.Bytes.putVarInt 34)+                                       ((Prelude..)+                                          (\ bs+                                             -> (Data.Monoid.<>)+                                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                     (Prelude.fromIntegral+                                                        (Data.ByteString.length bs)))+                                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                          Data.ProtoLens.encodeMessage+                                          _v))+                               (Lens.Family2.view+                                  (Data.ProtoLens.Field.field @"vec'messageType") _x))+                            ((Data.Monoid.<>)+                               (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                                  (\ _v+                                     -> (Data.Monoid.<>)+                                          (Data.ProtoLens.Encoding.Bytes.putVarInt 42)+                                          ((Prelude..)+                                             (\ bs+                                                -> (Data.Monoid.<>)+                                                     (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                        (Prelude.fromIntegral+                                                           (Data.ByteString.length bs)))+                                                     (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                             Data.ProtoLens.encodeMessage+                                             _v))+                                  (Lens.Family2.view+                                     (Data.ProtoLens.Field.field @"vec'enumType") _x))+                               ((Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                                     (\ _v+                                        -> (Data.Monoid.<>)+                                             (Data.ProtoLens.Encoding.Bytes.putVarInt 50)+                                             ((Prelude..)+                                                (\ bs+                                                   -> (Data.Monoid.<>)+                                                        (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                           (Prelude.fromIntegral+                                                              (Data.ByteString.length bs)))+                                                        (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                                Data.ProtoLens.encodeMessage+                                                _v))+                                     (Lens.Family2.view+                                        (Data.ProtoLens.Field.field @"vec'service") _x))+                                  ((Data.Monoid.<>)+                                     (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                                        (\ _v+                                           -> (Data.Monoid.<>)+                                                (Data.ProtoLens.Encoding.Bytes.putVarInt 58)+                                                ((Prelude..)+                                                   (\ bs+                                                      -> (Data.Monoid.<>)+                                                           (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                              (Prelude.fromIntegral+                                                                 (Data.ByteString.length bs)))+                                                           (Data.ProtoLens.Encoding.Bytes.putBytes+                                                              bs))+                                                   Data.ProtoLens.encodeMessage+                                                   _v))+                                        (Lens.Family2.view+                                           (Data.ProtoLens.Field.field @"vec'extension") _x))+                                     ((Data.Monoid.<>)+                                        (case+                                             Lens.Family2.view+                                               (Data.ProtoLens.Field.field @"maybe'options") _x+                                         of+                                           Prelude.Nothing -> Data.Monoid.mempty+                                           (Prelude.Just _v)+                                             -> (Data.Monoid.<>)+                                                  (Data.ProtoLens.Encoding.Bytes.putVarInt 66)+                                                  ((Prelude..)+                                                     (\ bs+                                                        -> (Data.Monoid.<>)+                                                             (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                (Prelude.fromIntegral+                                                                   (Data.ByteString.length bs)))+                                                             (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                bs))+                                                     Data.ProtoLens.encodeMessage+                                                     _v))+                                        ((Data.Monoid.<>)+                                           (case+                                                Lens.Family2.view+                                                  (Data.ProtoLens.Field.field+                                                     @"maybe'sourceCodeInfo")+                                                  _x+                                            of+                                              Prelude.Nothing -> Data.Monoid.mempty+                                              (Prelude.Just _v)+                                                -> (Data.Monoid.<>)+                                                     (Data.ProtoLens.Encoding.Bytes.putVarInt 74)+                                                     ((Prelude..)+                                                        (\ bs+                                                           -> (Data.Monoid.<>)+                                                                (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                   (Prelude.fromIntegral+                                                                      (Data.ByteString.length bs)))+                                                                (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                   bs))+                                                        Data.ProtoLens.encodeMessage+                                                        _v))+                                           ((Data.Monoid.<>)+                                              (case+                                                   Lens.Family2.view+                                                     (Data.ProtoLens.Field.field @"maybe'syntax") _x+                                               of+                                                 Prelude.Nothing -> Data.Monoid.mempty+                                                 (Prelude.Just _v)+                                                   -> (Data.Monoid.<>)+                                                        (Data.ProtoLens.Encoding.Bytes.putVarInt 98)+                                                        ((Prelude..)+                                                           (\ bs+                                                              -> (Data.Monoid.<>)+                                                                   (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                      (Prelude.fromIntegral+                                                                         (Data.ByteString.length+                                                                            bs)))+                                                                   (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                      bs))+                                                           Data.Text.Encoding.encodeUtf8+                                                           _v))+                                              (Data.ProtoLens.Encoding.Wire.buildFieldSet+                                                 (Lens.Family2.view+                                                    Data.ProtoLens.unknownFields _x)))))))))))))+instance Control.DeepSeq.NFData FileDescriptorProto where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_FileDescriptorProto'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_FileDescriptorProto'name x__)+                (Control.DeepSeq.deepseq+                   (_FileDescriptorProto'package x__)+                   (Control.DeepSeq.deepseq+                      (_FileDescriptorProto'dependency x__)+                      (Control.DeepSeq.deepseq+                         (_FileDescriptorProto'publicDependency x__)+                         (Control.DeepSeq.deepseq+                            (_FileDescriptorProto'weakDependency x__)+                            (Control.DeepSeq.deepseq+                               (_FileDescriptorProto'messageType x__)+                               (Control.DeepSeq.deepseq+                                  (_FileDescriptorProto'enumType x__)+                                  (Control.DeepSeq.deepseq+                                     (_FileDescriptorProto'service x__)+                                     (Control.DeepSeq.deepseq+                                        (_FileDescriptorProto'extension x__)+                                        (Control.DeepSeq.deepseq+                                           (_FileDescriptorProto'options x__)+                                           (Control.DeepSeq.deepseq+                                              (_FileDescriptorProto'sourceCodeInfo x__)+                                              (Control.DeepSeq.deepseq+                                                 (_FileDescriptorProto'syntax x__) ()))))))))))))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.file' @:: Lens' FileDescriptorSet [FileDescriptorProto]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'file' @:: Lens' FileDescriptorSet (Data.Vector.Vector FileDescriptorProto)@ -}+data FileDescriptorSet+  = FileDescriptorSet'_constructor {_FileDescriptorSet'file :: !(Data.Vector.Vector FileDescriptorProto),+                                    _FileDescriptorSet'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show FileDescriptorSet where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField FileDescriptorSet "file" [FileDescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorSet'file+           (\ x__ y__ -> x__ {_FileDescriptorSet'file = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField FileDescriptorSet "vec'file" (Data.Vector.Vector FileDescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileDescriptorSet'file+           (\ x__ y__ -> x__ {_FileDescriptorSet'file = y__}))+        Prelude.id+instance Data.ProtoLens.Message FileDescriptorSet where+  messageName _ = Data.Text.pack "google.protobuf.FileDescriptorSet"+  fieldsByTag+    = let+        file__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "file"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor FileDescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked (Data.ProtoLens.Field.field @"file")) ::+              Data.ProtoLens.FieldDescriptor FileDescriptorSet+      in+        Data.Map.fromList [(Data.ProtoLens.Tag 1, file__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _FileDescriptorSet'_unknownFields+        (\ x__ y__ -> x__ {_FileDescriptorSet'_unknownFields = y__})+  defMessage+    = FileDescriptorSet'_constructor+        {_FileDescriptorSet'file = Data.Vector.Generic.empty,+         _FileDescriptorSet'_unknownFields = []}+  parseMessage+    = let+        loop ::+          FileDescriptorSet+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld FileDescriptorProto+             -> Data.ProtoLens.Encoding.Bytes.Parser FileDescriptorSet+        loop x mutable'file+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'file <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.unsafeFreeze mutable'file)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'file") frozen'file x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "file"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'file y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'file+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'file <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'file)+          "FileDescriptorSet"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                (\ _v+                   -> (Data.Monoid.<>)+                        (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                        ((Prelude..)+                           (\ bs+                              -> (Data.Monoid.<>)+                                   (Data.ProtoLens.Encoding.Bytes.putVarInt+                                      (Prelude.fromIntegral (Data.ByteString.length bs)))+                                   (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                           Data.ProtoLens.encodeMessage+                           _v))+                (Lens.Family2.view (Data.ProtoLens.Field.field @"vec'file") _x))+             (Data.ProtoLens.Encoding.Wire.buildFieldSet+                (Lens.Family2.view Data.ProtoLens.unknownFields _x))+instance Control.DeepSeq.NFData FileDescriptorSet where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_FileDescriptorSet'_unknownFields x__)+             (Control.DeepSeq.deepseq (_FileDescriptorSet'file x__) ())+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.javaPackage' @:: Lens' FileOptions Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'javaPackage' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.javaOuterClassname' @:: Lens' FileOptions Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'javaOuterClassname' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.javaMultipleFiles' @:: Lens' FileOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'javaMultipleFiles' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.javaGenerateEqualsAndHash' @:: Lens' FileOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'javaGenerateEqualsAndHash' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.javaStringCheckUtf8' @:: Lens' FileOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'javaStringCheckUtf8' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.optimizeFor' @:: Lens' FileOptions FileOptions'OptimizeMode@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'optimizeFor' @:: Lens' FileOptions (Prelude.Maybe FileOptions'OptimizeMode)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.goPackage' @:: Lens' FileOptions Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'goPackage' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.ccGenericServices' @:: Lens' FileOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'ccGenericServices' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.javaGenericServices' @:: Lens' FileOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'javaGenericServices' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.pyGenericServices' @:: Lens' FileOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'pyGenericServices' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.phpGenericServices' @:: Lens' FileOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'phpGenericServices' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' FileOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.ccEnableArenas' @:: Lens' FileOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'ccEnableArenas' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.objcClassPrefix' @:: Lens' FileOptions Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'objcClassPrefix' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.csharpNamespace' @:: Lens' FileOptions Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'csharpNamespace' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.swiftPrefix' @:: Lens' FileOptions Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'swiftPrefix' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.phpClassPrefix' @:: Lens' FileOptions Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'phpClassPrefix' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.phpNamespace' @:: Lens' FileOptions Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'phpNamespace' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.phpMetadataNamespace' @:: Lens' FileOptions Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'phpMetadataNamespace' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.rubyPackage' @:: Lens' FileOptions Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'rubyPackage' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' FileOptions [UninterpretedOption]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'uninterpretedOption' @:: Lens' FileOptions (Data.Vector.Vector UninterpretedOption)@ -}+data FileOptions+  = FileOptions'_constructor {_FileOptions'javaPackage :: !(Prelude.Maybe Data.Text.Text),+                              _FileOptions'javaOuterClassname :: !(Prelude.Maybe Data.Text.Text),+                              _FileOptions'javaMultipleFiles :: !(Prelude.Maybe Prelude.Bool),+                              _FileOptions'javaGenerateEqualsAndHash :: !(Prelude.Maybe Prelude.Bool),+                              _FileOptions'javaStringCheckUtf8 :: !(Prelude.Maybe Prelude.Bool),+                              _FileOptions'optimizeFor :: !(Prelude.Maybe FileOptions'OptimizeMode),+                              _FileOptions'goPackage :: !(Prelude.Maybe Data.Text.Text),+                              _FileOptions'ccGenericServices :: !(Prelude.Maybe Prelude.Bool),+                              _FileOptions'javaGenericServices :: !(Prelude.Maybe Prelude.Bool),+                              _FileOptions'pyGenericServices :: !(Prelude.Maybe Prelude.Bool),+                              _FileOptions'phpGenericServices :: !(Prelude.Maybe Prelude.Bool),+                              _FileOptions'deprecated :: !(Prelude.Maybe Prelude.Bool),+                              _FileOptions'ccEnableArenas :: !(Prelude.Maybe Prelude.Bool),+                              _FileOptions'objcClassPrefix :: !(Prelude.Maybe Data.Text.Text),+                              _FileOptions'csharpNamespace :: !(Prelude.Maybe Data.Text.Text),+                              _FileOptions'swiftPrefix :: !(Prelude.Maybe Data.Text.Text),+                              _FileOptions'phpClassPrefix :: !(Prelude.Maybe Data.Text.Text),+                              _FileOptions'phpNamespace :: !(Prelude.Maybe Data.Text.Text),+                              _FileOptions'phpMetadataNamespace :: !(Prelude.Maybe Data.Text.Text),+                              _FileOptions'rubyPackage :: !(Prelude.Maybe Data.Text.Text),+                              _FileOptions'uninterpretedOption :: !(Data.Vector.Vector UninterpretedOption),+                              _FileOptions'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show FileOptions where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField FileOptions "javaPackage" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'javaPackage+           (\ x__ y__ -> x__ {_FileOptions'javaPackage = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'javaPackage" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'javaPackage+           (\ x__ y__ -> x__ {_FileOptions'javaPackage = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "javaOuterClassname" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'javaOuterClassname+           (\ x__ y__ -> x__ {_FileOptions'javaOuterClassname = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'javaOuterClassname" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'javaOuterClassname+           (\ x__ y__ -> x__ {_FileOptions'javaOuterClassname = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "javaMultipleFiles" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'javaMultipleFiles+           (\ x__ y__ -> x__ {_FileOptions'javaMultipleFiles = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'javaMultipleFiles" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'javaMultipleFiles+           (\ x__ y__ -> x__ {_FileOptions'javaMultipleFiles = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "javaGenerateEqualsAndHash" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'javaGenerateEqualsAndHash+           (\ x__ y__ -> x__ {_FileOptions'javaGenerateEqualsAndHash = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'javaGenerateEqualsAndHash" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'javaGenerateEqualsAndHash+           (\ x__ y__ -> x__ {_FileOptions'javaGenerateEqualsAndHash = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "javaStringCheckUtf8" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'javaStringCheckUtf8+           (\ x__ y__ -> x__ {_FileOptions'javaStringCheckUtf8 = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'javaStringCheckUtf8" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'javaStringCheckUtf8+           (\ x__ y__ -> x__ {_FileOptions'javaStringCheckUtf8 = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "optimizeFor" FileOptions'OptimizeMode where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'optimizeFor+           (\ x__ y__ -> x__ {_FileOptions'optimizeFor = y__}))+        (Data.ProtoLens.maybeLens FileOptions'SPEED)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'optimizeFor" (Prelude.Maybe FileOptions'OptimizeMode) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'optimizeFor+           (\ x__ y__ -> x__ {_FileOptions'optimizeFor = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "goPackage" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'goPackage+           (\ x__ y__ -> x__ {_FileOptions'goPackage = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'goPackage" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'goPackage+           (\ x__ y__ -> x__ {_FileOptions'goPackage = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "ccGenericServices" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'ccGenericServices+           (\ x__ y__ -> x__ {_FileOptions'ccGenericServices = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'ccGenericServices" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'ccGenericServices+           (\ x__ y__ -> x__ {_FileOptions'ccGenericServices = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "javaGenericServices" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'javaGenericServices+           (\ x__ y__ -> x__ {_FileOptions'javaGenericServices = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'javaGenericServices" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'javaGenericServices+           (\ x__ y__ -> x__ {_FileOptions'javaGenericServices = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "pyGenericServices" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'pyGenericServices+           (\ x__ y__ -> x__ {_FileOptions'pyGenericServices = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'pyGenericServices" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'pyGenericServices+           (\ x__ y__ -> x__ {_FileOptions'pyGenericServices = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "phpGenericServices" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'phpGenericServices+           (\ x__ y__ -> x__ {_FileOptions'phpGenericServices = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'phpGenericServices" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'phpGenericServices+           (\ x__ y__ -> x__ {_FileOptions'phpGenericServices = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "deprecated" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'deprecated+           (\ x__ y__ -> x__ {_FileOptions'deprecated = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'deprecated" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'deprecated+           (\ x__ y__ -> x__ {_FileOptions'deprecated = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "ccEnableArenas" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'ccEnableArenas+           (\ x__ y__ -> x__ {_FileOptions'ccEnableArenas = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'ccEnableArenas" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'ccEnableArenas+           (\ x__ y__ -> x__ {_FileOptions'ccEnableArenas = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "objcClassPrefix" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'objcClassPrefix+           (\ x__ y__ -> x__ {_FileOptions'objcClassPrefix = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'objcClassPrefix" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'objcClassPrefix+           (\ x__ y__ -> x__ {_FileOptions'objcClassPrefix = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "csharpNamespace" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'csharpNamespace+           (\ x__ y__ -> x__ {_FileOptions'csharpNamespace = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'csharpNamespace" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'csharpNamespace+           (\ x__ y__ -> x__ {_FileOptions'csharpNamespace = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "swiftPrefix" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'swiftPrefix+           (\ x__ y__ -> x__ {_FileOptions'swiftPrefix = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'swiftPrefix" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'swiftPrefix+           (\ x__ y__ -> x__ {_FileOptions'swiftPrefix = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "phpClassPrefix" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'phpClassPrefix+           (\ x__ y__ -> x__ {_FileOptions'phpClassPrefix = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'phpClassPrefix" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'phpClassPrefix+           (\ x__ y__ -> x__ {_FileOptions'phpClassPrefix = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "phpNamespace" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'phpNamespace+           (\ x__ y__ -> x__ {_FileOptions'phpNamespace = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'phpNamespace" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'phpNamespace+           (\ x__ y__ -> x__ {_FileOptions'phpNamespace = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "phpMetadataNamespace" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'phpMetadataNamespace+           (\ x__ y__ -> x__ {_FileOptions'phpMetadataNamespace = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'phpMetadataNamespace" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'phpMetadataNamespace+           (\ x__ y__ -> x__ {_FileOptions'phpMetadataNamespace = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "rubyPackage" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'rubyPackage+           (\ x__ y__ -> x__ {_FileOptions'rubyPackage = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField FileOptions "maybe'rubyPackage" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'rubyPackage+           (\ x__ y__ -> x__ {_FileOptions'rubyPackage = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField FileOptions "uninterpretedOption" [UninterpretedOption] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_FileOptions'uninterpretedOption = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField FileOptions "vec'uninterpretedOption" (Data.Vector.Vector UninterpretedOption) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _FileOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_FileOptions'uninterpretedOption = y__}))+        Prelude.id+instance Data.ProtoLens.Message FileOptions where+  messageName _ = Data.Text.pack "google.protobuf.FileOptions"+  fieldsByTag+    = let+        javaPackage__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "java_package"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'javaPackage")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        javaOuterClassname__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "java_outer_classname"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'javaOuterClassname")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        javaMultipleFiles__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "java_multiple_files"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'javaMultipleFiles")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        javaGenerateEqualsAndHash__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "java_generate_equals_and_hash"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'javaGenerateEqualsAndHash")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        javaStringCheckUtf8__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "java_string_check_utf8"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'javaStringCheckUtf8")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        optimizeFor__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "optimize_for"+              (Data.ProtoLens.ScalarField Data.ProtoLens.EnumField ::+                 Data.ProtoLens.FieldTypeDescriptor FileOptions'OptimizeMode)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'optimizeFor")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        goPackage__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "go_package"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'goPackage")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        ccGenericServices__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "cc_generic_services"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'ccGenericServices")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        javaGenericServices__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "java_generic_services"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'javaGenericServices")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        pyGenericServices__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "py_generic_services"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'pyGenericServices")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        phpGenericServices__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "php_generic_services"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'phpGenericServices")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        deprecated__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "deprecated"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'deprecated")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        ccEnableArenas__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "cc_enable_arenas"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'ccEnableArenas")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        objcClassPrefix__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "objc_class_prefix"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'objcClassPrefix")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        csharpNamespace__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "csharp_namespace"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'csharpNamespace")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        swiftPrefix__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "swift_prefix"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'swiftPrefix")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        phpClassPrefix__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "php_class_prefix"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'phpClassPrefix")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        phpNamespace__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "php_namespace"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'phpNamespace")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        phpMetadataNamespace__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "php_metadata_namespace"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'phpMetadataNamespace")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        rubyPackage__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "ruby_package"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'rubyPackage")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+        uninterpretedOption__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "uninterpreted_option"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"uninterpretedOption")) ::+              Data.ProtoLens.FieldDescriptor FileOptions+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, javaPackage__field_descriptor),+           (Data.ProtoLens.Tag 8, javaOuterClassname__field_descriptor),+           (Data.ProtoLens.Tag 10, javaMultipleFiles__field_descriptor),+           (Data.ProtoLens.Tag 20, +            javaGenerateEqualsAndHash__field_descriptor),+           (Data.ProtoLens.Tag 27, javaStringCheckUtf8__field_descriptor),+           (Data.ProtoLens.Tag 9, optimizeFor__field_descriptor),+           (Data.ProtoLens.Tag 11, goPackage__field_descriptor),+           (Data.ProtoLens.Tag 16, ccGenericServices__field_descriptor),+           (Data.ProtoLens.Tag 17, javaGenericServices__field_descriptor),+           (Data.ProtoLens.Tag 18, pyGenericServices__field_descriptor),+           (Data.ProtoLens.Tag 42, phpGenericServices__field_descriptor),+           (Data.ProtoLens.Tag 23, deprecated__field_descriptor),+           (Data.ProtoLens.Tag 31, ccEnableArenas__field_descriptor),+           (Data.ProtoLens.Tag 36, objcClassPrefix__field_descriptor),+           (Data.ProtoLens.Tag 37, csharpNamespace__field_descriptor),+           (Data.ProtoLens.Tag 39, swiftPrefix__field_descriptor),+           (Data.ProtoLens.Tag 40, phpClassPrefix__field_descriptor),+           (Data.ProtoLens.Tag 41, phpNamespace__field_descriptor),+           (Data.ProtoLens.Tag 44, phpMetadataNamespace__field_descriptor),+           (Data.ProtoLens.Tag 45, rubyPackage__field_descriptor),+           (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _FileOptions'_unknownFields+        (\ x__ y__ -> x__ {_FileOptions'_unknownFields = y__})+  defMessage+    = FileOptions'_constructor+        {_FileOptions'javaPackage = Prelude.Nothing,+         _FileOptions'javaOuterClassname = Prelude.Nothing,+         _FileOptions'javaMultipleFiles = Prelude.Nothing,+         _FileOptions'javaGenerateEqualsAndHash = Prelude.Nothing,+         _FileOptions'javaStringCheckUtf8 = Prelude.Nothing,+         _FileOptions'optimizeFor = Prelude.Nothing,+         _FileOptions'goPackage = Prelude.Nothing,+         _FileOptions'ccGenericServices = Prelude.Nothing,+         _FileOptions'javaGenericServices = Prelude.Nothing,+         _FileOptions'pyGenericServices = Prelude.Nothing,+         _FileOptions'phpGenericServices = Prelude.Nothing,+         _FileOptions'deprecated = Prelude.Nothing,+         _FileOptions'ccEnableArenas = Prelude.Nothing,+         _FileOptions'objcClassPrefix = Prelude.Nothing,+         _FileOptions'csharpNamespace = Prelude.Nothing,+         _FileOptions'swiftPrefix = Prelude.Nothing,+         _FileOptions'phpClassPrefix = Prelude.Nothing,+         _FileOptions'phpNamespace = Prelude.Nothing,+         _FileOptions'phpMetadataNamespace = Prelude.Nothing,+         _FileOptions'rubyPackage = Prelude.Nothing,+         _FileOptions'uninterpretedOption = Data.Vector.Generic.empty,+         _FileOptions'_unknownFields = []}+  parseMessage+    = let+        loop ::+          FileOptions+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld UninterpretedOption+             -> Data.ProtoLens.Encoding.Bytes.Parser FileOptions+        loop x mutable'uninterpretedOption+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                      (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                         mutable'uninterpretedOption)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'uninterpretedOption")+                              frozen'uninterpretedOption+                              x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "java_package"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"javaPackage") y x)+                                  mutable'uninterpretedOption+                        66+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "java_outer_classname"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"javaOuterClassname") y x)+                                  mutable'uninterpretedOption+                        80+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "java_multiple_files"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"javaMultipleFiles") y x)+                                  mutable'uninterpretedOption+                        160+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "java_generate_equals_and_hash"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"javaGenerateEqualsAndHash") y x)+                                  mutable'uninterpretedOption+                        216+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "java_string_check_utf8"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"javaStringCheckUtf8") y x)+                                  mutable'uninterpretedOption+                        72+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.toEnum+                                          (Prelude.fmap+                                             Prelude.fromIntegral+                                             Data.ProtoLens.Encoding.Bytes.getVarInt))+                                       "optimize_for"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"optimizeFor") y x)+                                  mutable'uninterpretedOption+                        90+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "go_package"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"goPackage") y x)+                                  mutable'uninterpretedOption+                        128+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "cc_generic_services"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"ccGenericServices") y x)+                                  mutable'uninterpretedOption+                        136+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "java_generic_services"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"javaGenericServices") y x)+                                  mutable'uninterpretedOption+                        144+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "py_generic_services"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"pyGenericServices") y x)+                                  mutable'uninterpretedOption+                        336+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "php_generic_services"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"phpGenericServices") y x)+                                  mutable'uninterpretedOption+                        184+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "deprecated"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"deprecated") y x)+                                  mutable'uninterpretedOption+                        248+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "cc_enable_arenas"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"ccEnableArenas") y x)+                                  mutable'uninterpretedOption+                        290+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "objc_class_prefix"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"objcClassPrefix") y x)+                                  mutable'uninterpretedOption+                        298+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "csharp_namespace"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"csharpNamespace") y x)+                                  mutable'uninterpretedOption+                        314+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "swift_prefix"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"swiftPrefix") y x)+                                  mutable'uninterpretedOption+                        322+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "php_class_prefix"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"phpClassPrefix") y x)+                                  mutable'uninterpretedOption+                        330+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "php_namespace"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"phpNamespace") y x)+                                  mutable'uninterpretedOption+                        354+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "php_metadata_namespace"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"phpMetadataNamespace") y x)+                                  mutable'uninterpretedOption+                        362+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "ruby_package"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"rubyPackage") y x)+                                  mutable'uninterpretedOption+                        7994+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "uninterpreted_option"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'uninterpretedOption y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'uninterpretedOption+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                               Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'uninterpretedOption)+          "FileOptions"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view+                    (Data.ProtoLens.Field.field @"maybe'javaPackage") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                       ((Prelude..)+                          (\ bs+                             -> (Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                     (Prelude.fromIntegral (Data.ByteString.length bs)))+                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                          Data.Text.Encoding.encodeUtf8+                          _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view+                       (Data.ProtoLens.Field.field @"maybe'javaOuterClassname") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 66)+                          ((Prelude..)+                             (\ bs+                                -> (Data.Monoid.<>)+                                     (Data.ProtoLens.Encoding.Bytes.putVarInt+                                        (Prelude.fromIntegral (Data.ByteString.length bs)))+                                     (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                             Data.Text.Encoding.encodeUtf8+                             _v))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view+                          (Data.ProtoLens.Field.field @"maybe'javaMultipleFiles") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 80)+                             ((Prelude..)+                                Data.ProtoLens.Encoding.Bytes.putVarInt+                                (\ b -> if b then 1 else 0)+                                _v))+                   ((Data.Monoid.<>)+                      (case+                           Lens.Family2.view+                             (Data.ProtoLens.Field.field @"maybe'javaGenerateEqualsAndHash") _x+                       of+                         Prelude.Nothing -> Data.Monoid.mempty+                         (Prelude.Just _v)+                           -> (Data.Monoid.<>)+                                (Data.ProtoLens.Encoding.Bytes.putVarInt 160)+                                ((Prelude..)+                                   Data.ProtoLens.Encoding.Bytes.putVarInt+                                   (\ b -> if b then 1 else 0)+                                   _v))+                      ((Data.Monoid.<>)+                         (case+                              Lens.Family2.view+                                (Data.ProtoLens.Field.field @"maybe'javaStringCheckUtf8") _x+                          of+                            Prelude.Nothing -> Data.Monoid.mempty+                            (Prelude.Just _v)+                              -> (Data.Monoid.<>)+                                   (Data.ProtoLens.Encoding.Bytes.putVarInt 216)+                                   ((Prelude..)+                                      Data.ProtoLens.Encoding.Bytes.putVarInt+                                      (\ b -> if b then 1 else 0)+                                      _v))+                         ((Data.Monoid.<>)+                            (case+                                 Lens.Family2.view+                                   (Data.ProtoLens.Field.field @"maybe'optimizeFor") _x+                             of+                               Prelude.Nothing -> Data.Monoid.mempty+                               (Prelude.Just _v)+                                 -> (Data.Monoid.<>)+                                      (Data.ProtoLens.Encoding.Bytes.putVarInt 72)+                                      ((Prelude..)+                                         ((Prelude..)+                                            Data.ProtoLens.Encoding.Bytes.putVarInt+                                            Prelude.fromIntegral)+                                         Prelude.fromEnum+                                         _v))+                            ((Data.Monoid.<>)+                               (case+                                    Lens.Family2.view+                                      (Data.ProtoLens.Field.field @"maybe'goPackage") _x+                                of+                                  Prelude.Nothing -> Data.Monoid.mempty+                                  (Prelude.Just _v)+                                    -> (Data.Monoid.<>)+                                         (Data.ProtoLens.Encoding.Bytes.putVarInt 90)+                                         ((Prelude..)+                                            (\ bs+                                               -> (Data.Monoid.<>)+                                                    (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                       (Prelude.fromIntegral+                                                          (Data.ByteString.length bs)))+                                                    (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                            Data.Text.Encoding.encodeUtf8+                                            _v))+                               ((Data.Monoid.<>)+                                  (case+                                       Lens.Family2.view+                                         (Data.ProtoLens.Field.field @"maybe'ccGenericServices") _x+                                   of+                                     Prelude.Nothing -> Data.Monoid.mempty+                                     (Prelude.Just _v)+                                       -> (Data.Monoid.<>)+                                            (Data.ProtoLens.Encoding.Bytes.putVarInt 128)+                                            ((Prelude..)+                                               Data.ProtoLens.Encoding.Bytes.putVarInt+                                               (\ b -> if b then 1 else 0)+                                               _v))+                                  ((Data.Monoid.<>)+                                     (case+                                          Lens.Family2.view+                                            (Data.ProtoLens.Field.field+                                               @"maybe'javaGenericServices")+                                            _x+                                      of+                                        Prelude.Nothing -> Data.Monoid.mempty+                                        (Prelude.Just _v)+                                          -> (Data.Monoid.<>)+                                               (Data.ProtoLens.Encoding.Bytes.putVarInt 136)+                                               ((Prelude..)+                                                  Data.ProtoLens.Encoding.Bytes.putVarInt+                                                  (\ b -> if b then 1 else 0)+                                                  _v))+                                     ((Data.Monoid.<>)+                                        (case+                                             Lens.Family2.view+                                               (Data.ProtoLens.Field.field+                                                  @"maybe'pyGenericServices")+                                               _x+                                         of+                                           Prelude.Nothing -> Data.Monoid.mempty+                                           (Prelude.Just _v)+                                             -> (Data.Monoid.<>)+                                                  (Data.ProtoLens.Encoding.Bytes.putVarInt 144)+                                                  ((Prelude..)+                                                     Data.ProtoLens.Encoding.Bytes.putVarInt+                                                     (\ b -> if b then 1 else 0)+                                                     _v))+                                        ((Data.Monoid.<>)+                                           (case+                                                Lens.Family2.view+                                                  (Data.ProtoLens.Field.field+                                                     @"maybe'phpGenericServices")+                                                  _x+                                            of+                                              Prelude.Nothing -> Data.Monoid.mempty+                                              (Prelude.Just _v)+                                                -> (Data.Monoid.<>)+                                                     (Data.ProtoLens.Encoding.Bytes.putVarInt 336)+                                                     ((Prelude..)+                                                        Data.ProtoLens.Encoding.Bytes.putVarInt+                                                        (\ b -> if b then 1 else 0)+                                                        _v))+                                           ((Data.Monoid.<>)+                                              (case+                                                   Lens.Family2.view+                                                     (Data.ProtoLens.Field.field+                                                        @"maybe'deprecated")+                                                     _x+                                               of+                                                 Prelude.Nothing -> Data.Monoid.mempty+                                                 (Prelude.Just _v)+                                                   -> (Data.Monoid.<>)+                                                        (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                           184)+                                                        ((Prelude..)+                                                           Data.ProtoLens.Encoding.Bytes.putVarInt+                                                           (\ b -> if b then 1 else 0)+                                                           _v))+                                              ((Data.Monoid.<>)+                                                 (case+                                                      Lens.Family2.view+                                                        (Data.ProtoLens.Field.field+                                                           @"maybe'ccEnableArenas")+                                                        _x+                                                  of+                                                    Prelude.Nothing -> Data.Monoid.mempty+                                                    (Prelude.Just _v)+                                                      -> (Data.Monoid.<>)+                                                           (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                              248)+                                                           ((Prelude..)+                                                              Data.ProtoLens.Encoding.Bytes.putVarInt+                                                              (\ b -> if b then 1 else 0)+                                                              _v))+                                                 ((Data.Monoid.<>)+                                                    (case+                                                         Lens.Family2.view+                                                           (Data.ProtoLens.Field.field+                                                              @"maybe'objcClassPrefix")+                                                           _x+                                                     of+                                                       Prelude.Nothing -> Data.Monoid.mempty+                                                       (Prelude.Just _v)+                                                         -> (Data.Monoid.<>)+                                                              (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                 290)+                                                              ((Prelude..)+                                                                 (\ bs+                                                                    -> (Data.Monoid.<>)+                                                                         (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                            (Prelude.fromIntegral+                                                                               (Data.ByteString.length+                                                                                  bs)))+                                                                         (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                            bs))+                                                                 Data.Text.Encoding.encodeUtf8+                                                                 _v))+                                                    ((Data.Monoid.<>)+                                                       (case+                                                            Lens.Family2.view+                                                              (Data.ProtoLens.Field.field+                                                                 @"maybe'csharpNamespace")+                                                              _x+                                                        of+                                                          Prelude.Nothing -> Data.Monoid.mempty+                                                          (Prelude.Just _v)+                                                            -> (Data.Monoid.<>)+                                                                 (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                    298)+                                                                 ((Prelude..)+                                                                    (\ bs+                                                                       -> (Data.Monoid.<>)+                                                                            (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                               (Prelude.fromIntegral+                                                                                  (Data.ByteString.length+                                                                                     bs)))+                                                                            (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                               bs))+                                                                    Data.Text.Encoding.encodeUtf8+                                                                    _v))+                                                       ((Data.Monoid.<>)+                                                          (case+                                                               Lens.Family2.view+                                                                 (Data.ProtoLens.Field.field+                                                                    @"maybe'swiftPrefix")+                                                                 _x+                                                           of+                                                             Prelude.Nothing -> Data.Monoid.mempty+                                                             (Prelude.Just _v)+                                                               -> (Data.Monoid.<>)+                                                                    (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                       314)+                                                                    ((Prelude..)+                                                                       (\ bs+                                                                          -> (Data.Monoid.<>)+                                                                               (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                                  (Prelude.fromIntegral+                                                                                     (Data.ByteString.length+                                                                                        bs)))+                                                                               (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                                  bs))+                                                                       Data.Text.Encoding.encodeUtf8+                                                                       _v))+                                                          ((Data.Monoid.<>)+                                                             (case+                                                                  Lens.Family2.view+                                                                    (Data.ProtoLens.Field.field+                                                                       @"maybe'phpClassPrefix")+                                                                    _x+                                                              of+                                                                Prelude.Nothing+                                                                  -> Data.Monoid.mempty+                                                                (Prelude.Just _v)+                                                                  -> (Data.Monoid.<>)+                                                                       (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                          322)+                                                                       ((Prelude..)+                                                                          (\ bs+                                                                             -> (Data.Monoid.<>)+                                                                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                                     (Prelude.fromIntegral+                                                                                        (Data.ByteString.length+                                                                                           bs)))+                                                                                  (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                                     bs))+                                                                          Data.Text.Encoding.encodeUtf8+                                                                          _v))+                                                             ((Data.Monoid.<>)+                                                                (case+                                                                     Lens.Family2.view+                                                                       (Data.ProtoLens.Field.field+                                                                          @"maybe'phpNamespace")+                                                                       _x+                                                                 of+                                                                   Prelude.Nothing+                                                                     -> Data.Monoid.mempty+                                                                   (Prelude.Just _v)+                                                                     -> (Data.Monoid.<>)+                                                                          (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                             330)+                                                                          ((Prelude..)+                                                                             (\ bs+                                                                                -> (Data.Monoid.<>)+                                                                                     (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                                        (Prelude.fromIntegral+                                                                                           (Data.ByteString.length+                                                                                              bs)))+                                                                                     (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                                        bs))+                                                                             Data.Text.Encoding.encodeUtf8+                                                                             _v))+                                                                ((Data.Monoid.<>)+                                                                   (case+                                                                        Lens.Family2.view+                                                                          (Data.ProtoLens.Field.field+                                                                             @"maybe'phpMetadataNamespace")+                                                                          _x+                                                                    of+                                                                      Prelude.Nothing+                                                                        -> Data.Monoid.mempty+                                                                      (Prelude.Just _v)+                                                                        -> (Data.Monoid.<>)+                                                                             (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                                354)+                                                                             ((Prelude..)+                                                                                (\ bs+                                                                                   -> (Data.Monoid.<>)+                                                                                        (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                                           (Prelude.fromIntegral+                                                                                              (Data.ByteString.length+                                                                                                 bs)))+                                                                                        (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                                           bs))+                                                                                Data.Text.Encoding.encodeUtf8+                                                                                _v))+                                                                   ((Data.Monoid.<>)+                                                                      (case+                                                                           Lens.Family2.view+                                                                             (Data.ProtoLens.Field.field+                                                                                @"maybe'rubyPackage")+                                                                             _x+                                                                       of+                                                                         Prelude.Nothing+                                                                           -> Data.Monoid.mempty+                                                                         (Prelude.Just _v)+                                                                           -> (Data.Monoid.<>)+                                                                                (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                                   362)+                                                                                ((Prelude..)+                                                                                   (\ bs+                                                                                      -> (Data.Monoid.<>)+                                                                                           (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                                              (Prelude.fromIntegral+                                                                                                 (Data.ByteString.length+                                                                                                    bs)))+                                                                                           (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                                              bs))+                                                                                   Data.Text.Encoding.encodeUtf8+                                                                                   _v))+                                                                      ((Data.Monoid.<>)+                                                                         (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                                                                            (\ _v+                                                                               -> (Data.Monoid.<>)+                                                                                    (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                                       7994)+                                                                                    ((Prelude..)+                                                                                       (\ bs+                                                                                          -> (Data.Monoid.<>)+                                                                                               (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                                                                  (Prelude.fromIntegral+                                                                                                     (Data.ByteString.length+                                                                                                        bs)))+                                                                                               (Data.ProtoLens.Encoding.Bytes.putBytes+                                                                                                  bs))+                                                                                       Data.ProtoLens.encodeMessage+                                                                                       _v))+                                                                            (Lens.Family2.view+                                                                               (Data.ProtoLens.Field.field+                                                                                  @"vec'uninterpretedOption")+                                                                               _x))+                                                                         (Data.ProtoLens.Encoding.Wire.buildFieldSet+                                                                            (Lens.Family2.view+                                                                               Data.ProtoLens.unknownFields+                                                                               _x))))))))))))))))))))))+instance Control.DeepSeq.NFData FileOptions where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_FileOptions'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_FileOptions'javaPackage x__)+                (Control.DeepSeq.deepseq+                   (_FileOptions'javaOuterClassname x__)+                   (Control.DeepSeq.deepseq+                      (_FileOptions'javaMultipleFiles x__)+                      (Control.DeepSeq.deepseq+                         (_FileOptions'javaGenerateEqualsAndHash x__)+                         (Control.DeepSeq.deepseq+                            (_FileOptions'javaStringCheckUtf8 x__)+                            (Control.DeepSeq.deepseq+                               (_FileOptions'optimizeFor x__)+                               (Control.DeepSeq.deepseq+                                  (_FileOptions'goPackage x__)+                                  (Control.DeepSeq.deepseq+                                     (_FileOptions'ccGenericServices x__)+                                     (Control.DeepSeq.deepseq+                                        (_FileOptions'javaGenericServices x__)+                                        (Control.DeepSeq.deepseq+                                           (_FileOptions'pyGenericServices x__)+                                           (Control.DeepSeq.deepseq+                                              (_FileOptions'phpGenericServices x__)+                                              (Control.DeepSeq.deepseq+                                                 (_FileOptions'deprecated x__)+                                                 (Control.DeepSeq.deepseq+                                                    (_FileOptions'ccEnableArenas x__)+                                                    (Control.DeepSeq.deepseq+                                                       (_FileOptions'objcClassPrefix x__)+                                                       (Control.DeepSeq.deepseq+                                                          (_FileOptions'csharpNamespace x__)+                                                          (Control.DeepSeq.deepseq+                                                             (_FileOptions'swiftPrefix x__)+                                                             (Control.DeepSeq.deepseq+                                                                (_FileOptions'phpClassPrefix x__)+                                                                (Control.DeepSeq.deepseq+                                                                   (_FileOptions'phpNamespace x__)+                                                                   (Control.DeepSeq.deepseq+                                                                      (_FileOptions'phpMetadataNamespace+                                                                         x__)+                                                                      (Control.DeepSeq.deepseq+                                                                         (_FileOptions'rubyPackage+                                                                            x__)+                                                                         (Control.DeepSeq.deepseq+                                                                            (_FileOptions'uninterpretedOption+                                                                               x__)+                                                                            ())))))))))))))))))))))+data FileOptions'OptimizeMode+  = FileOptions'SPEED |+    FileOptions'CODE_SIZE |+    FileOptions'LITE_RUNTIME+  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)+instance Data.ProtoLens.MessageEnum FileOptions'OptimizeMode where+  maybeToEnum 1 = Prelude.Just FileOptions'SPEED+  maybeToEnum 2 = Prelude.Just FileOptions'CODE_SIZE+  maybeToEnum 3 = Prelude.Just FileOptions'LITE_RUNTIME+  maybeToEnum _ = Prelude.Nothing+  showEnum FileOptions'SPEED = "SPEED"+  showEnum FileOptions'CODE_SIZE = "CODE_SIZE"+  showEnum FileOptions'LITE_RUNTIME = "LITE_RUNTIME"+  readEnum k+    | (Prelude.==) k "SPEED" = Prelude.Just FileOptions'SPEED+    | (Prelude.==) k "CODE_SIZE" = Prelude.Just FileOptions'CODE_SIZE+    | (Prelude.==) k "LITE_RUNTIME"+    = Prelude.Just FileOptions'LITE_RUNTIME+    | Prelude.otherwise+    = (Prelude.>>=) (Text.Read.readMaybe k) Data.ProtoLens.maybeToEnum+instance Prelude.Bounded FileOptions'OptimizeMode where+  minBound = FileOptions'SPEED+  maxBound = FileOptions'LITE_RUNTIME+instance Prelude.Enum FileOptions'OptimizeMode where+  toEnum k__+    = Prelude.maybe+        (Prelude.error+           ((Prelude.++)+              "toEnum: unknown value for enum OptimizeMode: "+              (Prelude.show k__)))+        Prelude.id+        (Data.ProtoLens.maybeToEnum k__)+  fromEnum FileOptions'SPEED = 1+  fromEnum FileOptions'CODE_SIZE = 2+  fromEnum FileOptions'LITE_RUNTIME = 3+  succ FileOptions'LITE_RUNTIME+    = Prelude.error+        "FileOptions'OptimizeMode.succ: bad argument FileOptions'LITE_RUNTIME. This value would be out of bounds."+  succ FileOptions'SPEED = FileOptions'CODE_SIZE+  succ FileOptions'CODE_SIZE = FileOptions'LITE_RUNTIME+  pred FileOptions'SPEED+    = Prelude.error+        "FileOptions'OptimizeMode.pred: bad argument FileOptions'SPEED. This value would be out of bounds."+  pred FileOptions'CODE_SIZE = FileOptions'SPEED+  pred FileOptions'LITE_RUNTIME = FileOptions'CODE_SIZE+  enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom+  enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo+  enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen+  enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo+instance Data.ProtoLens.FieldDefault FileOptions'OptimizeMode where+  fieldDefault = FileOptions'SPEED+instance Control.DeepSeq.NFData FileOptions'OptimizeMode where+  rnf x__ = Prelude.seq x__ ()+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.annotation' @:: Lens' GeneratedCodeInfo [GeneratedCodeInfo'Annotation]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'annotation' @:: Lens' GeneratedCodeInfo (Data.Vector.Vector GeneratedCodeInfo'Annotation)@ -}+data GeneratedCodeInfo+  = GeneratedCodeInfo'_constructor {_GeneratedCodeInfo'annotation :: !(Data.Vector.Vector GeneratedCodeInfo'Annotation),+                                    _GeneratedCodeInfo'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show GeneratedCodeInfo where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField GeneratedCodeInfo "annotation" [GeneratedCodeInfo'Annotation] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _GeneratedCodeInfo'annotation+           (\ x__ y__ -> x__ {_GeneratedCodeInfo'annotation = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField GeneratedCodeInfo "vec'annotation" (Data.Vector.Vector GeneratedCodeInfo'Annotation) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _GeneratedCodeInfo'annotation+           (\ x__ y__ -> x__ {_GeneratedCodeInfo'annotation = y__}))+        Prelude.id+instance Data.ProtoLens.Message GeneratedCodeInfo where+  messageName _ = Data.Text.pack "google.protobuf.GeneratedCodeInfo"+  fieldsByTag+    = let+        annotation__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "annotation"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor GeneratedCodeInfo'Annotation)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"annotation")) ::+              Data.ProtoLens.FieldDescriptor GeneratedCodeInfo+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, annotation__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _GeneratedCodeInfo'_unknownFields+        (\ x__ y__ -> x__ {_GeneratedCodeInfo'_unknownFields = y__})+  defMessage+    = GeneratedCodeInfo'_constructor+        {_GeneratedCodeInfo'annotation = Data.Vector.Generic.empty,+         _GeneratedCodeInfo'_unknownFields = []}+  parseMessage+    = let+        loop ::+          GeneratedCodeInfo+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld GeneratedCodeInfo'Annotation+             -> Data.ProtoLens.Encoding.Bytes.Parser GeneratedCodeInfo+        loop x mutable'annotation+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'annotation <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                             (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                mutable'annotation)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'annotation")+                              frozen'annotation+                              x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "annotation"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'annotation y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'annotation+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'annotation <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                      Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'annotation)+          "GeneratedCodeInfo"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                (\ _v+                   -> (Data.Monoid.<>)+                        (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                        ((Prelude..)+                           (\ bs+                              -> (Data.Monoid.<>)+                                   (Data.ProtoLens.Encoding.Bytes.putVarInt+                                      (Prelude.fromIntegral (Data.ByteString.length bs)))+                                   (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                           Data.ProtoLens.encodeMessage+                           _v))+                (Lens.Family2.view+                   (Data.ProtoLens.Field.field @"vec'annotation") _x))+             (Data.ProtoLens.Encoding.Wire.buildFieldSet+                (Lens.Family2.view Data.ProtoLens.unknownFields _x))+instance Control.DeepSeq.NFData GeneratedCodeInfo where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_GeneratedCodeInfo'_unknownFields x__)+             (Control.DeepSeq.deepseq (_GeneratedCodeInfo'annotation x__) ())+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.path' @:: Lens' GeneratedCodeInfo'Annotation [Data.Int.Int32]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'path' @:: Lens' GeneratedCodeInfo'Annotation (Data.Vector.Unboxed.Vector Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.sourceFile' @:: Lens' GeneratedCodeInfo'Annotation Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'sourceFile' @:: Lens' GeneratedCodeInfo'Annotation (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.begin' @:: Lens' GeneratedCodeInfo'Annotation Data.Int.Int32@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'begin' @:: Lens' GeneratedCodeInfo'Annotation (Prelude.Maybe Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.end' @:: Lens' GeneratedCodeInfo'Annotation Data.Int.Int32@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'end' @:: Lens' GeneratedCodeInfo'Annotation (Prelude.Maybe Data.Int.Int32)@ -}+data GeneratedCodeInfo'Annotation+  = GeneratedCodeInfo'Annotation'_constructor {_GeneratedCodeInfo'Annotation'path :: !(Data.Vector.Unboxed.Vector Data.Int.Int32),+                                               _GeneratedCodeInfo'Annotation'sourceFile :: !(Prelude.Maybe Data.Text.Text),+                                               _GeneratedCodeInfo'Annotation'begin :: !(Prelude.Maybe Data.Int.Int32),+                                               _GeneratedCodeInfo'Annotation'end :: !(Prelude.Maybe Data.Int.Int32),+                                               _GeneratedCodeInfo'Annotation'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show GeneratedCodeInfo'Annotation where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField GeneratedCodeInfo'Annotation "path" [Data.Int.Int32] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _GeneratedCodeInfo'Annotation'path+           (\ x__ y__ -> x__ {_GeneratedCodeInfo'Annotation'path = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField GeneratedCodeInfo'Annotation "vec'path" (Data.Vector.Unboxed.Vector Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _GeneratedCodeInfo'Annotation'path+           (\ x__ y__ -> x__ {_GeneratedCodeInfo'Annotation'path = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField GeneratedCodeInfo'Annotation "sourceFile" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _GeneratedCodeInfo'Annotation'sourceFile+           (\ x__ y__+              -> x__ {_GeneratedCodeInfo'Annotation'sourceFile = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField GeneratedCodeInfo'Annotation "maybe'sourceFile" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _GeneratedCodeInfo'Annotation'sourceFile+           (\ x__ y__+              -> x__ {_GeneratedCodeInfo'Annotation'sourceFile = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField GeneratedCodeInfo'Annotation "begin" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _GeneratedCodeInfo'Annotation'begin+           (\ x__ y__ -> x__ {_GeneratedCodeInfo'Annotation'begin = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField GeneratedCodeInfo'Annotation "maybe'begin" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _GeneratedCodeInfo'Annotation'begin+           (\ x__ y__ -> x__ {_GeneratedCodeInfo'Annotation'begin = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField GeneratedCodeInfo'Annotation "end" Data.Int.Int32 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _GeneratedCodeInfo'Annotation'end+           (\ x__ y__ -> x__ {_GeneratedCodeInfo'Annotation'end = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField GeneratedCodeInfo'Annotation "maybe'end" (Prelude.Maybe Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _GeneratedCodeInfo'Annotation'end+           (\ x__ y__ -> x__ {_GeneratedCodeInfo'Annotation'end = y__}))+        Prelude.id+instance Data.ProtoLens.Message GeneratedCodeInfo'Annotation where+  messageName _+    = Data.Text.pack "google.protobuf.GeneratedCodeInfo.Annotation"+  fieldsByTag+    = let+        path__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "path"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Packed (Data.ProtoLens.Field.field @"path")) ::+              Data.ProtoLens.FieldDescriptor GeneratedCodeInfo'Annotation+        sourceFile__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "source_file"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'sourceFile")) ::+              Data.ProtoLens.FieldDescriptor GeneratedCodeInfo'Annotation+        begin__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "begin"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'begin")) ::+              Data.ProtoLens.FieldDescriptor GeneratedCodeInfo'Annotation+        end__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "end"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'end")) ::+              Data.ProtoLens.FieldDescriptor GeneratedCodeInfo'Annotation+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, path__field_descriptor),+           (Data.ProtoLens.Tag 2, sourceFile__field_descriptor),+           (Data.ProtoLens.Tag 3, begin__field_descriptor),+           (Data.ProtoLens.Tag 4, end__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _GeneratedCodeInfo'Annotation'_unknownFields+        (\ x__ y__+           -> x__ {_GeneratedCodeInfo'Annotation'_unknownFields = y__})+  defMessage+    = GeneratedCodeInfo'Annotation'_constructor+        {_GeneratedCodeInfo'Annotation'path = Data.Vector.Generic.empty,+         _GeneratedCodeInfo'Annotation'sourceFile = Prelude.Nothing,+         _GeneratedCodeInfo'Annotation'begin = Prelude.Nothing,+         _GeneratedCodeInfo'Annotation'end = Prelude.Nothing,+         _GeneratedCodeInfo'Annotation'_unknownFields = []}+  parseMessage+    = let+        loop ::+          GeneratedCodeInfo'Annotation+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Unboxed.Vector Data.ProtoLens.Encoding.Growing.RealWorld Data.Int.Int32+             -> Data.ProtoLens.Encoding.Bytes.Parser GeneratedCodeInfo'Annotation+        loop x mutable'path+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'path <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.unsafeFreeze mutable'path)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'path") frozen'path x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        8 -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (Prelude.fmap+                                           Prelude.fromIntegral+                                           Data.ProtoLens.Encoding.Bytes.getVarInt)+                                        "path"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'path y)+                                loop x v+                        10+                          -> do y <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                        Data.ProtoLens.Encoding.Bytes.isolate+                                          (Prelude.fromIntegral len)+                                          ((let+                                              ploop qs+                                                = do packedEnd <- Data.ProtoLens.Encoding.Bytes.atEnd+                                                     if packedEnd then+                                                         Prelude.return qs+                                                     else+                                                         do !q <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                                                    (Prelude.fmap+                                                                       Prelude.fromIntegral+                                                                       Data.ProtoLens.Encoding.Bytes.getVarInt)+                                                                    "path"+                                                            qs' <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                                     (Data.ProtoLens.Encoding.Growing.append+                                                                        qs q)+                                                            ploop qs'+                                            in ploop)+                                             mutable'path)+                                loop x y+                        18+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "source_file"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"sourceFile") y x)+                                  mutable'path+                        24+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "begin"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"begin") y x)+                                  mutable'path+                        32+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "end"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"end") y x)+                                  mutable'path+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'path+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'path <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'path)+          "Annotation"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (let+                p = Lens.Family2.view (Data.ProtoLens.Field.field @"vec'path") _x+              in+                if Data.Vector.Generic.null p then+                    Data.Monoid.mempty+                else+                    (Data.Monoid.<>)+                      (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                      ((\ bs+                          -> (Data.Monoid.<>)+                               (Data.ProtoLens.Encoding.Bytes.putVarInt+                                  (Prelude.fromIntegral (Data.ByteString.length bs)))+                               (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                         (Data.ProtoLens.Encoding.Bytes.runBuilder+                            (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                               ((Prelude..)+                                  Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral)+                               p))))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view+                       (Data.ProtoLens.Field.field @"maybe'sourceFile") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 18)+                          ((Prelude..)+                             (\ bs+                                -> (Data.Monoid.<>)+                                     (Data.ProtoLens.Encoding.Bytes.putVarInt+                                        (Prelude.fromIntegral (Data.ByteString.length bs)))+                                     (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                             Data.Text.Encoding.encodeUtf8+                             _v))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'begin") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 24)+                             ((Prelude..)+                                Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+                   ((Data.Monoid.<>)+                      (case+                           Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'end") _x+                       of+                         Prelude.Nothing -> Data.Monoid.mempty+                         (Prelude.Just _v)+                           -> (Data.Monoid.<>)+                                (Data.ProtoLens.Encoding.Bytes.putVarInt 32)+                                ((Prelude..)+                                   Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+                      (Data.ProtoLens.Encoding.Wire.buildFieldSet+                         (Lens.Family2.view Data.ProtoLens.unknownFields _x)))))+instance Control.DeepSeq.NFData GeneratedCodeInfo'Annotation where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_GeneratedCodeInfo'Annotation'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_GeneratedCodeInfo'Annotation'path x__)+                (Control.DeepSeq.deepseq+                   (_GeneratedCodeInfo'Annotation'sourceFile x__)+                   (Control.DeepSeq.deepseq+                      (_GeneratedCodeInfo'Annotation'begin x__)+                      (Control.DeepSeq.deepseq+                         (_GeneratedCodeInfo'Annotation'end x__) ()))))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.messageSetWireFormat' @:: Lens' MessageOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'messageSetWireFormat' @:: Lens' MessageOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.noStandardDescriptorAccessor' @:: Lens' MessageOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'noStandardDescriptorAccessor' @:: Lens' MessageOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' MessageOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' MessageOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.mapEntry' @:: Lens' MessageOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'mapEntry' @:: Lens' MessageOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' MessageOptions [UninterpretedOption]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'uninterpretedOption' @:: Lens' MessageOptions (Data.Vector.Vector UninterpretedOption)@ -}+data MessageOptions+  = MessageOptions'_constructor {_MessageOptions'messageSetWireFormat :: !(Prelude.Maybe Prelude.Bool),+                                 _MessageOptions'noStandardDescriptorAccessor :: !(Prelude.Maybe Prelude.Bool),+                                 _MessageOptions'deprecated :: !(Prelude.Maybe Prelude.Bool),+                                 _MessageOptions'mapEntry :: !(Prelude.Maybe Prelude.Bool),+                                 _MessageOptions'uninterpretedOption :: !(Data.Vector.Vector UninterpretedOption),+                                 _MessageOptions'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show MessageOptions where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField MessageOptions "messageSetWireFormat" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MessageOptions'messageSetWireFormat+           (\ x__ y__ -> x__ {_MessageOptions'messageSetWireFormat = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField MessageOptions "maybe'messageSetWireFormat" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MessageOptions'messageSetWireFormat+           (\ x__ y__ -> x__ {_MessageOptions'messageSetWireFormat = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField MessageOptions "noStandardDescriptorAccessor" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MessageOptions'noStandardDescriptorAccessor+           (\ x__ y__+              -> x__ {_MessageOptions'noStandardDescriptorAccessor = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField MessageOptions "maybe'noStandardDescriptorAccessor" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MessageOptions'noStandardDescriptorAccessor+           (\ x__ y__+              -> x__ {_MessageOptions'noStandardDescriptorAccessor = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField MessageOptions "deprecated" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MessageOptions'deprecated+           (\ x__ y__ -> x__ {_MessageOptions'deprecated = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField MessageOptions "maybe'deprecated" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MessageOptions'deprecated+           (\ x__ y__ -> x__ {_MessageOptions'deprecated = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField MessageOptions "mapEntry" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MessageOptions'mapEntry+           (\ x__ y__ -> x__ {_MessageOptions'mapEntry = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField MessageOptions "maybe'mapEntry" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MessageOptions'mapEntry+           (\ x__ y__ -> x__ {_MessageOptions'mapEntry = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField MessageOptions "uninterpretedOption" [UninterpretedOption] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MessageOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_MessageOptions'uninterpretedOption = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField MessageOptions "vec'uninterpretedOption" (Data.Vector.Vector UninterpretedOption) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MessageOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_MessageOptions'uninterpretedOption = y__}))+        Prelude.id+instance Data.ProtoLens.Message MessageOptions where+  messageName _ = Data.Text.pack "google.protobuf.MessageOptions"+  fieldsByTag+    = let+        messageSetWireFormat__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "message_set_wire_format"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'messageSetWireFormat")) ::+              Data.ProtoLens.FieldDescriptor MessageOptions+        noStandardDescriptorAccessor__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "no_standard_descriptor_accessor"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field+                    @"maybe'noStandardDescriptorAccessor")) ::+              Data.ProtoLens.FieldDescriptor MessageOptions+        deprecated__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "deprecated"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'deprecated")) ::+              Data.ProtoLens.FieldDescriptor MessageOptions+        mapEntry__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "map_entry"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'mapEntry")) ::+              Data.ProtoLens.FieldDescriptor MessageOptions+        uninterpretedOption__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "uninterpreted_option"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"uninterpretedOption")) ::+              Data.ProtoLens.FieldDescriptor MessageOptions+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, messageSetWireFormat__field_descriptor),+           (Data.ProtoLens.Tag 2, +            noStandardDescriptorAccessor__field_descriptor),+           (Data.ProtoLens.Tag 3, deprecated__field_descriptor),+           (Data.ProtoLens.Tag 7, mapEntry__field_descriptor),+           (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _MessageOptions'_unknownFields+        (\ x__ y__ -> x__ {_MessageOptions'_unknownFields = y__})+  defMessage+    = MessageOptions'_constructor+        {_MessageOptions'messageSetWireFormat = Prelude.Nothing,+         _MessageOptions'noStandardDescriptorAccessor = Prelude.Nothing,+         _MessageOptions'deprecated = Prelude.Nothing,+         _MessageOptions'mapEntry = Prelude.Nothing,+         _MessageOptions'uninterpretedOption = Data.Vector.Generic.empty,+         _MessageOptions'_unknownFields = []}+  parseMessage+    = let+        loop ::+          MessageOptions+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld UninterpretedOption+             -> Data.ProtoLens.Encoding.Bytes.Parser MessageOptions+        loop x mutable'uninterpretedOption+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                      (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                         mutable'uninterpretedOption)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'uninterpretedOption")+                              frozen'uninterpretedOption+                              x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        8 -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "message_set_wire_format"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"messageSetWireFormat") y x)+                                  mutable'uninterpretedOption+                        16+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "no_standard_descriptor_accessor"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"noStandardDescriptorAccessor")+                                     y+                                     x)+                                  mutable'uninterpretedOption+                        24+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "deprecated"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"deprecated") y x)+                                  mutable'uninterpretedOption+                        56+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "map_entry"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"mapEntry") y x)+                                  mutable'uninterpretedOption+                        7994+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "uninterpreted_option"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'uninterpretedOption y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'uninterpretedOption+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                               Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'uninterpretedOption)+          "MessageOptions"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view+                    (Data.ProtoLens.Field.field @"maybe'messageSetWireFormat") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 8)+                       ((Prelude..)+                          Data.ProtoLens.Encoding.Bytes.putVarInt+                          (\ b -> if b then 1 else 0)+                          _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view+                       (Data.ProtoLens.Field.field @"maybe'noStandardDescriptorAccessor")+                       _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 16)+                          ((Prelude..)+                             Data.ProtoLens.Encoding.Bytes.putVarInt+                             (\ b -> if b then 1 else 0)+                             _v))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view+                          (Data.ProtoLens.Field.field @"maybe'deprecated") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 24)+                             ((Prelude..)+                                Data.ProtoLens.Encoding.Bytes.putVarInt+                                (\ b -> if b then 1 else 0)+                                _v))+                   ((Data.Monoid.<>)+                      (case+                           Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'mapEntry") _x+                       of+                         Prelude.Nothing -> Data.Monoid.mempty+                         (Prelude.Just _v)+                           -> (Data.Monoid.<>)+                                (Data.ProtoLens.Encoding.Bytes.putVarInt 56)+                                ((Prelude..)+                                   Data.ProtoLens.Encoding.Bytes.putVarInt+                                   (\ b -> if b then 1 else 0)+                                   _v))+                      ((Data.Monoid.<>)+                         (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                            (\ _v+                               -> (Data.Monoid.<>)+                                    (Data.ProtoLens.Encoding.Bytes.putVarInt 7994)+                                    ((Prelude..)+                                       (\ bs+                                          -> (Data.Monoid.<>)+                                               (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                  (Prelude.fromIntegral+                                                     (Data.ByteString.length bs)))+                                               (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                       Data.ProtoLens.encodeMessage+                                       _v))+                            (Lens.Family2.view+                               (Data.ProtoLens.Field.field @"vec'uninterpretedOption") _x))+                         (Data.ProtoLens.Encoding.Wire.buildFieldSet+                            (Lens.Family2.view Data.ProtoLens.unknownFields _x))))))+instance Control.DeepSeq.NFData MessageOptions where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_MessageOptions'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_MessageOptions'messageSetWireFormat x__)+                (Control.DeepSeq.deepseq+                   (_MessageOptions'noStandardDescriptorAccessor x__)+                   (Control.DeepSeq.deepseq+                      (_MessageOptions'deprecated x__)+                      (Control.DeepSeq.deepseq+                         (_MessageOptions'mapEntry x__)+                         (Control.DeepSeq.deepseq+                            (_MessageOptions'uninterpretedOption x__) ())))))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' MethodDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' MethodDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.inputType' @:: Lens' MethodDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'inputType' @:: Lens' MethodDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.outputType' @:: Lens' MethodDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'outputType' @:: Lens' MethodDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' MethodDescriptorProto MethodOptions@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' MethodDescriptorProto (Prelude.Maybe MethodOptions)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.clientStreaming' @:: Lens' MethodDescriptorProto Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'clientStreaming' @:: Lens' MethodDescriptorProto (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.serverStreaming' @:: Lens' MethodDescriptorProto Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'serverStreaming' @:: Lens' MethodDescriptorProto (Prelude.Maybe Prelude.Bool)@ -}+data MethodDescriptorProto+  = MethodDescriptorProto'_constructor {_MethodDescriptorProto'name :: !(Prelude.Maybe Data.Text.Text),+                                        _MethodDescriptorProto'inputType :: !(Prelude.Maybe Data.Text.Text),+                                        _MethodDescriptorProto'outputType :: !(Prelude.Maybe Data.Text.Text),+                                        _MethodDescriptorProto'options :: !(Prelude.Maybe MethodOptions),+                                        _MethodDescriptorProto'clientStreaming :: !(Prelude.Maybe Prelude.Bool),+                                        _MethodDescriptorProto'serverStreaming :: !(Prelude.Maybe Prelude.Bool),+                                        _MethodDescriptorProto'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show MethodDescriptorProto where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField MethodDescriptorProto "name" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodDescriptorProto'name+           (\ x__ y__ -> x__ {_MethodDescriptorProto'name = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField MethodDescriptorProto "maybe'name" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodDescriptorProto'name+           (\ x__ y__ -> x__ {_MethodDescriptorProto'name = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField MethodDescriptorProto "inputType" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodDescriptorProto'inputType+           (\ x__ y__ -> x__ {_MethodDescriptorProto'inputType = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField MethodDescriptorProto "maybe'inputType" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodDescriptorProto'inputType+           (\ x__ y__ -> x__ {_MethodDescriptorProto'inputType = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField MethodDescriptorProto "outputType" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodDescriptorProto'outputType+           (\ x__ y__ -> x__ {_MethodDescriptorProto'outputType = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField MethodDescriptorProto "maybe'outputType" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodDescriptorProto'outputType+           (\ x__ y__ -> x__ {_MethodDescriptorProto'outputType = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField MethodDescriptorProto "options" MethodOptions where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodDescriptorProto'options+           (\ x__ y__ -> x__ {_MethodDescriptorProto'options = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)+instance Data.ProtoLens.Field.HasField MethodDescriptorProto "maybe'options" (Prelude.Maybe MethodOptions) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodDescriptorProto'options+           (\ x__ y__ -> x__ {_MethodDescriptorProto'options = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField MethodDescriptorProto "clientStreaming" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodDescriptorProto'clientStreaming+           (\ x__ y__ -> x__ {_MethodDescriptorProto'clientStreaming = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField MethodDescriptorProto "maybe'clientStreaming" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodDescriptorProto'clientStreaming+           (\ x__ y__ -> x__ {_MethodDescriptorProto'clientStreaming = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField MethodDescriptorProto "serverStreaming" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodDescriptorProto'serverStreaming+           (\ x__ y__ -> x__ {_MethodDescriptorProto'serverStreaming = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField MethodDescriptorProto "maybe'serverStreaming" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodDescriptorProto'serverStreaming+           (\ x__ y__ -> x__ {_MethodDescriptorProto'serverStreaming = y__}))+        Prelude.id+instance Data.ProtoLens.Message MethodDescriptorProto where+  messageName _+    = Data.Text.pack "google.protobuf.MethodDescriptorProto"+  fieldsByTag+    = let+        name__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'name")) ::+              Data.ProtoLens.FieldDescriptor MethodDescriptorProto+        inputType__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "input_type"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'inputType")) ::+              Data.ProtoLens.FieldDescriptor MethodDescriptorProto+        outputType__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "output_type"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'outputType")) ::+              Data.ProtoLens.FieldDescriptor MethodDescriptorProto+        options__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "options"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor MethodOptions)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'options")) ::+              Data.ProtoLens.FieldDescriptor MethodDescriptorProto+        clientStreaming__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "client_streaming"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'clientStreaming")) ::+              Data.ProtoLens.FieldDescriptor MethodDescriptorProto+        serverStreaming__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "server_streaming"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'serverStreaming")) ::+              Data.ProtoLens.FieldDescriptor MethodDescriptorProto+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, name__field_descriptor),+           (Data.ProtoLens.Tag 2, inputType__field_descriptor),+           (Data.ProtoLens.Tag 3, outputType__field_descriptor),+           (Data.ProtoLens.Tag 4, options__field_descriptor),+           (Data.ProtoLens.Tag 5, clientStreaming__field_descriptor),+           (Data.ProtoLens.Tag 6, serverStreaming__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _MethodDescriptorProto'_unknownFields+        (\ x__ y__ -> x__ {_MethodDescriptorProto'_unknownFields = y__})+  defMessage+    = MethodDescriptorProto'_constructor+        {_MethodDescriptorProto'name = Prelude.Nothing,+         _MethodDescriptorProto'inputType = Prelude.Nothing,+         _MethodDescriptorProto'outputType = Prelude.Nothing,+         _MethodDescriptorProto'options = Prelude.Nothing,+         _MethodDescriptorProto'clientStreaming = Prelude.Nothing,+         _MethodDescriptorProto'serverStreaming = Prelude.Nothing,+         _MethodDescriptorProto'_unknownFields = []}+  parseMessage+    = let+        loop ::+          MethodDescriptorProto+          -> Data.ProtoLens.Encoding.Bytes.Parser MethodDescriptorProto+        loop x+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields (\ !t -> Prelude.reverse t) x)+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "name"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"name") y x)+                        18+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "input_type"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"inputType") y x)+                        26+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "output_type"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"outputType") y x)+                        34+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                           Data.ProtoLens.Encoding.Bytes.isolate+                                             (Prelude.fromIntegral len) Data.ProtoLens.parseMessage)+                                       "options"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"options") y x)+                        40+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "client_streaming"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"clientStreaming") y x)+                        48+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "server_streaming"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"serverStreaming") y x)+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do loop Data.ProtoLens.defMessage) "MethodDescriptorProto"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'name") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                       ((Prelude..)+                          (\ bs+                             -> (Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                     (Prelude.fromIntegral (Data.ByteString.length bs)))+                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                          Data.Text.Encoding.encodeUtf8+                          _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view+                       (Data.ProtoLens.Field.field @"maybe'inputType") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 18)+                          ((Prelude..)+                             (\ bs+                                -> (Data.Monoid.<>)+                                     (Data.ProtoLens.Encoding.Bytes.putVarInt+                                        (Prelude.fromIntegral (Data.ByteString.length bs)))+                                     (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                             Data.Text.Encoding.encodeUtf8+                             _v))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view+                          (Data.ProtoLens.Field.field @"maybe'outputType") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 26)+                             ((Prelude..)+                                (\ bs+                                   -> (Data.Monoid.<>)+                                        (Data.ProtoLens.Encoding.Bytes.putVarInt+                                           (Prelude.fromIntegral (Data.ByteString.length bs)))+                                        (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                Data.Text.Encoding.encodeUtf8+                                _v))+                   ((Data.Monoid.<>)+                      (case+                           Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'options") _x+                       of+                         Prelude.Nothing -> Data.Monoid.mempty+                         (Prelude.Just _v)+                           -> (Data.Monoid.<>)+                                (Data.ProtoLens.Encoding.Bytes.putVarInt 34)+                                ((Prelude..)+                                   (\ bs+                                      -> (Data.Monoid.<>)+                                           (Data.ProtoLens.Encoding.Bytes.putVarInt+                                              (Prelude.fromIntegral (Data.ByteString.length bs)))+                                           (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                   Data.ProtoLens.encodeMessage+                                   _v))+                      ((Data.Monoid.<>)+                         (case+                              Lens.Family2.view+                                (Data.ProtoLens.Field.field @"maybe'clientStreaming") _x+                          of+                            Prelude.Nothing -> Data.Monoid.mempty+                            (Prelude.Just _v)+                              -> (Data.Monoid.<>)+                                   (Data.ProtoLens.Encoding.Bytes.putVarInt 40)+                                   ((Prelude..)+                                      Data.ProtoLens.Encoding.Bytes.putVarInt+                                      (\ b -> if b then 1 else 0)+                                      _v))+                         ((Data.Monoid.<>)+                            (case+                                 Lens.Family2.view+                                   (Data.ProtoLens.Field.field @"maybe'serverStreaming") _x+                             of+                               Prelude.Nothing -> Data.Monoid.mempty+                               (Prelude.Just _v)+                                 -> (Data.Monoid.<>)+                                      (Data.ProtoLens.Encoding.Bytes.putVarInt 48)+                                      ((Prelude..)+                                         Data.ProtoLens.Encoding.Bytes.putVarInt+                                         (\ b -> if b then 1 else 0)+                                         _v))+                            (Data.ProtoLens.Encoding.Wire.buildFieldSet+                               (Lens.Family2.view Data.ProtoLens.unknownFields _x)))))))+instance Control.DeepSeq.NFData MethodDescriptorProto where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_MethodDescriptorProto'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_MethodDescriptorProto'name x__)+                (Control.DeepSeq.deepseq+                   (_MethodDescriptorProto'inputType x__)+                   (Control.DeepSeq.deepseq+                      (_MethodDescriptorProto'outputType x__)+                      (Control.DeepSeq.deepseq+                         (_MethodDescriptorProto'options x__)+                         (Control.DeepSeq.deepseq+                            (_MethodDescriptorProto'clientStreaming x__)+                            (Control.DeepSeq.deepseq+                               (_MethodDescriptorProto'serverStreaming x__) ()))))))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' MethodOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' MethodOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.idempotencyLevel' @:: Lens' MethodOptions MethodOptions'IdempotencyLevel@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'idempotencyLevel' @:: Lens' MethodOptions (Prelude.Maybe MethodOptions'IdempotencyLevel)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' MethodOptions [UninterpretedOption]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'uninterpretedOption' @:: Lens' MethodOptions (Data.Vector.Vector UninterpretedOption)@ -}+data MethodOptions+  = MethodOptions'_constructor {_MethodOptions'deprecated :: !(Prelude.Maybe Prelude.Bool),+                                _MethodOptions'idempotencyLevel :: !(Prelude.Maybe MethodOptions'IdempotencyLevel),+                                _MethodOptions'uninterpretedOption :: !(Data.Vector.Vector UninterpretedOption),+                                _MethodOptions'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show MethodOptions where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField MethodOptions "deprecated" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodOptions'deprecated+           (\ x__ y__ -> x__ {_MethodOptions'deprecated = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField MethodOptions "maybe'deprecated" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodOptions'deprecated+           (\ x__ y__ -> x__ {_MethodOptions'deprecated = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField MethodOptions "idempotencyLevel" MethodOptions'IdempotencyLevel where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodOptions'idempotencyLevel+           (\ x__ y__ -> x__ {_MethodOptions'idempotencyLevel = y__}))+        (Data.ProtoLens.maybeLens MethodOptions'IDEMPOTENCY_UNKNOWN)+instance Data.ProtoLens.Field.HasField MethodOptions "maybe'idempotencyLevel" (Prelude.Maybe MethodOptions'IdempotencyLevel) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodOptions'idempotencyLevel+           (\ x__ y__ -> x__ {_MethodOptions'idempotencyLevel = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField MethodOptions "uninterpretedOption" [UninterpretedOption] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_MethodOptions'uninterpretedOption = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField MethodOptions "vec'uninterpretedOption" (Data.Vector.Vector UninterpretedOption) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _MethodOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_MethodOptions'uninterpretedOption = y__}))+        Prelude.id+instance Data.ProtoLens.Message MethodOptions where+  messageName _ = Data.Text.pack "google.protobuf.MethodOptions"+  fieldsByTag+    = let+        deprecated__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "deprecated"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'deprecated")) ::+              Data.ProtoLens.FieldDescriptor MethodOptions+        idempotencyLevel__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "idempotency_level"+              (Data.ProtoLens.ScalarField Data.ProtoLens.EnumField ::+                 Data.ProtoLens.FieldTypeDescriptor MethodOptions'IdempotencyLevel)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'idempotencyLevel")) ::+              Data.ProtoLens.FieldDescriptor MethodOptions+        uninterpretedOption__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "uninterpreted_option"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"uninterpretedOption")) ::+              Data.ProtoLens.FieldDescriptor MethodOptions+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 33, deprecated__field_descriptor),+           (Data.ProtoLens.Tag 34, idempotencyLevel__field_descriptor),+           (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _MethodOptions'_unknownFields+        (\ x__ y__ -> x__ {_MethodOptions'_unknownFields = y__})+  defMessage+    = MethodOptions'_constructor+        {_MethodOptions'deprecated = Prelude.Nothing,+         _MethodOptions'idempotencyLevel = Prelude.Nothing,+         _MethodOptions'uninterpretedOption = Data.Vector.Generic.empty,+         _MethodOptions'_unknownFields = []}+  parseMessage+    = let+        loop ::+          MethodOptions+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld UninterpretedOption+             -> Data.ProtoLens.Encoding.Bytes.Parser MethodOptions+        loop x mutable'uninterpretedOption+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                      (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                         mutable'uninterpretedOption)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'uninterpretedOption")+                              frozen'uninterpretedOption+                              x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        264+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "deprecated"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"deprecated") y x)+                                  mutable'uninterpretedOption+                        272+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.toEnum+                                          (Prelude.fmap+                                             Prelude.fromIntegral+                                             Data.ProtoLens.Encoding.Bytes.getVarInt))+                                       "idempotency_level"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"idempotencyLevel") y x)+                                  mutable'uninterpretedOption+                        7994+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "uninterpreted_option"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'uninterpretedOption y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'uninterpretedOption+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                               Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'uninterpretedOption)+          "MethodOptions"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view+                    (Data.ProtoLens.Field.field @"maybe'deprecated") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 264)+                       ((Prelude..)+                          Data.ProtoLens.Encoding.Bytes.putVarInt+                          (\ b -> if b then 1 else 0)+                          _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view+                       (Data.ProtoLens.Field.field @"maybe'idempotencyLevel") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 272)+                          ((Prelude..)+                             ((Prelude..)+                                Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral)+                             Prelude.fromEnum+                             _v))+                ((Data.Monoid.<>)+                   (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                      (\ _v+                         -> (Data.Monoid.<>)+                              (Data.ProtoLens.Encoding.Bytes.putVarInt 7994)+                              ((Prelude..)+                                 (\ bs+                                    -> (Data.Monoid.<>)+                                         (Data.ProtoLens.Encoding.Bytes.putVarInt+                                            (Prelude.fromIntegral (Data.ByteString.length bs)))+                                         (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                 Data.ProtoLens.encodeMessage+                                 _v))+                      (Lens.Family2.view+                         (Data.ProtoLens.Field.field @"vec'uninterpretedOption") _x))+                   (Data.ProtoLens.Encoding.Wire.buildFieldSet+                      (Lens.Family2.view Data.ProtoLens.unknownFields _x))))+instance Control.DeepSeq.NFData MethodOptions where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_MethodOptions'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_MethodOptions'deprecated x__)+                (Control.DeepSeq.deepseq+                   (_MethodOptions'idempotencyLevel x__)+                   (Control.DeepSeq.deepseq+                      (_MethodOptions'uninterpretedOption x__) ())))+data MethodOptions'IdempotencyLevel+  = MethodOptions'IDEMPOTENCY_UNKNOWN |+    MethodOptions'NO_SIDE_EFFECTS |+    MethodOptions'IDEMPOTENT+  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)+instance Data.ProtoLens.MessageEnum MethodOptions'IdempotencyLevel where+  maybeToEnum 0 = Prelude.Just MethodOptions'IDEMPOTENCY_UNKNOWN+  maybeToEnum 1 = Prelude.Just MethodOptions'NO_SIDE_EFFECTS+  maybeToEnum 2 = Prelude.Just MethodOptions'IDEMPOTENT+  maybeToEnum _ = Prelude.Nothing+  showEnum MethodOptions'IDEMPOTENCY_UNKNOWN = "IDEMPOTENCY_UNKNOWN"+  showEnum MethodOptions'NO_SIDE_EFFECTS = "NO_SIDE_EFFECTS"+  showEnum MethodOptions'IDEMPOTENT = "IDEMPOTENT"+  readEnum k+    | (Prelude.==) k "IDEMPOTENCY_UNKNOWN"+    = Prelude.Just MethodOptions'IDEMPOTENCY_UNKNOWN+    | (Prelude.==) k "NO_SIDE_EFFECTS"+    = Prelude.Just MethodOptions'NO_SIDE_EFFECTS+    | (Prelude.==) k "IDEMPOTENT"+    = Prelude.Just MethodOptions'IDEMPOTENT+    | Prelude.otherwise+    = (Prelude.>>=) (Text.Read.readMaybe k) Data.ProtoLens.maybeToEnum+instance Prelude.Bounded MethodOptions'IdempotencyLevel where+  minBound = MethodOptions'IDEMPOTENCY_UNKNOWN+  maxBound = MethodOptions'IDEMPOTENT+instance Prelude.Enum MethodOptions'IdempotencyLevel where+  toEnum k__+    = Prelude.maybe+        (Prelude.error+           ((Prelude.++)+              "toEnum: unknown value for enum IdempotencyLevel: "+              (Prelude.show k__)))+        Prelude.id+        (Data.ProtoLens.maybeToEnum k__)+  fromEnum MethodOptions'IDEMPOTENCY_UNKNOWN = 0+  fromEnum MethodOptions'NO_SIDE_EFFECTS = 1+  fromEnum MethodOptions'IDEMPOTENT = 2+  succ MethodOptions'IDEMPOTENT+    = Prelude.error+        "MethodOptions'IdempotencyLevel.succ: bad argument MethodOptions'IDEMPOTENT. This value would be out of bounds."+  succ MethodOptions'IDEMPOTENCY_UNKNOWN+    = MethodOptions'NO_SIDE_EFFECTS+  succ MethodOptions'NO_SIDE_EFFECTS = MethodOptions'IDEMPOTENT+  pred MethodOptions'IDEMPOTENCY_UNKNOWN+    = Prelude.error+        "MethodOptions'IdempotencyLevel.pred: bad argument MethodOptions'IDEMPOTENCY_UNKNOWN. This value would be out of bounds."+  pred MethodOptions'NO_SIDE_EFFECTS+    = MethodOptions'IDEMPOTENCY_UNKNOWN+  pred MethodOptions'IDEMPOTENT = MethodOptions'NO_SIDE_EFFECTS+  enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom+  enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo+  enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen+  enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo+instance Data.ProtoLens.FieldDefault MethodOptions'IdempotencyLevel where+  fieldDefault = MethodOptions'IDEMPOTENCY_UNKNOWN+instance Control.DeepSeq.NFData MethodOptions'IdempotencyLevel where+  rnf x__ = Prelude.seq x__ ()+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' OneofDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' OneofDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' OneofDescriptorProto OneofOptions@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' OneofDescriptorProto (Prelude.Maybe OneofOptions)@ -}+data OneofDescriptorProto+  = OneofDescriptorProto'_constructor {_OneofDescriptorProto'name :: !(Prelude.Maybe Data.Text.Text),+                                       _OneofDescriptorProto'options :: !(Prelude.Maybe OneofOptions),+                                       _OneofDescriptorProto'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show OneofDescriptorProto where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField OneofDescriptorProto "name" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _OneofDescriptorProto'name+           (\ x__ y__ -> x__ {_OneofDescriptorProto'name = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField OneofDescriptorProto "maybe'name" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _OneofDescriptorProto'name+           (\ x__ y__ -> x__ {_OneofDescriptorProto'name = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField OneofDescriptorProto "options" OneofOptions where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _OneofDescriptorProto'options+           (\ x__ y__ -> x__ {_OneofDescriptorProto'options = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)+instance Data.ProtoLens.Field.HasField OneofDescriptorProto "maybe'options" (Prelude.Maybe OneofOptions) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _OneofDescriptorProto'options+           (\ x__ y__ -> x__ {_OneofDescriptorProto'options = y__}))+        Prelude.id+instance Data.ProtoLens.Message OneofDescriptorProto where+  messageName _+    = Data.Text.pack "google.protobuf.OneofDescriptorProto"+  fieldsByTag+    = let+        name__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'name")) ::+              Data.ProtoLens.FieldDescriptor OneofDescriptorProto+        options__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "options"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor OneofOptions)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'options")) ::+              Data.ProtoLens.FieldDescriptor OneofDescriptorProto+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, name__field_descriptor),+           (Data.ProtoLens.Tag 2, options__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _OneofDescriptorProto'_unknownFields+        (\ x__ y__ -> x__ {_OneofDescriptorProto'_unknownFields = y__})+  defMessage+    = OneofDescriptorProto'_constructor+        {_OneofDescriptorProto'name = Prelude.Nothing,+         _OneofDescriptorProto'options = Prelude.Nothing,+         _OneofDescriptorProto'_unknownFields = []}+  parseMessage+    = let+        loop ::+          OneofDescriptorProto+          -> Data.ProtoLens.Encoding.Bytes.Parser OneofDescriptorProto+        loop x+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields (\ !t -> Prelude.reverse t) x)+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "name"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"name") y x)+                        18+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                           Data.ProtoLens.Encoding.Bytes.isolate+                                             (Prelude.fromIntegral len) Data.ProtoLens.parseMessage)+                                       "options"+                                loop (Lens.Family2.set (Data.ProtoLens.Field.field @"options") y x)+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do loop Data.ProtoLens.defMessage) "OneofDescriptorProto"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'name") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                       ((Prelude..)+                          (\ bs+                             -> (Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                     (Prelude.fromIntegral (Data.ByteString.length bs)))+                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                          Data.Text.Encoding.encodeUtf8+                          _v))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'options") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 18)+                          ((Prelude..)+                             (\ bs+                                -> (Data.Monoid.<>)+                                     (Data.ProtoLens.Encoding.Bytes.putVarInt+                                        (Prelude.fromIntegral (Data.ByteString.length bs)))+                                     (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                             Data.ProtoLens.encodeMessage+                             _v))+                (Data.ProtoLens.Encoding.Wire.buildFieldSet+                   (Lens.Family2.view Data.ProtoLens.unknownFields _x)))+instance Control.DeepSeq.NFData OneofDescriptorProto where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_OneofDescriptorProto'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_OneofDescriptorProto'name x__)+                (Control.DeepSeq.deepseq (_OneofDescriptorProto'options x__) ()))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' OneofOptions [UninterpretedOption]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'uninterpretedOption' @:: Lens' OneofOptions (Data.Vector.Vector UninterpretedOption)@ -}+data OneofOptions+  = OneofOptions'_constructor {_OneofOptions'uninterpretedOption :: !(Data.Vector.Vector UninterpretedOption),+                               _OneofOptions'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show OneofOptions where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField OneofOptions "uninterpretedOption" [UninterpretedOption] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _OneofOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_OneofOptions'uninterpretedOption = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField OneofOptions "vec'uninterpretedOption" (Data.Vector.Vector UninterpretedOption) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _OneofOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_OneofOptions'uninterpretedOption = y__}))+        Prelude.id+instance Data.ProtoLens.Message OneofOptions where+  messageName _ = Data.Text.pack "google.protobuf.OneofOptions"+  fieldsByTag+    = let+        uninterpretedOption__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "uninterpreted_option"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"uninterpretedOption")) ::+              Data.ProtoLens.FieldDescriptor OneofOptions+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _OneofOptions'_unknownFields+        (\ x__ y__ -> x__ {_OneofOptions'_unknownFields = y__})+  defMessage+    = OneofOptions'_constructor+        {_OneofOptions'uninterpretedOption = Data.Vector.Generic.empty,+         _OneofOptions'_unknownFields = []}+  parseMessage+    = let+        loop ::+          OneofOptions+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld UninterpretedOption+             -> Data.ProtoLens.Encoding.Bytes.Parser OneofOptions+        loop x mutable'uninterpretedOption+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                      (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                         mutable'uninterpretedOption)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'uninterpretedOption")+                              frozen'uninterpretedOption+                              x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        7994+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "uninterpreted_option"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'uninterpretedOption y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'uninterpretedOption+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                               Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'uninterpretedOption)+          "OneofOptions"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                (\ _v+                   -> (Data.Monoid.<>)+                        (Data.ProtoLens.Encoding.Bytes.putVarInt 7994)+                        ((Prelude..)+                           (\ bs+                              -> (Data.Monoid.<>)+                                   (Data.ProtoLens.Encoding.Bytes.putVarInt+                                      (Prelude.fromIntegral (Data.ByteString.length bs)))+                                   (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                           Data.ProtoLens.encodeMessage+                           _v))+                (Lens.Family2.view+                   (Data.ProtoLens.Field.field @"vec'uninterpretedOption") _x))+             (Data.ProtoLens.Encoding.Wire.buildFieldSet+                (Lens.Family2.view Data.ProtoLens.unknownFields _x))+instance Control.DeepSeq.NFData OneofOptions where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_OneofOptions'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_OneofOptions'uninterpretedOption x__) ())+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' ServiceDescriptorProto Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' ServiceDescriptorProto (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.method' @:: Lens' ServiceDescriptorProto [MethodDescriptorProto]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'method' @:: Lens' ServiceDescriptorProto (Data.Vector.Vector MethodDescriptorProto)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' ServiceDescriptorProto ServiceOptions@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' ServiceDescriptorProto (Prelude.Maybe ServiceOptions)@ -}+data ServiceDescriptorProto+  = ServiceDescriptorProto'_constructor {_ServiceDescriptorProto'name :: !(Prelude.Maybe Data.Text.Text),+                                         _ServiceDescriptorProto'method :: !(Data.Vector.Vector MethodDescriptorProto),+                                         _ServiceDescriptorProto'options :: !(Prelude.Maybe ServiceOptions),+                                         _ServiceDescriptorProto'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show ServiceDescriptorProto where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField ServiceDescriptorProto "name" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _ServiceDescriptorProto'name+           (\ x__ y__ -> x__ {_ServiceDescriptorProto'name = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField ServiceDescriptorProto "maybe'name" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _ServiceDescriptorProto'name+           (\ x__ y__ -> x__ {_ServiceDescriptorProto'name = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField ServiceDescriptorProto "method" [MethodDescriptorProto] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _ServiceDescriptorProto'method+           (\ x__ y__ -> x__ {_ServiceDescriptorProto'method = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField ServiceDescriptorProto "vec'method" (Data.Vector.Vector MethodDescriptorProto) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _ServiceDescriptorProto'method+           (\ x__ y__ -> x__ {_ServiceDescriptorProto'method = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField ServiceDescriptorProto "options" ServiceOptions where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _ServiceDescriptorProto'options+           (\ x__ y__ -> x__ {_ServiceDescriptorProto'options = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)+instance Data.ProtoLens.Field.HasField ServiceDescriptorProto "maybe'options" (Prelude.Maybe ServiceOptions) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _ServiceDescriptorProto'options+           (\ x__ y__ -> x__ {_ServiceDescriptorProto'options = y__}))+        Prelude.id+instance Data.ProtoLens.Message ServiceDescriptorProto where+  messageName _+    = Data.Text.pack "google.protobuf.ServiceDescriptorProto"+  fieldsByTag+    = let+        name__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "name"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'name")) ::+              Data.ProtoLens.FieldDescriptor ServiceDescriptorProto+        method__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "method"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor MethodDescriptorProto)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked (Data.ProtoLens.Field.field @"method")) ::+              Data.ProtoLens.FieldDescriptor ServiceDescriptorProto+        options__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "options"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor ServiceOptions)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'options")) ::+              Data.ProtoLens.FieldDescriptor ServiceDescriptorProto+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, name__field_descriptor),+           (Data.ProtoLens.Tag 2, method__field_descriptor),+           (Data.ProtoLens.Tag 3, options__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _ServiceDescriptorProto'_unknownFields+        (\ x__ y__ -> x__ {_ServiceDescriptorProto'_unknownFields = y__})+  defMessage+    = ServiceDescriptorProto'_constructor+        {_ServiceDescriptorProto'name = Prelude.Nothing,+         _ServiceDescriptorProto'method = Data.Vector.Generic.empty,+         _ServiceDescriptorProto'options = Prelude.Nothing,+         _ServiceDescriptorProto'_unknownFields = []}+  parseMessage+    = let+        loop ::+          ServiceDescriptorProto+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld MethodDescriptorProto+             -> Data.ProtoLens.Encoding.Bytes.Parser ServiceDescriptorProto+        loop x mutable'method+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'method <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                         (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                            mutable'method)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'method") frozen'method x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "name"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"name") y x)+                                  mutable'method+                        18+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "method"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'method y)+                                loop x v+                        26+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                           Data.ProtoLens.Encoding.Bytes.isolate+                                             (Prelude.fromIntegral len) Data.ProtoLens.parseMessage)+                                       "options"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"options") y x)+                                  mutable'method+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'method+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'method <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                  Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'method)+          "ServiceDescriptorProto"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'name") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                       ((Prelude..)+                          (\ bs+                             -> (Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                     (Prelude.fromIntegral (Data.ByteString.length bs)))+                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                          Data.Text.Encoding.encodeUtf8+                          _v))+             ((Data.Monoid.<>)+                (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                   (\ _v+                      -> (Data.Monoid.<>)+                           (Data.ProtoLens.Encoding.Bytes.putVarInt 18)+                           ((Prelude..)+                              (\ bs+                                 -> (Data.Monoid.<>)+                                      (Data.ProtoLens.Encoding.Bytes.putVarInt+                                         (Prelude.fromIntegral (Data.ByteString.length bs)))+                                      (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                              Data.ProtoLens.encodeMessage+                              _v))+                   (Lens.Family2.view (Data.ProtoLens.Field.field @"vec'method") _x))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view (Data.ProtoLens.Field.field @"maybe'options") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 26)+                             ((Prelude..)+                                (\ bs+                                   -> (Data.Monoid.<>)+                                        (Data.ProtoLens.Encoding.Bytes.putVarInt+                                           (Prelude.fromIntegral (Data.ByteString.length bs)))+                                        (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                Data.ProtoLens.encodeMessage+                                _v))+                   (Data.ProtoLens.Encoding.Wire.buildFieldSet+                      (Lens.Family2.view Data.ProtoLens.unknownFields _x))))+instance Control.DeepSeq.NFData ServiceDescriptorProto where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_ServiceDescriptorProto'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_ServiceDescriptorProto'name x__)+                (Control.DeepSeq.deepseq+                   (_ServiceDescriptorProto'method x__)+                   (Control.DeepSeq.deepseq+                      (_ServiceDescriptorProto'options x__) ())))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' ServiceOptions Prelude.Bool@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' ServiceOptions (Prelude.Maybe Prelude.Bool)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' ServiceOptions [UninterpretedOption]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'uninterpretedOption' @:: Lens' ServiceOptions (Data.Vector.Vector UninterpretedOption)@ -}+data ServiceOptions+  = ServiceOptions'_constructor {_ServiceOptions'deprecated :: !(Prelude.Maybe Prelude.Bool),+                                 _ServiceOptions'uninterpretedOption :: !(Data.Vector.Vector UninterpretedOption),+                                 _ServiceOptions'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show ServiceOptions where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField ServiceOptions "deprecated" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _ServiceOptions'deprecated+           (\ x__ y__ -> x__ {_ServiceOptions'deprecated = y__}))+        (Data.ProtoLens.maybeLens Prelude.False)+instance Data.ProtoLens.Field.HasField ServiceOptions "maybe'deprecated" (Prelude.Maybe Prelude.Bool) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _ServiceOptions'deprecated+           (\ x__ y__ -> x__ {_ServiceOptions'deprecated = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField ServiceOptions "uninterpretedOption" [UninterpretedOption] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _ServiceOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_ServiceOptions'uninterpretedOption = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField ServiceOptions "vec'uninterpretedOption" (Data.Vector.Vector UninterpretedOption) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _ServiceOptions'uninterpretedOption+           (\ x__ y__ -> x__ {_ServiceOptions'uninterpretedOption = y__}))+        Prelude.id+instance Data.ProtoLens.Message ServiceOptions where+  messageName _ = Data.Text.pack "google.protobuf.ServiceOptions"+  fieldsByTag+    = let+        deprecated__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "deprecated"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'deprecated")) ::+              Data.ProtoLens.FieldDescriptor ServiceOptions+        uninterpretedOption__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "uninterpreted_option"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"uninterpretedOption")) ::+              Data.ProtoLens.FieldDescriptor ServiceOptions+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 33, deprecated__field_descriptor),+           (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _ServiceOptions'_unknownFields+        (\ x__ y__ -> x__ {_ServiceOptions'_unknownFields = y__})+  defMessage+    = ServiceOptions'_constructor+        {_ServiceOptions'deprecated = Prelude.Nothing,+         _ServiceOptions'uninterpretedOption = Data.Vector.Generic.empty,+         _ServiceOptions'_unknownFields = []}+  parseMessage+    = let+        loop ::+          ServiceOptions+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld UninterpretedOption+             -> Data.ProtoLens.Encoding.Bytes.Parser ServiceOptions+        loop x mutable'uninterpretedOption+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                      (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                         mutable'uninterpretedOption)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'uninterpretedOption")+                              frozen'uninterpretedOption+                              x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        264+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "deprecated"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"deprecated") y x)+                                  mutable'uninterpretedOption+                        7994+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "uninterpreted_option"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'uninterpretedOption y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'uninterpretedOption+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'uninterpretedOption <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                               Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'uninterpretedOption)+          "ServiceOptions"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (case+                  Lens.Family2.view+                    (Data.ProtoLens.Field.field @"maybe'deprecated") _x+              of+                Prelude.Nothing -> Data.Monoid.mempty+                (Prelude.Just _v)+                  -> (Data.Monoid.<>)+                       (Data.ProtoLens.Encoding.Bytes.putVarInt 264)+                       ((Prelude..)+                          Data.ProtoLens.Encoding.Bytes.putVarInt+                          (\ b -> if b then 1 else 0)+                          _v))+             ((Data.Monoid.<>)+                (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                   (\ _v+                      -> (Data.Monoid.<>)+                           (Data.ProtoLens.Encoding.Bytes.putVarInt 7994)+                           ((Prelude..)+                              (\ bs+                                 -> (Data.Monoid.<>)+                                      (Data.ProtoLens.Encoding.Bytes.putVarInt+                                         (Prelude.fromIntegral (Data.ByteString.length bs)))+                                      (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                              Data.ProtoLens.encodeMessage+                              _v))+                   (Lens.Family2.view+                      (Data.ProtoLens.Field.field @"vec'uninterpretedOption") _x))+                (Data.ProtoLens.Encoding.Wire.buildFieldSet+                   (Lens.Family2.view Data.ProtoLens.unknownFields _x)))+instance Control.DeepSeq.NFData ServiceOptions where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_ServiceOptions'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_ServiceOptions'deprecated x__)+                (Control.DeepSeq.deepseq+                   (_ServiceOptions'uninterpretedOption x__) ()))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.location' @:: Lens' SourceCodeInfo [SourceCodeInfo'Location]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'location' @:: Lens' SourceCodeInfo (Data.Vector.Vector SourceCodeInfo'Location)@ -}+data SourceCodeInfo+  = SourceCodeInfo'_constructor {_SourceCodeInfo'location :: !(Data.Vector.Vector SourceCodeInfo'Location),+                                 _SourceCodeInfo'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show SourceCodeInfo where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField SourceCodeInfo "location" [SourceCodeInfo'Location] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _SourceCodeInfo'location+           (\ x__ y__ -> x__ {_SourceCodeInfo'location = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField SourceCodeInfo "vec'location" (Data.Vector.Vector SourceCodeInfo'Location) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _SourceCodeInfo'location+           (\ x__ y__ -> x__ {_SourceCodeInfo'location = y__}))+        Prelude.id+instance Data.ProtoLens.Message SourceCodeInfo where+  messageName _ = Data.Text.pack "google.protobuf.SourceCodeInfo"+  fieldsByTag+    = let+        location__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "location"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor SourceCodeInfo'Location)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"location")) ::+              Data.ProtoLens.FieldDescriptor SourceCodeInfo+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, location__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _SourceCodeInfo'_unknownFields+        (\ x__ y__ -> x__ {_SourceCodeInfo'_unknownFields = y__})+  defMessage+    = SourceCodeInfo'_constructor+        {_SourceCodeInfo'location = Data.Vector.Generic.empty,+         _SourceCodeInfo'_unknownFields = []}+  parseMessage+    = let+        loop ::+          SourceCodeInfo+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld SourceCodeInfo'Location+             -> Data.ProtoLens.Encoding.Bytes.Parser SourceCodeInfo+        loop x mutable'location+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'location <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                           (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                              mutable'location)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'location") frozen'location x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "location"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'location y)+                                loop x v+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'location+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'location <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                    Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'location)+          "SourceCodeInfo"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                (\ _v+                   -> (Data.Monoid.<>)+                        (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                        ((Prelude..)+                           (\ bs+                              -> (Data.Monoid.<>)+                                   (Data.ProtoLens.Encoding.Bytes.putVarInt+                                      (Prelude.fromIntegral (Data.ByteString.length bs)))+                                   (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                           Data.ProtoLens.encodeMessage+                           _v))+                (Lens.Family2.view+                   (Data.ProtoLens.Field.field @"vec'location") _x))+             (Data.ProtoLens.Encoding.Wire.buildFieldSet+                (Lens.Family2.view Data.ProtoLens.unknownFields _x))+instance Control.DeepSeq.NFData SourceCodeInfo where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_SourceCodeInfo'_unknownFields x__)+             (Control.DeepSeq.deepseq (_SourceCodeInfo'location x__) ())+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.path' @:: Lens' SourceCodeInfo'Location [Data.Int.Int32]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'path' @:: Lens' SourceCodeInfo'Location (Data.Vector.Unboxed.Vector Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.span' @:: Lens' SourceCodeInfo'Location [Data.Int.Int32]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'span' @:: Lens' SourceCodeInfo'Location (Data.Vector.Unboxed.Vector Data.Int.Int32)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.leadingComments' @:: Lens' SourceCodeInfo'Location Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'leadingComments' @:: Lens' SourceCodeInfo'Location (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.trailingComments' @:: Lens' SourceCodeInfo'Location Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'trailingComments' @:: Lens' SourceCodeInfo'Location (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.leadingDetachedComments' @:: Lens' SourceCodeInfo'Location [Data.Text.Text]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'leadingDetachedComments' @:: Lens' SourceCodeInfo'Location (Data.Vector.Vector Data.Text.Text)@ -}+data SourceCodeInfo'Location+  = SourceCodeInfo'Location'_constructor {_SourceCodeInfo'Location'path :: !(Data.Vector.Unboxed.Vector Data.Int.Int32),+                                          _SourceCodeInfo'Location'span :: !(Data.Vector.Unboxed.Vector Data.Int.Int32),+                                          _SourceCodeInfo'Location'leadingComments :: !(Prelude.Maybe Data.Text.Text),+                                          _SourceCodeInfo'Location'trailingComments :: !(Prelude.Maybe Data.Text.Text),+                                          _SourceCodeInfo'Location'leadingDetachedComments :: !(Data.Vector.Vector Data.Text.Text),+                                          _SourceCodeInfo'Location'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show SourceCodeInfo'Location where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField SourceCodeInfo'Location "path" [Data.Int.Int32] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _SourceCodeInfo'Location'path+           (\ x__ y__ -> x__ {_SourceCodeInfo'Location'path = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField SourceCodeInfo'Location "vec'path" (Data.Vector.Unboxed.Vector Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _SourceCodeInfo'Location'path+           (\ x__ y__ -> x__ {_SourceCodeInfo'Location'path = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField SourceCodeInfo'Location "span" [Data.Int.Int32] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _SourceCodeInfo'Location'span+           (\ x__ y__ -> x__ {_SourceCodeInfo'Location'span = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField SourceCodeInfo'Location "vec'span" (Data.Vector.Unboxed.Vector Data.Int.Int32) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _SourceCodeInfo'Location'span+           (\ x__ y__ -> x__ {_SourceCodeInfo'Location'span = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField SourceCodeInfo'Location "leadingComments" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _SourceCodeInfo'Location'leadingComments+           (\ x__ y__+              -> x__ {_SourceCodeInfo'Location'leadingComments = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField SourceCodeInfo'Location "maybe'leadingComments" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _SourceCodeInfo'Location'leadingComments+           (\ x__ y__+              -> x__ {_SourceCodeInfo'Location'leadingComments = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField SourceCodeInfo'Location "trailingComments" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _SourceCodeInfo'Location'trailingComments+           (\ x__ y__+              -> x__ {_SourceCodeInfo'Location'trailingComments = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField SourceCodeInfo'Location "maybe'trailingComments" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _SourceCodeInfo'Location'trailingComments+           (\ x__ y__+              -> x__ {_SourceCodeInfo'Location'trailingComments = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField SourceCodeInfo'Location "leadingDetachedComments" [Data.Text.Text] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _SourceCodeInfo'Location'leadingDetachedComments+           (\ x__ y__+              -> x__ {_SourceCodeInfo'Location'leadingDetachedComments = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField SourceCodeInfo'Location "vec'leadingDetachedComments" (Data.Vector.Vector Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _SourceCodeInfo'Location'leadingDetachedComments+           (\ x__ y__+              -> x__ {_SourceCodeInfo'Location'leadingDetachedComments = y__}))+        Prelude.id+instance Data.ProtoLens.Message SourceCodeInfo'Location where+  messageName _+    = Data.Text.pack "google.protobuf.SourceCodeInfo.Location"+  fieldsByTag+    = let+        path__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "path"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Packed (Data.ProtoLens.Field.field @"path")) ::+              Data.ProtoLens.FieldDescriptor SourceCodeInfo'Location+        span__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "span"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Packed (Data.ProtoLens.Field.field @"span")) ::+              Data.ProtoLens.FieldDescriptor SourceCodeInfo'Location+        leadingComments__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "leading_comments"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'leadingComments")) ::+              Data.ProtoLens.FieldDescriptor SourceCodeInfo'Location+        trailingComments__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "trailing_comments"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'trailingComments")) ::+              Data.ProtoLens.FieldDescriptor SourceCodeInfo'Location+        leadingDetachedComments__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "leading_detached_comments"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked+                 (Data.ProtoLens.Field.field @"leadingDetachedComments")) ::+              Data.ProtoLens.FieldDescriptor SourceCodeInfo'Location+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, path__field_descriptor),+           (Data.ProtoLens.Tag 2, span__field_descriptor),+           (Data.ProtoLens.Tag 3, leadingComments__field_descriptor),+           (Data.ProtoLens.Tag 4, trailingComments__field_descriptor),+           (Data.ProtoLens.Tag 6, leadingDetachedComments__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _SourceCodeInfo'Location'_unknownFields+        (\ x__ y__ -> x__ {_SourceCodeInfo'Location'_unknownFields = y__})+  defMessage+    = SourceCodeInfo'Location'_constructor+        {_SourceCodeInfo'Location'path = Data.Vector.Generic.empty,+         _SourceCodeInfo'Location'span = Data.Vector.Generic.empty,+         _SourceCodeInfo'Location'leadingComments = Prelude.Nothing,+         _SourceCodeInfo'Location'trailingComments = Prelude.Nothing,+         _SourceCodeInfo'Location'leadingDetachedComments = Data.Vector.Generic.empty,+         _SourceCodeInfo'Location'_unknownFields = []}+  parseMessage+    = let+        loop ::+          SourceCodeInfo'Location+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld Data.Text.Text+             -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Unboxed.Vector Data.ProtoLens.Encoding.Growing.RealWorld Data.Int.Int32+                -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Unboxed.Vector Data.ProtoLens.Encoding.Growing.RealWorld Data.Int.Int32+                   -> Data.ProtoLens.Encoding.Bytes.Parser SourceCodeInfo'Location+        loop x mutable'leadingDetachedComments mutable'path mutable'span+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'leadingDetachedComments <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                          (Data.ProtoLens.Encoding.Growing.unsafeFreeze+                                                             mutable'leadingDetachedComments)+                      frozen'path <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.unsafeFreeze mutable'path)+                      frozen'span <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.unsafeFreeze mutable'span)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'leadingDetachedComments")+                              frozen'leadingDetachedComments+                              (Lens.Family2.set+                                 (Data.ProtoLens.Field.field @"vec'path")+                                 frozen'path+                                 (Lens.Family2.set+                                    (Data.ProtoLens.Field.field @"vec'span") frozen'span x))))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        8 -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (Prelude.fmap+                                           Prelude.fromIntegral+                                           Data.ProtoLens.Encoding.Bytes.getVarInt)+                                        "path"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'path y)+                                loop x mutable'leadingDetachedComments v mutable'span+                        10+                          -> do y <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                        Data.ProtoLens.Encoding.Bytes.isolate+                                          (Prelude.fromIntegral len)+                                          ((let+                                              ploop qs+                                                = do packedEnd <- Data.ProtoLens.Encoding.Bytes.atEnd+                                                     if packedEnd then+                                                         Prelude.return qs+                                                     else+                                                         do !q <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                                                    (Prelude.fmap+                                                                       Prelude.fromIntegral+                                                                       Data.ProtoLens.Encoding.Bytes.getVarInt)+                                                                    "path"+                                                            qs' <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                                     (Data.ProtoLens.Encoding.Growing.append+                                                                        qs q)+                                                            ploop qs'+                                            in ploop)+                                             mutable'path)+                                loop x mutable'leadingDetachedComments y mutable'span+                        16+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (Prelude.fmap+                                           Prelude.fromIntegral+                                           Data.ProtoLens.Encoding.Bytes.getVarInt)+                                        "span"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'span y)+                                loop x mutable'leadingDetachedComments mutable'path v+                        18+                          -> do y <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                        Data.ProtoLens.Encoding.Bytes.isolate+                                          (Prelude.fromIntegral len)+                                          ((let+                                              ploop qs+                                                = do packedEnd <- Data.ProtoLens.Encoding.Bytes.atEnd+                                                     if packedEnd then+                                                         Prelude.return qs+                                                     else+                                                         do !q <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                                                    (Prelude.fmap+                                                                       Prelude.fromIntegral+                                                                       Data.ProtoLens.Encoding.Bytes.getVarInt)+                                                                    "span"+                                                            qs' <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                                     (Data.ProtoLens.Encoding.Growing.append+                                                                        qs q)+                                                            ploop qs'+                                            in ploop)+                                             mutable'span)+                                loop x mutable'leadingDetachedComments mutable'path y+                        26+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "leading_comments"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"leadingComments") y x)+                                  mutable'leadingDetachedComments+                                  mutable'path+                                  mutable'span+                        34+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "trailing_comments"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"trailingComments") y x)+                                  mutable'leadingDetachedComments+                                  mutable'path+                                  mutable'span+                        50+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                        Data.ProtoLens.Encoding.Bytes.getBytes+                                                          (Prelude.fromIntegral len)+                                            Data.ProtoLens.Encoding.Bytes.runEither+                                              (case Data.Text.Encoding.decodeUtf8' value of+                                                 (Prelude.Left err)+                                                   -> Prelude.Left (Prelude.show err)+                                                 (Prelude.Right r) -> Prelude.Right r))+                                        "leading_detached_comments"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append+                                          mutable'leadingDetachedComments y)+                                loop x v mutable'path mutable'span+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'leadingDetachedComments+                                  mutable'path+                                  mutable'span+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'leadingDetachedComments <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                                   Data.ProtoLens.Encoding.Growing.new+              mutable'path <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                Data.ProtoLens.Encoding.Growing.new+              mutable'span <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                Data.ProtoLens.Encoding.Growing.new+              loop+                Data.ProtoLens.defMessage+                mutable'leadingDetachedComments+                mutable'path+                mutable'span)+          "Location"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (let+                p = Lens.Family2.view (Data.ProtoLens.Field.field @"vec'path") _x+              in+                if Data.Vector.Generic.null p then+                    Data.Monoid.mempty+                else+                    (Data.Monoid.<>)+                      (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                      ((\ bs+                          -> (Data.Monoid.<>)+                               (Data.ProtoLens.Encoding.Bytes.putVarInt+                                  (Prelude.fromIntegral (Data.ByteString.length bs)))+                               (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                         (Data.ProtoLens.Encoding.Bytes.runBuilder+                            (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                               ((Prelude..)+                                  Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral)+                               p))))+             ((Data.Monoid.<>)+                (let+                   p = Lens.Family2.view (Data.ProtoLens.Field.field @"vec'span") _x+                 in+                   if Data.Vector.Generic.null p then+                       Data.Monoid.mempty+                   else+                       (Data.Monoid.<>)+                         (Data.ProtoLens.Encoding.Bytes.putVarInt 18)+                         ((\ bs+                             -> (Data.Monoid.<>)+                                  (Data.ProtoLens.Encoding.Bytes.putVarInt+                                     (Prelude.fromIntegral (Data.ByteString.length bs)))+                                  (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                            (Data.ProtoLens.Encoding.Bytes.runBuilder+                               (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                                  ((Prelude..)+                                     Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral)+                                  p))))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view+                          (Data.ProtoLens.Field.field @"maybe'leadingComments") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 26)+                             ((Prelude..)+                                (\ bs+                                   -> (Data.Monoid.<>)+                                        (Data.ProtoLens.Encoding.Bytes.putVarInt+                                           (Prelude.fromIntegral (Data.ByteString.length bs)))+                                        (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                Data.Text.Encoding.encodeUtf8+                                _v))+                   ((Data.Monoid.<>)+                      (case+                           Lens.Family2.view+                             (Data.ProtoLens.Field.field @"maybe'trailingComments") _x+                       of+                         Prelude.Nothing -> Data.Monoid.mempty+                         (Prelude.Just _v)+                           -> (Data.Monoid.<>)+                                (Data.ProtoLens.Encoding.Bytes.putVarInt 34)+                                ((Prelude..)+                                   (\ bs+                                      -> (Data.Monoid.<>)+                                           (Data.ProtoLens.Encoding.Bytes.putVarInt+                                              (Prelude.fromIntegral (Data.ByteString.length bs)))+                                           (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                   Data.Text.Encoding.encodeUtf8+                                   _v))+                      ((Data.Monoid.<>)+                         (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                            (\ _v+                               -> (Data.Monoid.<>)+                                    (Data.ProtoLens.Encoding.Bytes.putVarInt 50)+                                    ((Prelude..)+                                       (\ bs+                                          -> (Data.Monoid.<>)+                                               (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                  (Prelude.fromIntegral+                                                     (Data.ByteString.length bs)))+                                               (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                       Data.Text.Encoding.encodeUtf8+                                       _v))+                            (Lens.Family2.view+                               (Data.ProtoLens.Field.field @"vec'leadingDetachedComments") _x))+                         (Data.ProtoLens.Encoding.Wire.buildFieldSet+                            (Lens.Family2.view Data.ProtoLens.unknownFields _x))))))+instance Control.DeepSeq.NFData SourceCodeInfo'Location where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_SourceCodeInfo'Location'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_SourceCodeInfo'Location'path x__)+                (Control.DeepSeq.deepseq+                   (_SourceCodeInfo'Location'span x__)+                   (Control.DeepSeq.deepseq+                      (_SourceCodeInfo'Location'leadingComments x__)+                      (Control.DeepSeq.deepseq+                         (_SourceCodeInfo'Location'trailingComments x__)+                         (Control.DeepSeq.deepseq+                            (_SourceCodeInfo'Location'leadingDetachedComments x__) ())))))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' UninterpretedOption [UninterpretedOption'NamePart]@+         * 'Proto.Google.Protobuf.Descriptor_Fields.vec'name' @:: Lens' UninterpretedOption (Data.Vector.Vector UninterpretedOption'NamePart)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.identifierValue' @:: Lens' UninterpretedOption Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'identifierValue' @:: Lens' UninterpretedOption (Prelude.Maybe Data.Text.Text)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.positiveIntValue' @:: Lens' UninterpretedOption Data.Word.Word64@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'positiveIntValue' @:: Lens' UninterpretedOption (Prelude.Maybe Data.Word.Word64)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.negativeIntValue' @:: Lens' UninterpretedOption Data.Int.Int64@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'negativeIntValue' @:: Lens' UninterpretedOption (Prelude.Maybe Data.Int.Int64)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.doubleValue' @:: Lens' UninterpretedOption Prelude.Double@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'doubleValue' @:: Lens' UninterpretedOption (Prelude.Maybe Prelude.Double)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.stringValue' @:: Lens' UninterpretedOption Data.ByteString.ByteString@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'stringValue' @:: Lens' UninterpretedOption (Prelude.Maybe Data.ByteString.ByteString)@+         * 'Proto.Google.Protobuf.Descriptor_Fields.aggregateValue' @:: Lens' UninterpretedOption Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'aggregateValue' @:: Lens' UninterpretedOption (Prelude.Maybe Data.Text.Text)@ -}+data UninterpretedOption+  = UninterpretedOption'_constructor {_UninterpretedOption'name :: !(Data.Vector.Vector UninterpretedOption'NamePart),+                                      _UninterpretedOption'identifierValue :: !(Prelude.Maybe Data.Text.Text),+                                      _UninterpretedOption'positiveIntValue :: !(Prelude.Maybe Data.Word.Word64),+                                      _UninterpretedOption'negativeIntValue :: !(Prelude.Maybe Data.Int.Int64),+                                      _UninterpretedOption'doubleValue :: !(Prelude.Maybe Prelude.Double),+                                      _UninterpretedOption'stringValue :: !(Prelude.Maybe Data.ByteString.ByteString),+                                      _UninterpretedOption'aggregateValue :: !(Prelude.Maybe Data.Text.Text),+                                      _UninterpretedOption'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show UninterpretedOption where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField UninterpretedOption "name" [UninterpretedOption'NamePart] where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'name+           (\ x__ y__ -> x__ {_UninterpretedOption'name = y__}))+        (Lens.Family2.Unchecked.lens+           Data.Vector.Generic.toList+           (\ _ y__ -> Data.Vector.Generic.fromList y__))+instance Data.ProtoLens.Field.HasField UninterpretedOption "vec'name" (Data.Vector.Vector UninterpretedOption'NamePart) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'name+           (\ x__ y__ -> x__ {_UninterpretedOption'name = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField UninterpretedOption "identifierValue" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'identifierValue+           (\ x__ y__ -> x__ {_UninterpretedOption'identifierValue = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField UninterpretedOption "maybe'identifierValue" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'identifierValue+           (\ x__ y__ -> x__ {_UninterpretedOption'identifierValue = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField UninterpretedOption "positiveIntValue" Data.Word.Word64 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'positiveIntValue+           (\ x__ y__ -> x__ {_UninterpretedOption'positiveIntValue = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField UninterpretedOption "maybe'positiveIntValue" (Prelude.Maybe Data.Word.Word64) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'positiveIntValue+           (\ x__ y__ -> x__ {_UninterpretedOption'positiveIntValue = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField UninterpretedOption "negativeIntValue" Data.Int.Int64 where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'negativeIntValue+           (\ x__ y__ -> x__ {_UninterpretedOption'negativeIntValue = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField UninterpretedOption "maybe'negativeIntValue" (Prelude.Maybe Data.Int.Int64) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'negativeIntValue+           (\ x__ y__ -> x__ {_UninterpretedOption'negativeIntValue = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField UninterpretedOption "doubleValue" Prelude.Double where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'doubleValue+           (\ x__ y__ -> x__ {_UninterpretedOption'doubleValue = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField UninterpretedOption "maybe'doubleValue" (Prelude.Maybe Prelude.Double) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'doubleValue+           (\ x__ y__ -> x__ {_UninterpretedOption'doubleValue = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField UninterpretedOption "stringValue" Data.ByteString.ByteString where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'stringValue+           (\ x__ y__ -> x__ {_UninterpretedOption'stringValue = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField UninterpretedOption "maybe'stringValue" (Prelude.Maybe Data.ByteString.ByteString) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'stringValue+           (\ x__ y__ -> x__ {_UninterpretedOption'stringValue = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField UninterpretedOption "aggregateValue" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'aggregateValue+           (\ x__ y__ -> x__ {_UninterpretedOption'aggregateValue = y__}))+        (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)+instance Data.ProtoLens.Field.HasField UninterpretedOption "maybe'aggregateValue" (Prelude.Maybe Data.Text.Text) where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'aggregateValue+           (\ x__ y__ -> x__ {_UninterpretedOption'aggregateValue = y__}))+        Prelude.id+instance Data.ProtoLens.Message UninterpretedOption where+  messageName _+    = Data.Text.pack "google.protobuf.UninterpretedOption"+  fieldsByTag+    = let+        name__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "name"+              (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::+                 Data.ProtoLens.FieldTypeDescriptor UninterpretedOption'NamePart)+              (Data.ProtoLens.RepeatedField+                 Data.ProtoLens.Unpacked (Data.ProtoLens.Field.field @"name")) ::+              Data.ProtoLens.FieldDescriptor UninterpretedOption+        identifierValue__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "identifier_value"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'identifierValue")) ::+              Data.ProtoLens.FieldDescriptor UninterpretedOption+        positiveIntValue__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "positive_int_value"+              (Data.ProtoLens.ScalarField Data.ProtoLens.UInt64Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Word.Word64)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'positiveIntValue")) ::+              Data.ProtoLens.FieldDescriptor UninterpretedOption+        negativeIntValue__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "negative_int_value"+              (Data.ProtoLens.ScalarField Data.ProtoLens.Int64Field ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'negativeIntValue")) ::+              Data.ProtoLens.FieldDescriptor UninterpretedOption+        doubleValue__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "double_value"+              (Data.ProtoLens.ScalarField Data.ProtoLens.DoubleField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Double)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'doubleValue")) ::+              Data.ProtoLens.FieldDescriptor UninterpretedOption+        stringValue__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "string_value"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BytesField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'stringValue")) ::+              Data.ProtoLens.FieldDescriptor UninterpretedOption+        aggregateValue__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "aggregate_value"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.OptionalField+                 (Data.ProtoLens.Field.field @"maybe'aggregateValue")) ::+              Data.ProtoLens.FieldDescriptor UninterpretedOption+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 2, name__field_descriptor),+           (Data.ProtoLens.Tag 3, identifierValue__field_descriptor),+           (Data.ProtoLens.Tag 4, positiveIntValue__field_descriptor),+           (Data.ProtoLens.Tag 5, negativeIntValue__field_descriptor),+           (Data.ProtoLens.Tag 6, doubleValue__field_descriptor),+           (Data.ProtoLens.Tag 7, stringValue__field_descriptor),+           (Data.ProtoLens.Tag 8, aggregateValue__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _UninterpretedOption'_unknownFields+        (\ x__ y__ -> x__ {_UninterpretedOption'_unknownFields = y__})+  defMessage+    = UninterpretedOption'_constructor+        {_UninterpretedOption'name = Data.Vector.Generic.empty,+         _UninterpretedOption'identifierValue = Prelude.Nothing,+         _UninterpretedOption'positiveIntValue = Prelude.Nothing,+         _UninterpretedOption'negativeIntValue = Prelude.Nothing,+         _UninterpretedOption'doubleValue = Prelude.Nothing,+         _UninterpretedOption'stringValue = Prelude.Nothing,+         _UninterpretedOption'aggregateValue = Prelude.Nothing,+         _UninterpretedOption'_unknownFields = []}+  parseMessage+    = let+        loop ::+          UninterpretedOption+          -> Data.ProtoLens.Encoding.Growing.Growing Data.Vector.Vector Data.ProtoLens.Encoding.Growing.RealWorld UninterpretedOption'NamePart+             -> Data.ProtoLens.Encoding.Bytes.Parser UninterpretedOption+        loop x mutable'name+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do frozen'name <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.unsafeFreeze mutable'name)+                      (let missing = []+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields+                           (\ !t -> Prelude.reverse t)+                           (Lens.Family2.set+                              (Data.ProtoLens.Field.field @"vec'name") frozen'name x))+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        18+                          -> do !y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                        (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                            Data.ProtoLens.Encoding.Bytes.isolate+                                              (Prelude.fromIntegral len)+                                              Data.ProtoLens.parseMessage)+                                        "name"+                                v <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                       (Data.ProtoLens.Encoding.Growing.append mutable'name y)+                                loop x v+                        26+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "identifier_value"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"identifierValue") y x)+                                  mutable'name+                        32+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       Data.ProtoLens.Encoding.Bytes.getVarInt "positive_int_value"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"positiveIntValue") y x)+                                  mutable'name+                        40+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Prelude.fromIntegral+                                          Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "negative_int_value"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"negativeIntValue") y x)+                                  mutable'name+                        49+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          Data.ProtoLens.Encoding.Bytes.wordToDouble+                                          Data.ProtoLens.Encoding.Bytes.getFixed64)+                                       "double_value"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"doubleValue") y x)+                                  mutable'name+                        58+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                           Data.ProtoLens.Encoding.Bytes.getBytes+                                             (Prelude.fromIntegral len))+                                       "string_value"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"stringValue") y x)+                                  mutable'name+                        66+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "aggregate_value"+                                loop+                                  (Lens.Family2.set+                                     (Data.ProtoLens.Field.field @"aggregateValue") y x)+                                  mutable'name+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  mutable'name+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do mutable'name <- Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO+                                Data.ProtoLens.Encoding.Growing.new+              loop Data.ProtoLens.defMessage mutable'name)+          "UninterpretedOption"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             (Data.ProtoLens.Encoding.Bytes.foldMapBuilder+                (\ _v+                   -> (Data.Monoid.<>)+                        (Data.ProtoLens.Encoding.Bytes.putVarInt 18)+                        ((Prelude..)+                           (\ bs+                              -> (Data.Monoid.<>)+                                   (Data.ProtoLens.Encoding.Bytes.putVarInt+                                      (Prelude.fromIntegral (Data.ByteString.length bs)))+                                   (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                           Data.ProtoLens.encodeMessage+                           _v))+                (Lens.Family2.view (Data.ProtoLens.Field.field @"vec'name") _x))+             ((Data.Monoid.<>)+                (case+                     Lens.Family2.view+                       (Data.ProtoLens.Field.field @"maybe'identifierValue") _x+                 of+                   Prelude.Nothing -> Data.Monoid.mempty+                   (Prelude.Just _v)+                     -> (Data.Monoid.<>)+                          (Data.ProtoLens.Encoding.Bytes.putVarInt 26)+                          ((Prelude..)+                             (\ bs+                                -> (Data.Monoid.<>)+                                     (Data.ProtoLens.Encoding.Bytes.putVarInt+                                        (Prelude.fromIntegral (Data.ByteString.length bs)))+                                     (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                             Data.Text.Encoding.encodeUtf8+                             _v))+                ((Data.Monoid.<>)+                   (case+                        Lens.Family2.view+                          (Data.ProtoLens.Field.field @"maybe'positiveIntValue") _x+                    of+                      Prelude.Nothing -> Data.Monoid.mempty+                      (Prelude.Just _v)+                        -> (Data.Monoid.<>)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt 32)+                             (Data.ProtoLens.Encoding.Bytes.putVarInt _v))+                   ((Data.Monoid.<>)+                      (case+                           Lens.Family2.view+                             (Data.ProtoLens.Field.field @"maybe'negativeIntValue") _x+                       of+                         Prelude.Nothing -> Data.Monoid.mempty+                         (Prelude.Just _v)+                           -> (Data.Monoid.<>)+                                (Data.ProtoLens.Encoding.Bytes.putVarInt 40)+                                ((Prelude..)+                                   Data.ProtoLens.Encoding.Bytes.putVarInt Prelude.fromIntegral _v))+                      ((Data.Monoid.<>)+                         (case+                              Lens.Family2.view+                                (Data.ProtoLens.Field.field @"maybe'doubleValue") _x+                          of+                            Prelude.Nothing -> Data.Monoid.mempty+                            (Prelude.Just _v)+                              -> (Data.Monoid.<>)+                                   (Data.ProtoLens.Encoding.Bytes.putVarInt 49)+                                   ((Prelude..)+                                      Data.ProtoLens.Encoding.Bytes.putFixed64+                                      Data.ProtoLens.Encoding.Bytes.doubleToWord+                                      _v))+                         ((Data.Monoid.<>)+                            (case+                                 Lens.Family2.view+                                   (Data.ProtoLens.Field.field @"maybe'stringValue") _x+                             of+                               Prelude.Nothing -> Data.Monoid.mempty+                               (Prelude.Just _v)+                                 -> (Data.Monoid.<>)+                                      (Data.ProtoLens.Encoding.Bytes.putVarInt 58)+                                      ((\ bs+                                          -> (Data.Monoid.<>)+                                               (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                  (Prelude.fromIntegral+                                                     (Data.ByteString.length bs)))+                                               (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                         _v))+                            ((Data.Monoid.<>)+                               (case+                                    Lens.Family2.view+                                      (Data.ProtoLens.Field.field @"maybe'aggregateValue") _x+                                of+                                  Prelude.Nothing -> Data.Monoid.mempty+                                  (Prelude.Just _v)+                                    -> (Data.Monoid.<>)+                                         (Data.ProtoLens.Encoding.Bytes.putVarInt 66)+                                         ((Prelude..)+                                            (\ bs+                                               -> (Data.Monoid.<>)+                                                    (Data.ProtoLens.Encoding.Bytes.putVarInt+                                                       (Prelude.fromIntegral+                                                          (Data.ByteString.length bs)))+                                                    (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                                            Data.Text.Encoding.encodeUtf8+                                            _v))+                               (Data.ProtoLens.Encoding.Wire.buildFieldSet+                                  (Lens.Family2.view Data.ProtoLens.unknownFields _x))))))))+instance Control.DeepSeq.NFData UninterpretedOption where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_UninterpretedOption'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_UninterpretedOption'name x__)+                (Control.DeepSeq.deepseq+                   (_UninterpretedOption'identifierValue x__)+                   (Control.DeepSeq.deepseq+                      (_UninterpretedOption'positiveIntValue x__)+                      (Control.DeepSeq.deepseq+                         (_UninterpretedOption'negativeIntValue x__)+                         (Control.DeepSeq.deepseq+                            (_UninterpretedOption'doubleValue x__)+                            (Control.DeepSeq.deepseq+                               (_UninterpretedOption'stringValue x__)+                               (Control.DeepSeq.deepseq+                                  (_UninterpretedOption'aggregateValue x__) ())))))))+{- | Fields :+     +         * 'Proto.Google.Protobuf.Descriptor_Fields.namePart' @:: Lens' UninterpretedOption'NamePart Data.Text.Text@+         * 'Proto.Google.Protobuf.Descriptor_Fields.isExtension' @:: Lens' UninterpretedOption'NamePart Prelude.Bool@ -}+data UninterpretedOption'NamePart+  = UninterpretedOption'NamePart'_constructor {_UninterpretedOption'NamePart'namePart :: !Data.Text.Text,+                                               _UninterpretedOption'NamePart'isExtension :: !Prelude.Bool,+                                               _UninterpretedOption'NamePart'_unknownFields :: !Data.ProtoLens.FieldSet}+  deriving (Prelude.Eq, Prelude.Ord)+instance Prelude.Show UninterpretedOption'NamePart where+  showsPrec _ __x __s+    = Prelude.showChar+        '{'+        (Prelude.showString+           (Data.ProtoLens.showMessageShort __x) (Prelude.showChar '}' __s))+instance Data.ProtoLens.Field.HasField UninterpretedOption'NamePart "namePart" Data.Text.Text where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'NamePart'namePart+           (\ x__ y__ -> x__ {_UninterpretedOption'NamePart'namePart = y__}))+        Prelude.id+instance Data.ProtoLens.Field.HasField UninterpretedOption'NamePart "isExtension" Prelude.Bool where+  fieldOf _+    = (Prelude..)+        (Lens.Family2.Unchecked.lens+           _UninterpretedOption'NamePart'isExtension+           (\ x__ y__+              -> x__ {_UninterpretedOption'NamePart'isExtension = y__}))+        Prelude.id+instance Data.ProtoLens.Message UninterpretedOption'NamePart where+  messageName _+    = Data.Text.pack "google.protobuf.UninterpretedOption.NamePart"+  fieldsByTag+    = let+        namePart__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "name_part"+              (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::+                 Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)+              (Data.ProtoLens.PlainField+                 Data.ProtoLens.Required+                 (Data.ProtoLens.Field.field @"namePart")) ::+              Data.ProtoLens.FieldDescriptor UninterpretedOption'NamePart+        isExtension__field_descriptor+          = Data.ProtoLens.FieldDescriptor+              "is_extension"+              (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::+                 Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)+              (Data.ProtoLens.PlainField+                 Data.ProtoLens.Required+                 (Data.ProtoLens.Field.field @"isExtension")) ::+              Data.ProtoLens.FieldDescriptor UninterpretedOption'NamePart+      in+        Data.Map.fromList+          [(Data.ProtoLens.Tag 1, namePart__field_descriptor),+           (Data.ProtoLens.Tag 2, isExtension__field_descriptor)]+  unknownFields+    = Lens.Family2.Unchecked.lens+        _UninterpretedOption'NamePart'_unknownFields+        (\ x__ y__+           -> x__ {_UninterpretedOption'NamePart'_unknownFields = y__})+  defMessage+    = UninterpretedOption'NamePart'_constructor+        {_UninterpretedOption'NamePart'namePart = Data.ProtoLens.fieldDefault,+         _UninterpretedOption'NamePart'isExtension = Data.ProtoLens.fieldDefault,+         _UninterpretedOption'NamePart'_unknownFields = []}+  parseMessage+    = let+        loop ::+          UninterpretedOption'NamePart+          -> Prelude.Bool+             -> Prelude.Bool+                -> Data.ProtoLens.Encoding.Bytes.Parser UninterpretedOption'NamePart+        loop x required'isExtension required'namePart+          = do end <- Data.ProtoLens.Encoding.Bytes.atEnd+               if end then+                   do (let+                         missing+                           = (if required'isExtension then (:) "is_extension" else Prelude.id)+                               ((if required'namePart then (:) "name_part" else Prelude.id) [])+                       in+                         if Prelude.null missing then+                             Prelude.return ()+                         else+                             Prelude.fail+                               ((Prelude.++)+                                  "Missing required fields: "+                                  (Prelude.show (missing :: [Prelude.String]))))+                      Prelude.return+                        (Lens.Family2.over+                           Data.ProtoLens.unknownFields (\ !t -> Prelude.reverse t) x)+               else+                   do tag <- Data.ProtoLens.Encoding.Bytes.getVarInt+                      case tag of+                        10+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (do value <- do len <- Data.ProtoLens.Encoding.Bytes.getVarInt+                                                       Data.ProtoLens.Encoding.Bytes.getBytes+                                                         (Prelude.fromIntegral len)+                                           Data.ProtoLens.Encoding.Bytes.runEither+                                             (case Data.Text.Encoding.decodeUtf8' value of+                                                (Prelude.Left err)+                                                  -> Prelude.Left (Prelude.show err)+                                                (Prelude.Right r) -> Prelude.Right r))+                                       "name_part"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"namePart") y x)+                                  required'isExtension+                                  Prelude.False+                        16+                          -> do y <- (Data.ProtoLens.Encoding.Bytes.<?>)+                                       (Prelude.fmap+                                          ((Prelude./=) 0) Data.ProtoLens.Encoding.Bytes.getVarInt)+                                       "is_extension"+                                loop+                                  (Lens.Family2.set (Data.ProtoLens.Field.field @"isExtension") y x)+                                  Prelude.False+                                  required'namePart+                        wire+                          -> do !y <- Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire+                                        wire+                                loop+                                  (Lens.Family2.over+                                     Data.ProtoLens.unknownFields (\ !t -> (:) y t) x)+                                  required'isExtension+                                  required'namePart+      in+        (Data.ProtoLens.Encoding.Bytes.<?>)+          (do loop Data.ProtoLens.defMessage Prelude.True Prelude.True)+          "NamePart"+  buildMessage+    = \ _x+        -> (Data.Monoid.<>)+             ((Data.Monoid.<>)+                (Data.ProtoLens.Encoding.Bytes.putVarInt 10)+                ((Prelude..)+                   (\ bs+                      -> (Data.Monoid.<>)+                           (Data.ProtoLens.Encoding.Bytes.putVarInt+                              (Prelude.fromIntegral (Data.ByteString.length bs)))+                           (Data.ProtoLens.Encoding.Bytes.putBytes bs))+                   Data.Text.Encoding.encodeUtf8+                   (Lens.Family2.view (Data.ProtoLens.Field.field @"namePart") _x)))+             ((Data.Monoid.<>)+                ((Data.Monoid.<>)+                   (Data.ProtoLens.Encoding.Bytes.putVarInt 16)+                   ((Prelude..)+                      Data.ProtoLens.Encoding.Bytes.putVarInt+                      (\ b -> if b then 1 else 0)+                      (Lens.Family2.view+                         (Data.ProtoLens.Field.field @"isExtension") _x)))+                (Data.ProtoLens.Encoding.Wire.buildFieldSet+                   (Lens.Family2.view Data.ProtoLens.unknownFields _x)))+instance Control.DeepSeq.NFData UninterpretedOption'NamePart where+  rnf+    = \ x__+        -> Control.DeepSeq.deepseq+             (_UninterpretedOption'NamePart'_unknownFields x__)+             (Control.DeepSeq.deepseq+                (_UninterpretedOption'NamePart'namePart x__)+                (Control.DeepSeq.deepseq+                   (_UninterpretedOption'NamePart'isExtension x__) ()))
+ app/Proto/Google/Protobuf/Descriptor_Fields.hs view
@@ -0,0 +1,1039 @@+{- This file was auto-generated from google/protobuf/descriptor.proto by the proto-lens-protoc program. -}+{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies, UndecidableInstances, GeneralizedNewtypeDeriving, MultiParamTypeClasses, FlexibleContexts, FlexibleInstances, PatternSynonyms, MagicHash, NoImplicitPrelude, DataKinds, BangPatterns, TypeApplications#-}+{-# OPTIONS_GHC -Wno-unused-imports#-}+{-# OPTIONS_GHC -Wno-duplicate-exports#-}+{-# OPTIONS_GHC -Wno-dodgy-exports#-}+module Proto.Google.Protobuf.Descriptor_Fields where+import qualified Data.ProtoLens.Runtime.Prelude as Prelude+import qualified Data.ProtoLens.Runtime.Data.Int as Data.Int+import qualified Data.ProtoLens.Runtime.Data.Monoid as Data.Monoid+import qualified Data.ProtoLens.Runtime.Data.Word as Data.Word+import qualified Data.ProtoLens.Runtime.Data.ProtoLens as Data.ProtoLens+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Bytes as Data.ProtoLens.Encoding.Bytes+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Growing as Data.ProtoLens.Encoding.Growing+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Parser.Unsafe as Data.ProtoLens.Encoding.Parser.Unsafe+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Encoding.Wire as Data.ProtoLens.Encoding.Wire+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Field as Data.ProtoLens.Field+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Message.Enum as Data.ProtoLens.Message.Enum+import qualified Data.ProtoLens.Runtime.Data.ProtoLens.Service.Types as Data.ProtoLens.Service.Types+import qualified Data.ProtoLens.Runtime.Lens.Family2 as Lens.Family2+import qualified Data.ProtoLens.Runtime.Lens.Family2.Unchecked as Lens.Family2.Unchecked+import qualified Data.ProtoLens.Runtime.Data.Text as Data.Text+import qualified Data.ProtoLens.Runtime.Data.Map as Data.Map+import qualified Data.ProtoLens.Runtime.Data.ByteString as Data.ByteString+import qualified Data.ProtoLens.Runtime.Data.ByteString.Char8 as Data.ByteString.Char8+import qualified Data.ProtoLens.Runtime.Data.Text.Encoding as Data.Text.Encoding+import qualified Data.ProtoLens.Runtime.Data.Vector as Data.Vector+import qualified Data.ProtoLens.Runtime.Data.Vector.Generic as Data.Vector.Generic+import qualified Data.ProtoLens.Runtime.Data.Vector.Unboxed as Data.Vector.Unboxed+import qualified Data.ProtoLens.Runtime.Text.Read as Text.Read+aggregateValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "aggregateValue" a) =>+  Lens.Family2.LensLike' f s a+aggregateValue = Data.ProtoLens.Field.field @"aggregateValue"+allowAlias ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "allowAlias" a) =>+  Lens.Family2.LensLike' f s a+allowAlias = Data.ProtoLens.Field.field @"allowAlias"+annotation ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "annotation" a) =>+  Lens.Family2.LensLike' f s a+annotation = Data.ProtoLens.Field.field @"annotation"+begin ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "begin" a) =>+  Lens.Family2.LensLike' f s a+begin = Data.ProtoLens.Field.field @"begin"+ccEnableArenas ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "ccEnableArenas" a) =>+  Lens.Family2.LensLike' f s a+ccEnableArenas = Data.ProtoLens.Field.field @"ccEnableArenas"+ccGenericServices ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "ccGenericServices" a) =>+  Lens.Family2.LensLike' f s a+ccGenericServices = Data.ProtoLens.Field.field @"ccGenericServices"+clientStreaming ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "clientStreaming" a) =>+  Lens.Family2.LensLike' f s a+clientStreaming = Data.ProtoLens.Field.field @"clientStreaming"+csharpNamespace ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "csharpNamespace" a) =>+  Lens.Family2.LensLike' f s a+csharpNamespace = Data.ProtoLens.Field.field @"csharpNamespace"+ctype ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "ctype" a) =>+  Lens.Family2.LensLike' f s a+ctype = Data.ProtoLens.Field.field @"ctype"+defaultValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "defaultValue" a) =>+  Lens.Family2.LensLike' f s a+defaultValue = Data.ProtoLens.Field.field @"defaultValue"+dependency ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "dependency" a) =>+  Lens.Family2.LensLike' f s a+dependency = Data.ProtoLens.Field.field @"dependency"+deprecated ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "deprecated" a) =>+  Lens.Family2.LensLike' f s a+deprecated = Data.ProtoLens.Field.field @"deprecated"+doubleValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "doubleValue" a) =>+  Lens.Family2.LensLike' f s a+doubleValue = Data.ProtoLens.Field.field @"doubleValue"+end ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "end" a) =>+  Lens.Family2.LensLike' f s a+end = Data.ProtoLens.Field.field @"end"+enumType ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "enumType" a) =>+  Lens.Family2.LensLike' f s a+enumType = Data.ProtoLens.Field.field @"enumType"+extendee ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "extendee" a) =>+  Lens.Family2.LensLike' f s a+extendee = Data.ProtoLens.Field.field @"extendee"+extension ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "extension" a) =>+  Lens.Family2.LensLike' f s a+extension = Data.ProtoLens.Field.field @"extension"+extensionRange ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "extensionRange" a) =>+  Lens.Family2.LensLike' f s a+extensionRange = Data.ProtoLens.Field.field @"extensionRange"+field ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "field" a) =>+  Lens.Family2.LensLike' f s a+field = Data.ProtoLens.Field.field @"field"+file ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "file" a) =>+  Lens.Family2.LensLike' f s a+file = Data.ProtoLens.Field.field @"file"+goPackage ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "goPackage" a) =>+  Lens.Family2.LensLike' f s a+goPackage = Data.ProtoLens.Field.field @"goPackage"+idempotencyLevel ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "idempotencyLevel" a) =>+  Lens.Family2.LensLike' f s a+idempotencyLevel = Data.ProtoLens.Field.field @"idempotencyLevel"+identifierValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "identifierValue" a) =>+  Lens.Family2.LensLike' f s a+identifierValue = Data.ProtoLens.Field.field @"identifierValue"+inputType ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "inputType" a) =>+  Lens.Family2.LensLike' f s a+inputType = Data.ProtoLens.Field.field @"inputType"+isExtension ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "isExtension" a) =>+  Lens.Family2.LensLike' f s a+isExtension = Data.ProtoLens.Field.field @"isExtension"+javaGenerateEqualsAndHash ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "javaGenerateEqualsAndHash" a) =>+  Lens.Family2.LensLike' f s a+javaGenerateEqualsAndHash+  = Data.ProtoLens.Field.field @"javaGenerateEqualsAndHash"+javaGenericServices ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "javaGenericServices" a) =>+  Lens.Family2.LensLike' f s a+javaGenericServices+  = Data.ProtoLens.Field.field @"javaGenericServices"+javaMultipleFiles ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "javaMultipleFiles" a) =>+  Lens.Family2.LensLike' f s a+javaMultipleFiles = Data.ProtoLens.Field.field @"javaMultipleFiles"+javaOuterClassname ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "javaOuterClassname" a) =>+  Lens.Family2.LensLike' f s a+javaOuterClassname+  = Data.ProtoLens.Field.field @"javaOuterClassname"+javaPackage ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "javaPackage" a) =>+  Lens.Family2.LensLike' f s a+javaPackage = Data.ProtoLens.Field.field @"javaPackage"+javaStringCheckUtf8 ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "javaStringCheckUtf8" a) =>+  Lens.Family2.LensLike' f s a+javaStringCheckUtf8+  = Data.ProtoLens.Field.field @"javaStringCheckUtf8"+jsonName ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "jsonName" a) =>+  Lens.Family2.LensLike' f s a+jsonName = Data.ProtoLens.Field.field @"jsonName"+jstype ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "jstype" a) =>+  Lens.Family2.LensLike' f s a+jstype = Data.ProtoLens.Field.field @"jstype"+label ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "label" a) =>+  Lens.Family2.LensLike' f s a+label = Data.ProtoLens.Field.field @"label"+lazy ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "lazy" a) =>+  Lens.Family2.LensLike' f s a+lazy = Data.ProtoLens.Field.field @"lazy"+leadingComments ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "leadingComments" a) =>+  Lens.Family2.LensLike' f s a+leadingComments = Data.ProtoLens.Field.field @"leadingComments"+leadingDetachedComments ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "leadingDetachedComments" a) =>+  Lens.Family2.LensLike' f s a+leadingDetachedComments+  = Data.ProtoLens.Field.field @"leadingDetachedComments"+location ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "location" a) =>+  Lens.Family2.LensLike' f s a+location = Data.ProtoLens.Field.field @"location"+mapEntry ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "mapEntry" a) =>+  Lens.Family2.LensLike' f s a+mapEntry = Data.ProtoLens.Field.field @"mapEntry"+maybe'aggregateValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'aggregateValue" a) =>+  Lens.Family2.LensLike' f s a+maybe'aggregateValue+  = Data.ProtoLens.Field.field @"maybe'aggregateValue"+maybe'allowAlias ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'allowAlias" a) =>+  Lens.Family2.LensLike' f s a+maybe'allowAlias = Data.ProtoLens.Field.field @"maybe'allowAlias"+maybe'begin ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'begin" a) =>+  Lens.Family2.LensLike' f s a+maybe'begin = Data.ProtoLens.Field.field @"maybe'begin"+maybe'ccEnableArenas ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'ccEnableArenas" a) =>+  Lens.Family2.LensLike' f s a+maybe'ccEnableArenas+  = Data.ProtoLens.Field.field @"maybe'ccEnableArenas"+maybe'ccGenericServices ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'ccGenericServices" a) =>+  Lens.Family2.LensLike' f s a+maybe'ccGenericServices+  = Data.ProtoLens.Field.field @"maybe'ccGenericServices"+maybe'clientStreaming ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'clientStreaming" a) =>+  Lens.Family2.LensLike' f s a+maybe'clientStreaming+  = Data.ProtoLens.Field.field @"maybe'clientStreaming"+maybe'csharpNamespace ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'csharpNamespace" a) =>+  Lens.Family2.LensLike' f s a+maybe'csharpNamespace+  = Data.ProtoLens.Field.field @"maybe'csharpNamespace"+maybe'ctype ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'ctype" a) =>+  Lens.Family2.LensLike' f s a+maybe'ctype = Data.ProtoLens.Field.field @"maybe'ctype"+maybe'defaultValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'defaultValue" a) =>+  Lens.Family2.LensLike' f s a+maybe'defaultValue+  = Data.ProtoLens.Field.field @"maybe'defaultValue"+maybe'deprecated ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'deprecated" a) =>+  Lens.Family2.LensLike' f s a+maybe'deprecated = Data.ProtoLens.Field.field @"maybe'deprecated"+maybe'doubleValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'doubleValue" a) =>+  Lens.Family2.LensLike' f s a+maybe'doubleValue = Data.ProtoLens.Field.field @"maybe'doubleValue"+maybe'end ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'end" a) =>+  Lens.Family2.LensLike' f s a+maybe'end = Data.ProtoLens.Field.field @"maybe'end"+maybe'extendee ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'extendee" a) =>+  Lens.Family2.LensLike' f s a+maybe'extendee = Data.ProtoLens.Field.field @"maybe'extendee"+maybe'goPackage ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'goPackage" a) =>+  Lens.Family2.LensLike' f s a+maybe'goPackage = Data.ProtoLens.Field.field @"maybe'goPackage"+maybe'idempotencyLevel ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'idempotencyLevel" a) =>+  Lens.Family2.LensLike' f s a+maybe'idempotencyLevel+  = Data.ProtoLens.Field.field @"maybe'idempotencyLevel"+maybe'identifierValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'identifierValue" a) =>+  Lens.Family2.LensLike' f s a+maybe'identifierValue+  = Data.ProtoLens.Field.field @"maybe'identifierValue"+maybe'inputType ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'inputType" a) =>+  Lens.Family2.LensLike' f s a+maybe'inputType = Data.ProtoLens.Field.field @"maybe'inputType"+maybe'javaGenerateEqualsAndHash ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'javaGenerateEqualsAndHash" a) =>+  Lens.Family2.LensLike' f s a+maybe'javaGenerateEqualsAndHash+  = Data.ProtoLens.Field.field @"maybe'javaGenerateEqualsAndHash"+maybe'javaGenericServices ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'javaGenericServices" a) =>+  Lens.Family2.LensLike' f s a+maybe'javaGenericServices+  = Data.ProtoLens.Field.field @"maybe'javaGenericServices"+maybe'javaMultipleFiles ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'javaMultipleFiles" a) =>+  Lens.Family2.LensLike' f s a+maybe'javaMultipleFiles+  = Data.ProtoLens.Field.field @"maybe'javaMultipleFiles"+maybe'javaOuterClassname ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'javaOuterClassname" a) =>+  Lens.Family2.LensLike' f s a+maybe'javaOuterClassname+  = Data.ProtoLens.Field.field @"maybe'javaOuterClassname"+maybe'javaPackage ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'javaPackage" a) =>+  Lens.Family2.LensLike' f s a+maybe'javaPackage = Data.ProtoLens.Field.field @"maybe'javaPackage"+maybe'javaStringCheckUtf8 ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'javaStringCheckUtf8" a) =>+  Lens.Family2.LensLike' f s a+maybe'javaStringCheckUtf8+  = Data.ProtoLens.Field.field @"maybe'javaStringCheckUtf8"+maybe'jsonName ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'jsonName" a) =>+  Lens.Family2.LensLike' f s a+maybe'jsonName = Data.ProtoLens.Field.field @"maybe'jsonName"+maybe'jstype ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'jstype" a) =>+  Lens.Family2.LensLike' f s a+maybe'jstype = Data.ProtoLens.Field.field @"maybe'jstype"+maybe'label ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'label" a) =>+  Lens.Family2.LensLike' f s a+maybe'label = Data.ProtoLens.Field.field @"maybe'label"+maybe'lazy ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'lazy" a) =>+  Lens.Family2.LensLike' f s a+maybe'lazy = Data.ProtoLens.Field.field @"maybe'lazy"+maybe'leadingComments ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'leadingComments" a) =>+  Lens.Family2.LensLike' f s a+maybe'leadingComments+  = Data.ProtoLens.Field.field @"maybe'leadingComments"+maybe'mapEntry ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'mapEntry" a) =>+  Lens.Family2.LensLike' f s a+maybe'mapEntry = Data.ProtoLens.Field.field @"maybe'mapEntry"+maybe'messageSetWireFormat ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'messageSetWireFormat" a) =>+  Lens.Family2.LensLike' f s a+maybe'messageSetWireFormat+  = Data.ProtoLens.Field.field @"maybe'messageSetWireFormat"+maybe'name ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'name" a) =>+  Lens.Family2.LensLike' f s a+maybe'name = Data.ProtoLens.Field.field @"maybe'name"+maybe'negativeIntValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'negativeIntValue" a) =>+  Lens.Family2.LensLike' f s a+maybe'negativeIntValue+  = Data.ProtoLens.Field.field @"maybe'negativeIntValue"+maybe'noStandardDescriptorAccessor ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'noStandardDescriptorAccessor" a) =>+  Lens.Family2.LensLike' f s a+maybe'noStandardDescriptorAccessor+  = Data.ProtoLens.Field.field @"maybe'noStandardDescriptorAccessor"+maybe'number ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'number" a) =>+  Lens.Family2.LensLike' f s a+maybe'number = Data.ProtoLens.Field.field @"maybe'number"+maybe'objcClassPrefix ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'objcClassPrefix" a) =>+  Lens.Family2.LensLike' f s a+maybe'objcClassPrefix+  = Data.ProtoLens.Field.field @"maybe'objcClassPrefix"+maybe'oneofIndex ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'oneofIndex" a) =>+  Lens.Family2.LensLike' f s a+maybe'oneofIndex = Data.ProtoLens.Field.field @"maybe'oneofIndex"+maybe'optimizeFor ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'optimizeFor" a) =>+  Lens.Family2.LensLike' f s a+maybe'optimizeFor = Data.ProtoLens.Field.field @"maybe'optimizeFor"+maybe'options ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'options" a) =>+  Lens.Family2.LensLike' f s a+maybe'options = Data.ProtoLens.Field.field @"maybe'options"+maybe'outputType ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'outputType" a) =>+  Lens.Family2.LensLike' f s a+maybe'outputType = Data.ProtoLens.Field.field @"maybe'outputType"+maybe'package ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'package" a) =>+  Lens.Family2.LensLike' f s a+maybe'package = Data.ProtoLens.Field.field @"maybe'package"+maybe'packed ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'packed" a) =>+  Lens.Family2.LensLike' f s a+maybe'packed = Data.ProtoLens.Field.field @"maybe'packed"+maybe'phpClassPrefix ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'phpClassPrefix" a) =>+  Lens.Family2.LensLike' f s a+maybe'phpClassPrefix+  = Data.ProtoLens.Field.field @"maybe'phpClassPrefix"+maybe'phpGenericServices ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'phpGenericServices" a) =>+  Lens.Family2.LensLike' f s a+maybe'phpGenericServices+  = Data.ProtoLens.Field.field @"maybe'phpGenericServices"+maybe'phpMetadataNamespace ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'phpMetadataNamespace" a) =>+  Lens.Family2.LensLike' f s a+maybe'phpMetadataNamespace+  = Data.ProtoLens.Field.field @"maybe'phpMetadataNamespace"+maybe'phpNamespace ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'phpNamespace" a) =>+  Lens.Family2.LensLike' f s a+maybe'phpNamespace+  = Data.ProtoLens.Field.field @"maybe'phpNamespace"+maybe'positiveIntValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'positiveIntValue" a) =>+  Lens.Family2.LensLike' f s a+maybe'positiveIntValue+  = Data.ProtoLens.Field.field @"maybe'positiveIntValue"+maybe'pyGenericServices ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'pyGenericServices" a) =>+  Lens.Family2.LensLike' f s a+maybe'pyGenericServices+  = Data.ProtoLens.Field.field @"maybe'pyGenericServices"+maybe'rubyPackage ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'rubyPackage" a) =>+  Lens.Family2.LensLike' f s a+maybe'rubyPackage = Data.ProtoLens.Field.field @"maybe'rubyPackage"+maybe'serverStreaming ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'serverStreaming" a) =>+  Lens.Family2.LensLike' f s a+maybe'serverStreaming+  = Data.ProtoLens.Field.field @"maybe'serverStreaming"+maybe'sourceCodeInfo ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'sourceCodeInfo" a) =>+  Lens.Family2.LensLike' f s a+maybe'sourceCodeInfo+  = Data.ProtoLens.Field.field @"maybe'sourceCodeInfo"+maybe'sourceFile ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'sourceFile" a) =>+  Lens.Family2.LensLike' f s a+maybe'sourceFile = Data.ProtoLens.Field.field @"maybe'sourceFile"+maybe'start ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'start" a) =>+  Lens.Family2.LensLike' f s a+maybe'start = Data.ProtoLens.Field.field @"maybe'start"+maybe'stringValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'stringValue" a) =>+  Lens.Family2.LensLike' f s a+maybe'stringValue = Data.ProtoLens.Field.field @"maybe'stringValue"+maybe'swiftPrefix ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'swiftPrefix" a) =>+  Lens.Family2.LensLike' f s a+maybe'swiftPrefix = Data.ProtoLens.Field.field @"maybe'swiftPrefix"+maybe'syntax ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'syntax" a) =>+  Lens.Family2.LensLike' f s a+maybe'syntax = Data.ProtoLens.Field.field @"maybe'syntax"+maybe'trailingComments ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'trailingComments" a) =>+  Lens.Family2.LensLike' f s a+maybe'trailingComments+  = Data.ProtoLens.Field.field @"maybe'trailingComments"+maybe'type' ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'type'" a) =>+  Lens.Family2.LensLike' f s a+maybe'type' = Data.ProtoLens.Field.field @"maybe'type'"+maybe'typeName ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'typeName" a) =>+  Lens.Family2.LensLike' f s a+maybe'typeName = Data.ProtoLens.Field.field @"maybe'typeName"+maybe'weak ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "maybe'weak" a) =>+  Lens.Family2.LensLike' f s a+maybe'weak = Data.ProtoLens.Field.field @"maybe'weak"+messageSetWireFormat ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "messageSetWireFormat" a) =>+  Lens.Family2.LensLike' f s a+messageSetWireFormat+  = Data.ProtoLens.Field.field @"messageSetWireFormat"+messageType ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "messageType" a) =>+  Lens.Family2.LensLike' f s a+messageType = Data.ProtoLens.Field.field @"messageType"+method ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "method" a) =>+  Lens.Family2.LensLike' f s a+method = Data.ProtoLens.Field.field @"method"+name ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "name" a) =>+  Lens.Family2.LensLike' f s a+name = Data.ProtoLens.Field.field @"name"+namePart ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "namePart" a) =>+  Lens.Family2.LensLike' f s a+namePart = Data.ProtoLens.Field.field @"namePart"+negativeIntValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "negativeIntValue" a) =>+  Lens.Family2.LensLike' f s a+negativeIntValue = Data.ProtoLens.Field.field @"negativeIntValue"+nestedType ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "nestedType" a) =>+  Lens.Family2.LensLike' f s a+nestedType = Data.ProtoLens.Field.field @"nestedType"+noStandardDescriptorAccessor ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "noStandardDescriptorAccessor" a) =>+  Lens.Family2.LensLike' f s a+noStandardDescriptorAccessor+  = Data.ProtoLens.Field.field @"noStandardDescriptorAccessor"+number ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "number" a) =>+  Lens.Family2.LensLike' f s a+number = Data.ProtoLens.Field.field @"number"+objcClassPrefix ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "objcClassPrefix" a) =>+  Lens.Family2.LensLike' f s a+objcClassPrefix = Data.ProtoLens.Field.field @"objcClassPrefix"+oneofDecl ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "oneofDecl" a) =>+  Lens.Family2.LensLike' f s a+oneofDecl = Data.ProtoLens.Field.field @"oneofDecl"+oneofIndex ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "oneofIndex" a) =>+  Lens.Family2.LensLike' f s a+oneofIndex = Data.ProtoLens.Field.field @"oneofIndex"+optimizeFor ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "optimizeFor" a) =>+  Lens.Family2.LensLike' f s a+optimizeFor = Data.ProtoLens.Field.field @"optimizeFor"+options ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "options" a) =>+  Lens.Family2.LensLike' f s a+options = Data.ProtoLens.Field.field @"options"+outputType ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "outputType" a) =>+  Lens.Family2.LensLike' f s a+outputType = Data.ProtoLens.Field.field @"outputType"+package ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "package" a) =>+  Lens.Family2.LensLike' f s a+package = Data.ProtoLens.Field.field @"package"+packed ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "packed" a) =>+  Lens.Family2.LensLike' f s a+packed = Data.ProtoLens.Field.field @"packed"+path ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "path" a) =>+  Lens.Family2.LensLike' f s a+path = Data.ProtoLens.Field.field @"path"+phpClassPrefix ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "phpClassPrefix" a) =>+  Lens.Family2.LensLike' f s a+phpClassPrefix = Data.ProtoLens.Field.field @"phpClassPrefix"+phpGenericServices ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "phpGenericServices" a) =>+  Lens.Family2.LensLike' f s a+phpGenericServices+  = Data.ProtoLens.Field.field @"phpGenericServices"+phpMetadataNamespace ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "phpMetadataNamespace" a) =>+  Lens.Family2.LensLike' f s a+phpMetadataNamespace+  = Data.ProtoLens.Field.field @"phpMetadataNamespace"+phpNamespace ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "phpNamespace" a) =>+  Lens.Family2.LensLike' f s a+phpNamespace = Data.ProtoLens.Field.field @"phpNamespace"+positiveIntValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "positiveIntValue" a) =>+  Lens.Family2.LensLike' f s a+positiveIntValue = Data.ProtoLens.Field.field @"positiveIntValue"+publicDependency ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "publicDependency" a) =>+  Lens.Family2.LensLike' f s a+publicDependency = Data.ProtoLens.Field.field @"publicDependency"+pyGenericServices ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "pyGenericServices" a) =>+  Lens.Family2.LensLike' f s a+pyGenericServices = Data.ProtoLens.Field.field @"pyGenericServices"+reservedName ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "reservedName" a) =>+  Lens.Family2.LensLike' f s a+reservedName = Data.ProtoLens.Field.field @"reservedName"+reservedRange ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "reservedRange" a) =>+  Lens.Family2.LensLike' f s a+reservedRange = Data.ProtoLens.Field.field @"reservedRange"+rubyPackage ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "rubyPackage" a) =>+  Lens.Family2.LensLike' f s a+rubyPackage = Data.ProtoLens.Field.field @"rubyPackage"+serverStreaming ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "serverStreaming" a) =>+  Lens.Family2.LensLike' f s a+serverStreaming = Data.ProtoLens.Field.field @"serverStreaming"+service ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "service" a) =>+  Lens.Family2.LensLike' f s a+service = Data.ProtoLens.Field.field @"service"+sourceCodeInfo ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "sourceCodeInfo" a) =>+  Lens.Family2.LensLike' f s a+sourceCodeInfo = Data.ProtoLens.Field.field @"sourceCodeInfo"+sourceFile ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "sourceFile" a) =>+  Lens.Family2.LensLike' f s a+sourceFile = Data.ProtoLens.Field.field @"sourceFile"+span ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "span" a) =>+  Lens.Family2.LensLike' f s a+span = Data.ProtoLens.Field.field @"span"+start ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "start" a) =>+  Lens.Family2.LensLike' f s a+start = Data.ProtoLens.Field.field @"start"+stringValue ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "stringValue" a) =>+  Lens.Family2.LensLike' f s a+stringValue = Data.ProtoLens.Field.field @"stringValue"+swiftPrefix ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "swiftPrefix" a) =>+  Lens.Family2.LensLike' f s a+swiftPrefix = Data.ProtoLens.Field.field @"swiftPrefix"+syntax ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "syntax" a) =>+  Lens.Family2.LensLike' f s a+syntax = Data.ProtoLens.Field.field @"syntax"+trailingComments ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "trailingComments" a) =>+  Lens.Family2.LensLike' f s a+trailingComments = Data.ProtoLens.Field.field @"trailingComments"+type' ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "type'" a) =>+  Lens.Family2.LensLike' f s a+type' = Data.ProtoLens.Field.field @"type'"+typeName ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "typeName" a) =>+  Lens.Family2.LensLike' f s a+typeName = Data.ProtoLens.Field.field @"typeName"+uninterpretedOption ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "uninterpretedOption" a) =>+  Lens.Family2.LensLike' f s a+uninterpretedOption+  = Data.ProtoLens.Field.field @"uninterpretedOption"+value ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "value" a) =>+  Lens.Family2.LensLike' f s a+value = Data.ProtoLens.Field.field @"value"+vec'annotation ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'annotation" a) =>+  Lens.Family2.LensLike' f s a+vec'annotation = Data.ProtoLens.Field.field @"vec'annotation"+vec'dependency ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'dependency" a) =>+  Lens.Family2.LensLike' f s a+vec'dependency = Data.ProtoLens.Field.field @"vec'dependency"+vec'enumType ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'enumType" a) =>+  Lens.Family2.LensLike' f s a+vec'enumType = Data.ProtoLens.Field.field @"vec'enumType"+vec'extension ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'extension" a) =>+  Lens.Family2.LensLike' f s a+vec'extension = Data.ProtoLens.Field.field @"vec'extension"+vec'extensionRange ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'extensionRange" a) =>+  Lens.Family2.LensLike' f s a+vec'extensionRange+  = Data.ProtoLens.Field.field @"vec'extensionRange"+vec'field ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'field" a) =>+  Lens.Family2.LensLike' f s a+vec'field = Data.ProtoLens.Field.field @"vec'field"+vec'file ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'file" a) =>+  Lens.Family2.LensLike' f s a+vec'file = Data.ProtoLens.Field.field @"vec'file"+vec'leadingDetachedComments ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'leadingDetachedComments" a) =>+  Lens.Family2.LensLike' f s a+vec'leadingDetachedComments+  = Data.ProtoLens.Field.field @"vec'leadingDetachedComments"+vec'location ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'location" a) =>+  Lens.Family2.LensLike' f s a+vec'location = Data.ProtoLens.Field.field @"vec'location"+vec'messageType ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'messageType" a) =>+  Lens.Family2.LensLike' f s a+vec'messageType = Data.ProtoLens.Field.field @"vec'messageType"+vec'method ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'method" a) =>+  Lens.Family2.LensLike' f s a+vec'method = Data.ProtoLens.Field.field @"vec'method"+vec'name ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'name" a) =>+  Lens.Family2.LensLike' f s a+vec'name = Data.ProtoLens.Field.field @"vec'name"+vec'nestedType ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'nestedType" a) =>+  Lens.Family2.LensLike' f s a+vec'nestedType = Data.ProtoLens.Field.field @"vec'nestedType"+vec'oneofDecl ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'oneofDecl" a) =>+  Lens.Family2.LensLike' f s a+vec'oneofDecl = Data.ProtoLens.Field.field @"vec'oneofDecl"+vec'path ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'path" a) =>+  Lens.Family2.LensLike' f s a+vec'path = Data.ProtoLens.Field.field @"vec'path"+vec'publicDependency ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'publicDependency" a) =>+  Lens.Family2.LensLike' f s a+vec'publicDependency+  = Data.ProtoLens.Field.field @"vec'publicDependency"+vec'reservedName ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'reservedName" a) =>+  Lens.Family2.LensLike' f s a+vec'reservedName = Data.ProtoLens.Field.field @"vec'reservedName"+vec'reservedRange ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'reservedRange" a) =>+  Lens.Family2.LensLike' f s a+vec'reservedRange = Data.ProtoLens.Field.field @"vec'reservedRange"+vec'service ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'service" a) =>+  Lens.Family2.LensLike' f s a+vec'service = Data.ProtoLens.Field.field @"vec'service"+vec'span ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'span" a) =>+  Lens.Family2.LensLike' f s a+vec'span = Data.ProtoLens.Field.field @"vec'span"+vec'uninterpretedOption ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'uninterpretedOption" a) =>+  Lens.Family2.LensLike' f s a+vec'uninterpretedOption+  = Data.ProtoLens.Field.field @"vec'uninterpretedOption"+vec'value ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'value" a) =>+  Lens.Family2.LensLike' f s a+vec'value = Data.ProtoLens.Field.field @"vec'value"+vec'weakDependency ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "vec'weakDependency" a) =>+  Lens.Family2.LensLike' f s a+vec'weakDependency+  = Data.ProtoLens.Field.field @"vec'weakDependency"+weak ::+  forall f s a.+  (Prelude.Functor f, Data.ProtoLens.Field.HasField s "weak" a) =>+  Lens.Family2.LensLike' f s a+weak = Data.ProtoLens.Field.field @"weak"+weakDependency ::+  forall f s a.+  (Prelude.Functor f,+   Data.ProtoLens.Field.HasField s "weakDependency" a) =>+  Lens.Family2.LensLike' f s a+weakDependency = Data.ProtoLens.Field.field @"weakDependency"
app/protoc-gen-haskell.hs view
@@ -4,13 +4,17 @@ -- license that can be found in the LICENSE file or at -- https://developers.google.com/open-source/licenses/bsd +{-# LANGUAGE CPP #-}+{-# LANGUAGE OverloadedLabels #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternSynonyms #-} module Main where  import qualified Data.ByteString as B import Data.Map.Strict ((!))-import Data.Monoid ((<>))+#if !MIN_VERSION_base(4,11,0)+import Data.Semigroup ((<>))+#endif import qualified Data.Set as Set import qualified Data.Text as T import Data.Text (Text, pack)@@ -24,79 +28,71 @@     ( CodeGeneratorRequest     , CodeGeneratorResponse     )-import Proto.Google.Protobuf.Compiler.Plugin_Fields-    ( content-    , file-    , fileToGenerate-    , parameter-    , protoFile-    ) import Proto.Google.Protobuf.Descriptor (FileDescriptorProto)-import Proto.Google.Protobuf.Descriptor_Fields (name, dependency) import System.Environment (getProgName) import System.Exit (exitWith, ExitCode(..)) import System.IO as IO -import Data.ProtoLens.Compiler.Combinators-    ( prettyPrint-    , prettyPrintModule-    , getModuleName-    )+import Data.ProtoLens.Compiler.Generate.Commented (CommentedModule, getModuleName) import Data.ProtoLens.Compiler.Generate import Data.ProtoLens.Compiler.Plugin +import DynFlags (DynFlags, getDynFlags)+import GHC (runGhc)+import GhcMonad (liftIO)+import GHC.Paths (libdir)+import GHC.SourceGen.Pretty (showPpr)+ main :: IO () main = do     contents <- B.getContents     progName <- getProgName     case decodeMessage contents of         Left e -> IO.hPutStrLn stderr e >> exitWith (ExitFailure 1)-        Right x -> B.putStr $ encodeMessage $ makeResponse progName x+        Right x -> runGhc (Just libdir) $ do+                      dflags <- getDynFlags+                      liftIO $ B.putStr $ encodeMessage $+                        makeResponse dflags progName x -makeResponse :: String -> CodeGeneratorRequest -> CodeGeneratorResponse-makeResponse prog request = let-    useRuntime = case T.unpack $ request ^. parameter of-                    "" -> reexported-                    "no-runtime" -> id-                    p -> error $ "Error reading parameter: " ++ show p-    outputFiles = generateFiles useRuntime header-                      (request ^. protoFile)-                      (request ^. fileToGenerate)+makeResponse :: DynFlags -> String -> CodeGeneratorRequest -> CodeGeneratorResponse+makeResponse dflags prog request = let+    outputFiles = generateFiles dflags header+                      (request ^. #protoFile)+                      (request ^. #fileToGenerate)     header :: FileDescriptorProto -> Text     header f = "{- This file was auto-generated from "-                <> (f ^. name)+                <> (f ^. #name)                 <> " by the " <> pack prog <> " program. -}\n"     in defMessage-           & file .~ [ defMessage-                            & name .~ outputName-                            & content .~ outputContent+           & #file .~ [ defMessage+                            & #name .~ outputName+                            & #content .~ outputContent                      | (outputName, outputContent) <- outputFiles                      ]  -generateFiles :: ModifyImports -> (FileDescriptorProto -> Text)+generateFiles :: DynFlags -> (FileDescriptorProto -> Text)               -> [FileDescriptorProto] -> [ProtoFileName] -> [(Text, Text)]-generateFiles modifyImports header files toGenerate = let-  modulePrefix = "Proto"-  filesByName = analyzeProtoFiles modulePrefix files+generateFiles dflags header files toGenerate = let+  filesByName = analyzeProtoFiles files   -- The contents of the generated Haskell file for a given .proto file.+  modulesToBuild :: ProtoFile -> [CommentedModule]   modulesToBuild f = let-      deps = descriptor f ^. dependency+      deps = descriptor f ^. #dependency       imports = Set.toAscList $ Set.fromList-                  [ haskellModule (filesByName ! exportName)-                  | dep <- deps-                  , exportName <- exports (filesByName ! dep)-                  ]+                  $ map (haskellModule . (filesByName !)) deps       in generateModule (haskellModule f) imports-             modifyImports+            (publicImports f)              (definitions f)              (collectEnvFromDeps deps filesByName)              (services f)-  in [ ( outputFilePath $ prettyPrint $ getModuleName modul-       , header (descriptor f) <> pack (prettyPrintModule modul)+  in [ ( moduleFilePath $ pack $ showPpr dflags (getModuleName modul)+       , header (descriptor f) <> pack (showPpr dflags modul)        )      | fileName <- toGenerate      , let f = filesByName ! fileName      , modul <- modulesToBuild f      ] +moduleFilePath :: Text -> Text+moduleFilePath n = T.replace "." "/" n <> ".hs"
proto-lens-protoc.cabal view
@@ -1,13 +1,13 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.31.1.+-- This file has been generated from package.yaml by hpack version 0.31.2. -- -- see: https://github.com/sol/hpack ----- hash: e145fd43ae4afd8f47db892dc65ea8f96de237631a8d9299638fbe34a9c43a5a+-- hash: b83c1bee48d610ca9d51aadc42916775c24fa81838d58cc5ebda6ce2d0797418  name:           proto-lens-protoc-version:        0.5.0.0+version:        0.6.0.0 synopsis:       Protocol buffer compiler for the proto-lens library. description:    Turn protocol buffer files (.proto) into Haskell files (.hs) which can be used with the proto-lens package.                 The library component of this package contains compiler code (namely Data.ProtoLens.Compiler.*) is not guaranteed to have stable APIs.'@@ -30,39 +30,44 @@  library   exposed-modules:-      Data.ProtoLens.Compiler.Combinators-      Data.ProtoLens.Compiler.Definitions-      Data.ProtoLens.Compiler.Generate-      Data.ProtoLens.Compiler.Plugin+      Data.ProtoLens.Compiler.ModuleName   other-modules:-      Data.ProtoLens.Compiler.Generate.Encoding-      Data.ProtoLens.Compiler.Generate.Field       Paths_proto_lens_protoc   hs-source-dirs:       src   build-depends:-      base >=4.9 && <4.13-    , containers >=0.5 && <0.7+      base >=4.9 && <4.14     , filepath >=1.4 && <1.6-    , haskell-src-exts >=1.18 && <1.22-    , lens-family ==1.2.*-    , pretty ==1.1.*-    , proto-lens ==0.5.*-    , text ==1.2.*   default-language: Haskell2010  executable proto-lens-protoc   main-is: protoc-gen-haskell.hs   other-modules:+      Data.ProtoLens.Compiler.Definitions+      Data.ProtoLens.Compiler.Generate+      Data.ProtoLens.Compiler.Generate.Commented+      Data.ProtoLens.Compiler.Generate.Encoding+      Data.ProtoLens.Compiler.Generate.Field+      Data.ProtoLens.Compiler.Plugin+      Proto.Google.Protobuf.Compiler.Plugin+      Proto.Google.Protobuf.Compiler.Plugin_Fields+      Proto.Google.Protobuf.Descriptor+      Proto.Google.Protobuf.Descriptor_Fields       Paths_proto_lens_protoc   hs-source-dirs:       app   build-depends:-      base >=4.9 && <4.13+      base >=4.9 && <4.14     , bytestring ==0.10.*     , containers >=0.5 && <0.7-    , lens-family ==1.2.*-    , proto-lens ==0.5.*+    , filepath >=1.4 && <1.6+    , ghc >=8.2 && <8.10+    , ghc-paths ==0.1.*+    , ghc-source-gen ==0.3.*+    , lens-family >=1.2 && <2.1+    , pretty ==1.1.*+    , proto-lens ==0.6.*     , proto-lens-protoc+    , proto-lens-runtime ==0.6.*     , text ==1.2.*   default-language: Haskell2010
− src/Data/ProtoLens/Compiler/Combinators.hs
@@ -1,462 +0,0 @@--- Copyright 2016 Google Inc. All Rights Reserved.------ Use of this source code is governed by a BSD-style--- license that can be found in the LICENSE file or at--- https://developers.google.com/open-source/licenses/bsd--{-# OPTIONS_GHC -fno-warn-orphans #-}-{-# LANGUAGE CPP #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE OverloadedStrings #-}--- | Some utility functions, classes and instances for nicer code generation.------ Re-exports simpler versions of the types and constructors from--- @haskell-src-exts@.------ We define orphan instances of IsString for various syntax--- datatypes, with some intelligence about Haskell names.  For example, @"foo"--- :: Exp@ is treated as a variable and @"Foo" :: Exp@ is treated as a--- constructor.-module Data.ProtoLens.Compiler.Combinators-    ( module Data.ProtoLens.Compiler.Combinators-    -- Since ImportDecl is a record type, for simplicity we just export it-    -- directly.-    , Syntax.ImportDecl(..)-    ) where--import Data.Char (isAlphaNum, isUpper)-import Data.String (IsString(..))-import qualified Language.Haskell.Exts.Syntax as Syntax-import qualified Language.Haskell.Exts.Pretty as Pretty-import Text.PrettyPrint (($+$), (<+>), render, text, vcat, Doc)--prettyPrint :: Pretty.Pretty a => a -> String-prettyPrint = Pretty.prettyPrint--prettyPrim :: Pretty.Pretty a => a -> Doc-prettyPrim = Pretty.prettyPrim--type Asst = Syntax.Asst ()--classA :: QName -> [Type] -> Asst-classA = Syntax.ClassA ()--equalP :: Type -> Type -> Asst-equalP = Syntax.EqualP ()---type ConDecl = Syntax.ConDecl ()--conDecl :: Name -> [Type] -> ConDecl-conDecl constructorName paramTypes-    = Syntax.ConDecl () constructorName $-        fmap tyBang paramTypes--recDecl :: Name -> [(Name, Type)] -> ConDecl-recDecl dataName fields-    = Syntax.RecDecl () dataName-        [Syntax.FieldDecl () [n] (tyBang t) | (n,t) <- fields]---type Decl = Syntax.Decl ()--patSynSig :: Name -> Type -> Decl-#if MIN_VERSION_haskell_src_exts(1,21,0)-patSynSig n t = Syntax.PatSynSig () [n] Nothing Nothing Nothing Nothing t-#elif MIN_VERSION_haskell_src_exts(1,20,0)-patSynSig n t = Syntax.PatSynSig () [n] Nothing Nothing Nothing t-#else-patSynSig n t = Syntax.PatSynSig () n Nothing Nothing Nothing t-#endif--patSyn :: Pat -> Pat -> Decl-patSyn p1 p2 = Syntax.PatSyn () p1 p2 Syntax.ImplicitBidirectional--dataDecl :: Name -> [ConDecl] -> Deriving -> Decl-dataDecl = dataDeclHelper $ Syntax.DataType ()--newtypeDecl :: Name -> Type -> Deriving -> Decl-newtypeDecl name wrappedType-    = dataDeclHelper (Syntax.NewType ()) name-          [Syntax.ConDecl () name [wrappedType]]--dataDeclHelper :: Syntax.DataOrNew () -> Name -> [ConDecl] -> Deriving -> Decl-dataDeclHelper dataOrNew name conDecls derives-    = Syntax.DataDecl () dataOrNew Nothing-        (Syntax.DHead () name)-            [Syntax.QualConDecl () Nothing Nothing q | q <- conDecls]-#if MIN_VERSION_haskell_src_exts(1,20,0)-        [derives]-#else-        $ Just derives-#endif--type Deriving = Syntax.Deriving ()--deriving' :: [QName] -> Deriving-deriving' classes = Syntax.Deriving ()-#if MIN_VERSION_haskell_src_exts(1,20,0)-                      Nothing-#endif-                      [ Syntax.IRule () Nothing Nothing (Syntax.IHCon () c)-                      | c <- classes-                      ]--funBind :: [Match] -> Decl-funBind = Syntax.FunBind ()--patBind :: Pat -> Exp -> Decl-patBind p e = Syntax.PatBind () p (Syntax.UnGuardedRhs () e) Nothing--instType :: Type -> Type -> Syntax.InstDecl ()-instType = Syntax.InsType ()--instMatch :: [Match] -> Syntax.InstDecl ()-instMatch m = Syntax.InsDecl () $ funBind m--instDeclWithTypes :: [Asst] -> InstHead -> [Syntax.InstDecl ()] -> Decl-instDeclWithTypes ctx instHead decls-    = Syntax.InstDecl () Nothing-        (Syntax.IRule () Nothing ctx' instHead)-        $ Just decls-  where-    ctx' = case ctx of-        [] -> Nothing-        [c] -> Just $ Syntax.CxSingle () c-        cs -> Just $ Syntax.CxTuple () cs--instDecl :: [Asst] -> InstHead -> [[Match]] -> Decl-instDecl ctx instHead = instDeclWithTypes ctx instHead . fmap instMatch--typeSig :: [Name] -> Type -> Decl-typeSig = Syntax.TypeSig ()---type Exp = Syntax.Exp ()--let' :: [Decl] -> Exp -> Exp-let' ds e = Syntax.Let () (Syntax.BDecls () ds) e--type Alt = Syntax.Alt ()--case' :: Exp -> [Alt] -> Exp-case' = Syntax.Case ()--(-->) :: Pat -> Exp -> Alt-p --> e = Syntax.Alt () p (Syntax.UnGuardedRhs () e) Nothing-infixl 1 -->--stringExp :: String -> Exp-stringExp = Syntax.Lit () . string--charExp :: Char -> Exp-charExp = Syntax.Lit () . char--tuple :: [Exp] -> Exp-tuple = Syntax.Tuple () Syntax.Boxed--lambda :: [Pat] -> Exp -> Exp-lambda ps e = Syntax.Paren () $ Syntax.Lambda () ps e--(@::@) :: Exp -> Type -> Exp-(@::@) = Syntax.ExpTypeSig ()-infixl 2 @::@--recConstr :: QName -> [FieldUpdate] -> Exp-recConstr = Syntax.RecConstr ()--recUpdate :: Exp -> [FieldUpdate] -> Exp-recUpdate = Syntax.RecUpdate ()--var, con :: QName -> Exp-var = Syntax.Var ()-con = Syntax.Con ()--list :: [Exp] -> Exp-list = Syntax.List ()--if' :: Exp -> Exp -> Exp -> Exp-if' = Syntax.If ()---- | The ":" constructor.-cons :: Exp-cons = var $ Syntax.Special () $ Syntax.Cons ()---- | The "[]" constructor.-emptyList :: Exp-emptyList = var $ Syntax.Special () $ Syntax.ListCon ()---- | The "()" constructor.-unit :: Exp-unit = var $ Syntax.Special () $ Syntax.UnitCon ()--typeApp :: Type -> Exp-typeApp = Syntax.TypeApp ()--type Stmt = Syntax.Stmt ()--do' :: [Stmt] -> Exp-do' = Syntax.Do ()--(<--) :: Pat -> Exp -> Stmt-(<--) = Syntax.Generator ()-infixl 1 <----stmt :: Exp -> Stmt-stmt = Syntax.Qualifier ()--letStmt :: [Decl] -> Stmt-letStmt = Syntax.LetStmt () . Syntax.BDecls ()--type FieldUpdate = Syntax.FieldUpdate ()--fieldUpdate :: QName -> Exp -> FieldUpdate-fieldUpdate = Syntax.FieldUpdate ()--type InstHead = Syntax.InstHead ()--ihApp :: InstHead -> [Type] -> InstHead-ihApp = foldl (Syntax.IHApp ())--tyParen :: Type -> Type-tyParen = Syntax.TyParen ()--tyFun :: Type -> Type -> Type-tyFun = Syntax.TyFun ()--type Match = Syntax.Match ()---- | A simple clause of a function binding.-match :: Name -> [Pat] -> Exp -> Match-match n ps e = Syntax.Match () n ps (Syntax.UnGuardedRhs () e) Nothing--guardedMatch :: Name -> [Pat] -> [(Exp, Exp)] -> Match-guardedMatch n ps gs =-    Syntax.Match () n ps-       (Syntax.GuardedRhss ()-           $ map (\g -> Syntax.GuardedRhs () [Syntax.Qualifier () $ fst g]-                            (snd g)) gs)-       Nothing---- | A hand-rolled type for modules, which allows comments on top-level--- declarations.-data Module = Module ModuleName (Maybe [ExportSpec]) [ModulePragma]-                [Syntax.ImportDecl ()]-                [CommentedDecl]---- | A declaration, along with an optional comment.-data CommentedDecl = CommentedDecl (Maybe String) Decl--uncommented :: Decl -> CommentedDecl-uncommented = CommentedDecl Nothing--commented :: String -> Decl -> CommentedDecl-commented = CommentedDecl . Just--prettyPrintModule :: Module -> String-prettyPrintModule (Module modName exports pragmas imports decls) =-    render $-        vcat (map prettyPrim pragmas)-        $+$ prettyPrim (Syntax.ModuleHead () modName-                           -- no warning text-                           Nothing-                           (Syntax.ExportSpecList () <$> exports))-        $+$ vcat (map prettyPrim imports)-        $+$ ""-        $+$ vcat (map pprintDecl decls)-  where-    pprintDecl (CommentedDecl Nothing d) = prettyPrim d-    pprintDecl (CommentedDecl (Just c) d)-        = "{- |" <+> text c <+> "-}" $+$ prettyPrim d--type ExportSpec = Syntax.ExportSpec ()--getModuleName :: Module -> ModuleName-getModuleName (Module name _ _ _ _) = name--type ModuleName = Syntax.ModuleName ()-type ModulePragma = Syntax.ModulePragma ()--languagePragma :: [Name] -> ModulePragma-languagePragma = Syntax.LanguagePragma ()--optionsGhcPragma :: String -> ModulePragma-optionsGhcPragma = Syntax.OptionsPragma () (Just Syntax.GHC)--exportVar :: QName -> ExportSpec-exportVar = Syntax.EVar ()--exportAll :: QName -> ExportSpec-exportAll q = Syntax.EThingWith () (Syntax.EWildcard () 0) q []--exportWith :: QName -> [Name] -> ExportSpec-exportWith q = Syntax.EThingWith ()-                    (Syntax.NoWildcard ())-                    q-                    . map (Syntax.ConName ())--type Name = Syntax.Name ()--type Pat = Syntax.Pat ()--pApp :: QName -> [Pat] -> Pat-pApp = Syntax.PApp ()--pVar :: Name -> Pat-pVar = Syntax.PVar ()--pWildCard :: Pat-pWildCard = Syntax.PWildCard ()--stringPat :: String -> Pat-stringPat = Syntax.PLit () (Syntax.Signless ()) . string--bangPat :: Pat -> Pat-bangPat = Syntax.PBangPat ()--patTypeSig :: Pat -> Type -> Pat-patTypeSig = Syntax.PatTypeSig ()--type QName = Syntax.QName ()--qual :: ModuleName -> Name -> QName-qual = Syntax.Qual ()--unQual :: Name -> QName-unQual = Syntax.UnQual ()---type TyVarBind = Syntax.TyVarBind ()-type Type = Syntax.Type ()--tyCon :: QName -> Type-tyCon = Syntax.TyCon ()--tyList :: Type -> Type-tyList = Syntax.TyList ()--tyPromotedList :: [Type] -> Type-tyPromotedList ts = Syntax.TyPromoted () $ Syntax.PromotedList () True ts--tyPromotedString :: String -> Type-tyPromotedString s = Syntax.TyPromoted () $ Syntax.PromotedString () s s--type Promoted = Syntax.Promoted ()--tyPromotedCon :: Promoted -> Type-tyPromotedCon = Syntax.TyPromoted ()--instance IsString Promoted where-    fromString = Syntax.PromotedCon () True . fromString--tyForAll :: [TyVarBind] -> [Asst] -> Type -> Type-tyForAll vars ctx t = Syntax.TyForall () (Just vars)-                            (Just $ Syntax.CxTuple () ctx)-                            t--tyBang :: Type -> Type-tyBang = Syntax.TyBang () (Syntax.BangedTy ()) (Syntax.NoUnpackPragma ())--tyWildCard :: Type-tyWildCard = Syntax.TyWildCard () Nothing---- | Application of a Haskell type or expression to an argument.--- For example, to represent @f x y@, you can write------ > "f" @@ "x" @@ "y"-class App a where-    (@@) :: a -> a -> a-    infixl 2 @@--instance App Type where-    (@@) = Syntax.TyApp ()--instance App Exp where-    Syntax.App () (Syntax.Con () v) x @@ y-        -- For readability, print fully-applied operators infix, i.e., "x OP y"-        -- rather than "(OP) x y".-        | isSymbol v-        = Syntax.InfixApp () (Syntax.Paren () x) (Syntax.QVarOp () v) y-      where-        isSymbol (Syntax.Qual () _ (Syntax.Symbol () _)) = True-        isSymbol (Syntax.UnQual () (Syntax.Symbol () _)) = True-        isSymbol _ = False-    x @@ y = Syntax.App () x y--instance IsString Name where-    fromString s-        -- TODO: better handle the case of mixed ident and symbol characters.-        | all isIdentChar s = Syntax.Ident () s-        | otherwise = Syntax.Symbol () s---- | Whether this character belongs to an Ident (e.g., "foo") or a symbol--- (e.g., "<$>").-isIdentChar :: Char -> Bool-isIdentChar c = isAlphaNum c || c `elem` ("_'" :: String)--instance IsString ModuleName where-    fromString = Syntax.ModuleName ()--instance IsString QName where-    fromString f-      -- TODO: support qualified operators (e.g., "Control.Applicative.<$>")-      -- Currently we ignore them due to edge-cases-      -- like the composition operator "Prelude.."-      | isIdentChar (last f), '.' `elem` f-      -- Split "Foo.Bar.baz" into ("Foo.Bar", "baz")-      , (f', '.':f'') <- span (/='.') (reverse f)-            = Syntax.Qual () (fromString $ reverse f'') (fromString $ reverse f')-      | otherwise = Syntax.UnQual () $ fromString f--instance IsString Type where-  fromString fs@(f:_)-      | isUpper f = Syntax.TyCon () $ fromString fs-  fromString fs = Syntax.TyVar () $ fromString fs--instance IsString Exp where-    fromString fs@(f:_)-        -- TODO: this logic isn't correct for qualified names (since the module is-        -- capitalized).  However, it doesn't matter in practice if we're just-        -- generating code.-        | isUpper f = Syntax.Con () $ fromString fs-    fromString fs = Syntax.Var () $ fromString fs--instance IsString Pat where-    fromString = Syntax.PVar () . fromString--instance IsString TyVarBind where-    fromString = Syntax.UnkindedVar () . fromString--instance IsString InstHead where-    fromString = Syntax.IHCon () . fromString---- Helper functions for literal numbers, since haskell-src-exts doesn't--- put parentheses around negative numbers automatically.--litInt :: Integer -> Exp-litInt n-    | n >= 0 = Syntax.Lit () $ Syntax.Int () n (show n)-    | otherwise = Syntax.NegApp () $ litInt $ negate n--litFrac :: Rational -> Exp-litFrac x-    | x >= 0 = Syntax.Lit () $ Syntax.Frac () x (show x)-    | otherwise = Syntax.NegApp () $ litFrac $ negate x--pLitInt :: Integer -> Pat-pLitInt n = Syntax.PLit () sign $ Syntax.Int () n' (show n')-  where-    (n', sign)-        | n >= 0 = (n, Syntax.Signless ())-        | otherwise = (negate n, Syntax.Negative ())--string :: String -> Syntax.Literal ()-string s = Syntax.String () s (show s)--char :: Char -> Syntax.Literal ()-char c = Syntax.Char () c [c]--modifyModuleName :: (String -> String) -> ModuleName -> ModuleName-modifyModuleName f (Syntax.ModuleName _ unpacked) =-  Syntax.ModuleName () $ f unpacked-
− src/Data/ProtoLens/Compiler/Definitions.hs
@@ -1,650 +0,0 @@--- Copyright 2016 Google Inc. All Rights Reserved.------ Use of this source code is governed by a BSD-style--- license that can be found in the LICENSE file or at--- https://developers.google.com/open-source/licenses/bsd---- | This module takes care of collecting all the definitions in a .proto file--- and assigning Haskell names to all of the defined things (messages, enums--- and field names).-{-# LANGUAGE CPP #-}-{-# LANGUAGE DeriveFunctor #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE OverloadedStrings #-}-module Data.ProtoLens.Compiler.Definitions-    ( Env-    , Definition(..)-    , MessageInfo(..)-    , ServiceInfo(..)-    , MethodInfo(..)-    , PlainFieldInfo(..)-    , FieldInfo(..)-    , FieldKind(..)-    , FieldPacking(..)-    , MapEntryInfo(..)-    , OneofInfo(..)-    , OneofCase(..)-    , FieldName(..)-    , Symbol-    , nameFromSymbol-    , promoteSymbol-    , EnumInfo(..)-    , EnumValueInfo(..)-    , EnumUnrecognizedInfo(..)-    , qualifyEnv-    , unqualifyEnv-    , collectDefinitions-    , collectServices-    , definedFieldType-    , definedType-    , camelCase-    , overloadedFieldName-    ) where--import Control.Applicative (liftA2)-import Data.Char (isUpper, toUpper)-import Data.Int (Int32)-import Data.List (mapAccumL)-import qualified Data.Map as Map-import Data.Maybe (fromMaybe)-#if !MIN_VERSION_base(4,11,0)-import Data.Monoid ((<>))-#endif-import qualified Data.Semigroup as Semigroup-import qualified Data.Set as Set-import Data.String (IsString(..))-import Data.Text (Text, cons, splitOn, toLower, uncons, unpack)-import qualified Data.Text as T-import Data.Tree-    ( Tree(..)-    , Forest-    , flatten-    )-import Lens.Family2 ((^.), (^..), toListOf)-import Proto.Google.Protobuf.Descriptor-    ( DescriptorProto-    , EnumDescriptorProto-    , EnumValueDescriptorProto-    , FieldDescriptorProto-    , FieldDescriptorProto'Label(..)-    , FieldDescriptorProto'Type(..)-    , FileDescriptorProto-    , MethodDescriptorProto-    , ServiceDescriptorProto-    )-import Proto.Google.Protobuf.Descriptor_Fields-    ( clientStreaming-    , enumType-    , field-    , inputType-    , label-    , mapEntry-    , maybe'oneofIndex-    , maybe'packed-    , messageType-    , method-    , name-    , nestedType-    , number-    , oneofDecl-    , options-    , outputType-    , package-    , serverStreaming-    , service-    , syntax-    , type'-    , typeName-    , value-    )--import Data.ProtoLens.Compiler.Combinators-    ( Name-    , QName-    , ModuleName-    , Type-    , qual-    , tyPromotedString-    , unQual-    )---- | 'Env' contains a mapping of proto names (as specified in the .proto file)--- to Haskell names.  The keys are fully-qualified names, for example,--- ".package.Message.Submessage".  (The protocol_compiler tool emits all--- message field types in this form, even if they refer to local definitions.)------ The type 'n' can be either a 'Name' (when talking about definitions within--- the current file) or a (qualified) 'QName' (when talking about definitions--- either from this or another file).-type Env n = Map.Map Text (Definition n)--data SyntaxType = Proto2 | Proto3-    deriving (Show, Eq)--fileSyntaxType :: FileDescriptorProto -> SyntaxType-fileSyntaxType f = case f ^. syntax of-    "proto2" -> Proto2-    "proto3" -> Proto3-    "" -> Proto2  -- The proto compiler doesn't set syntax for proto2 files.-    s -> error $ "Unknown syntax type " ++ show s--data Definition n = Message (MessageInfo n) | Enum (EnumInfo n)-    deriving Functor---- | All the information needed to define or use a proto message type.-data MessageInfo n = MessageInfo-    { messageName :: n  -- ^ Haskell type name-    , messageDescriptor :: DescriptorProto-    , messageFields :: [PlainFieldInfo] -- ^ Fields not belonging to a oneof.-    , messageOneofFields :: [OneofInfo]-      -- ^ The oneofs in this message, associated with the fields that-      --   belong to them.-    , messageUnknownFields :: Name-      -- ^ The name of the Haskell field in this message that holds the-      -- unknown fields.-    , groupFieldNumber :: Maybe Int32-      -- ^ The number of the field that holds this message, if it is a group.-    } deriving Functor--data ServiceInfo = ServiceInfo-    { serviceName    :: Text-    , servicePackage :: Text-    , serviceMethods :: [MethodInfo]-    }--data MethodInfo = MethodInfo-    { methodName   :: Text-    , methodIdent  :: Text-    , methodInput  :: Text-    , methodOutput :: Text-    , methodClientStreaming :: Bool-    , methodServerStreaming :: Bool-    }---- | Information about a single field of a proto message,--- associated with how it is stored.-data PlainFieldInfo = PlainFieldInfo-    { plainFieldKind :: FieldKind-    , plainFieldInfo :: FieldInfo-    }---- | Information about a single field of a proto message.-data FieldInfo = FieldInfo-    { fieldDescriptor  :: FieldDescriptorProto-    , fieldName :: FieldName-    }---- | How a field is stored inside of the proto message.-data FieldKind-    = RequiredField-        -- ^ A proto2 required field.  Stored internally as a value.-    | OptionalValueField-        -- ^ A proto3 optional scalar field.  Stored internally as a-        -- value, and defaults to corresponding instance of fieldDefault.-    | OptionalMaybeField-        -- ^ An optional field where the "unset" and "defaulT" values-        -- are distinguishable.  Stored internally as a Maybe.-        -- In particular: proto2 optional fields, proto3 messages,-        -- and "oneof" fields.-    | RepeatedField FieldPacking-        -- ^ A field containing a sequence of values.-        -- Stored internally as either a list or a map, depending on-        -- whether the field's FieldDescriptorProto of the field has-        -- options.map_entry set.-    | MapField MapEntryInfo-       -- ^ A field containing a map of keys to values.-       -- Serialized as a repeated field of an autogenerated "entry"-       -- proto type, each instance of which contains a key-value pair.--data FieldPacking-    = NotPackable  -- ^ Cannot be packed (e.g., strings or messages).-    | Packable     -- ^ Can be decoded as packed, but should not be not be-                   --   encoded as packed by default.-    | Packed       -- ^ Can be decoded as packed, and should be encoded-                   --   as packed by default.-  deriving Eq--data OneofInfo = OneofInfo-    { oneofFieldName :: FieldName-    , oneofTypeName :: Name-      -- ^ The name of the sum type corresponding to this oneof.-    , oneofCases :: [OneofCase]-      -- ^ The individual fields that make up this oneof.-    }--data OneofCase = OneofCase-    { caseField :: FieldInfo-    , caseConstructorName :: Name-        -- ^ The constructor for building a 'oneofTypeName' from the-        -- value in this field.-    , casePrismName :: Name-        -- ^ The name for building 'Prism' definition.-    }---- | The "entry" type for a map field is a proto message, autogenerated by--- protoc, that has two fields: a key and a value. The map field should be--- serialized like a repeated field of the entry messages.-data MapEntryInfo = MapEntryInfo-    { mapEntryTypeName :: Name-        -- ^ The Haskell name for this type.-    , keyField :: FieldInfo-        -- ^ The field of the entry type corresponding to the map key.-    , valueField :: FieldInfo-        -- ^ The field of the entry type corresponding to the map value.-    }--data FieldName = FieldName-    { overloadedName :: Symbol-      -- ^ The overloaded name of lenses that access this field.-      -- For example, if the field is called "foo_bar" in the .proto-      -- then @overloadedName == "fooBar"@ and we might generate-      -- @fooBar@ and/or @maybe'fooBar@ lenses to access the data.-      ---      -- May be shared between two different message data types in the same-      -- module.-    , haskellRecordFieldName :: Name-      -- ^ The Haskell name of this internal record field; for example,-      -- "_Foo'Bar'baz.  Unique within each module.-    }---- | A string that refers to the name (in Haskell) of a lens that accesses a--- field.------ For example, in the signature of the overloaded lens------ @---     foo :: HasLens "foo" ... => Lens ...--- @------ a 'Symbol' is used to construct both the type-level argument to--- @HasLens@ and the name of the function @foo@.-newtype Symbol = Symbol String-    deriving (Eq, Ord, IsString, Semigroup.Semigroup, Monoid)--nameFromSymbol :: Symbol -> Name-nameFromSymbol (Symbol s) = fromString s---- | Construct a promoted, type-level string.-promoteSymbol :: Symbol -> Type-promoteSymbol (Symbol s) = tyPromotedString s---- | All the information needed to define or use a proto enum type.-data EnumInfo n = EnumInfo-    { enumName :: n-    , enumUnrecognized :: Maybe EnumUnrecognizedInfo-    , enumDescriptor :: EnumDescriptorProto-    , enumValues :: [EnumValueInfo n]-    } deriving Functor---- | Information about the "unrecognized" case of an enum.-data EnumUnrecognizedInfo = EnumUnrecognizedInfo-    { unrecognizedName :: Name-    , unrecognizedValueName :: Name-    }---- | Information about a single value case of a proto enum.-data EnumValueInfo n = EnumValueInfo-    { enumValueName :: n-    , enumValueDescriptor :: EnumValueDescriptorProto-    , enumAliasOf :: Maybe Name-        -- ^ If 'Nothing', we turn value into a normal constructor of the enum.-        -- If @'Just' n@, we're treating it as an alias of the constructor @n@-        -- (a PatternSynonym in Haskell).  This mirrors the behavior of the-        -- Java API.-    } deriving Functor--mapEnv :: (n -> n') -> Env n -> Env n'-mapEnv f = fmap $ fmap f---- Lift a set of local definitions into references to a specific module.-qualifyEnv :: ModuleName -> Env Name -> Env QName-qualifyEnv m = mapEnv (qual m)---- Lift a set of local definitions into references to the current module.-unqualifyEnv :: Env Name -> Env QName-unqualifyEnv = mapEnv unQual---- | Look up the Haskell name for the type of a given field (message or enum).-definedFieldType :: FieldDescriptorProto -> Env QName -> Definition QName-definedFieldType fd env = fromMaybe err $ Map.lookup (fd ^. typeName) env-  where-    err = error $ "definedFieldType: Field type " ++ unpack (fd ^. typeName)-                  ++ " not found in environment."---- | Look up the Haskell name for the type of a given type.-definedType :: Text -> Env QName -> Definition QName-definedType ty = fromMaybe err . Map.lookup ty-  where-    err = error $ "definedType: Type " ++ unpack ty-                  ++ " not found in environment."---- | Collect all the definitions in the given file (including definitions--- nested in other messages), and assign Haskell names to them.-collectDefinitions :: FileDescriptorProto -> Env Name-collectDefinitions fd = let-    protoPrefix = case fd ^. package of-        "" -> "."-        p -> "." <> p <> "."-    hsPrefix = ""-    in Map.fromList $ concatMap flatten $-            messageAndEnumDefs (fileSyntaxType fd)-                protoPrefix hsPrefix Map.empty-                (fd ^. messageType) (fd ^. enumType)--collectServices :: FileDescriptorProto -> [ServiceInfo]-collectServices fd = fmap (toServiceInfo $ fd ^. package) $ fd ^. service-  where-    toServiceInfo :: Text -> ServiceDescriptorProto -> ServiceInfo-    toServiceInfo pkg sd =-        ServiceInfo-            { serviceName    = sd ^. name-            , servicePackage = pkg-            , serviceMethods = fmap toMethodInfo $ sd ^. method-            }--    toMethodInfo :: MethodDescriptorProto -> MethodInfo-    toMethodInfo md =-        MethodInfo-            { methodName   = md ^. name-            , methodIdent  = camelCase $ md ^. name-            , methodInput  = fromString . T.unpack $ md ^. inputType-            , methodOutput = fromString . T.unpack $ md ^. outputType-            , methodClientStreaming = md ^. clientStreaming-            , methodServerStreaming = md ^. serverStreaming-            }--messageAndEnumDefs ::-    SyntaxType -> Text -> String-    -> GroupMap-        -- ^ Group fields of the parent message (if any).-    -> [DescriptorProto]-    -> [EnumDescriptorProto]-    -> Forest (Text, Definition Name)-        -- ^ Organized as a list of trees, to make it possible for callers-        -- to get the immediate child nested types.-messageAndEnumDefs syntaxType protoPrefix hsPrefix groups messages enums-    = map (messageDefs syntaxType protoPrefix hsPrefix groups) messages-        ++ map-            (flip Node [] -- Enums have no sub-definitions-                . enumDef syntaxType protoPrefix hsPrefix)-            enums---- | Generate the definitions for a message and its nested types (if any).-messageDefs :: SyntaxType -> Text -> String -> GroupMap -> DescriptorProto-            -> Tree (Text, Definition Name)-messageDefs syntaxType protoPrefix hsPrefix groups d-    = Node (protoName, thisDef) subDefs-  where-    protoName = protoPrefix <> d ^. name-    hsPrefix' = hsPrefix ++ hsName (d ^. name) ++ "'"-    allFields = groupFieldsByOneofIndex (d ^. field)-    thisDef =-        Message MessageInfo-            { messageName = fromString $ hsPrefix ++ hsName (d ^. name)-            , messageDescriptor = d-            , messageFields =-                  map (liftA2 PlainFieldInfo-                              (fieldKind syntaxType mapEntries) (fieldInfo hsPrefix'))-                      $ Map.findWithDefault [] Nothing allFields-            , messageOneofFields = collectOneofFields hsPrefix' d allFields-            , messageUnknownFields =-                  fromString $ "_" ++ hsPrefix' ++ "_unknownFields"-            , groupFieldNumber = Map.lookup protoName groups-            }-    subDefs = messageAndEnumDefs-                    syntaxType-                    (protoName <> ".")-                    hsPrefix'-                    (collectGroupFields $ d ^. field)-                    (d ^. nestedType)-                    (d ^. enumType)-    -- For efficiency, only look for map entries within the immediate-    -- nested types, rather than recursively searching through all of them.-    mapEntries = collectMapEntries $ map rootLabel subDefs---- | If this type is a map entry, retrieves the relevant information--- along with the proto name of this type.-mapEntryInfo :: Definition Name -> Maybe MapEntryInfo-mapEntryInfo (Message m)-    | messageDescriptor m ^. options . mapEntry-    , [keyFd, valueFd] <- messageFields m-    = Just MapEntryInfo-                { mapEntryTypeName = messageName m-                , keyField = plainFieldInfo keyFd-                , valueField = plainFieldInfo valueFd-                }-mapEntryInfo _ = Nothing---- | Returns a map whose keys are the proto type name of the entry message.-collectMapEntries :: [(Text, Definition Name)] -> Map.Map Text MapEntryInfo-collectMapEntries defs =-    Map.fromList-        [(protoName, e) | (protoName, d) <- defs, Just e <- [mapEntryInfo d]]---- | A map whose keys are the proto type names of the groups in a message,--- and values are the field numbers for those groups.--- (Every group corresponds to exactly one message field.)-type GroupMap = Map.Map Text Int32--collectGroupFields :: [FieldDescriptorProto] -> GroupMap-collectGroupFields fs = Map.fromList-    [ (f ^. typeName, f ^. number)-    | f <- fs-    , f ^. type' == FieldDescriptorProto'TYPE_GROUP-      ]--fieldInfo :: String -> FieldDescriptorProto -> FieldInfo-fieldInfo hsPrefix f = FieldInfo-                            { fieldDescriptor = f-                            , fieldName = mkFieldName hsPrefix $ f ^. name-                            }--fieldKind ::-    SyntaxType -> Map.Map Text MapEntryInfo -> FieldDescriptorProto-    -> FieldKind-fieldKind syntaxType mapEntries f = case f ^. label of-            FieldDescriptorProto'LABEL_OPTIONAL-                | syntaxType == Proto3-                    && f ^. type' /= FieldDescriptorProto'TYPE_MESSAGE-                    -> OptionalValueField-                | otherwise -> OptionalMaybeField-            FieldDescriptorProto'LABEL_REQUIRED -> RequiredField-            FieldDescriptorProto'LABEL_REPEATED-                | Just entryInfo <- Map.lookup (f ^. typeName) mapEntries-                    -> MapField entryInfo-                | otherwise -> RepeatedField packed-  where-    packed-        | f ^. type' `elem` unpackableTypes = NotPackable-        | packedByDefault = Packed-        | otherwise = Packable-    -- If the "packed" attribute isn't set, then default to packed if proto3.-    -- Unfortunately, protoc doesn't implement this logic for us automatically.-    packedByDefault = fromMaybe (syntaxType == Proto3)-                        $ f ^. options . maybe'packed-    unpackableTypes =-        [ FieldDescriptorProto'TYPE_MESSAGE-        , FieldDescriptorProto'TYPE_GROUP-        , FieldDescriptorProto'TYPE_STRING-        , FieldDescriptorProto'TYPE_BYTES-        ]--collectOneofFields-    :: String -> DescriptorProto -> Map.Map (Maybe Int32) [FieldDescriptorProto]-    -> [OneofInfo]-collectOneofFields hsPrefix d allFields-    = zipWith oneofInfo [0..] $ d ^.. oneofDecl . traverse . name-  where-    oneofInfo idx n = OneofInfo-        { oneofFieldName = mkFieldName hsPrefix n-        , oneofTypeName = fromString $ hsPrefix ++ hsNameUnique subdefTypes n-        , oneofCases = map oneofCase-                          $ Map.findWithDefault [] (Just idx)-                              allFields-        }-    oneofCase f =-        let consName = hsPrefix ++ hsNameUnique subdefCons (f ^. name)-        in OneofCase-            { caseField = fieldInfo hsPrefix f-            , caseConstructorName =-                  -- Note: oneof case constructors aren't prefixed-                  -- by the oneof name; field names (even inside-                  -- of a oneof) are unique within a message.-                  fromString consName-            , casePrismName =-                  fromString $ "_" ++ consName-            }-    -- Make a name that doesn't overlap with those already defined by submessages-    -- or subenums.-    hsNameUnique ns n-        | n' `elem` ns = n' ++ "'"-        | otherwise = n'-      where-        n' = hsName $ camelCase n-    -- The Haskell "type" namespace-    subdefTypes = Set.fromList $ map hsName-                    $ toListOf (nestedType . traverse . name) d-                    ++ toListOf (enumType . traverse . name) d-    -- The Haskell "expression" namespace (i.e., constructors)-    subdefCons = Set.fromList $ map hsName-                    $ toListOf (nestedType . traverse . name) d-                    ++ toListOf (enumType . traverse . value . traverse . name) d---- | Group fields by the index of the oneof field that they belong to.--- (Or 'Nothing' if they don't belong to a oneof.)-groupFieldsByOneofIndex-    :: [FieldDescriptorProto] -> Map.Map (Maybe Int32) [FieldDescriptorProto]-groupFieldsByOneofIndex =-    fmap reverse-    . Map.fromListWith (++)-    . fmap (\f -> (f ^. maybe'oneofIndex, [f]))--hsName :: Text -> String-hsName = unpack . capitalize--mkFieldName :: String -> Text -> FieldName-mkFieldName hsPrefix n = FieldName-                    { overloadedName = fromString n'-                    , haskellRecordFieldName = fromString $ "_" ++ hsPrefix ++ n'-                    }-      where-        n' = fieldBaseName n---- | Get the name in Haskell of a proto field, taking care of camel casing and--- clashes with language keywords.  Doesn't handle the name prefix of the--- containing type.-fieldBaseName :: Text -> String-fieldBaseName = unpack . disambiguate . camelCase-  where-    disambiguate s-        | s `Set.member` reservedKeywords = s <> "'"-        | otherwise = s--camelCase :: Text -> Text-camelCase s =-    -- Preserve any initial underlines (e.g., "_foo_bar" -> "_fooBar").-    let (underlines, rest) = T.span (== '_') s-    in case splitOn "_" rest of-        -- splitOn always returns a list with at least one element.-        [] -> error $ "camelCase: splitOn returned empty list: "-                        ++ show rest-        [""] -> error $ "camelCase: name consists only of underscores: "-                            ++ show s-        s':ss -> T.concat $ underlines : lowerInitialChars s' : map capitalize ss---- | Lower-case all initial upper-case characters.--- For example: "Foo" -> "foo", "FooBar" -> "fooBar", "FOObar" -> "foobar"-lowerInitialChars :: Text -> Text-lowerInitialChars s = toLower pre <> post-  where (pre, post) = T.span isUpper s---- | A list of reserved keywords that aren't valid as variable names.-reservedKeywords :: Set.Set Text-reservedKeywords = Set.fromList $-    -- Haskell2010 keywords:-    -- https://www.haskell.org/onlinereport/haskell2010/haskellch2.html#x7-180002.4-    -- We don't include keywords that are allowed to be variable names,-    -- in particular: "as", "forall", and "hiding".-    [ "case"-    , "class"-    , "data"-    , "default"-    , "deriving"-    , "do"-    , "else"-    , "foreign"-    , "if"-    , "import"-    , "in"-    , "infix"-    , "infixl"-    , "infixr"-    , "instance"-    , "let"-    , "module"-    , "newtype"-    , "of"-    , "then"-    , "type"-    , "where"-    ]-    ++  -- Nonstandard extensions-    [ "mdo"   -- RecursiveDo-    , "rec"   -- Arrows, RecursiveDo-    , "pattern"  -- PatternSynonyms-    , "proc"  -- Arrows-    ]---- | Generate the definition for an enum type.-enumDef :: SyntaxType -> Text -> String -> EnumDescriptorProto-          -> (Text, Definition Name)-enumDef syntaxType protoPrefix hsPrefix d = let-    mkText n = protoPrefix <> n-    mkHsName n = fromString $ hsPrefix ++ case hsName n of-      ('_':xs) -> 'X':xs-      xs       -> xs-    in (mkText (d ^. name)-       , Enum EnumInfo-            { enumName = mkHsName (d ^. name)-            , enumUnrecognized = if syntaxType == Proto2-                    then Nothing-                    else Just EnumUnrecognizedInfo-                            { unrecognizedName-                                = mkHsName (d ^. name <> "'Unrecognized")-                            , unrecognizedValueName-                                = mkHsName (d ^. name <> "'UnrecognizedValue")-                            }-            , enumDescriptor = d-            , enumValues = collectEnumValues mkHsName $ d ^. value-            })---- | Generate the definitions for each enum value.  In particular, decide--- whether it's a true constructor or a PatternSynonym to another--- constructor.------ Like Java, we treat the first case of each numeric value as the "real"--- constructor, and subsequent cases as synonyms.-collectEnumValues :: (Text -> Name) -> [EnumValueDescriptorProto]-                  -> [EnumValueInfo Name]-collectEnumValues mkHsName = snd . mapAccumL helper Map.empty-  where-    helper :: Map.Map Int32 Name -> EnumValueDescriptorProto-           -> (Map.Map Int32 Name, EnumValueInfo Name)-    helper seenNames v-        | Just n' <- Map.lookup k seenNames = (seenNames, mkValue (Just n'))-        | otherwise = (Map.insert k n seenNames, mkValue Nothing)-      where-        mkValue = EnumValueInfo n v-        n = mkHsName (v ^. name)-        k = v ^. number---- Haskell types must start with an uppercase letter, so we capitalize message--- and enum names.--- Name collisions will show up as build errors in the generated haskell file.-capitalize :: Text -> Text-capitalize s-    | Just (c, s') <- uncons s = cons (toUpper c) s'-    | otherwise = s--overloadedFieldName :: FieldInfo -> Symbol-overloadedFieldName = overloadedName . fieldName
− src/Data/ProtoLens/Compiler/Generate.hs
@@ -1,1030 +0,0 @@--- Copyright 2016 Google Inc. All Rights Reserved.------ Use of this source code is governed by a BSD-style--- license that can be found in the LICENSE file or at--- https://developers.google.com/open-source/licenses/bsd---- | This module builds the actual, generated Haskell file--- for a given input .proto file.-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE OverloadedStrings #-}-module Data.ProtoLens.Compiler.Generate(-    generateModule,-    ModifyImports,-    reexported,-    ) where---import Control.Arrow (second)-import qualified Data.Foldable as F-import qualified Data.List as List-import qualified Data.Map as Map-import Data.Maybe (isJust)-import Data.Monoid ((<>))-import Data.Ord (comparing)-import qualified Data.Set as Set-import Data.String (fromString)-import Data.Text (unpack)-import qualified Data.Text as T-import Data.Tuple (swap)-import Lens.Family2 ((^.))-import Text.Printf (printf)--import Proto.Google.Protobuf.Descriptor-    ( EnumValueDescriptorProto-    , FieldDescriptorProto-    , FieldDescriptorProto'Type(..)-    )-import Proto.Google.Protobuf.Descriptor_Fields-    ( defaultValue-    , name-    , number-    , type'-    , typeName-    )--import Data.ProtoLens.Compiler.Combinators-import Data.ProtoLens.Compiler.Definitions-import Data.ProtoLens.Compiler.Generate.Encoding-import Data.ProtoLens.Compiler.Generate.Field-    ( hsFieldType-    , hsFieldVectorType-    )---- Whether to import the "Runtime" modules or the originals;--- e.g., Data.ProtoLens.Runtime.Data.Map vs Data.Map.-data UseRuntime = UseRuntime | UseOriginal-    deriving (Eq, Read)---- | Generate a Haskell module for the given input file(s).--- input contains all defined names, incl. those in this module-generateModule :: ModuleName-               -> [ModuleName]  -- ^ The imported modules-               -> ModifyImports-               -> Env Name      -- ^ Definitions in this file-               -> Env QName     -- ^ Definitions in the imported modules-               -> [ServiceInfo]-               -> [Module]-generateModule modName imports modifyImport definitions importedEnv services-    = [ Module modName-                (Just $ (serviceExports ++) $ concatMap generateExports $ Map.elems definitions)-                pragmas-                (mainImports ++ sharedImports)-          $ (concatMap generateDecls $ Map.toList definitions)-         ++ map uncommented (concatMap (generateServiceDecls env) services)-      , Module fieldModName-                Nothing-                pragmas-                sharedImports-          . map uncommented-          $ concatMap generateFieldDecls allLensNames-      ]-  where-    fieldModName = modifyModuleName (++ "_Fields") modName-    pragmas =-          [ languagePragma $ map fromString-              ["ScopedTypeVariables", "DataKinds", "TypeFamilies",-               "UndecidableInstances", "GeneralizedNewtypeDeriving",-               "MultiParamTypeClasses", "FlexibleContexts", "FlexibleInstances",-               "PatternSynonyms", "MagicHash", "NoImplicitPrelude",-               "DataKinds", "BangPatterns", "TypeApplications"]-              -- Allow unused imports in case we don't import anything from-              -- Data.Text, Data.Int, etc.-          , optionsGhcPragma "-fno-warn-unused-imports"-          -- haskell-src-exts doesn't support exporting `Foo(..., A, B)`-          -- in a single entry, so we use two: `Foo(..)` and `Foo(A, B)`.-          , optionsGhcPragma "-fno-warn-duplicate-exports"-          ]-    mainImports = map (modifyImport . importSimple)-                    [ "Control.DeepSeq", "Data.ProtoLens.Prism" ]-    sharedImports = map (modifyImport . importSimple)-              [ "Prelude", "Data.Int", "Data.Monoid", "Data.Word"-              , "Data.ProtoLens"-              , "Data.ProtoLens.Encoding.Bytes"-              , "Data.ProtoLens.Encoding.Growing"-              , "Data.ProtoLens.Encoding.Parser.Unsafe"-              , "Data.ProtoLens.Encoding.Wire"-              , "Data.ProtoLens.Field"-              , "Data.ProtoLens.Message.Enum"-              , "Data.ProtoLens.Service.Types"-              , "Lens.Family2", "Lens.Family2.Unchecked"-              , "Data.Text",  "Data.Map", "Data.ByteString", "Data.ByteString.Char8"-              , "Data.Text.Encoding"-              , "Data.Vector"-              , "Data.Vector.Generic"-              , "Data.Vector.Unboxed"-              , "Text.Read"-              ]-            ++ map importSimple imports-    env = Map.union (unqualifyEnv definitions) importedEnv-    generateDecls (protoName, Message m)-        = generateMessageDecls fieldModName env (stripDotPrefix protoName) m-       ++ map uncommented (concatMap (generatePrisms env) (messageOneofFields m))-    generateDecls (_, Enum e) = map uncommented $ generateEnumDecls e-    generateExports (Message m) = generateMessageExports m-                               ++ concatMap generatePrismExports (messageOneofFields m)-    generateExports (Enum e) = generateEnumExports e-    serviceExports = fmap generateServiceExports services-    allLensNames = F.toList $ Set.fromList-        [ lensSymbol inst-        | Message m <- Map.elems definitions-        , info <- allMessageFields env m-        , inst <- recordFieldLenses info-        ]-    -- The Env uses the convention that Message names are prefixed with '.'-    -- (since that's how the FileDescriptorProto refers to them).-    -- Strip that off when defining MessageDescriptor.messageName.-    stripDotPrefix s-        | Just ('.', s') <- T.uncons s = s'-        | otherwise = s--allMessageFields :: Env QName -> MessageInfo Name -> [RecordField]-allMessageFields env info =-    map (plainRecordField env) (messageFields info)-        ++ map (oneofRecordField env) (messageOneofFields info)--importSimple :: ModuleName -> ImportDecl ()-importSimple m = ImportDecl-    { importAnn = ()-    , importModule = m-    -- Import qualified to avoid clashes with names defined in this module.-    , importQualified = True-    , importSrc = False-    , importSafe = False-    , importPkg = Nothing-    , importAs = Nothing-    , importSpecs = Nothing-    }--type ModifyImports = ImportDecl () -> ImportDecl ()--reexported :: ModifyImports-reexported imp@ImportDecl {importModule = m}-    = imp { importAs = Just m, importModule = m' }-  where-    m' = fromString $ "Data.ProtoLens.Runtime." ++ prettyPrint m--messageComment :: ModuleName -> Name -> [RecordField] -> String-messageComment fieldModName n fields = unlines-    $ ["Fields :", ""]-        ++ map item (concatMap recordFieldLenses fields)-  where-    item :: LensInstance -> String-    item l = (printf "    * '%s.%s' @:: %s@"-                 (prettyPrint fieldModName)-                 (prettyPrint $ nameFromSymbol $ lensSymbol l)-                 (prettyPrint $ "Lens'" @@ t @@ (lensFieldType l)))-    t = tyCon (unQual n)--generateMessageExports :: MessageInfo Name -> [ExportSpec]-generateMessageExports m =-    -- Hide the message contructor, but expose "oneof" case constructors.-    exportWith (unQual $ messageName m) []-        : map (exportAll . unQual . oneofTypeName)-                (messageOneofFields m)--generateServiceDecls :: Env QName -> ServiceInfo -> [Decl]-generateServiceDecls env si =-    -- data MyService = MyService-    [ dataDecl serverDataName-      [ recDecl serverDataName []-      ]-      $ deriving' []-    ] ++-    -- instance Data.ProtoLens.Service.Types.Service MyService where-    --     type ServiceName    MyService = "myService"-    --     type ServicePackage MyService = "some.package"-    --     type ServiceMethods MyService = '["normalMethod", "streamingMethod"]-    [ instDeclWithTypes [] ("Data.ProtoLens.Service.Types.Service" `ihApp` [serverRecordType])-        [ instType ("ServiceName" @@ serverRecordType)-                 . tyPromotedString . T.unpack $ serviceName si-        , instType ("ServicePackage" @@ serverRecordType)-                 . tyPromotedString . T.unpack $ servicePackage si-        , instType ("ServiceMethods" @@ serverRecordType)-                 $ tyPromotedList-                      [ tyPromotedString . T.unpack $ methodIdent m-                      | m <- List.sortBy (comparing methodIdent) $ serviceMethods si-                      ]-        ]-    ] ++-    -- instance Data.ProtoLens.Service.Types.HasMethodImpl MyService "normalMethod" where-    --     type MethodInput       MyService "normalMethod" = Foo-    --     type MethodOutput      MyService "normalMethod" = Bar-    --     type IsClientStreaming MyService "normalMethod" = 'False-    --     type IsServerStreaming MyService "normalMethod" = 'False-    [ instDeclWithTypes [] ("Data.ProtoLens.Service.Types.HasMethodImpl" `ihApp` [serverRecordType, instanceHead])-        [ instType ("MethodName" @@ serverRecordType @@ instanceHead)-                 . tyPromotedString . T.unpack $ methodName m-        , instType ("MethodInput" @@ serverRecordType @@ instanceHead)-                 . lookupType $ methodInput m-        , instType ("MethodOutput" @@ serverRecordType @@ instanceHead)-                 . lookupType $ methodOutput m-        , instType ("MethodStreamingType" @@ serverRecordType @@ instanceHead)-                 . tyPromotedCon-                 $ case (methodClientStreaming m, methodServerStreaming m) of-                     (False, False) -> "Data.ProtoLens.Service.Types.NonStreaming"-                     (True,  False) -> "Data.ProtoLens.Service.Types.ClientStreaming"-                     (False, True)  -> "Data.ProtoLens.Service.Types.ServerStreaming"-                     (True,  True)  -> "Data.ProtoLens.Service.Types.BiDiStreaming"-        ]-    | m <- serviceMethods si-    , let instanceHead = tyPromotedString (T.unpack $ methodIdent m)-    ]-  where-    serverDataName = fromString . T.unpack $ serviceName si-    serverRecordType = tyCon $ unQual serverDataName--    lookupType t = case definedType t env of-                       Message msg -> tyCon $ messageName msg-                       Enum _ -> error "Service must have a message type"---generateMessageDecls :: ModuleName -> Env QName -> T.Text -> MessageInfo Name -> [CommentedDecl]-generateMessageDecls fieldModName env protoName info =-    -- data Bar = Bar {-    --    foo :: Baz-    -- }-    [ commented (messageComment fieldModName (messageName info) allFields)-        $ dataDecl dataName-            [recDecl dataName $-                      [ (recordFieldName f, recordFieldType f)-                      | f <- allFields-                      ]-                      ++ [(messageUnknownFields info, "Data.ProtoLens.FieldSet")]-            ]-            $ deriving' ["Prelude.Eq", "Prelude.Ord"]-    -- instance Show Bar where-    --   showsPrec __x __s = showChar '{' (showString (showMessageShort __x) (showChar '}' s))-    , uncommented $-        instDecl [] ("Prelude.Show" `ihApp` [dataType])-            [[match "showsPrec" ["_", "__x", "__s"]-                $ "Prelude.showChar" @@ charExp '{'-                    @@ ("Prelude.showString" @@ ("Data.ProtoLens.showMessageShort" @@ "__x")-                        @@ ("Prelude.showChar" @@ charExp '}' @@ "__s"))]]-    ] ++-    -- oneof field data type declarations-    -- proto: message Foo {-    --          oneof bar {-    --            float c = 1;-    --            Sub s = 2;-    --          }-    --        }-    -- haskell: data Foo'Bar = Foo'Bar'c !Prelude.Float-    --                       | Foo'Bar's !Sub-    [ uncommented $ dataDecl (oneofTypeName oneofInfo)-      [ conDecl consName [hsFieldType env f]-      | c <- oneofCases oneofInfo-      , let f = caseField c-      , let consName = caseConstructorName c-      ]-      $ deriving' ["Prelude.Show", "Prelude.Eq", "Prelude.Ord"]-    | oneofInfo <- messageOneofFields info-    ] ++-    -- instance HasField Foo "foo" Bar-    --   fieldOf _ = ...-    -- Note: for optional fields, this generates an instance both for "foo" and-    -- for "maybe'foo" (see plainRecordField below).-    [ uncommented $ instDecl []-        ("Data.ProtoLens.Field.HasField" `ihApp`-            [dataType, sym, tyParen t])-            [[match "fieldOf" [pWildCard] $-                "Prelude.."-                    @@ rawFieldAccessor (unQual $ recordFieldName li)-                    @@ lensExp i]]-    | li <- allFields-    , i <- recordFieldLenses li-    , let t = lensFieldType i-    , let sym = promoteSymbol $ lensSymbol i-    ]-    ++-    -- instance Message.Message Bar where-    [ uncommented $ instDecl [] ("Data.ProtoLens.Message" `ihApp` [dataType])-        $ messageInstance env protoName info-    -- instance NFData Bar where-    , uncommented $ instDecl [] ("Control.DeepSeq.NFData" `ihApp` [dataType])-        [[match "rnf" [] $ messageRnfExpr info]]-    ] ++-    -- instance NFData Foo'Bar where-    [ uncommented $-        instDecl [] ("Control.DeepSeq.NFData" `ihApp`-                        [tyCon $ unQual $ oneofTypeName o])-        [map oneofRnfMatch $ oneofCases o]-    | o <- messageOneofFields info-    ]-  where-    dataType = tyCon $ unQual dataName-    dataName = messageName info-    allFields = allMessageFields env info---- oneof Prism declarations--- proto: message Foo {---          oneof bar {---            float c = 1;---            Sub s = 2;---          }---        }--- haskell: _Foo'C :: Prism' Bar'C Float---          _Foo'S :: Prism' Bar'S Sub------  example of the function definition for _Foo'C:--- _Foo'C :: Prism' Bar'C Float--- _Foo'C---   = prism' Bar'C---       (\ p__ ->---          case p__ of---              Bar'C p__val -> Prelude.Just p__val---              _otherwise -> Prelude.Nothing)-generatePrisms :: Env QName -> OneofInfo -> [Decl]-generatePrisms env oneofInfo =-    if length cases > 1-       then concatMap (generatePrism altOtherwise) cases-       else concatMap (generatePrism mempty) cases-    where-        cases = oneofCases oneofInfo-        altOtherwise = [ "_otherwise" --> "Prelude.Nothing" ]--        -- Generate type signature-        -- e.g. Prism' Bar'C Float-        generateTypeSig f funName =-            typeSig [funName] $ "Data.ProtoLens.Prism.Prism'"-                                -- The oneof sum type name-                             @@ (tyCon . unQual $ oneofTypeName oneofInfo)-                                -- The field contained in the sum-                             @@ (hsFieldType env f)-        -- Generate function definition-        -- Prism' is constructed with Constructor for building value-        -- and Deconstructor and wrapping in Just for getting value-        generateFunDef otherwiseCase consName =-               "Data.ProtoLens.Prism.prism'"-               -- Sum type constructor-            @@ con (unQual consName)-               -- Case deconstruction-            @@ (lambda ["p__"] $-                    case' "p__" $-                        [ pApp (unQual consName) ["p__val"]-                              --> "Prelude.Just" @@ "p__val"-                        ]-                       -- We want to generate the otherwise case-                       -- depending on the amount of sum type cases there are-                       ++ otherwiseCase-               )-        generatePrism :: [Alt] -> OneofCase -> [Decl]-        generatePrism otherwiseCase oneofCase =-            let consName = caseConstructorName oneofCase-                prismName = casePrismName oneofCase-            in [ generateTypeSig (caseField oneofCase) prismName-               , funBind [ match prismName [] $ generateFunDef otherwiseCase consName ]-               ]--generatePrismExports :: OneofInfo -> [ExportSpec]-generatePrismExports = map (exportVar . unQual . casePrismName) . oneofCases--generateEnumExports :: EnumInfo Name -> [ExportSpec]-generateEnumExports e = [exportAll n, exportWith n aliases] ++ proto3NewType-  where-    n = unQual $ enumName e-    aliases = [enumValueName v | v <- enumValues e, needsManualExport v]-    needsManualExport v = isJust (enumAliasOf v)-    proto3NewType = case enumUnrecognized e of-        Just u -> [exportVar . unQual $ unrecognizedValueName u]-        Nothing -> []--generateServiceExports :: ServiceInfo -> ExportSpec-generateServiceExports si = exportAll $ unQual $ fromString $ T.unpack $ serviceName si--generateEnumDecls :: EnumInfo Name -> [Decl]-generateEnumDecls info =-    -- Proto3-only:-    -- newtype FooEnum'UnrecognizedValue = FooEnum'UnrecognizedValue Data.Int.Int32-    --   deriving (Prelude.Eq, Prelude.Ord, Prelude.Show, Prelude.Read)-    [ newtypeDecl (unrecognizedValueName u)-       "Data.Int.Int32"-        $ deriving' ["Prelude.Eq", "Prelude.Ord", "Prelude.Show"]-    | Just u <- [unrecognized]-    ]-    ++--    -- data FooEnum-    --     = Enum1-    --     | Enum2-    --     | FooEnum'Unrecognized !FooEnum'UnrecognizedValue-    --   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord, Prelude.Read)-    [ dataDecl dataName-        (  (flip conDecl [] <$> constructorNames)-        ++ [ conDecl (unrecognizedName u) [tyCon $ unQual (unrecognizedValueName u)]-           | Just u <- [unrecognized]-           ]-        )-        $ deriving' ["Prelude.Show", "Prelude.Eq", "Prelude.Ord"]--    -- instance Data.ProtoLens.MessageEnum FooEnum where-    --       maybeToEnum 0 = Prelude.Just Enum1-    --       maybeToEnum 3 = Prelude.Just Enum2-    --       maybeToEnum k-    --         -- Proto3:-    --         = Prelude.Just-    --             (FooEnum'Unrecognized-    --               (FooEnum'UnrecognizedValue (Prelude.fromIntegral k)))-    --         -- Proto2:-    --         = Nothing-    ---    --       showEnum Foo'Enum2 = "Enum2"-    --       showEnum Foo'Enum1 = "Enum1"-    --       showEnum (FooEnum'Unrecognized (FooEnum'UnrecognizedValue k))-    --         = Prelude.show k-    ---    --       readEnum k-    --           | k == "Enum2a" = Prelude.Just Enum2a -- alias-    --           | k == "Enum2" = Prelude.Just Enum2-    --           | k == "Enum1" = Prelude.Just Enum1-    --       readEnum k = Text.Read.readMaybe k >>= maybeToEnum-    , instDecl [] ("Data.ProtoLens.MessageEnum" `ihApp` [dataType])-        [ [ match "maybeToEnum" [pLitInt k] $ "Prelude.Just" @@ con (unQual c)-          | (c, k) <- constructorNumbers-          ]-          ++-          [ case enumUnrecognized info of-              Nothing -> match "maybeToEnum" [pWildCard] "Prelude.Nothing"-              Just u -> match "maybeToEnum" ["k"]-                          $ "Prelude.Just" @@-                            (con (unQual $ unrecognizedName u)-                              @@ (con (unQual $ unrecognizedValueName u)-                                  @@ ("Prelude.fromIntegral" @@ "k")-                                 )-                            )-          ]-        , [ match "showEnum" [pApp (unQual n) []]-              $ stringExp pn-          | v <- filter (null . enumAliasOf) $ enumValues info-          , let n = enumValueName v-          , let pn = T.unpack $ enumValueDescriptor v ^. name-          ] ++-          [ match "showEnum" [pApp (unQual $ unrecognizedName u)-                              [pApp (unQual $ unrecognizedValueName u) [pVar "k"]]-                            ]-                  $ "Prelude.show" @@ "k"-          | Just u <- [unrecognized]-          ]-        , [ guardedMatch "readEnum" [pVar "k"]-              [ ("Prelude.==" @@ "k" @@ stringExp pn, "Prelude.Just" @@ con (unQual n))-              | v <- enumValues info-              , let n = enumValueName v-              , let pn = T.unpack $ enumValueDescriptor v ^. name-              ]-          , match "readEnum" [pVar "k"] $ "Prelude.>>="-                                      @@ ("Text.Read.readMaybe" @@ "k")-                                      @@ "Data.ProtoLens.maybeToEnum"]-        ]--      -- instance Bounded Foo where-      --    minBound = Foo1-      --    maxBound = FooN-      , instDecl [] ("Prelude.Bounded" `ihApp` [dataType])-          [[ match "minBound" [] $ con $ unQual minBoundName-          , match "maxBound" [] $ con $ unQual maxBoundName-          ]]--      -- instance Enum Foo where-      --    toEnum k = maybe (error ("Foo.toEnum: unknown argument for enum Foo: "-      --                                ++ show k))-      --                  id (maybeToEnum k)-      --    fromEnum Foo1 = 1-      --    fromEnum Foo2 = 2-      --    ..-      --    succ FooN = error "Foo.succ: bad argument FooN."-      --    succ Foo1 = Foo2-      --    succ Foo2 = Foo3-      --    ..-      --    pred Foo1 = error "Foo.succ: bad argument Foo1."-      --    pred Foo2 = Foo1-      --    pred Foo3 = Foo2-      --    ..-      --    enumFrom = messageEnumFrom-      --    enumFromTo = messageEnumFromTo-      --    enumFromThen = messageEnumFromThen-      --    enumFromThenTo = messageEnumFromThenTo-      , instDecl [] ("Prelude.Enum" `ihApp` [dataType])-        [[match "toEnum" ["k__"]-                  $ "Prelude.maybe" @@ errorMessageExpr @@ "Prelude.id"-                        @@ ("Data.ProtoLens.maybeToEnum" @@ "k__")]-        , [ match "fromEnum" [pApp (unQual c) []] $ litInt k-          | (c, k) <- constructorNumbers-          ]-          ++-          [ match "fromEnum" [pApp (unQual $ unrecognizedName u)-                              [pApp (unQual $ unrecognizedValueName u) [pVar "k"]]-                            ]-                  $ "Prelude.fromIntegral" @@ "k"-          | Just u <- [unrecognized]-          ]-        , succDecl "succ" maxBoundName succPairs-        , succDecl "pred" minBoundName $ map swap succPairs-        , alias "enumFrom" "Data.ProtoLens.Message.Enum.messageEnumFrom"-        , alias "enumFromTo" "Data.ProtoLens.Message.Enum.messageEnumFromTo"-        , alias "enumFromThen" "Data.ProtoLens.Message.Enum.messageEnumFromThen"-        , alias "enumFromThenTo"-            "Data.ProtoLens.Message.Enum.messageEnumFromThenTo"-        ]--    -- instance Data.ProtoLens.FieldDefault Foo where-    --   fieldDefault = FirstEnumValue-    , instDecl [] ("Data.ProtoLens.FieldDefault" `ihApp` [dataType])-        [[match "fieldDefault" [] defaultCon]]--    -- instance NFData Foo where-    --   rnf x__ = seq x__ ()-    -- (Trivial since enum types are already strict)-    , instDecl [] ("Control.DeepSeq.NFData" `ihApp` [dataType])-        [[ match "rnf" ["x__"] $ "Prelude.seq" @@ "x__" @@ "()" ]]-    ] ++--    -- pattern Enum2a :: FooEnum-    -- pattern Enum2a = Enum2-    concat-        [ [ patSynSig aliasName dataType-          , patSyn (pVar aliasName) (pVar originalName)-          ]-        | EnumValueInfo-            { enumValueName = aliasName-            , enumAliasOf = Just originalName-            } <- enumValues info-        ]--  where-    EnumInfo { enumName = dataName-             , enumUnrecognized = unrecognized-             , enumDescriptor = ed-             } = info-    errorMessage = "toEnum: unknown value for enum " ++ unpack (ed ^. name)-                      ++ ": "--    errorMessageExpr = "Prelude.error"-                          @@ ("Prelude.++" @@ stringExp errorMessage-                              @@ ("Prelude.show" @@ "k__"))-    alias funName implName = [match funName [] implName]--    dataType = tyCon $ unQual dataName--    constructors :: [(Name, EnumValueDescriptorProto)]-    constructors = List.sortBy (comparing ((^. number) . snd))-                            [(n, d) | EnumValueInfo-                                { enumValueName = n-                                , enumValueDescriptor = d-                                , enumAliasOf = Nothing-                                } <- enumValues info-                            ]-    constructorNames = map fst constructors--    defaultCon = con $ unQual $ head constructorNames--    minBoundName = head constructorNames-    maxBoundName = last constructorNames--    constructorNumbers = map (second (fromIntegral . (^. number))) constructors--    succPairs = zip constructorNames $ tail constructorNames-    succDecl funName boundName thePairs =-        match funName [pApp (unQual boundName) []]-            ("Prelude.error" @@ stringExp (concat-                [ prettyPrint dataName, ".", prettyPrint funName, ": bad argument "-                , prettyPrint boundName, ". This value would be out of bounds."-                ]))-        :-        [ match funName [pApp (unQual from) []] $ con $ unQual to-        | (from, to) <- thePairs-        ]-        ++-        [ match funName [pApp (unQual $ unrecognizedName u) [pWildCard]]-            ("Prelude.error" @@ stringExp (concat-                [ prettyPrint dataName, ".", prettyPrint funName, ": bad argument: unrecognized value"-                ]))-        | Just u <- [unrecognized]-        ]--generateFieldDecls :: Symbol -> [Decl]-generateFieldDecls xStr =-    -- foo :: forall f s a-    --        . (Functor f, HasLens s x a) => LensLike' f s a-    -- foo = fieldOf @s-    [ typeSig [x]-          $ tyForAll ["f", "s", "a"]-                  [classA "Prelude.Functor" ["f"],-                   classA "Data.ProtoLens.Field.HasField" ["s", xSym, "a"]]-                    $ "Lens.Family2.LensLike'" @@ "f" @@ "s" @@ "a"-    , funBind [match x [] $ fieldOfExp xStr]-    ]-  where-    x = nameFromSymbol xStr-    xSym = promoteSymbol xStr------------------------------------------------ | An individual field of the Haskell type corresponding to a proto message.-data RecordField = RecordField-    { recordFieldName :: Name  -- ^ The Haskell name of this field (unique-                               --   within the module).-    , recordFieldType :: Type  -- ^ Internal type in the record-    , recordFieldLenses :: [LensInstance]-        -- ^ All of the (overloaded) lenses accessing this record field.-    }---- | An instance of HasLens' for a particular field.-data LensInstance = LensInstance-    { lensSymbol :: Symbol-          -- ^ The overloaded name for this lens.-    , lensFieldType :: Type-          -- ^ The type pointed to from this lens.-    , lensExp :: Exp-        -- ^ A lens from the recordFieldType to the lensFieldType; i.e.,-        -- from how it's actually stored in the Haskell record to how the-        -- lens views it.-    }---- | Compile information about the record field type and type/class instances--- for this particular field.------ Used for "plain" record fields that are not part of a oneof.-plainRecordField :: Env QName -> PlainFieldInfo -> RecordField-plainRecordField env (PlainFieldInfo kind f) = case kind of-    -- data Foo = Foo { _Foo_bar :: Bar }-    -- type instance Field "bar" Foo = Bar-    RequiredField-        -> recordField baseType-                  [LensInstance-                      { lensSymbol = baseName-                      , lensFieldType = baseType-                      , lensExp = rawAccessor-                      }]-    OptionalValueField-              -> recordField baseType-                    [LensInstance-                      { lensSymbol = baseName-                      , lensFieldType = baseType-                      , lensExp = rawAccessor-                      }]-    -- data Foo = Foo { _Foo_bar :: Maybe Bar }-    -- type instance Field "bar" Foo = Bar-    -- type instance Field "maybe'bar" Foo = Maybe Bar-    OptionalMaybeField ->-              recordField maybeType-                  [LensInstance-                      { lensSymbol = baseName-                      , lensFieldType = baseType-                      , lensExp = maybeAccessor-                      }-                  , LensInstance-                      { lensSymbol = "maybe'" <> baseName-                      , lensFieldType = maybeType-                      , lensExp = rawAccessor-                      }-                  ]-        -- data Foo = Foo { _Foo_bar :: Map Bar Baz }-        -- type instance Field "foo" Foo = Map Bar Baz-    MapField entry ->-            let mapType = "Data.Map.Map"-                            @@ hsFieldType env (keyField entry)-                            @@ hsFieldType env (valueField entry)-            in recordField mapType-                  [LensInstance-                       { lensSymbol = baseName-                       , lensFieldType = mapType-                       , lensExp = rawAccessor-                       }]-        -- data Foo = Foo { _Foo_bar :: [Bar] }-        -- type instance Field "bar" Foo = [Bar]-    RepeatedField {} ->-            recordField vectorType-                  [ LensInstance-                      { lensSymbol = baseName-                      , lensFieldType = listType-                      , lensExp = vectorAccessor-                      }-                  , LensInstance-                      { lensSymbol = "vec'" <> baseName-                      , lensFieldType = vectorType-                      , lensExp = rawAccessor-                      }-                  ]-  where-    recordField = RecordField (haskellRecordFieldName $ fieldName f)-    baseName = overloadedName $ fieldName f-    fd = fieldDescriptor f-    baseType = hsFieldType env f-    maybeType = "Prelude.Maybe" @@ baseType-    listType = tyList baseType-    vectorType = hsFieldVectorType f @@ baseType-    rawAccessor = "Prelude.id"-    maybeAccessor = "Data.ProtoLens.maybeLens"-                          @@ hsFieldValueDefault env fd--vectorAccessor :: Exp-vectorAccessor = "Lens.Family2.Unchecked.lens" @@ getter @@ setter-  where-    getter = "Data.Vector.Generic.toList"-    setter = lambda ["_", "y__"]-                $ "Data.Vector.Generic.fromList" @@ "y__"--oneofRecordField :: Env QName -> OneofInfo -> RecordField-oneofRecordField env oneofInfo-    = RecordField-        { recordFieldName = haskellRecordFieldName $ oneofFieldName oneofInfo-        , recordFieldType =-              "Prelude.Maybe" @@ tyCon (unQual $ oneofTypeName oneofInfo)-        , recordFieldLenses = lenses-        }-  where-    lenses =-        -- Only generate a "maybe" version of this lens,-        -- since oneofs don't have a notion of a "default" case.-        -- data Foo = Foo { _Foo'bar = Maybe Foo'Bar }-        -- type instance Field "maybe'bar" Foo = Maybe Foo'Bar-        [LensInstance-          { lensSymbol = "maybe'" <> overloadedName-                                        (oneofFieldName oneofInfo)-          , lensFieldType =-                "Prelude.Maybe" @@ tyCon (unQual $ oneofTypeName oneofInfo)-          , lensExp = "Prelude.id"-          }-         ]-         ++ concat-          -- Generate the same lenses for each sub-field of the oneof-          -- as if they were proto2 optional fields.-          -- type instance Field "bar" Foo = Bar-          -- type instance Field "maybe'bar" Foo = Maybe Bar-            [ [ LensInstance-                { lensSymbol = maybeName-                , lensFieldType = "Prelude.Maybe" @@ baseType-                , lensExp = oneofFieldAccessor c-                }-              , LensInstance-                { lensSymbol = baseName-                , lensFieldType = baseType-                , lensExp = "Prelude.."-                                @@ oneofFieldAccessor c-                                @@ ("Data.ProtoLens.maybeLens"-                                              @@ hsFieldValueDefault env-                                                    (fieldDescriptor f))-                }-              ]-            | c <- oneofCases oneofInfo-            , let f = caseField c-            , let baseName = overloadedName $ fieldName f-            , let baseType = hsFieldType env f-            , let maybeName = "maybe'" <> baseName-            ]--hsFieldDefault :: Env QName -> PlainFieldInfo -> Exp-hsFieldDefault env f = case plainFieldKind f of-    RequiredField -> hsFieldValueDefault env fd-    OptionalValueField -> hsFieldValueDefault env fd-    OptionalMaybeField -> "Prelude.Nothing"-    MapField {} -> "Data.Map.empty"-    RepeatedField {} -> "Data.Vector.Generic.empty"-  where-    fd = fieldDescriptor (plainFieldInfo f)--hsFieldValueDefault :: Env QName -> FieldDescriptorProto -> Exp-hsFieldValueDefault env fd = case fd ^. type' of-    FieldDescriptorProto'TYPE_MESSAGE -> "Data.ProtoLens.defMessage"-    FieldDescriptorProto'TYPE_GROUP -> "Data.ProtoLens.defMessage"-    FieldDescriptorProto'TYPE_ENUM-        | T.null def -> "Data.ProtoLens.fieldDefault"-        | Enum e <- definedFieldType fd env-        , Just v <- List.lookup def [ (enumValueDescriptor v ^. name, enumValueName v)-                                    | v <- enumValues e-                                    ]-            -> con v-        | otherwise -> errorMessage "enum"-    -- The rest of the cases are for scalar fields that have a fieldDefault-    -- instance.-    _ | T.null def -> "Data.ProtoLens.fieldDefault"-    FieldDescriptorProto'TYPE_BOOL-        | def == "true" -> "Prelude.True"-        | def == "false" -> "Prelude.False"-        | otherwise -> errorMessage "bool"-    FieldDescriptorProto'TYPE_STRING-        -> "Data.Text.pack" @@ stringExp (T.unpack def)-    FieldDescriptorProto'TYPE_BYTES-        -> "Data.ByteString.pack"-                @@ list ((mkByte . fromEnum) <$> T.unpack def)-      where mkByte c-              | c > 0 && c < 255 = litInt $ fromIntegral c-              | otherwise = errorMessage "bytes"-    FieldDescriptorProto'TYPE_FLOAT -> defaultFrac $ T.unpack def-    FieldDescriptorProto'TYPE_DOUBLE -> defaultFrac $ T.unpack def-    -- Otherwise, assume it's an integral field:-    _ -> defaultInt $ T.unpack def-  where-    def = fd ^. defaultValue-    errorMessage fieldType-        = error $ "Bad default value " ++ show (T.unpack def)-                    ++ " in default value for " ++ fieldType ++ " field "-                    ++ unpack (fd ^. name)-    -- float/double fields can use nan, inf and -inf as default values.-    -- The Prelude doesn't provide names for them, so we implement-    -- them as division by zero.-    defaultFrac "nan" = "Prelude./" @@ litFrac 0 @@ litFrac 0-    defaultFrac "inf" = "Prelude./" @@ litFrac 1 @@ litFrac 0-    defaultFrac "-inf" = "Prelude./" @@ litFrac (negate 1) @@ litFrac 0-    defaultFrac s = case reads s of-        [(x, "")] -> litFrac $ toRational (x :: Double)-        _ -> errorMessage "fractional"-    defaultInt s = case reads s of-        [(x, "")] -> litInt x-        _ -> errorMessage "integral"---- | A lens to access an internal field.------   lens _Foo_bar (\x__ y__ -> x__ { _Foo_bar = y__ })-rawFieldAccessor :: QName -> Exp-rawFieldAccessor f = "Lens.Family2.Unchecked.lens" @@ getter @@ setter-  where-    getter = var f-    setter = lambda ["x__", "y__"]-                    $ recUpdate "x__" [fieldUpdate f "y__"]---- | A lens that maps from a oneof sum type to one of its individual cases.------ For example, with---     data Foo = Bar Int32 | Baz Int64------ this will generate a lens of type @Lens' (Maybe Foo) (Maybe Int32)@.------ (Recall that oneofs are stored in a proto message as @Maybe Foo@, where--- 'Nothing' means that it's either set to an unknown value or unset.)------ lens---   (\ x__ -> case x__ of---       Prelude.Just (Foo'c x__val) -> Prelude.Just x__val---       otherwise -> Prelude.Nothing)---   (\ _ y__ -> fmap Foo'c y__-oneofFieldAccessor :: OneofCase -> Exp-oneofFieldAccessor o-        = "Lens.Family2.Unchecked.lens" @@ getter @@ setter-  where-    consName = caseConstructorName o-    getter = lambda ["x__"] $-        case' "x__"-            [ pApp "Prelude.Just" [pApp (unQual consName) ["x__val"]]-                --> "Prelude.Just" @@ "x__val"-            , "_otherwise" --> "Prelude.Nothing"-            ]-    setter = lambda ["_", "y__"]-                $ "Prelude.fmap" @@ con (unQual consName) @@ "y__"--messageInstance :: Env QName -> T.Text -> MessageInfo Name -> [[Match]]-messageInstance env protoName m =-    [ [ match "messageName" [pWildCard] $-          "Data.Text.pack" @@ stringExp (T.unpack protoName)]-    , [ match "fieldsByTag" [] $-          let' (map (fieldDescriptorVarBind $ messageName m) $ fields)-              $ "Data.Map.fromList" @@ list fieldsByTag ]-    , [ match "unknownFields" [] $ rawFieldAccessor (unQual $ messageUnknownFields m) ]-    , [ match "defMessage" []-           $ recConstr (unQual $ messageName m) $-                  [ fieldUpdate (unQual $ haskellRecordFieldName-                                    $ fieldName $ plainFieldInfo f)-                        (hsFieldDefault env f)-                  | f <- messageFields m-                  ] ++-                  [ fieldUpdate (unQual $ haskellRecordFieldName $ oneofFieldName o)-                        "Prelude.Nothing"-                  | o <- messageOneofFields m-                  ] ++-                  [ fieldUpdate (unQual $ messageUnknownFields m)-                        "[]"]-      ]-    , [ match "parseMessage" [] $ generatedParser env m ]-    , [ match "buildMessage" [] $ generatedBuilder m ]-    ]-  where-    fieldsByTag =-        [tuple-              [ t, fieldDescriptorVar f ]-              | f <- fields-              , let t = "Data.ProtoLens.Tag"-                          @@ litInt (fromIntegral-                                      $ fieldDescriptor (plainFieldInfo f) ^. number)-              ]-    fieldDescriptorVar = var . unQual . fieldDescriptorName-    fieldDescriptorName f-        = nameFromSymbol $ overloadedName (fieldName . plainFieldInfo $ f)-                                <> "__field_descriptor"-    fieldDescriptorVarBind n f-        = funBind-              [match (fieldDescriptorName f) []-                  $ fieldDescriptorExpr env n f-              ]-    fields = messageFields m-                ++ (messageOneofFields m >>= fmap casePlainField . oneofCases)-    -- The cases of an optional are always treated like proto2 "maybe" fields.-    casePlainField = PlainFieldInfo OptionalMaybeField . caseField---- | Get the name of the field when used in a text format proto. Groups are--- special because their text format field name is the name of their type,--- not the name of the field in the descriptor (e.g. "Foo", not "foo").-textFormatFieldName :: Env QName -> FieldDescriptorProto -> T.Text-textFormatFieldName env descr = case descr ^. type' of-    FieldDescriptorProto'TYPE_GROUP-        | Message msg <- definedFieldType descr env-              -> messageDescriptor msg ^. name-        | otherwise -> error $ "expected TYPE_GROUP for type name"-                           ++ T.unpack (descr ^. typeName)-    _ -> descr ^. name--fieldDescriptorExpr :: Env QName -> Name -> PlainFieldInfo-                    -> Exp-fieldDescriptorExpr env n f =-    ("Data.ProtoLens.FieldDescriptor"-        -- Record the original .proto name for text format-        @@ stringExp (T.unpack $ textFormatFieldName env fd)-        -- Force the type signature since it can't be inferred for Map entry-        -- types.-        @@ (fieldTypeDescriptorExpr (fd ^. type')-                @::@-                    ("Data.ProtoLens.FieldTypeDescriptor"-                        @@ hsFieldType env (plainFieldInfo f)))-        @@ fieldAccessorExpr f)-    -- TODO: why is this type sig needed?-    @::@-    ("Data.ProtoLens.FieldDescriptor" @@ tyCon (unQual n))-  where-    fd = fieldDescriptor $ plainFieldInfo f--fieldAccessorExpr :: PlainFieldInfo -> Exp--- (PlainField Required foo), (OptionalField foo), etc...-fieldAccessorExpr (PlainFieldInfo kind f) = accessorCon @@ fieldOfExp hsFieldName--  where-    accessorCon = case kind of-          RequiredField-                -> "Data.ProtoLens.PlainField" @@ "Data.ProtoLens.Required"-          OptionalValueField-                -> "Data.ProtoLens.PlainField" @@ "Data.ProtoLens.Optional"-          OptionalMaybeField-                -> "Data.ProtoLens.OptionalField"-          MapField entry-                  -> "Data.ProtoLens.MapField"-                         @@ fieldOfExp (overloadedField $ keyField entry)-                         @@ fieldOfExp (overloadedField $ valueField entry)-          RepeatedField packed -> -                "Data.ProtoLens.RepeatedField"-                  @@ if packed == Packed-                        then "Data.ProtoLens.Packed"-                        else "Data.ProtoLens.Unpacked"-    hsFieldName-        = case kind of-            OptionalMaybeField -> "maybe'" <> overloadedField f-            _ -> overloadedField f--fieldOfExp :: Symbol -> Exp-fieldOfExp sym = "Data.ProtoLens.Field.field" @@ typeApp (promoteSymbol sym)--overloadedField :: FieldInfo -> Symbol-overloadedField = overloadedName . fieldName--fieldTypeDescriptorExpr :: FieldDescriptorProto'Type -> Exp-fieldTypeDescriptorExpr = \case-    FieldDescriptorProto'TYPE_DOUBLE -> mk "ScalarField" "DoubleField"-    FieldDescriptorProto'TYPE_FLOAT -> mk "ScalarField" "FloatField"-    FieldDescriptorProto'TYPE_INT64 -> mk "ScalarField" "Int64Field"-    FieldDescriptorProto'TYPE_UINT64 -> mk "ScalarField" "UInt64Field"-    FieldDescriptorProto'TYPE_INT32 -> mk "ScalarField" "Int32Field"-    FieldDescriptorProto'TYPE_FIXED64 -> mk "ScalarField" "Fixed64Field"-    FieldDescriptorProto'TYPE_FIXED32 -> mk "ScalarField" "Fixed32Field"-    FieldDescriptorProto'TYPE_BOOL -> mk "ScalarField" "BoolField"-    FieldDescriptorProto'TYPE_STRING -> mk "ScalarField" "StringField"-    FieldDescriptorProto'TYPE_GROUP -> mk "MessageField" "GroupType"-    FieldDescriptorProto'TYPE_MESSAGE -> mk "MessageField" "MessageType"-    FieldDescriptorProto'TYPE_BYTES -> mk "ScalarField" "BytesField"-    FieldDescriptorProto'TYPE_UINT32 -> mk "ScalarField" "UInt32Field"-    FieldDescriptorProto'TYPE_ENUM -> mk "ScalarField" "EnumField"-    FieldDescriptorProto'TYPE_SFIXED32 -> mk "ScalarField" "SFixed32Field"-    FieldDescriptorProto'TYPE_SFIXED64 -> mk "ScalarField" "SFixed64Field"-    FieldDescriptorProto'TYPE_SINT32 -> mk "ScalarField" "SInt32Field"-    FieldDescriptorProto'TYPE_SINT64 -> mk "ScalarField" "SInt64Field"-  where-    mk x y = fromString ("Data.ProtoLens." ++ x)-              @@ fromString ("Data.ProtoLens." ++ y)---- | Generate the implementation of NFData.rnf for the given message.------ instance NFData Bar where---    rnf = \x -> deepseq (_Bar'foo x) (deepseq (_Bar'bar x) ())-messageRnfExpr :: MessageInfo Name -> Exp-messageRnfExpr msg = lambda ["x__"] $ foldr (@@) "()" (map seqField fieldNames)-  where-    fieldNames = messageUnknownFields msg-                : map (haskellRecordFieldName . fieldName . plainFieldInfo)-                       (messageFields msg)-                ++ map (haskellRecordFieldName . oneofFieldName)-                       (messageOneofFields msg)-    seqField :: Name -> Exp-    seqField f = "Control.DeepSeq.deepseq" @@ (var (unQual f) @@ "x__")---- instance NFData Bar where---   rnf (Foo'a x__) = rnf x__---   rnf (Bar'b x__) = rnf x__-oneofRnfMatch :: OneofCase -> Match-oneofRnfMatch c = match "rnf" [unQual (caseConstructorName c) `pApp` ["x__"]]-                    $ "Control.DeepSeq.rnf" @@ "x__"
− src/Data/ProtoLens/Compiler/Generate/Encoding.hs
@@ -1,638 +0,0 @@--- | This module generates code for decoding and encoding protocol buffer messages.------ Upstream docs: <https://developers.google.com/protocol-buffers/docs/encoding>-{-# LANGUAGE DeriveFunctor #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoMonomorphismRestriction #-}-{-# LANGUAGE OverloadedStrings #-}-module Data.ProtoLens.Compiler.Generate.Encoding-    ( generatedParser-    , generatedBuilder-    ) where--import Data.Int (Int32)-import qualified Data.Map as Map-import Data.Semigroup ((<>))-import qualified Data.Text as Text-import Lens.Family2 (view, (^.))--import Data.ProtoLens.Compiler.Combinators-import Data.ProtoLens.Compiler.Definitions-import Data.ProtoLens.Compiler.Generate.Field-import Data.ProtoLens.Encoding.Wire (joinTypeAndTag)--import Proto.Google.Protobuf.Descriptor_Fields-    ( name-    , number-    , type'-    )--generatedParser :: Env QName -> MessageInfo Name -> Exp-generatedParser env m =-    {- let loop :: T -> Bool -> Bool -> ...-                   -> MVector RealWorld Int32 -> MVector RealWorld Float -> ...-                   -> Parser T-           loop x required'a required'b ... mutable'a mutable'b ... = ...-       in "package.T" <?> do-            mutable'a <- unsafeLiftIO new-            mutable'b <- unsafeLiftIO new-            ...-            loop defMessage True True ... mutable'a mutable'b ...-    -}-    let' [typeSig [loop] loopSig-         , funBind [match loop (fmap pVar $ loopArgs names) loopExpr]-         ]-        $ "Data.ProtoLens.Encoding.Bytes.<?>"-           @@ do' (startStmts ++ [stmt $ continue startExp])-           @@ stringExp msgName-  where-    ty = tyCon (unQual $ messageName m)-    msgName = Text.unpack (messageDescriptor m ^. name)-    loopSig = foldr tyFun-        ("Data.ProtoLens.Encoding.Bytes.Parser" @@ ty)-        (loopArgs $ parseStateTypes env m)--    names = parseStateNames m-    exprs = fmap (var . unQual) names-    tag = "tag"-    end = "end"-    loop = "loop"--    (startStmts, startExp) = startParse names--    continue :: ParseState Exp -> Exp-    continue s = foldl (@@) loop (loopArgs s)--    loopExpr-        {- Group:-            do-              tag <- getVarInt-              case tag of-                {groupEndTag} -> {finish}-                ... -- Regular message fields--          TODO(#282): fail the parse if we find a group-end tag-          with an incorrect field number.-        -}-        | Just g <- groupFieldNumber m = do'-            [ tag <-- getVarInt'-            , stmt $ case' tag $-                (pLitInt (groupEndTag g) --> finish m exprs)-                    : parseTagCases continue exprs m-            ]-        {- Regular message type:-              do-                end <- atEnd-                if end-                    then {finish}-                    else do-                        tag <- getVarInt-                        case tag of ...-        -}-        | otherwise = do'-            [ end <-- "Data.ProtoLens.Encoding.Bytes.atEnd"-            , stmt $-                if' end (finish m exprs)-                    $ do'-                        [ tag <-- getVarInt'-                        , stmt $ case' tag $ parseTagCases continue exprs m-                        ]-            ]---- | A Parser expression that finalizes the message.-finish :: MessageInfo Name -> ParseState Exp -> Exp-finish m s = do' $-    {- do-        frozen'a <- unsafeLiftIO $ unsafeFreeze mutable'a-        frozen'b <- unsafeLiftIO $ unsafeFreeze mutable'b-        ...-        {checkMissingFields}-        over unknownFields reverse-            $ set field @"vec'a" frozen'a-            $ set field @"vec'b" frozen'b-            ...-            $ {partialMessage}-    -}-    [ pVar frozen <-- unsafeLiftIO' @@-                    ("Data.ProtoLens.Encoding.Growing.unsafeFreeze"-                        @@ mutable)-    | (frozen, mutable) <- Map.elems $ Map.intersectionWith (,)-                                frozenNames (repeatedFieldMVectors s)-    ]-    ++-    [ stmt $ checkMissingFields s-    , stmt $ "Prelude.return" @@-        (over' unknownFields' "Prelude.reverse"-            @@(foldr (@@)-                (partialMessage s)-                (Map.intersectionWith-                    (\finfo frozen ->-                        "Lens.Family2.set"-                            @@ fieldOfVector finfo-                            @@ var (unQual frozen))-                repeatedInfos frozenNames)))-            ]--  where-    repeatedInfos = repeatedFields m-    frozenNames = (\f -> nameFromSymbol $ "frozen'" <> overloadedFieldName f)-                    <$> repeatedInfos---- | The state of the parsing loop.  Each instance of @v@ corresponds--- to an argument of the loop function.-data ParseState v = ParseState-    { partialMessage :: v-        -- ^ The message that we're parsing.-    , requiredFieldsUnset :: Map.Map FieldId v-        -- ^ The required fields of the message, each corresponding to-        -- a @Bool@ argument of the loop.-    , repeatedFieldMVectors :: Map.Map FieldId v-        -- ^ The repeated fields of the message, each corresponding to-        -- an @MVector@ argument of the loop.-    } deriving Functor---- | Returns a sequence of all arguments of the loop function.-loopArgs :: ParseState v -> [v]-loopArgs s = partialMessage s : Map.elems (requiredFieldsUnset s)-                                ++ Map.elems (repeatedFieldMVectors s)---- | The proto name of the field.-newtype FieldId = FieldId Text.Text-    deriving (Eq, Ord)--fieldId :: PlainFieldInfo -> FieldId-fieldId f = FieldId $ fieldDescriptor (plainFieldInfo f) ^. name---- | The names of the loop arguments.-parseStateNames :: MessageInfo Name -> ParseState Name-parseStateNames m = ParseState-    { partialMessage = "x"-    , requiredFieldsUnset = Map.fromList-        [ (fieldId f, nameFromSymbol $ "required'" <> n)-        | f <- messageFields m-        , let info = plainFieldInfo f-        , let n = overloadedFieldName info-        , RequiredField <- [plainFieldKind f]-        ]-    , repeatedFieldMVectors =-        (\f -> nameFromSymbol $ "mutable'" <> overloadedFieldName f)-            <$> repeatedFields m-    }--repeatedFields :: MessageInfo Name -> Map.Map FieldId FieldInfo-repeatedFields m = Map.fromList-    [ (fieldId f, plainFieldInfo f)-    | f <- messageFields m-    , RepeatedField{} <- [plainFieldKind f]-    ]---- | Intialize the values of the loop arguments.-startParse :: ParseState Name -> ([Stmt], ParseState Exp)-startParse names =-    ([ pVar n <-- unsafeLiftIO' @@ "Data.ProtoLens.Encoding.Growing.new"-     | n <- Map.elems mvectorNames-     ]-    , ParseState-        { partialMessage = "Data.ProtoLens.defMessage"-        , requiredFieldsUnset = const "Prelude.True"-                                    <$> requiredFieldsUnset names-        , repeatedFieldMVectors = var . unQual <$> mvectorNames-        }-    )-  where-    mvectorNames = repeatedFieldMVectors names---- | The types of the loop arguments.-parseStateTypes :: Env QName -> MessageInfo Name -> ParseState Type-parseStateTypes env m = ParseState-    { partialMessage = tyCon (unQual $ messageName m)-    , requiredFieldsUnset = fmap (const "Prelude.Bool")-                            $ requiredFieldsUnset-                            $ parseStateNames m-    , repeatedFieldMVectors = growingType env <$> repeatedFields m-    }---- | Transform the loop arguments by applying a given function--- to the intermediate message value.-updateParseState ::-       Exp -- ^ An expression of type @msg -> msg@-    -> ParseState Exp-    -> ParseState Exp-updateParseState f s = s { partialMessage = f @@ (partialMessage s) }---- | Transform the loop arguments by marking a required field--- as having been set.-markRequiredField :: FieldId -> ParseState Exp -> ParseState Exp-markRequiredField f s =-    s { requiredFieldsUnset = Map.insert f "Prelude.False"-                                $ requiredFieldsUnset s }---- | Append to the given repeated field.-appendToRepeated :: FieldId -> Exp -> ParseState Exp -> (Stmt, ParseState Exp)-appendToRepeated f x s =-    ( v <-- unsafeLiftIO'-                @@ ("Data.ProtoLens.Encoding.Growing.append"-                        @@ (repeatedFieldMVectors s Map.! f)-                        @@ x)-    , s { repeatedFieldMVectors =-                            Map.insert f (var $ unQual v)-                                $ repeatedFieldMVectors s-                        }-    )-  where-    v = "v"---- | Returns an Exp of type @Parser ()@--- which fails if any of the missing fields aren't set.-checkMissingFields :: ParseState Exp -> Exp-checkMissingFields s =-    {- let missing = (if required'a then ("a":) else id)-                        ((if required'b then ("b":) else id)-                        ... [])-       in if null missing then return ()-          else fail ("Missing required fields: " ++ show missing)-    -}-    let' [patBind missing allMissingFields]-    $ if' ("Prelude.null" @@ missing) ("Prelude.return" @@ unit)-    $ "Prelude.fail"-        @@ ("Prelude.++"-                @@ stringExp "Missing required fields: "-                @@ ("Prelude.show" @@ (missing @::@ "[Prelude.String]")))-  where-    missing = "missing"-    allMissingFields = Map.foldrWithKey consIfMissing emptyList (requiredFieldsUnset s)-    consIfMissing (FieldId f) e rest =-        (if' e (cons @@ stringExp (Text.unpack f)) "Prelude.id") @@ rest---- | A list case alternatives for the fields of a message.------ The exact structure of each case differs based on the field type.  However, it--- generally looks like:------ @---   {N} -> do---           {VALUE} <- {PARSE}---           loop (set {FIELD} {VALUE} x) required'a False required'c ...--- @------ where:---  - {N} is an integer representing the wire type + field number,---  - {VALUE} is an expression of type "V", which is the type of the field,---  - {PARSE} is an expression of the form "Parser V",---  - and "loop" and "x" are as in @generatedParser@.-parseTagCases ::-       (ParseState Exp -> Exp)-            -- ^ loop continuation, equivalent to "msg -> Bool -> ... -> Bool -> Parser msg".-            -- It continues the loop with the given new value of the message, keeping track-            -- of whether the required fields are still needed.-    -> ParseState Exp -- ^ Previous value of the message and required field states-    -> MessageInfo Name-    -> [Alt]-parseTagCases loop x info =-    concatMap (parseFieldCase loop x) allFields-    -- TODO: currently we ignore unknown fields.-    ++ [unknownFieldCase info loop x]-  where-    allFields = messageFields info-                -- Cases of a oneof are decoded like optional oneof fields.-                ++ [ PlainFieldInfo OptionalMaybeField (caseField c)-                   | o <- messageOneofFields info-                   , c <- oneofCases o-                   ]---- | A particular parsing case.  See @parseTagCases@ for details.-parseFieldCase ::-    (ParseState Exp -> Exp) -> ParseState Exp -> PlainFieldInfo -> [Alt]-parseFieldCase loop x f = case plainFieldKind f of-    MapField entryInfo -> [mapCase entryInfo]-    RepeatedField p-        | p == NotPackable -> [unpackedCase]-        | otherwise -> [unpackedCase, packedCase]-    RequiredField -> [requiredCase]-    _ -> [valueCase]-  where-    y = "y"-    entry = "entry"-    info = plainFieldInfo f-    valueCase = pLitInt (fieldTag info) --> do'-        [ y <-- parseField info-        , stmt . loop . updateParseState (setField info @@ y)-            $ x-        ]-    requiredCase = pLitInt (fieldTag info) --> do'-        [ y <-- parseField info-        , stmt . loop-               . updateParseState (setField info @@ y)-               . markRequiredField (fieldId f)-               $ x-        ]-    unpackedCase = pLitInt (fieldTag info) -->-        let (appendStmt, x') = appendToRepeated (fieldId f) y x-        in do'-            [ bangPat y <-- parseField info-            , appendStmt-            , stmt . loop $ x'-            ]-    packedCase = pLitInt (packedFieldTag info) --> do'-        [ y <-- isolatedLengthy (parsePackedField info-                                    @@ repeatedFieldMVectors x Map.! fieldId f)-        , stmt $ loop x { repeatedFieldMVectors =-                                Map.insert (fieldId f) (var $ unQual y)-                                    $ repeatedFieldMVectors x }-        ]-    mapCase entryInfo = pLitInt (fieldTag info) --> do'-        [ bangPat (entry `patTypeSig` tyCon (unQual $ mapEntryTypeName entryInfo))-                <-- parseField info-        , stmt . let' [ patBind "key"-                            $ view' @@ fieldOf (keyField entryInfo)-                                    @@ entry-                      , patBind "value"-                            $ view' @@ fieldOf (valueField entryInfo)-                                    @@ entry-                      ]-               . loop-               . updateParseState-                    (overField info-                                ("Data.Map.insert" @@ "key" @@ "value"))-               $ x-        ]--unknownFieldCase ::-    MessageInfo Name -> (ParseState Exp -> Exp) -> ParseState Exp -> Alt-{--  wire -> do-        !y <- parseTaggedValueFromWire wire-        -- Omitted if not a group:-        case y of-            TaggedValue utag EndGroup-                -> fail ("Mismatched group-end tag number " ++ show utag)-            _ -> return ()-        loop (over unknownFields (\!t -> y:t) x) ...--}-unknownFieldCase info loop x = wire --> (do' $-    [ bangPat y <-- "Data.ProtoLens.Encoding.Wire.parseTaggedValueFromWire" @@ wire-    ]-    ++-    [ stmt $ case' y-        [ pApp "Data.ProtoLens.Encoding.Wire.TaggedValue"-            [utag, "Data.ProtoLens.Encoding.Wire.EndGroup"]-            --> "Prelude.fail" @@-                    ("Prelude.++"-                        @@ stringExp "Mismatched group-end tag number "-                        @@ ("Prelude.show" @@ utag))-        , pWildCard --> "Prelude.return" @@ unit-        ]-    | Just _ <- [groupFieldNumber info]-    ]-    ++-    [ stmt . loop . updateParseState (over' unknownFields' (cons @@ y))-        $ x-    ])-  where-    wire = "wire"-    y = "y"-    utag = "utag"---- | An expression of type "b -> a -> a", corresponding to a Lens a b--- for this field.-setField :: FieldInfo -> Exp-setField f = "Lens.Family2.set" @@ fieldOf f---- | An expression of type "(b -> b) -> a -> a", corresponding to a--- Lens a b for this field.-overField :: FieldInfo -> Exp -> Exp-overField f = over' (fieldOf f)---- | An expression of type "(b -> b) -> a -> a".------ Specifically, this renders to:---   over f (\!z -> g z) x--- The extra strictness prevents a space leak due to lists being lazy.-over' :: Exp -> Exp -> Exp-over' f g = "Lens.Family2.over"-                @@ f-                @@ lambda [bangPat t] (g @@ t)-  where-    t = "t"---- | A "Growing v RealWorld a -> Parser (Growing v RealWorld a)"--- for a field that can be packed.-parsePackedField :: FieldInfo -> Exp-{- let ploop qs = do-                    packedEnd <- atEnd-                    if packedEnd-                        then return qs-                        else do-                            !q <- {PARSE FIELD}-                            qs' <- append qs q-                            ploop qs'-   in ploop--}-parsePackedField info = let' [funBind [match ploop [qs] ploopExp]]-                            ploop-  where-    ploop = "ploop"-    q = "q"-    qs = "qs"-    qs' = "qs'"-    packedEnd = "packedEnd"-    ploopExp = do'-        [ packedEnd <-- "Data.ProtoLens.Encoding.Bytes.atEnd"-        , stmt $-            if' packedEnd-                ("Prelude.return" @@ qs)-                $ do'-                    [ bangPat q <-- parseField info-                    , qs' <-- unsafeLiftIO' @@-                                ("Data.ProtoLens.Encoding.Growing.append"-                                    @@ qs @@ q)-                    , stmt $ ploop @@ qs'-                    ]-        ]--generatedBuilder :: MessageInfo Name -> Exp-generatedBuilder m =-    lambda [x] $ foldMapExp $ map (buildPlainField x) (messageFields m)-                                ++ map (buildOneofField x) (messageOneofFields m)-                            ++ [buildUnknown x]-                            ++ buildGroupEnd-  where-    x = "_x" -- TODO: rename to "x" once it's always used-    -- If this is a group, finish by emitting the end-group tag.-    buildGroupEnd = [ putVarInt' @@ litInt (groupEndTag g)-               | Just g <- [groupFieldNumber m]-               ]--buildUnknown :: Exp -> Exp-buildUnknown x-    = "Data.ProtoLens.Encoding.Wire.buildFieldSet"-                @@ (view' @@ unknownFields' @@ x)---- | Concatenate a list of Monoids into a single value.--- For example, foldMapExp [a,b,c] will be transformed into--- the (unrolled) expression a <> b <> c.-foldMapExp :: [Exp] -> Exp-foldMapExp [] = mempty'-foldMapExp [x] = x-foldMapExp (x:xs) = "Data.Monoid.<>" @@ x @@ foldMapExp xs---- | An expression of type @Builder@ which encodes the field value--- @x@ based on the kind and type of the field @f@.-buildPlainField :: Exp -> PlainFieldInfo -> Exp-buildPlainField x f = case plainFieldKind f of-    RequiredField -> buildTaggedField info fieldValue-    OptionalMaybeField -> case' maybeFieldValue-                            ["Prelude.Nothing" --> mempty'-                            , "Prelude.Just" `pApp` [v]-                                --> buildTaggedField info v-                            ]-    OptionalValueField -> let' [patBind v fieldValue]-                          $ if' ("Prelude.==" @@ v @@ "Data.ProtoLens.fieldDefault")-                                mempty'-                                (buildTaggedField info v)-    MapField entryInfo-        -> "Data.Monoid.mconcat"-            @@ ("Prelude.map"-                    @@ lambda [v] (buildEntry entryInfo v)-                    @@ ("Data.Map.toList" @@ fieldValue))-    RepeatedField Packed -> buildPackedField info vectorFieldValue-    RepeatedField _ -> "Data.ProtoLens.Encoding.Bytes.foldMapBuilder"-                            @@ lambda [v]-                                    (buildTaggedField info v)-                            @@ vectorFieldValue-  where-    info = plainFieldInfo f-    v = "_v"-    fieldValue = view'-                    @@ fieldOf info-                    @@ x-    maybeFieldValue = view'-                        @@ fieldOfMaybe info-                        @@ x-    vectorFieldValue = view'-                        @@ fieldOfVector info-                        @@ x-    {- Builds a value of the given map entry type-       from the given key/value pair kv.--       ... set (fieldOf {KEY}) (fst kv)-            (set (fieldOf {VALUE}) (snd kv)-                (defMessage :: Foo'Entry)-    -}-    buildEntry entry kv-        = buildTaggedField info-            $ set'-                @@ fieldOf (keyField entry)-                @@ ("Prelude.fst" @@ kv)-                @@ (set' @@ fieldOf (valueField entry)-                         @@ ("Prelude.snd" @@ kv)-                         @@ ("Data.ProtoLens.defMessage"-                                @::@ tyCon (unQual $ mapEntryTypeName entry)))--fieldOf :: FieldInfo -> Exp-fieldOf = fieldOfExp . overloadedFieldName--fieldOfMaybe :: FieldInfo -> Exp-fieldOfMaybe = fieldOfExp . ("maybe'" <>) . overloadedFieldName--fieldOfOneof :: OneofInfo -> Exp-fieldOfOneof =-    fieldOfExp . ("maybe'" <>) . overloadedName . oneofFieldName--fieldOfVector :: FieldInfo -> Exp-fieldOfVector = fieldOfExp . ("vec'" <>) . overloadedFieldName---- | Build a field along with its tag.-buildTaggedField :: FieldInfo -> Exp -> Exp-buildTaggedField f x = foldMapExp-    [ putVarInt' @@ litInt (fieldTag f)-    , buildField f @@ x-    ]---- | Encodes a packed field as a byte string, along with--- its wire type+number.-buildPackedField :: FieldInfo -> Exp -> Exp-{--    let p = x -- where x might be a complicated expression-    in if null p then mempty-    else putVarInt {TAG}-            <> ... (runBuilder (mconcat (map {BUILD_ELT} p)))--}-buildPackedField f x = let' [patBind p x]-    $ if' ("Data.Vector.Generic.null" @@ p) mempty'-    $ "Data.Monoid.<>"-        @@ (putVarInt' @@ litInt (packedFieldTag f))-        @@ (buildFieldType lengthy-                @@ ("Data.ProtoLens.Encoding.Bytes.runBuilder"-                    @@ ("Data.ProtoLens.Encoding.Bytes.foldMapBuilder"-                            @@ buildField f-                            @@ p)))-  where-    p = "p"--buildOneofField :: Exp -> OneofInfo -> Exp-buildOneofField x info = case' (view' @@ fieldOfOneof info @@ x) $-    ("Prelude.Nothing" --> mempty')-    : [ pApp "Prelude.Just" [pApp (unQual $ caseConstructorName c)-                                 [v]]-            --> buildTaggedField (caseField c) v-      | c <- oneofCases info-      ]-  where-    v = "v"---- | Compute the proto encoding's representation of the wire type--- and field number.------ The last three bits of the number store the wire type, and the--- rest store the field number as a varint.-makeTag :: Int32 -> FieldEncoding -> Integer-makeTag num enc = fromIntegral $ joinTypeAndTag (fromIntegral num) (wireType enc)--fieldTag :: FieldInfo -> Integer-fieldTag f = makeTag (fieldDescriptor f ^. number) $ fieldInfoEncoding f--packedFieldTag :: FieldInfo -> Integer-packedFieldTag f = makeTag (fieldDescriptor f ^. number) lengthy--groupEndTag :: Int32 -> Integer-groupEndTag num = makeTag num groupEnd---- | An expression that selects the overloaded field lens of this name.------ field @"fieldName"-fieldOfExp :: Symbol -> Exp-fieldOfExp sym = "Data.ProtoLens.Field.field" @@ typeApp (promoteSymbol sym)---- | Some functions that are used in multiple places in the generated code.-getVarInt', putVarInt', mempty', view', set', unknownFields', unsafeLiftIO'-    :: Exp-getVarInt' = "Data.ProtoLens.Encoding.Bytes.getVarInt"-putVarInt' = "Data.ProtoLens.Encoding.Bytes.putVarInt"-mempty' = "Data.Monoid.mempty"-view' = "Lens.Family2.view"-set' = "Lens.Family2.set"-unknownFields' = "Data.ProtoLens.unknownFields"-unsafeLiftIO' = "Data.ProtoLens.Encoding.Parser.Unsafe.unsafeLiftIO"---- | Returns an expression of type @Parser a@ for the given field.-parseField :: FieldInfo -> Exp-parseField f = "Data.ProtoLens.Encoding.Bytes.<?>"-                    @@ (parseFieldType $ fieldInfoEncoding f)-                    @@ stringExp n-  where-    n = Text.unpack (fieldDescriptor f ^. name)---- | Returns a function corresponding to `a -> Builder`:-buildField :: FieldInfo -> Exp-buildField = buildFieldType . fieldInfoEncoding--fieldInfoEncoding :: FieldInfo -> FieldEncoding-fieldInfoEncoding = fieldEncoding . view type' . fieldDescriptor--growingType :: Env QName -> FieldInfo -> Type-growingType env f-    = "Data.ProtoLens.Encoding.Growing.Growing"-        @@ hsFieldVectorType f-        @@ "Data.ProtoLens.Encoding.Growing.RealWorld"-        @@ hsFieldType env f
− src/Data/ProtoLens/Compiler/Generate/Field.hs
@@ -1,260 +0,0 @@-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoMonomorphismRestriction #-}-{-# LANGUAGE OverloadedStrings #-}--- | This module generates the code for decoding and encoding--- individual field types.------ Upstream docs:--- <https://developers.google.com/protocol-buffers/docs/encoding#structure>-module Data.ProtoLens.Compiler.Generate.Field-    ( hsFieldType-    , hsFieldVectorType-    , FieldEncoding(..)-    , fieldEncoding-    , lengthy-    , groupEnd-    , isolatedLengthy-    ) where--import Data.Text (unpack)-import Data.Word (Word8)-import Lens.Family2-import Proto.Google.Protobuf.Descriptor (FieldDescriptorProto'Type(..))-import Proto.Google.Protobuf.Descriptor_Fields (type', typeName)--import Data.ProtoLens.Compiler.Combinators-import Data.ProtoLens.Compiler.Definitions--hsFieldType :: Env QName -> FieldInfo -> Type-hsFieldType env f = let-    fd = fieldDescriptor f-    in case fd ^. type' of-        FieldDescriptorProto'TYPE_DOUBLE -> "Prelude.Double"-        FieldDescriptorProto'TYPE_FLOAT -> "Prelude.Float"-        FieldDescriptorProto'TYPE_INT64 -> "Data.Int.Int64"-        FieldDescriptorProto'TYPE_UINT64 -> "Data.Word.Word64"-        FieldDescriptorProto'TYPE_INT32 -> "Data.Int.Int32"-        FieldDescriptorProto'TYPE_FIXED64 -> "Data.Word.Word64"-        FieldDescriptorProto'TYPE_FIXED32 -> "Data.Word.Word32"-        FieldDescriptorProto'TYPE_BOOL -> "Prelude.Bool"-        FieldDescriptorProto'TYPE_STRING -> "Data.Text.Text"-        FieldDescriptorProto'TYPE_GROUP-            | Message m <- definedFieldType fd env -> tyCon $ messageName m-            | otherwise -> error $ "expected TYPE_GROUP for type name"-                                ++ unpack (fd ^. typeName)-        FieldDescriptorProto'TYPE_MESSAGE-            | Message m <- definedFieldType fd env -> tyCon $ messageName m-            | otherwise -> error $ "expected TYPE_MESSAGE for type name"-                                ++ unpack (fd ^. typeName)-        FieldDescriptorProto'TYPE_BYTES -> "Data.ByteString.ByteString"-        FieldDescriptorProto'TYPE_UINT32 -> "Data.Word.Word32"-        FieldDescriptorProto'TYPE_ENUM-            | Enum e <- definedFieldType fd env -> tyCon $ enumName e-            | otherwise -> error $ "expected TYPE_ENUM for type name"-                                ++ unpack (fd ^. typeName)-        FieldDescriptorProto'TYPE_SFIXED32 -> "Data.Int.Int32"-        FieldDescriptorProto'TYPE_SFIXED64 -> "Data.Int.Int64"-        FieldDescriptorProto'TYPE_SINT32 -> "Data.Int.Int32"-        FieldDescriptorProto'TYPE_SINT64 -> "Data.Int.Int64"--hsFieldVectorType :: FieldInfo -> Type-hsFieldVectorType f = case fieldDescriptor f ^. type' of-    FieldDescriptorProto'TYPE_MESSAGE -> boxed-    -- TODO: store enums in unboxed fields.-    FieldDescriptorProto'TYPE_ENUM -> boxed-    FieldDescriptorProto'TYPE_GROUP -> boxed-    FieldDescriptorProto'TYPE_STRING -> boxed-    FieldDescriptorProto'TYPE_BYTES -> boxed-    _ -> unboxed-  where-    boxed = "Data.Vector.Vector"-    unboxed = "Data.Vector.Unboxed.Vector"---- | A representation for how to encode and decode a particular field type.-data FieldEncoding = FieldEncoding-    { buildFieldType :: Exp -- ^ :: a -> Builder-    , parseFieldType :: Exp -- ^ :: Parser a-    , wireType :: Word8-    }---- | A variable-length integer, decoded as an unsigned Word64.-varint :: FieldEncoding-varint = FieldEncoding-            { wireType = 0-            , buildFieldType = putVarInt'-            , parseFieldType = getVarInt'-            }---- | A fixed-length integer (Word64).-fixed64 :: FieldEncoding-fixed64 = FieldEncoding-            { wireType = 1-            , buildFieldType = "Data.ProtoLens.Encoding.Bytes.putFixed64"-            , parseFieldType = "Data.ProtoLens.Encoding.Bytes.getFixed64"-            }---- | A fixed-length integer (Word32).-fixed32 :: FieldEncoding-fixed32 = FieldEncoding-            { wireType = 5-            , buildFieldType = "Data.ProtoLens.Encoding.Bytes.putFixed32"-            , parseFieldType = "Data.ProtoLens.Encoding.Bytes.getFixed32"-            }---- | A ByteString, prefixed by its length (which is encoded as a varint).-lengthy :: FieldEncoding-lengthy = FieldEncoding-            { wireType = 2-            , buildFieldType = buildLengthy-            , parseFieldType = parseLengthy-            }-  where-    bs = "bs"-    len = "len"-    buildLengthy =-        -- Bind x since it may be a nontrivial expression:-        lambda [bs]-            $ "Data.Monoid.<>"-                @@ (putVarInt'-                        @@ (fromIntegral'-                                @@ ("Data.ByteString.length" @@ bs)))-                @@ ("Data.ProtoLens.Encoding.Bytes.putBytes" @@ bs)-    parseLengthy = do'-        [ len <-- getVarInt'-        , stmt $ "Data.ProtoLens.Encoding.Bytes.getBytes"-                    @@ (fromIntegral' @@ len)-        ]--group :: FieldEncoding-group = FieldEncoding-            { wireType = 3-            , buildFieldType = "Data.ProtoLens.buildMessage"-            , parseFieldType = "Data.ProtoLens.parseMessage"-            }--groupEnd :: FieldEncoding-groupEnd = FieldEncoding-            { wireType = 4-            , buildFieldType = "Prelude.const" @@ "Data.Monoid.mempty"-            , parseFieldType = "Prelude.return" @@ unit-            }---- Wrap a field encoding  with Haskell functions that should always succeed.-bijectField :: Exp -> Exp -> FieldEncoding -> FieldEncoding-bijectField buildF parseF f = FieldEncoding-    { buildFieldType = "Prelude.." @@ buildFieldType f @@ buildF-    , parseFieldType = "Prelude.fmap" @@ parseF @@ parseFieldType f-    , wireType = wireType f-    }---- | Wrap a field encoding with Haskell functions that may fail during parsing.-partialField :: Exp -> (Exp -> Exp) -> FieldEncoding -> FieldEncoding-partialField buildF parseF f = FieldEncoding-    { buildFieldType = "Prelude.." @@ buildFieldType f @@ buildF-    -- do-    --  value <- ...-    --  runEither $ {parseF} value-    , parseFieldType = do'-        [ value <-- parseFieldType f-        , stmt $ runEither @@ parseF value-        ]-    , wireType = wireType f-    }-  where-    value = "value"-    runEither = "Data.ProtoLens.Encoding.Bytes.runEither"---- | Convert a field of one integral type to another.-integralField :: FieldEncoding -> FieldEncoding-integralField = bijectField fromIntegral' fromIntegral'--fieldEncoding :: FieldDescriptorProto'Type -> FieldEncoding-fieldEncoding = \case-    FieldDescriptorProto'TYPE_INT64 -> integralField varint-    FieldDescriptorProto'TYPE_UINT64 -> varint-    FieldDescriptorProto'TYPE_INT32 -> integralField varint-    FieldDescriptorProto'TYPE_UINT32 -> integralField varint-    FieldDescriptorProto'TYPE_FIXED64 -> fixed64-    FieldDescriptorProto'TYPE_FIXED32 -> fixed32-    FieldDescriptorProto'TYPE_SFIXED64 -> integralField fixed64-    FieldDescriptorProto'TYPE_SFIXED32 -> integralField fixed32-    FieldDescriptorProto'TYPE_DOUBLE ->-        bijectField-            "Data.ProtoLens.Encoding.Bytes.doubleToWord"-            "Data.ProtoLens.Encoding.Bytes.wordToDouble"-            fixed64-    FieldDescriptorProto'TYPE_FLOAT ->-        bijectField-            "Data.ProtoLens.Encoding.Bytes.floatToWord"-            "Data.ProtoLens.Encoding.Bytes.wordToFloat"-            fixed32-    FieldDescriptorProto'TYPE_BOOL ->-        bijectField-            (lambda ["b"] $ if' "b" (litInt 1) (litInt 0))-            ("Prelude./=" @@ litInt 0)-            varint-    FieldDescriptorProto'TYPE_ENUM ->-        -- TODO: don't throw an exception on unknown proto2 enums.-        bijectField "Prelude.fromEnum" "Prelude.toEnum"-            $ integralField varint-    FieldDescriptorProto'TYPE_SINT64 ->-        bijectField-            "Data.ProtoLens.Encoding.Bytes.signedInt64ToWord"-            "Data.ProtoLens.Encoding.Bytes.wordToSignedInt64"-            $ integralField varint-    FieldDescriptorProto'TYPE_SINT32 ->-        bijectField-            "Data.ProtoLens.Encoding.Bytes.signedInt32ToWord"-            "Data.ProtoLens.Encoding.Bytes.wordToSignedInt32"-            $ integralField varint-    FieldDescriptorProto'TYPE_BYTES -> lengthy-    FieldDescriptorProto'TYPE_STRING -> stringField-    FieldDescriptorProto'TYPE_MESSAGE -> message-    FieldDescriptorProto'TYPE_GROUP -> group---- | A string, represented as Data.Text.Text.-stringField :: FieldEncoding-stringField = partialField "Data.Text.Encoding.encodeUtf8" decodeUtf8P lengthy-  where-    {- Translates to:-        case decodeUtf8' bytes of-            Left err -> Left (show err)-            Right r -> r-    Equivalently:-        first show $ decodeUtf8' bytes-    but avoids dragging in Data.Bifunctors.-    -}-    decodeUtf8P bytes =-        case' ("Data.Text.Encoding.decodeUtf8'" @@ bytes )-            [ "Prelude.Left" `pApp` ["err"]-                --> "Prelude.Left" @@ ("Prelude.show" @@ "err")-            , "Prelude.Right" `pApp` ["r"]-                --> "Prelude.Right" @@ "r"-            ]---- | A protobuf message type.-message :: FieldEncoding-message = lengthy-        { buildFieldType = "Prelude.." @@-            buildFieldType lengthy @@-            "Data.ProtoLens.encodeMessage"-        , parseFieldType = isolatedLengthy "Data.ProtoLens.parseMessage"-        }---- | Takes a @Parser a@, reads a varint and then runs the parser--- isolated to the given length.-isolatedLengthy :: Exp -> Exp-isolatedLengthy parser = do'-    [ len <-- getVarInt'-    , stmt $ "Data.ProtoLens.Encoding.Bytes.isolate"-                @@ (fromIntegral' @@ len)-                @@ parser-    ]-  where-    len = "len"---- | Some functions that are used in multiple places in the generated code.-getVarInt', putVarInt', fromIntegral' :: Exp-getVarInt' = "Data.ProtoLens.Encoding.Bytes.getVarInt"-putVarInt' = "Data.ProtoLens.Encoding.Bytes.putVarInt"-fromIntegral' = "Prelude.fromIntegral"
+ src/Data/ProtoLens/Compiler/ModuleName.hs view
@@ -0,0 +1,24 @@+module Data.ProtoLens.Compiler.ModuleName+    ( protoModuleName ) where++import Data.Char (toUpper)+import Data.List (intercalate)+import System.FilePath++-- | Get the Haskell module name corresponding to a given .proto file.+protoModuleName :: FilePath -> String+protoModuleName path = fixModuleName rawModuleName+  where+    fixModuleName "" = ""+    -- Characters allowed in Bazel filenames but not in module names:+    fixModuleName ('.':c:cs) = '.' : toUpper c : fixModuleName cs+    fixModuleName ('_':c:cs) = toUpper c : fixModuleName cs+    fixModuleName ('-':c:cs) = toUpper c : fixModuleName cs+    fixModuleName (c:cs) = c : fixModuleName cs+    rawModuleName = intercalate "."+                        . (prefix :)+                        . splitDirectories $ dropExtension+                        $ path++prefix :: String+prefix = "Proto"
− src/Data/ProtoLens/Compiler/Plugin.hs
@@ -1,130 +0,0 @@--- Copyright 2016 Google Inc. All Rights Reserved.------ Use of this source code is governed by a BSD-style--- license that can be found in the LICENSE file or at--- https://developers.google.com/open-source/licenses/bsd------ Code for writing protocol compiler plugins.--{-# LANGUAGE OverloadedStrings #-}-module Data.ProtoLens.Compiler.Plugin-    ( ProtoFileName-    , ProtoFile(..)-    , analyzeProtoFiles-    , collectEnvFromDeps-    , outputFilePath-    , moduleName-    , moduleNameStr-    ) where--import Data.Char (toUpper)-import Data.List (foldl', intercalate)-import qualified Data.Map.Strict as Map-import Data.Map.Strict (Map, unions, (!))-import Data.Monoid ((<>))-import Data.String (fromString)-import qualified Data.Text as T-import Data.Text (Text)-import Lens.Family2-import Proto.Google.Protobuf.Descriptor (FileDescriptorProto)-import Proto.Google.Protobuf.Descriptor_Fields (name, dependency, publicDependency)-import System.FilePath (dropExtension, splitDirectories)---import Data.ProtoLens.Compiler.Definitions-import Data.ProtoLens.Compiler.Combinators (ModuleName, Name, QName)---- | The filename of an input .proto file.-type ProtoFileName = Text--data ProtoFile = ProtoFile-    { descriptor :: FileDescriptorProto-    , haskellModule :: ModuleName-    , definitions :: Env Name-    , services :: [ServiceInfo]-    -- | The names of proto files exported (transitively, via "import public"-    -- decl) by this file.-    , exports :: [ProtoFileName]-    , exportedEnv :: Env QName-    }---- Given a list of FileDescriptorProtos, collect information about each file--- into a map of 'ProtoFile's keyed by 'ProtoFileName'.-analyzeProtoFiles :: Text -> [FileDescriptorProto] -> Map ProtoFileName ProtoFile-analyzeProtoFiles modulePrefix files =-    Map.fromList [ (f ^. name, ingestFile f) | f <- files ]-  where-    filesByName = Map.fromList [(f ^. name, f) | f <- files]-    moduleNames = fmap (moduleName modulePrefix) filesByName-    -- The definitions in each input proto file, indexed by filename.-    definitionsByName = fmap collectDefinitions filesByName-    servicesByName = fmap collectServices filesByName-    -- The exports from each .proto file (including any "public import"-    -- dependencies), as they appear to other modules that are importing them;-    -- i.e., qualified by module name.-    exportsByName = transitiveExports files-    localExports = Map.intersectionWith qualifyEnv moduleNames definitionsByName-    exportedEnvs = fmap (\es -> unions [localExports ! e | e <- es]) exportsByName--    ingestFile f = ProtoFile-        { descriptor = f-        , haskellModule = moduleNames ! n-        , definitions = definitionsByName ! n-        , services = servicesByName ! n-        , exports = exportsByName ! n-        , exportedEnv = exportedEnvs ! n-        }-      where-        n = f ^. name--collectEnvFromDeps :: [ProtoFileName] -> Map ProtoFileName ProtoFile -> Env QName-collectEnvFromDeps deps filesByName =-    unions $ fmap (exportedEnv . (filesByName !)) deps---- | Get the output file path (for CodeGeneratorResponse.File) for a Haskell--- ModuleName.-outputFilePath :: String -> Text-outputFilePath n = T.replace "." "/" (T.pack n) <> ".hs"---- | Get the Haskell 'ModuleName' corresponding to a given .proto file.-moduleName :: Text -> FileDescriptorProto -> ModuleName-moduleName modulePrefix fd-      = fromString $ moduleNameStr (T.unpack modulePrefix) (T.unpack $ fd ^. name)---- | Get the Haskell module name corresponding to a given .proto file.-moduleNameStr :: String -> FilePath -> String-moduleNameStr prefix path = fixModuleName rawModuleName-  where-    fixModuleName "" = ""-    -- Characters allowed in Bazel filenames but not in module names:-    fixModuleName ('.':c:cs) = '.' : toUpper c : fixModuleName cs-    fixModuleName ('_':c:cs) = toUpper c : fixModuleName cs-    fixModuleName ('-':c:cs) = toUpper c : fixModuleName cs-    fixModuleName (c:cs) = c : fixModuleName cs-    rawModuleName = intercalate "."-                        . (prefix :)-                        . splitDirectories $ dropExtension-                        $ path---- | Given a list of .proto files (topologically sorted), determine which--- files' definitions are exported by which files.------ Files only export their own definitions, along with the definitions exported--- by any "import public" declarations.-transitiveExports :: [FileDescriptorProto] -> Map ProtoFileName [ProtoFileName]--- Accumulate the transitive dependencies by folding over the files in--- topological order.-transitiveExports = foldl' setExportsFromFile Map.empty-  where-    setExportsFromFile :: Map ProtoFileName [ProtoFileName]-                       -> FileDescriptorProto-                       -> Map ProtoFileName [ProtoFileName]-    setExportsFromFile prevExports fd-        = flip (Map.insert n) prevExports $-            n : concat [ prevExports ! ((fd ^. dependency) !! fromIntegral i)-                       -- Note that publicDependency is a list of indices into-                       -- the dependency list.-                       | i <- fd ^. publicDependency-                       ]-      where n = fd ^. name-