{-# LANGUAGE DataKinds         #-}
{-# LANGUAGE KindSignatures      #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications    #-}


module Bcc.Tracing.Config
  ( TraceOptions (..)
  , TraceSelection (..)
  , traceConfigParser
  , OnOff (..)
  ) where

import           Bcc.Prelude

import           Data.Aeson
import           Data.Aeson.Types (Parser)
import           Data.Text (pack)

import           Bcc.BM.Tracing (TracingVerbosity (..))

import           Bcc.Node.Orphans ()


data TraceOptions
  = TracingOff
  | TracingOn TraceSelection
  deriving (TraceOptions -> TraceOptions -> Bool
(TraceOptions -> TraceOptions -> Bool)
-> (TraceOptions -> TraceOptions -> Bool) -> Eq TraceOptions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TraceOptions -> TraceOptions -> Bool
$c/= :: TraceOptions -> TraceOptions -> Bool
== :: TraceOptions -> TraceOptions -> Bool
$c== :: TraceOptions -> TraceOptions -> Bool
Eq, Int -> TraceOptions -> ShowS
[TraceOptions] -> ShowS
TraceOptions -> String
(Int -> TraceOptions -> ShowS)
-> (TraceOptions -> String)
-> ([TraceOptions] -> ShowS)
-> Show TraceOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TraceOptions] -> ShowS
$cshowList :: [TraceOptions] -> ShowS
show :: TraceOptions -> String
$cshow :: TraceOptions -> String
showsPrec :: Int -> TraceOptions -> ShowS
$cshowsPrec :: Int -> TraceOptions -> ShowS
Show)

type TraceAcceptPolicy = ("TraceAcceptPolicy" :: Symbol)
type TraceBlockchainTime = ("TraceBlockchainTime" :: Symbol)
type TraceBlockFetchClient = ("TraceBlockFetchClient" :: Symbol)
type TraceBlockFetchDecisions = ("TraceBlockFetchDecisions" :: Symbol)
type TraceBlockFetchProtocol = ("TraceBlockFetchProtocol" :: Symbol)
type TraceBlockFetchProtocolSerialised = ("TraceBlockFetchProtocolSerialised" :: Symbol)
type TraceBlockFetchServer = ("TraceBlockFetchServer" :: Symbol)
type TraceChainDB = ("TraceChainDB" :: Symbol)
type TraceChainSyncClient = ("TraceChainSyncClient" :: Symbol)
type TraceChainSyncBlockServer = ("TraceChainSyncBlockServer" :: Symbol)
type TraceChainSyncHeaderServer = ("TraceChainSyncHeaderServer" :: Symbol)
type TraceChainSyncProtocol = ("TraceChainSyncProtocol" :: Symbol)
type TraceDiffusionInitialization = ("TraceDiffusionInitialization" :: Symbol)
type TraceDnsResolver = ("TraceDnsResolver" :: Symbol)
type TraceDnsSubscription = ("TraceDnsSubscription" :: Symbol)
type TraceErrorPolicy = ("TraceErrorPolicy" :: Symbol)
type TraceForge = ("TraceForge" :: Symbol)
type TraceForgeStateInfo = ("TraceForgeStateInfo" :: Symbol)
type TraceHandshake = ("TraceHandshake" :: Symbol)
type TraceIpSubscription = ("TraceIpSubscription" :: Symbol)
type TraceKeepAliveClient = ("TraceKeepAliveClient" :: Symbol)
type TraceLocalChainSyncProtocol = ("TraceLocalChainSyncProtocol" :: Symbol)
type TraceLocalErrorPolicy = ("TraceLocalErrorPolicy" :: Symbol)
type TraceLocalHandshake = ("TraceLocalHandshake" :: Symbol)
type TraceLocalTxSubmissionProtocol = ("TraceLocalTxSubmissionProtocol" :: Symbol)
type TraceLocalTxSubmissionServer = ("TraceLocalTxSubmissionServer" :: Symbol)
type TraceLocalStateQueryProtocol = ("TraceLocalStateQueryProtocol" :: Symbol)
type TraceMempool = ("TraceMempool" :: Symbol)
type TraceMux = ("TraceMux" :: Symbol)
type TraceLocalMux = ("TraceLocalMux" :: Symbol)
type TraceTxInbound = ("TraceTxInbound" :: Symbol)
type TraceTxOutbound = ("TraceTxOutbound" :: Symbol)
type TraceTxSubmissionProtocol = ("TraceTxSubmissionProtocol" :: Symbol)
type TraceTxSubmission2Protocol = ("TraceTxSubmission2Protocol" :: Symbol)

newtype OnOff (name :: Symbol) = OnOff { OnOff name -> Bool
isOn :: Bool } deriving (OnOff name -> OnOff name -> Bool
(OnOff name -> OnOff name -> Bool)
-> (OnOff name -> OnOff name -> Bool) -> Eq (OnOff name)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (name :: Symbol). OnOff name -> OnOff name -> Bool
/= :: OnOff name -> OnOff name -> Bool
$c/= :: forall (name :: Symbol). OnOff name -> OnOff name -> Bool
== :: OnOff name -> OnOff name -> Bool
$c== :: forall (name :: Symbol). OnOff name -> OnOff name -> Bool
Eq, Int -> OnOff name -> ShowS
[OnOff name] -> ShowS
OnOff name -> String
(Int -> OnOff name -> ShowS)
-> (OnOff name -> String)
-> ([OnOff name] -> ShowS)
-> Show (OnOff name)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (name :: Symbol). Int -> OnOff name -> ShowS
forall (name :: Symbol). [OnOff name] -> ShowS
forall (name :: Symbol). OnOff name -> String
showList :: [OnOff name] -> ShowS
$cshowList :: forall (name :: Symbol). [OnOff name] -> ShowS
show :: OnOff name -> String
$cshow :: forall (name :: Symbol). OnOff name -> String
showsPrec :: Int -> OnOff name -> ShowS
$cshowsPrec :: forall (name :: Symbol). Int -> OnOff name -> ShowS
Show)

instance FromJSON (OnOff a) where
    parseJSON :: Value -> Parser (OnOff a)
parseJSON (Data.Aeson.Bool Bool
b)= OnOff a -> Parser (OnOff a)
forall (m :: * -> *) a. Monad m => a -> m a
return (OnOff a -> Parser (OnOff a)) -> OnOff a -> Parser (OnOff a)
forall a b. (a -> b) -> a -> b
$ Bool -> OnOff a
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
b
    parseJSON Value
_ = Parser (OnOff a)
forall (m :: * -> *) a. MonadPlus m => m a
mzero

getName :: forall name. KnownSymbol name => OnOff name -> Text
getName :: OnOff name -> Text
getName OnOff name
_ = String -> Text
pack (Proxy name -> String
forall (n :: Symbol) (proxy :: Symbol -> *).
KnownSymbol n =>
proxy n -> String
symbolVal (Proxy name
forall k (t :: k). Proxy t
Proxy @name))

data TraceSelection
  = TraceSelection
  { TraceSelection -> TracingVerbosity
traceVerbosity :: !TracingVerbosity

  -- Per-trace toggles, alpha-sorted.
  , TraceSelection -> OnOff TraceAcceptPolicy
traceAcceptPolicy :: OnOff TraceAcceptPolicy
  , TraceSelection -> OnOff TraceBlockFetchClient
traceBlockFetchClient :: OnOff TraceBlockFetchClient
  , TraceSelection -> OnOff TraceBlockFetchDecisions
traceBlockFetchDecisions :: OnOff TraceBlockFetchDecisions
  , TraceSelection -> OnOff TraceBlockFetchProtocol
traceBlockFetchProtocol :: OnOff TraceBlockFetchProtocol
  , TraceSelection -> OnOff TraceBlockFetchProtocolSerialised
traceBlockFetchProtocolSerialised :: OnOff TraceBlockFetchProtocolSerialised
  , TraceSelection -> OnOff TraceBlockFetchServer
traceBlockFetchServer :: OnOff TraceBlockFetchServer
  , TraceSelection -> OnOff TraceBlockchainTime
traceBlockchainTime :: OnOff TraceBlockchainTime
  , TraceSelection -> OnOff TraceChainDB
traceChainDB :: OnOff TraceChainDB
  , TraceSelection -> OnOff TraceChainSyncBlockServer
traceChainSyncBlockServer :: OnOff TraceChainSyncBlockServer
  , TraceSelection -> OnOff TraceChainSyncClient
traceChainSyncClient :: OnOff TraceChainSyncClient
  , TraceSelection -> OnOff TraceChainSyncHeaderServer
traceChainSyncHeaderServer :: OnOff TraceChainSyncHeaderServer
  , TraceSelection -> OnOff TraceChainSyncProtocol
traceChainSyncProtocol :: OnOff TraceChainSyncProtocol
  , TraceSelection -> OnOff TraceDiffusionInitialization
traceDiffusionInitialization :: OnOff TraceDiffusionInitialization
  , TraceSelection -> OnOff TraceDnsResolver
traceDnsResolver :: OnOff TraceDnsResolver
  , TraceSelection -> OnOff TraceDnsSubscription
traceDnsSubscription :: OnOff TraceDnsSubscription
  , TraceSelection -> OnOff TraceErrorPolicy
traceErrorPolicy :: OnOff TraceErrorPolicy
  , TraceSelection -> OnOff TraceForge
traceForge :: OnOff TraceForge
  , TraceSelection -> OnOff TraceForgeStateInfo
traceForgeStateInfo :: OnOff TraceForgeStateInfo
  , TraceSelection -> OnOff TraceHandshake
traceHandshake :: OnOff TraceHandshake
  , TraceSelection -> OnOff TraceIpSubscription
traceIpSubscription :: OnOff TraceIpSubscription
  , TraceSelection -> OnOff TraceKeepAliveClient
traceKeepAliveClient :: OnOff TraceKeepAliveClient
  , TraceSelection -> OnOff TraceLocalChainSyncProtocol
traceLocalChainSyncProtocol :: OnOff TraceLocalChainSyncProtocol
  , TraceSelection -> OnOff TraceLocalErrorPolicy
traceLocalErrorPolicy :: OnOff TraceLocalErrorPolicy
  , TraceSelection -> OnOff TraceLocalHandshake
traceLocalHandshake :: OnOff TraceLocalHandshake
  , TraceSelection -> OnOff TraceLocalStateQueryProtocol
traceLocalStateQueryProtocol :: OnOff TraceLocalStateQueryProtocol
  , TraceSelection -> OnOff TraceLocalTxSubmissionProtocol
traceLocalTxSubmissionProtocol :: OnOff TraceLocalTxSubmissionProtocol
  , TraceSelection -> OnOff TraceLocalTxSubmissionServer
traceLocalTxSubmissionServer :: OnOff TraceLocalTxSubmissionServer
  , TraceSelection -> OnOff TraceMempool
traceMempool :: OnOff TraceMempool
  , TraceSelection -> OnOff TraceMux
traceMux :: OnOff TraceMux
  , TraceSelection -> OnOff TraceLocalMux
traceLocalMux :: OnOff TraceLocalMux
  , TraceSelection -> OnOff TraceTxInbound
traceTxInbound :: OnOff TraceTxInbound
  , TraceSelection -> OnOff TraceTxOutbound
traceTxOutbound :: OnOff TraceTxOutbound
  , TraceSelection -> OnOff TraceTxSubmissionProtocol
traceTxSubmissionProtocol :: OnOff TraceTxSubmissionProtocol
  , TraceSelection -> OnOff TraceTxSubmission2Protocol
traceTxSubmission2Protocol :: OnOff TraceTxSubmission2Protocol
  } deriving (TraceSelection -> TraceSelection -> Bool
(TraceSelection -> TraceSelection -> Bool)
-> (TraceSelection -> TraceSelection -> Bool) -> Eq TraceSelection
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TraceSelection -> TraceSelection -> Bool
$c/= :: TraceSelection -> TraceSelection -> Bool
== :: TraceSelection -> TraceSelection -> Bool
$c== :: TraceSelection -> TraceSelection -> Bool
Eq, Int -> TraceSelection -> ShowS
[TraceSelection] -> ShowS
TraceSelection -> String
(Int -> TraceSelection -> ShowS)
-> (TraceSelection -> String)
-> ([TraceSelection] -> ShowS)
-> Show TraceSelection
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TraceSelection] -> ShowS
$cshowList :: [TraceSelection] -> ShowS
show :: TraceSelection -> String
$cshow :: TraceSelection -> String
showsPrec :: Int -> TraceSelection -> ShowS
$cshowsPrec :: Int -> TraceSelection -> ShowS
Show)


traceConfigParser :: Object -> Parser TraceOptions
traceConfigParser :: Object -> Parser TraceOptions
traceConfigParser Object
v =
  let acceptPolicy :: OnOff TraceAcceptPolicy
      acceptPolicy :: OnOff TraceAcceptPolicy
acceptPolicy = Bool -> OnOff TraceAcceptPolicy
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      blockFetchClient :: OnOff TraceBlockFetchClient
      blockFetchClient :: OnOff TraceBlockFetchClient
blockFetchClient = Bool -> OnOff TraceBlockFetchClient
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      blockFetchDecisions :: OnOff TraceBlockFetchDecisions
      blockFetchDecisions :: OnOff TraceBlockFetchDecisions
blockFetchDecisions = Bool -> OnOff TraceBlockFetchDecisions
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
True
      blockFetchProtocol :: OnOff TraceBlockFetchProtocol
      blockFetchProtocol :: OnOff TraceBlockFetchProtocol
blockFetchProtocol = Bool -> OnOff TraceBlockFetchProtocol
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      blockFetchProtocolSerialised :: OnOff TraceBlockFetchProtocolSerialised
      blockFetchProtocolSerialised :: OnOff TraceBlockFetchProtocolSerialised
blockFetchProtocolSerialised = Bool -> OnOff TraceBlockFetchProtocolSerialised
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      blockFetchServer :: OnOff TraceBlockFetchServer
      blockFetchServer :: OnOff TraceBlockFetchServer
blockFetchServer = Bool -> OnOff TraceBlockFetchServer
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      blockchainTime :: OnOff TraceBlockchainTime
      blockchainTime :: OnOff TraceBlockchainTime
blockchainTime = Bool -> OnOff TraceBlockchainTime
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      chainDB :: OnOff TraceChainDB
      chainDB :: OnOff TraceChainDB
chainDB = Bool -> OnOff TraceChainDB
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
True
      chainSyncBlockServer :: OnOff TraceChainSyncBlockServer
      chainSyncBlockServer :: OnOff TraceChainSyncBlockServer
chainSyncBlockServer = Bool -> OnOff TraceChainSyncBlockServer
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      chainSyncClient :: OnOff TraceChainSyncClient
      chainSyncClient :: OnOff TraceChainSyncClient
chainSyncClient = Bool -> OnOff TraceChainSyncClient
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
True
      chainSyncHeaderServer :: OnOff TraceChainSyncHeaderServer
      chainSyncHeaderServer :: OnOff TraceChainSyncHeaderServer
chainSyncHeaderServer = Bool -> OnOff TraceChainSyncHeaderServer
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      chainSyncProtocol :: OnOff TraceChainSyncProtocol
      chainSyncProtocol :: OnOff TraceChainSyncProtocol
chainSyncProtocol = Bool -> OnOff TraceChainSyncProtocol
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      diffusionInitialization :: OnOff TraceDiffusionInitialization
      diffusionInitialization :: OnOff TraceDiffusionInitialization
diffusionInitialization = Bool -> OnOff TraceDiffusionInitialization
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      dnsResolver :: OnOff TraceDnsResolver
      dnsResolver :: OnOff TraceDnsResolver
dnsResolver = Bool -> OnOff TraceDnsResolver
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      dnsSubscription :: OnOff TraceDnsSubscription
      dnsSubscription :: OnOff TraceDnsSubscription
dnsSubscription = Bool -> OnOff TraceDnsSubscription
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
True
      errorPolicy :: OnOff TraceErrorPolicy
      errorPolicy :: OnOff TraceErrorPolicy
errorPolicy = Bool -> OnOff TraceErrorPolicy
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
True
      forge :: OnOff TraceForge
      forge :: OnOff TraceForge
forge = Bool -> OnOff TraceForge
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
True
      forgeStateInfo :: OnOff TraceForgeStateInfo
      forgeStateInfo :: OnOff TraceForgeStateInfo
forgeStateInfo = Bool -> OnOff TraceForgeStateInfo
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
True
      handshake :: OnOff TraceHandshake
      handshake :: OnOff TraceHandshake
handshake = Bool -> OnOff TraceHandshake
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      ipSubscription :: OnOff TraceIpSubscription
      ipSubscription :: OnOff TraceIpSubscription
ipSubscription = Bool -> OnOff TraceIpSubscription
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
True
      keepAliveClient :: OnOff TraceKeepAliveClient
      keepAliveClient :: OnOff TraceKeepAliveClient
keepAliveClient = Bool -> OnOff TraceKeepAliveClient
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      localChainSyncProtocol :: OnOff TraceLocalChainSyncProtocol
      localChainSyncProtocol :: OnOff TraceLocalChainSyncProtocol
localChainSyncProtocol = Bool -> OnOff TraceLocalChainSyncProtocol
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      localErrorPolicy :: OnOff TraceLocalErrorPolicy
      localErrorPolicy :: OnOff TraceLocalErrorPolicy
localErrorPolicy = Bool -> OnOff TraceLocalErrorPolicy
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
True
      localHandshake :: OnOff TraceLocalHandshake
      localHandshake :: OnOff TraceLocalHandshake
localHandshake = Bool -> OnOff TraceLocalHandshake
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      localStateQueryProtocol :: OnOff TraceLocalStateQueryProtocol
      localStateQueryProtocol :: OnOff TraceLocalStateQueryProtocol
localStateQueryProtocol = Bool -> OnOff TraceLocalStateQueryProtocol
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      localTxSubmissionProtocol :: OnOff TraceLocalTxSubmissionProtocol
      localTxSubmissionProtocol :: OnOff TraceLocalTxSubmissionProtocol
localTxSubmissionProtocol = Bool -> OnOff TraceLocalTxSubmissionProtocol
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      localTxSubmissionServer :: OnOff TraceLocalTxSubmissionServer
      localTxSubmissionServer :: OnOff TraceLocalTxSubmissionServer
localTxSubmissionServer = Bool -> OnOff TraceLocalTxSubmissionServer
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      mempool :: OnOff TraceMempool
      mempool :: OnOff TraceMempool
mempool = Bool -> OnOff TraceMempool
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
True
      mux :: OnOff TraceMux
      mux :: OnOff TraceMux
mux = Bool -> OnOff TraceMux
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
True
      localMux :: OnOff TraceLocalMux
      localMux :: OnOff TraceLocalMux
localMux = Bool -> OnOff TraceLocalMux
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      txInbound :: OnOff TraceTxInbound
      txInbound :: OnOff TraceTxInbound
txInbound = Bool -> OnOff TraceTxInbound
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      txOutbound :: OnOff TraceTxOutbound
      txOutbound :: OnOff TraceTxOutbound
txOutbound = Bool -> OnOff TraceTxOutbound
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      txSubmissionProtocol :: OnOff TraceTxSubmissionProtocol
      txSubmissionProtocol :: OnOff TraceTxSubmissionProtocol
txSubmissionProtocol = Bool -> OnOff TraceTxSubmissionProtocol
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False
      txSubmission2Protocol :: OnOff TraceTxSubmission2Protocol
      txSubmission2Protocol :: OnOff TraceTxSubmission2Protocol
txSubmission2Protocol = Bool -> OnOff TraceTxSubmission2Protocol
forall (name :: Symbol). Bool -> OnOff name
OnOff Bool
False in

  TraceSelection -> TraceOptions
TracingOn (TraceSelection -> TraceOptions)
-> Parser TraceSelection -> Parser TraceOptions
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (TracingVerbosity
-> OnOff TraceAcceptPolicy
-> OnOff TraceBlockFetchClient
-> OnOff TraceBlockFetchDecisions
-> OnOff TraceBlockFetchProtocol
-> OnOff TraceBlockFetchProtocolSerialised
-> OnOff TraceBlockFetchServer
-> OnOff TraceBlockchainTime
-> OnOff TraceChainDB
-> OnOff TraceChainSyncBlockServer
-> OnOff TraceChainSyncClient
-> OnOff TraceChainSyncHeaderServer
-> OnOff TraceChainSyncProtocol
-> OnOff TraceDiffusionInitialization
-> OnOff TraceDnsResolver
-> OnOff TraceDnsSubscription
-> OnOff TraceErrorPolicy
-> OnOff TraceForge
-> OnOff TraceForgeStateInfo
-> OnOff TraceHandshake
-> OnOff TraceIpSubscription
-> OnOff TraceKeepAliveClient
-> OnOff TraceLocalChainSyncProtocol
-> OnOff TraceLocalErrorPolicy
-> OnOff TraceLocalHandshake
-> OnOff TraceLocalStateQueryProtocol
-> OnOff TraceLocalTxSubmissionProtocol
-> OnOff TraceLocalTxSubmissionServer
-> OnOff TraceMempool
-> OnOff TraceMux
-> OnOff TraceLocalMux
-> OnOff TraceTxInbound
-> OnOff TraceTxOutbound
-> OnOff TraceTxSubmissionProtocol
-> OnOff TraceTxSubmission2Protocol
-> TraceSelection
TraceSelection
    (TracingVerbosity
 -> OnOff TraceAcceptPolicy
 -> OnOff TraceBlockFetchClient
 -> OnOff TraceBlockFetchDecisions
 -> OnOff TraceBlockFetchProtocol
 -> OnOff TraceBlockFetchProtocolSerialised
 -> OnOff TraceBlockFetchServer
 -> OnOff TraceBlockchainTime
 -> OnOff TraceChainDB
 -> OnOff TraceChainSyncBlockServer
 -> OnOff TraceChainSyncClient
 -> OnOff TraceChainSyncHeaderServer
 -> OnOff TraceChainSyncProtocol
 -> OnOff TraceDiffusionInitialization
 -> OnOff TraceDnsResolver
 -> OnOff TraceDnsSubscription
 -> OnOff TraceErrorPolicy
 -> OnOff TraceForge
 -> OnOff TraceForgeStateInfo
 -> OnOff TraceHandshake
 -> OnOff TraceIpSubscription
 -> OnOff TraceKeepAliveClient
 -> OnOff TraceLocalChainSyncProtocol
 -> OnOff TraceLocalErrorPolicy
 -> OnOff TraceLocalHandshake
 -> OnOff TraceLocalStateQueryProtocol
 -> OnOff TraceLocalTxSubmissionProtocol
 -> OnOff TraceLocalTxSubmissionServer
 -> OnOff TraceMempool
 -> OnOff TraceMux
 -> OnOff TraceLocalMux
 -> OnOff TraceTxInbound
 -> OnOff TraceTxOutbound
 -> OnOff TraceTxSubmissionProtocol
 -> OnOff TraceTxSubmission2Protocol
 -> TraceSelection)
-> Parser TracingVerbosity
-> Parser
     (OnOff TraceAcceptPolicy
      -> OnOff TraceBlockFetchClient
      -> OnOff TraceBlockFetchDecisions
      -> OnOff TraceBlockFetchProtocol
      -> OnOff TraceBlockFetchProtocolSerialised
      -> OnOff TraceBlockFetchServer
      -> OnOff TraceBlockchainTime
      -> OnOff TraceChainDB
      -> OnOff TraceChainSyncBlockServer
      -> OnOff TraceChainSyncClient
      -> OnOff TraceChainSyncHeaderServer
      -> OnOff TraceChainSyncProtocol
      -> OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
v Object -> Text -> Parser (Maybe TracingVerbosity)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? Text
"TracingVerbosity" Parser (Maybe TracingVerbosity)
-> TracingVerbosity -> Parser TracingVerbosity
forall a. Parser (Maybe a) -> a -> Parser a
.!= TracingVerbosity
NormalVerbosity
    -- Per-trace toggles, alpha-sorted.
    Parser
  (OnOff TraceAcceptPolicy
   -> OnOff TraceBlockFetchClient
   -> OnOff TraceBlockFetchDecisions
   -> OnOff TraceBlockFetchProtocol
   -> OnOff TraceBlockFetchProtocolSerialised
   -> OnOff TraceBlockFetchServer
   -> OnOff TraceBlockchainTime
   -> OnOff TraceChainDB
   -> OnOff TraceChainSyncBlockServer
   -> OnOff TraceChainSyncClient
   -> OnOff TraceChainSyncHeaderServer
   -> OnOff TraceChainSyncProtocol
   -> OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceAcceptPolicy)
-> Parser
     (OnOff TraceBlockFetchClient
      -> OnOff TraceBlockFetchDecisions
      -> OnOff TraceBlockFetchProtocol
      -> OnOff TraceBlockFetchProtocolSerialised
      -> OnOff TraceBlockFetchServer
      -> OnOff TraceBlockchainTime
      -> OnOff TraceChainDB
      -> OnOff TraceChainSyncBlockServer
      -> OnOff TraceChainSyncClient
      -> OnOff TraceChainSyncHeaderServer
      -> OnOff TraceChainSyncProtocol
      -> OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceAcceptPolicy))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceAcceptPolicy -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceAcceptPolicy
acceptPolicy Parser (Maybe (OnOff TraceAcceptPolicy))
-> OnOff TraceAcceptPolicy -> Parser (OnOff TraceAcceptPolicy)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceAcceptPolicy
acceptPolicy
    Parser
  (OnOff TraceBlockFetchClient
   -> OnOff TraceBlockFetchDecisions
   -> OnOff TraceBlockFetchProtocol
   -> OnOff TraceBlockFetchProtocolSerialised
   -> OnOff TraceBlockFetchServer
   -> OnOff TraceBlockchainTime
   -> OnOff TraceChainDB
   -> OnOff TraceChainSyncBlockServer
   -> OnOff TraceChainSyncClient
   -> OnOff TraceChainSyncHeaderServer
   -> OnOff TraceChainSyncProtocol
   -> OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceBlockFetchClient)
-> Parser
     (OnOff TraceBlockFetchDecisions
      -> OnOff TraceBlockFetchProtocol
      -> OnOff TraceBlockFetchProtocolSerialised
      -> OnOff TraceBlockFetchServer
      -> OnOff TraceBlockchainTime
      -> OnOff TraceChainDB
      -> OnOff TraceChainSyncBlockServer
      -> OnOff TraceChainSyncClient
      -> OnOff TraceChainSyncHeaderServer
      -> OnOff TraceChainSyncProtocol
      -> OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceBlockFetchClient))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceBlockFetchClient -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceBlockFetchClient
blockFetchClient Parser (Maybe (OnOff TraceBlockFetchClient))
-> OnOff TraceBlockFetchClient
-> Parser (OnOff TraceBlockFetchClient)
forall a. Parser (Maybe a) -> a -> Parser a
.!=  OnOff TraceBlockFetchClient
blockFetchClient
    Parser
  (OnOff TraceBlockFetchDecisions
   -> OnOff TraceBlockFetchProtocol
   -> OnOff TraceBlockFetchProtocolSerialised
   -> OnOff TraceBlockFetchServer
   -> OnOff TraceBlockchainTime
   -> OnOff TraceChainDB
   -> OnOff TraceChainSyncBlockServer
   -> OnOff TraceChainSyncClient
   -> OnOff TraceChainSyncHeaderServer
   -> OnOff TraceChainSyncProtocol
   -> OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceBlockFetchDecisions)
-> Parser
     (OnOff TraceBlockFetchProtocol
      -> OnOff TraceBlockFetchProtocolSerialised
      -> OnOff TraceBlockFetchServer
      -> OnOff TraceBlockchainTime
      -> OnOff TraceChainDB
      -> OnOff TraceChainSyncBlockServer
      -> OnOff TraceChainSyncClient
      -> OnOff TraceChainSyncHeaderServer
      -> OnOff TraceChainSyncProtocol
      -> OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceBlockFetchDecisions))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceBlockFetchDecisions -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceBlockFetchDecisions
blockFetchDecisions Parser (Maybe (OnOff TraceBlockFetchDecisions))
-> OnOff TraceBlockFetchDecisions
-> Parser (OnOff TraceBlockFetchDecisions)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceBlockFetchDecisions
blockFetchDecisions
    Parser
  (OnOff TraceBlockFetchProtocol
   -> OnOff TraceBlockFetchProtocolSerialised
   -> OnOff TraceBlockFetchServer
   -> OnOff TraceBlockchainTime
   -> OnOff TraceChainDB
   -> OnOff TraceChainSyncBlockServer
   -> OnOff TraceChainSyncClient
   -> OnOff TraceChainSyncHeaderServer
   -> OnOff TraceChainSyncProtocol
   -> OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceBlockFetchProtocol)
-> Parser
     (OnOff TraceBlockFetchProtocolSerialised
      -> OnOff TraceBlockFetchServer
      -> OnOff TraceBlockchainTime
      -> OnOff TraceChainDB
      -> OnOff TraceChainSyncBlockServer
      -> OnOff TraceChainSyncClient
      -> OnOff TraceChainSyncHeaderServer
      -> OnOff TraceChainSyncProtocol
      -> OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceBlockFetchProtocol))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceBlockFetchProtocol -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceBlockFetchProtocol
blockFetchProtocol Parser (Maybe (OnOff TraceBlockFetchProtocol))
-> OnOff TraceBlockFetchProtocol
-> Parser (OnOff TraceBlockFetchProtocol)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceBlockFetchProtocol
blockFetchProtocol
    Parser
  (OnOff TraceBlockFetchProtocolSerialised
   -> OnOff TraceBlockFetchServer
   -> OnOff TraceBlockchainTime
   -> OnOff TraceChainDB
   -> OnOff TraceChainSyncBlockServer
   -> OnOff TraceChainSyncClient
   -> OnOff TraceChainSyncHeaderServer
   -> OnOff TraceChainSyncProtocol
   -> OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceBlockFetchProtocolSerialised)
-> Parser
     (OnOff TraceBlockFetchServer
      -> OnOff TraceBlockchainTime
      -> OnOff TraceChainDB
      -> OnOff TraceChainSyncBlockServer
      -> OnOff TraceChainSyncClient
      -> OnOff TraceChainSyncHeaderServer
      -> OnOff TraceChainSyncProtocol
      -> OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object
-> Text -> Parser (Maybe (OnOff TraceBlockFetchProtocolSerialised))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceBlockFetchProtocolSerialised -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceBlockFetchProtocolSerialised
blockFetchProtocolSerialised Parser (Maybe (OnOff TraceBlockFetchProtocolSerialised))
-> OnOff TraceBlockFetchProtocolSerialised
-> Parser (OnOff TraceBlockFetchProtocolSerialised)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceBlockFetchProtocolSerialised
blockFetchProtocolSerialised
    Parser
  (OnOff TraceBlockFetchServer
   -> OnOff TraceBlockchainTime
   -> OnOff TraceChainDB
   -> OnOff TraceChainSyncBlockServer
   -> OnOff TraceChainSyncClient
   -> OnOff TraceChainSyncHeaderServer
   -> OnOff TraceChainSyncProtocol
   -> OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceBlockFetchServer)
-> Parser
     (OnOff TraceBlockchainTime
      -> OnOff TraceChainDB
      -> OnOff TraceChainSyncBlockServer
      -> OnOff TraceChainSyncClient
      -> OnOff TraceChainSyncHeaderServer
      -> OnOff TraceChainSyncProtocol
      -> OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceBlockFetchServer))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceBlockFetchServer -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceBlockFetchServer
blockFetchServer Parser (Maybe (OnOff TraceBlockFetchServer))
-> OnOff TraceBlockFetchServer
-> Parser (OnOff TraceBlockFetchServer)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceBlockFetchServer
blockFetchServer
    Parser
  (OnOff TraceBlockchainTime
   -> OnOff TraceChainDB
   -> OnOff TraceChainSyncBlockServer
   -> OnOff TraceChainSyncClient
   -> OnOff TraceChainSyncHeaderServer
   -> OnOff TraceChainSyncProtocol
   -> OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceBlockchainTime)
-> Parser
     (OnOff TraceChainDB
      -> OnOff TraceChainSyncBlockServer
      -> OnOff TraceChainSyncClient
      -> OnOff TraceChainSyncHeaderServer
      -> OnOff TraceChainSyncProtocol
      -> OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceBlockchainTime))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceBlockchainTime -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceBlockchainTime
blockchainTime Parser (Maybe (OnOff TraceBlockchainTime))
-> OnOff TraceBlockchainTime -> Parser (OnOff TraceBlockchainTime)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceBlockchainTime
blockchainTime
    Parser
  (OnOff TraceChainDB
   -> OnOff TraceChainSyncBlockServer
   -> OnOff TraceChainSyncClient
   -> OnOff TraceChainSyncHeaderServer
   -> OnOff TraceChainSyncProtocol
   -> OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceChainDB)
-> Parser
     (OnOff TraceChainSyncBlockServer
      -> OnOff TraceChainSyncClient
      -> OnOff TraceChainSyncHeaderServer
      -> OnOff TraceChainSyncProtocol
      -> OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceChainDB))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceChainDB -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceChainDB
chainDB Parser (Maybe (OnOff TraceChainDB))
-> OnOff TraceChainDB -> Parser (OnOff TraceChainDB)
forall a. Parser (Maybe a) -> a -> Parser a
.!=  OnOff TraceChainDB
chainDB
    Parser
  (OnOff TraceChainSyncBlockServer
   -> OnOff TraceChainSyncClient
   -> OnOff TraceChainSyncHeaderServer
   -> OnOff TraceChainSyncProtocol
   -> OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceChainSyncBlockServer)
-> Parser
     (OnOff TraceChainSyncClient
      -> OnOff TraceChainSyncHeaderServer
      -> OnOff TraceChainSyncProtocol
      -> OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceChainSyncBlockServer))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceChainSyncBlockServer -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceChainSyncBlockServer
chainSyncBlockServer Parser (Maybe (OnOff TraceChainSyncBlockServer))
-> OnOff TraceChainSyncBlockServer
-> Parser (OnOff TraceChainSyncBlockServer)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceChainSyncBlockServer
chainSyncBlockServer
    Parser
  (OnOff TraceChainSyncClient
   -> OnOff TraceChainSyncHeaderServer
   -> OnOff TraceChainSyncProtocol
   -> OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceChainSyncClient)
-> Parser
     (OnOff TraceChainSyncHeaderServer
      -> OnOff TraceChainSyncProtocol
      -> OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceChainSyncClient))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceChainSyncClient -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceChainSyncClient
chainSyncClient Parser (Maybe (OnOff TraceChainSyncClient))
-> OnOff TraceChainSyncClient
-> Parser (OnOff TraceChainSyncClient)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceChainSyncClient
chainSyncClient
    Parser
  (OnOff TraceChainSyncHeaderServer
   -> OnOff TraceChainSyncProtocol
   -> OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceChainSyncHeaderServer)
-> Parser
     (OnOff TraceChainSyncProtocol
      -> OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceChainSyncHeaderServer))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceChainSyncHeaderServer -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceChainSyncHeaderServer
chainSyncHeaderServer Parser (Maybe (OnOff TraceChainSyncHeaderServer))
-> OnOff TraceChainSyncHeaderServer
-> Parser (OnOff TraceChainSyncHeaderServer)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceChainSyncHeaderServer
chainSyncHeaderServer
    Parser
  (OnOff TraceChainSyncProtocol
   -> OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceChainSyncProtocol)
-> Parser
     (OnOff TraceDiffusionInitialization
      -> OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceChainSyncProtocol))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceChainSyncProtocol -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceChainSyncProtocol
chainSyncProtocol Parser (Maybe (OnOff TraceChainSyncProtocol))
-> OnOff TraceChainSyncProtocol
-> Parser (OnOff TraceChainSyncProtocol)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceChainSyncProtocol
chainSyncProtocol
    Parser
  (OnOff TraceDiffusionInitialization
   -> OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceDiffusionInitialization)
-> Parser
     (OnOff TraceDnsResolver
      -> OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object
-> Text -> Parser (Maybe (OnOff TraceDiffusionInitialization))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceDiffusionInitialization -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceDiffusionInitialization
diffusionInitialization Parser (Maybe (OnOff TraceDiffusionInitialization))
-> OnOff TraceDiffusionInitialization
-> Parser (OnOff TraceDiffusionInitialization)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceDiffusionInitialization
diffusionInitialization
    Parser
  (OnOff TraceDnsResolver
   -> OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceDnsResolver)
-> Parser
     (OnOff TraceDnsSubscription
      -> OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceDnsResolver))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceDnsResolver -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceDnsResolver
dnsResolver Parser (Maybe (OnOff TraceDnsResolver))
-> OnOff TraceDnsResolver -> Parser (OnOff TraceDnsResolver)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceDnsResolver
dnsResolver
    Parser
  (OnOff TraceDnsSubscription
   -> OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceDnsSubscription)
-> Parser
     (OnOff TraceErrorPolicy
      -> OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceDnsSubscription))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceDnsSubscription -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceDnsSubscription
dnsSubscription Parser (Maybe (OnOff TraceDnsSubscription))
-> OnOff TraceDnsSubscription
-> Parser (OnOff TraceDnsSubscription)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceDnsSubscription
dnsSubscription
    Parser
  (OnOff TraceErrorPolicy
   -> OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceErrorPolicy)
-> Parser
     (OnOff TraceForge
      -> OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceErrorPolicy))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceErrorPolicy -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceErrorPolicy
errorPolicy Parser (Maybe (OnOff TraceErrorPolicy))
-> OnOff TraceErrorPolicy -> Parser (OnOff TraceErrorPolicy)
forall a. Parser (Maybe a) -> a -> Parser a
.!=  OnOff TraceErrorPolicy
errorPolicy
    Parser
  (OnOff TraceForge
   -> OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceForge)
-> Parser
     (OnOff TraceForgeStateInfo
      -> OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceForge))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceForge -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceForge
forge Parser (Maybe (OnOff TraceForge))
-> OnOff TraceForge -> Parser (OnOff TraceForge)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceForge
forge
    Parser
  (OnOff TraceForgeStateInfo
   -> OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceForgeStateInfo)
-> Parser
     (OnOff TraceHandshake
      -> OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceForgeStateInfo))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceForgeStateInfo -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceForgeStateInfo
forgeStateInfo Parser (Maybe (OnOff TraceForgeStateInfo))
-> OnOff TraceForgeStateInfo -> Parser (OnOff TraceForgeStateInfo)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceForgeStateInfo
forgeStateInfo
    Parser
  (OnOff TraceHandshake
   -> OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceHandshake)
-> Parser
     (OnOff TraceIpSubscription
      -> OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceHandshake))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceHandshake -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceHandshake
handshake Parser (Maybe (OnOff TraceHandshake))
-> OnOff TraceHandshake -> Parser (OnOff TraceHandshake)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceHandshake
handshake
    Parser
  (OnOff TraceIpSubscription
   -> OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceIpSubscription)
-> Parser
     (OnOff TraceKeepAliveClient
      -> OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceIpSubscription))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceIpSubscription -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceIpSubscription
ipSubscription Parser (Maybe (OnOff TraceIpSubscription))
-> OnOff TraceIpSubscription -> Parser (OnOff TraceIpSubscription)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceIpSubscription
ipSubscription
    Parser
  (OnOff TraceKeepAliveClient
   -> OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceKeepAliveClient)
-> Parser
     (OnOff TraceLocalChainSyncProtocol
      -> OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceKeepAliveClient))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceKeepAliveClient -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceKeepAliveClient
keepAliveClient Parser (Maybe (OnOff TraceKeepAliveClient))
-> OnOff TraceKeepAliveClient
-> Parser (OnOff TraceKeepAliveClient)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceKeepAliveClient
keepAliveClient
    Parser
  (OnOff TraceLocalChainSyncProtocol
   -> OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceLocalChainSyncProtocol)
-> Parser
     (OnOff TraceLocalErrorPolicy
      -> OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object
-> Text -> Parser (Maybe (OnOff TraceLocalChainSyncProtocol))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceLocalChainSyncProtocol -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceLocalChainSyncProtocol
localChainSyncProtocol Parser (Maybe (OnOff TraceLocalChainSyncProtocol))
-> OnOff TraceLocalChainSyncProtocol
-> Parser (OnOff TraceLocalChainSyncProtocol)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceLocalChainSyncProtocol
localChainSyncProtocol
    Parser
  (OnOff TraceLocalErrorPolicy
   -> OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceLocalErrorPolicy)
-> Parser
     (OnOff TraceLocalHandshake
      -> OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceLocalErrorPolicy))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceLocalErrorPolicy -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceLocalErrorPolicy
localErrorPolicy Parser (Maybe (OnOff TraceLocalErrorPolicy))
-> OnOff TraceLocalErrorPolicy
-> Parser (OnOff TraceLocalErrorPolicy)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceLocalErrorPolicy
localErrorPolicy
    Parser
  (OnOff TraceLocalHandshake
   -> OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceLocalHandshake)
-> Parser
     (OnOff TraceLocalStateQueryProtocol
      -> OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceLocalHandshake))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceLocalHandshake -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceLocalHandshake
localHandshake Parser (Maybe (OnOff TraceLocalHandshake))
-> OnOff TraceLocalHandshake -> Parser (OnOff TraceLocalHandshake)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceLocalHandshake
localHandshake
    Parser
  (OnOff TraceLocalStateQueryProtocol
   -> OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceLocalStateQueryProtocol)
-> Parser
     (OnOff TraceLocalTxSubmissionProtocol
      -> OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object
-> Text -> Parser (Maybe (OnOff TraceLocalStateQueryProtocol))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceLocalStateQueryProtocol -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceLocalStateQueryProtocol
localStateQueryProtocol Parser (Maybe (OnOff TraceLocalStateQueryProtocol))
-> OnOff TraceLocalStateQueryProtocol
-> Parser (OnOff TraceLocalStateQueryProtocol)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceLocalStateQueryProtocol
localStateQueryProtocol
    Parser
  (OnOff TraceLocalTxSubmissionProtocol
   -> OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceLocalTxSubmissionProtocol)
-> Parser
     (OnOff TraceLocalTxSubmissionServer
      -> OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object
-> Text -> Parser (Maybe (OnOff TraceLocalTxSubmissionProtocol))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceLocalTxSubmissionProtocol -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceLocalTxSubmissionProtocol
localTxSubmissionProtocol Parser (Maybe (OnOff TraceLocalTxSubmissionProtocol))
-> OnOff TraceLocalTxSubmissionProtocol
-> Parser (OnOff TraceLocalTxSubmissionProtocol)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceLocalTxSubmissionProtocol
localTxSubmissionProtocol
    Parser
  (OnOff TraceLocalTxSubmissionServer
   -> OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceLocalTxSubmissionServer)
-> Parser
     (OnOff TraceMempool
      -> OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object
-> Text -> Parser (Maybe (OnOff TraceLocalTxSubmissionServer))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceLocalTxSubmissionServer -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceLocalTxSubmissionServer
localTxSubmissionServer Parser (Maybe (OnOff TraceLocalTxSubmissionServer))
-> OnOff TraceLocalTxSubmissionServer
-> Parser (OnOff TraceLocalTxSubmissionServer)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceLocalTxSubmissionServer
localTxSubmissionServer
    Parser
  (OnOff TraceMempool
   -> OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceMempool)
-> Parser
     (OnOff TraceMux
      -> OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceMempool))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceMempool -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceMempool
mempool Parser (Maybe (OnOff TraceMempool))
-> OnOff TraceMempool -> Parser (OnOff TraceMempool)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceMempool
mempool
    Parser
  (OnOff TraceMux
   -> OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceMux)
-> Parser
     (OnOff TraceLocalMux
      -> OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceMux))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceMux -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceMux
mux Parser (Maybe (OnOff TraceMux))
-> OnOff TraceMux -> Parser (OnOff TraceMux)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceMux
mux
    Parser
  (OnOff TraceLocalMux
   -> OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceLocalMux)
-> Parser
     (OnOff TraceTxInbound
      -> OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceLocalMux))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceLocalMux -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceLocalMux
localMux Parser (Maybe (OnOff TraceLocalMux))
-> OnOff TraceLocalMux -> Parser (OnOff TraceLocalMux)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceLocalMux
localMux
    Parser
  (OnOff TraceTxInbound
   -> OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceTxInbound)
-> Parser
     (OnOff TraceTxOutbound
      -> OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol
      -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceTxInbound))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceTxInbound -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceTxInbound
txInbound Parser (Maybe (OnOff TraceTxInbound))
-> OnOff TraceTxInbound -> Parser (OnOff TraceTxInbound)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceTxInbound
txInbound
    Parser
  (OnOff TraceTxOutbound
   -> OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol
   -> TraceSelection)
-> Parser (OnOff TraceTxOutbound)
-> Parser
     (OnOff TraceTxSubmissionProtocol
      -> OnOff TraceTxSubmission2Protocol -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceTxOutbound))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceTxOutbound -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceTxOutbound
txOutbound Parser (Maybe (OnOff TraceTxOutbound))
-> OnOff TraceTxOutbound -> Parser (OnOff TraceTxOutbound)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceTxOutbound
txOutbound
    Parser
  (OnOff TraceTxSubmissionProtocol
   -> OnOff TraceTxSubmission2Protocol -> TraceSelection)
-> Parser (OnOff TraceTxSubmissionProtocol)
-> Parser (OnOff TraceTxSubmission2Protocol -> TraceSelection)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceTxSubmissionProtocol))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceTxSubmissionProtocol -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceTxSubmissionProtocol
txSubmissionProtocol Parser (Maybe (OnOff TraceTxSubmissionProtocol))
-> OnOff TraceTxSubmissionProtocol
-> Parser (OnOff TraceTxSubmissionProtocol)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceTxSubmissionProtocol
txSubmissionProtocol
    Parser (OnOff TraceTxSubmission2Protocol -> TraceSelection)
-> Parser (OnOff TraceTxSubmission2Protocol)
-> Parser TraceSelection
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
v Object -> Text -> Parser (Maybe (OnOff TraceTxSubmission2Protocol))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
.:? OnOff TraceTxSubmission2Protocol -> Text
forall (name :: Symbol). KnownSymbol name => OnOff name -> Text
getName OnOff TraceTxSubmission2Protocol
txSubmission2Protocol Parser (Maybe (OnOff TraceTxSubmission2Protocol))
-> OnOff TraceTxSubmission2Protocol
-> Parser (OnOff TraceTxSubmission2Protocol)
forall a. Parser (Maybe a) -> a -> Parser a
.!= OnOff TraceTxSubmission2Protocol
txSubmission2Protocol)