h&aT      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                                       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""  ####*$ Safe-Inferredc Safe-Inferred"  api-tools Render a  in ISO 8601 format to a precision of seconds (i.e. omitting any subseconds). api-toolsParse text as a  in ISO 8601 format or a number of slight variations thereof (the T may be replaced with a space, and the seconds, milliseconds and/or Z/ timezone indicator may optionally be omitted)."Time zone designations other than Z% for UTC are not currently supported. api-toolsParse text as a  in  YYYY-MM-DD format. api-tools Parser for  YYYY-MM-DD format. api-toolsParser for times in the format HH:MM, HH:MM:SS or HH:MM:SS.QQQ.... api-tools)Parser for time zone indications such as Z,  UTC or an explicit offset like +HH:MM or -HH . Returns  for UTC. Local times (without a timezone designator) are assumed to be UTC. If there is an explicit offset, returns its negation. api-toolsParse text as a  in ISO 8601 format or a number of slight variations thereof (the T may be replaced with a space, and the seconds and timezone indicator may optionally be omitted). api-tools Variant of = that throws an error if the input text could not be parsed. api-tools Variant of = that throws an error if the input text could not be parsed. Safe-Inferred api-toolsThe "oh noes!" operator. api-toolsAttempts to match the keys of the maps to produce a map from keys to pairs.    Safe-Inferred= api-toolsEncode an element of a union as single-element map from a field name to a value.%(c) Chris Kuklewicz 2006, (c) shelarcy 2012, derived from (c) The University of Glasgow 2001 BSD-style (see the file LICENSE)libraries@haskell.org experimental'non-portable (regex-base needs MPTC+FD) Safe-Inferred  api-toolsMakes a regular expression with the default options (multi-line, case-sensitive). The syntax of regular expressions is otherwise that of egrep. (i.e. POSIX "extended" regular expressions). api-toolsMakes a regular expression, where the multi-line and case-sensitive options can be changed from the default settings. api-tools+Match a regular expression against a string api-toolsMatch a regular expression against a string, returning more information about the match. api-tools!The regular expression to compile api-tools <=> '^' and '$' match the beginning and end of individual lines respectively, and '.' does not match the newline character. api-tools <=> matching is case-sensitive api-tools(Returns: the compiled regular expression api-toolsThe regular expression api-toolsThe string to match against api-tools Returns:  strs if the match succeeded (and strs, is the list of subexpression matches), or  otherwise. api-toolsThe regular expression api-toolsThe string to match against api-tools Returns:  if the match failed, or:  Just ( everything before match, portion matched, everything after the match, subexpression matches ) Safe-Inferred "%&>+D" api-toolsBinary data is represented in JSON format as a base64-encoded string  api-toolsA default value for a field' api-tools;the basic JSON types (N.B., no floating point numbers, yet)( api-toolsa JSON UTF-8 string) api-toolsa base-64-encoded byte string* api-tools a JSON bool+ api-toolsa JSON integral number, api-toolsa JSON UTC string- api-toolsType is either a list, Maybe, a named element of the API or a basic type. api-toolslist elements are types/ api-toolsMaybe elements are types0 api-tools.the referenced type must be defined by the API1 api-toolsa JSON string, int, bool etc.2 api-toolsa generic JSON value3 api-toolsConversion possibly converts to an internal representation. If specified, a conversion is a pair of an injection function name and a projection function name.4 api-tools(SpecEnum is your classic enumerated type7 api-tools%SpecUnion is your classsic union type: api-toolsIn addition to the type and comment, record fields may carry a flag indicating that they are read-only, and may have a default value, which must be of a compatible type.@ api-tools)SpecRecord is your classsic product type.S api-toolsSpecNewtype elements are isomorphisms of string, inetgers or booleansW api-toolstype/element specs are either simple type isomorphisms of basic JSON types, records, unions or enumerated types] api-toolsa distinct case-insensitive short prefix used to form unique record field names and data constructors:"must be a valid Haskell identifiermust be unique within the API^ api-tools,Markdown comments are represented by strings_ api-toolsFieldName identifies recod fields and union alternatives must contain a valid identifier valid in Haskell and any API client wrappers (e.g., if Ruby wrappers are to be generated the names should easily map into Ruby)b api-tools6TypeName must contain a valid Haskell type constructore api-tools/Specifies an individual element/type of the APIg api-toolsname of Haskell typeh api-tools#comment describing type in Markdowni api-tools!distinct short prefix (see below)j api-toolsthe type specificationk api-toolsoptional conversion functionso api-toolsan API spec is made up of a list of type/element specs, each specifying a Haskell type and JSON wrapperss api-tools$Convert a default value to an Aeson . This differs from  as it will not round-trip with .: UTC default values are turned into strings. api-toolsIt is sometimes helpful to write a type name directly as a string !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstolmnefghijkbcd_`a^]WXYZ[\STUV@AB:;<=>?7894563-./012 !"#$%&'()*+,OPQRKLMNGHIJCDEFsrpqt Safe-Inferred19 api-toolsA  a is something that can generate TH declarations from a value of type a#. Tools can be combined using the  instance. api-tools0Execute a tool to generate some TH declarations. api-toolsSettings to control the behaviour of API tools. This record may be extended in the future, so you should construct a value by overriding individual fields of . api-toolsGenerate a warning when an instance declaration is omitted because it already exists api-toolsRename the constructors of filtered newtypes and generate smart constructors that enforce the invariants api-tools+Default settings designed to be overridden. api-tools5Construct a tool that does not depend on any settings api-tools0Construct a tool that may depend on the settings api-tools is a contravariant functor api-tools8Make a tool that reads its argument to decide what to do api-tools?Apply a tool that acts on elements of a list to the entire list api-tools0Apply a tool that acts on nodes to an entire API api-toolsApply a tool that acts on datatype nodes (i.e. those that are not synonyms) to an entire API api-toolsCreate a tool that acts on nodes from its action on individual specs. Safe-Inferred3 api-toolsConstruct an idiomatic expression (an expression in an Applicative context), i.e. app ke [] = ke app ke [e1,e2,...,en] = ke <$> e1 <*> e2 ... <*> en api-toolsAdd an instance declaration for a class, if such an instance does not already exist api-tools-Construct a TH function with a type signature api-tools Construct a simple TH definition api-tools6Construct a simple TH definition with a type signature api-tools!Field name as a string expression api-toolsField name as a variable  & Safe-Inferred4p api-toolsEncode a Haskell String to a list of Word8 values, in UTF8 format.2 Safe-Inferred4  Safe-Inferred>& api-tools"...and an enum is a set of values. api-tools<...similarly a union is a map from fields to alternatives... api-toolsThe canonical form of a record type is a map from fields to values... api-tools8The normal or canonical form for a type declaration, an e=. Equality of the normal form indicates equivalence of APIs.We track all types. api-toolsThe API type has too much extra info for us to be able to simply compare them with (==). Our strategy is to strip out ancillary information and normalise into a canonical form, and then we can use a simple (==) compare.Our normalised API discards most of the details of each type, keeping just essential information about each type. We discard order of types and fields, so we can use just associative maps. api-toolsCompute the normal form of an API, discarding extraneous information. api-tools5Compute the normal form of a single type declaration. api-tools)Find the set of type names used in an API api-tools0Find the set of type names used in a declaration api-tools*Find the set of type names used in an type api-tools&Check if a type is declared in the API api-tools+Check if a type is used anywhere in the API api-toolsCheck if the first type's transitive dependencies include the second type api-tools5Compute the transitive dependencies of a set of types api-toolsCompute the set of types that depend (transitively) on the given types api-toolsCompute the transitive closure of a relation. Relations are represented as functions that takes a set of elements to the set of related elements. api-toolsTest that all the free type names in a type are declared in the API. If not, return the set of undeclared types. api-toolsTest that all the types used in a type declaration are declared in the API. If not, return the set of undeclared types. api-toolsTest that all the types used in the API are declared. If not, return the set of undeclared types. api-tools0Substitute types for type names in a declaration api-tools)Substitute types for type names in a type api-tools6Rename the first type to the second throughout the API  Safe-Inferred%&?J api-tools:Create human-readable API documentation in Markdown format api-tools8Document a single API comment or node in Markdown format   Safe-Inferred?  Safe-Inferred?' Safe-Inferred"%&8H#& api-toolsRecord of arguments that must be supplied to generate HTML documentation for a  api-tools4URL for individual call documentation from the index api-tools$URL for documentation of an API type api-tools Type for 4 response body, parameterised by possible JSON types api-toolsAn empty response api-tools!A JSON response of the given type api-toolsA non-empty, non-JSON response api-toolsExample response data from a  api-tools*HTTP status code for this example response api-toolsType of example response api-toolsContent of response, or  for empty response api-tools Maybe EmailAddress mkEmailAddress t = ... -- check filter api-tools-Generate a record type definition, like this: data JobSpecId = JobSpecId { _jsi_id :: JobId , _jsi_input :: JSInput , _jsi_output :: JSOutputStatus , _jsi_pipelineId :: PipelineId } deriving (Show,Eq,Typeable) api-tools,Generate a union type definition, like this: >data Foo = F_Bar Int | F_Baz Bool deriving (Show,Typeable) api-tools,Generate an enum type definition, like this: data FrameRate = FR_auto | FR_10 | FR_15 | FR_23_97 | FR_24 | FR_25 | FR_29_97 | FR_30 | FR_60 deriving (Show,Eq,Ord,Bounded,Enum,Typeable) api-toolsDefault names of classes for which to derive instances, depending on the type of API node. api-tools5Name of the type corresponding to the API node, e.g. JobId api-toolsName of the representation type corresponding to the API node, which differs from the  only if custom conversion functions are specified. This is also the name of the sole constructor for newtypes and records. api-toolsName of the single field in a newtype, prefixed by an underscore, e.g. _JobId api-toolsName of the constructor of a newtype, which will be same as the representation type unless a smart constructor is requested, in which case we just prefix it with UnsafeMk. api-tools?Name of the smart constructor of a newtype, prefixed with "mk". api-toolsConstruct the name of a record field by attaching the type-specific prefix, in lowercase, e.g. _jsi_id api-toolsConstruct the name of a union or enum constructor by attaching the type-specific prefix, in uppercase, e.g. FR_auto api-tools%The type corresponding to an API node api-tools4The representation type corresponding to an API node api-tools7The constructor for a record API node, as an expression api-tools3The constructor for a record API node, as a pattern api-tools5The constructor for a newtype, which might be renamed api-tools/A record field in an API node, as an expression api-tools+A record field in an API node, as a pattern api-tools (Sub -> f Sub) -> Root -> f Root=along with similar functions for all the types nested inside Root that depend on Sub.Note that types with custom representations will not have traversals generated automatically: if required, these must be defined manually in the same module as the call to :, otherwise the generated code will lead to scope errors. api-toolsLike , but it allows passing a list of "roots", to avoid conflicting declarations. api-toolstraversalName x tn- is the name of the function that traverses x values inside tn api-toolstraversalType x an- is the type of the function that traverses x values inside an api-tools>Construct a traversal of the X substructures of the given type api-toolsConstruct a traversal of the X substructures of the given type, or return * if there are no substructures to traverse api-toolsBuild a traversal for a record type that applies f to any fields of type X, and traverses nested structures. For example: traverseXFoo :: Applicative f => (X -> f X) -> Foo -> f Foo traverseXFoo f x = Foo <$> f (foo_a x) <*> traverseXBar (traverse f) (foo_b x) api-toolsBuild a traversal for a union type that traverses nested structures. For example: traverseXBar :: Applicative f => (X -> f X) -> Bar -> f Bar traverseXBar f (BAR_one a) = BAR_one <$> f a traverseXBar f (Bar_two b) = BAR_two <$> traverseXBaz f b Safe-Inferredkk api-toolsTool to derive  instances for generated types. At present, this derives only base version instances. Safe-Inferred"o api-toolsTool to generate  instances for generated types. api-tools Generate an  instance for a newtype that respects its filter. We don't try to generate arbitrary data matching a regular expression, however: instances must be supplied manually. When generating arbitrary integers, use  rather than 3 (the latter tends to generate non-unique values). api-tools Generate an  instance for a record: instance Arbitrary Foo where arbitrary = sized $ \ x -> Foo <$> resize (x `div` 2) arbitrary <*> ... <*> resize (x `div` 2) arbitrary api-tools Generate an  instance for a union: instance Arbitrary Foo where arbitrary = oneOf [ fmap Bar arbitrary, fmap Baz arbitrary ] api-tools Generate an  instance for an enumeration: instance Arbitrary Foo where arbitrary = elements [Bar, Baz] api-toolsGenerate an arbitrary  in a given range. api-toolsGenerate an arbitrary  in a given range. TODO: we might want to generate a broader range of sample times, rather than just the extrema. Safe-Inferredpm api-tools2Tool to make lenses for fields in generated types. Safe-Inferred"<vC api-toolsThe Example class is used to generate a documentation-friendly example for each type in the model api-tools*Generator for example values; defaults to  if not specified api-toolsGenerate a list of (type name, sample generator) pairs corresponding to each type in the API, with samples encoded as JSON. This depends on the  instances generated by $. It generates something like this: samples :: [(String, Gen Value)] samples = [("Foo", fmap toJSON (example :: Gen Foo)), ... ] api-toolsTool to generate # instances for types generated by . This depends on quickCheckTool. api-tools Generate an 7 instance for a newtype. If there is no filter, call ) on the underlying type; otherwise, use . Like , if a regular expression filter is applied the instance must be defined manually. api-tools Generate an  instance for a record: instance Example Foo where example = sized $ \ x -> Foo <$> resize (x `div` 2) example <*> ... <*> resize (x `div` 2) example api-tools Generate an  instance for a union: instance Example Foo where example = oneOf [ fmap Bar example, fmap Baz example ] api-tools Generate an : instance for an enumeration, with no definition for the 2 method, because we can inherit the behaviour of : instance Example Foo Safe-Inferredy api-tools3Tool to generate the maps between enumerations and Text strings named by  and . api-toolsFor an enum type E, name a function _text_E :: E -> Text that gives a string corresponding to the inhabitant of the type. For example, we generate something like this:  _text_FrameRate :: FrameRate -> T.Text _text_FrameRate fr = case fr of FRauto -> "auto" FR10 -> "10" FR15 -> "15" FR23_97 -> "23.97" FR24 -> "24" FR25 -> "25" FR29_97 -> "29.97" FR30 -> "30" FR60 -> "60" api-toolsFor an enum type E, name a map from Text1 values to inhabitants of the type, for example: _map_FrameRate :: Map Text FrameRate _map_FrameRate = genTextMap _text_FrameRate Safe-Inferredzz api-toolsTool to generate  instances for generated types. Safe-Inferred{ api-toolsTool to generate # instances for types generated by . This depends on . Safe-Inferred"(8<' api-toolsLike FromJSON, but keeping track of multiple errors and their positions. Moreover, this class is more liberal in accepting invalid inputs:a string like "3" is accepted as an integer; and the integers 0 and 1 are accepted as booleans. api-toolsParse a JSON value with structured error-reporting support. If this method is omitted, fromJSON will be used instead: note that this will result in less precise errors. api-tools2Options to modify the behaviour of the JSON parser api-toolsIf true, default values from the schema will be used when a field is missing from the JSON data api-toolsIf true, fields in the schema marked read-only will be overwritten with default values api-toolsIf true, parse errors will be generated when invalid values are supplied for filtered newtypes api-toolsLike , but keeping track of locations within the JSON structure and able to report multiple errors. Careful! The " instance does not agree with the 8 instance in all circumstances, and you should use the * instance where possible. In particular: pf <*> ps# returns errors from both arguments pf `ap` ps returns errors from pf only api-tools=Use this as a basis for overriding individual fields of the 4 record, in case more flags are added in the future. api-toolsRun a parser with given flags, starting in the outermost location, and returning warnings even if the parse was successful api-toolsRun the JSON parser on a value to produce a result or a list of errors with their positions. This should not be used inside an implementation of . as it will not pass on the current position. api-toolsRun the JSON parser on a value to produce a result or a list of errors with their positions. This version allows the  to be specified. api-toolsRun the JSON parser on a value to produce a result or a list of errors with their positions. This version allows the  to be specified, and produces warnings even if the parse succeeded. api-tools Decode a  ByteString and run the JSON parser api-tools Decode a  ByteString( and run the JSON parser, allowing the  to be specified api-tools!Suitable as an implementation of  parseJSON that uses the 9 instance (provided said instance was not defined using fromJSON!). api-toolsIf this parser returns any errors at the current position, modify them using the supplied function. api-toolsIf the conditional is false, fail with an error (if filters are not being enforced) or report a warning and continue (if they are). api-toolsIt's contrary to my principles, but I'll accept a string containing a number instead of an actual number, and will silently truncate floating point numbers to integers... api-tools=Look up the value of a field, treating missing fields as null api-toolsLook up the value of a field, which may be read-only or use a default value (depending on the ). api-tools7Look up the value of a field, failing on missing fields api-tools;Parse the value of a field, treating missing fields as null api-tools5Parse the value of a field, failing on missing fields api-toolsMatch an inhabitant of a disjoint union, which should be an object with a single field, and call the continuation corresponding to the field name. Safe-Inferred api-tools?A record is represented as a list of (field name, value) pairs.Invariant: these are in ascending order by field name, and there are no duplicates.*TODO: consider if it would be worth using  instead. api-toolsGeneric representation of a data value belonging to a schema type. This representation has the following properties::it is straightforward to convert into either CBOR or JSON;decoding CBOR or parsing JSON requires the schema, and takes advantage of it by introducing type distinctions and interning field names;&decoding CBOR is relatively efficient. api-tools Convert a   into a generic , failing if the type is not compatible. This requires type information so that it can introduce type distinctions absent in   , e.g. when ! is used at type / (. t). api-toolsParse a generic  from a JSON , given the schema and expected type. This is not particularly optimized. For the other direction, use . api-toolsEfficiently encode a generic  in CBOR format. api-tools%Efficiently decode CBOR as a generic &, given the schema and expected type. api-toolsCheck that the value is of the given type in the schema, reporting the first error encountered if it does not conform. api-toolsGiven a schema, generate an arbitrary type corresponding to the schema and an arbitrary value of that type. api-toolsGiven a schema and a type, generate an arbitrary value of that type. api-tools'A reasonably varied generator for JSON s.Hack alert: we do not generate %, because Aeson fails to round-trip   ::  . api-tools&QuickCheck property that converting a 1 to and from JSON gives back the original value. api-toolsQuickCheck property that the type-specific JSON serialisation agrees with deserialising as generic JSON and then serialising again. api-tools&QuickCheck property that converting a 1 to and from CBOR gives back the original value. api-toolsQuickCheck property that the type-specific CBOR serialisation agrees with deserialising as generic CBOR and then serialising again. api-toolsLook up a type in a schema, failing with an error if it is missing. api-toolsLook up a key in a set, returning a pointer to the set's copy of the key. This is useful during deserialisation because it means we can share a single key, avoiding retaining deserialised copies. api-toolsLook up a key in a map, returning both the value and the map's copy of the key. This is useful during deserialisation because it means we can share a single key, avoiding retaining deserialised copies. api-toolsInsert a (field, value) pair into a record, replacing the existing field if it is present and preserving the ordering invariant. api-toolsDelete a field from a record, trivially preserving the ordering invariant. api-tools>Rename a field in a record, preserving the ordering invariant. api-toolsSplit a record at a given field, returning the preceding fields, value and succeeding fields. Fails if the field is absent. api-toolsJoin together two records with a (field, value) pair in between. The ordering invariant is not checked!++ Safe-Inferred api-toolsTool to generate  and # instances for types generated by . This depends on 1. For historical reasons this does not generate & instances; you probably want to use  instead. api-toolsTool to generate ,  and # instances for types generated by . This depends on . Note that generated  and  instances will always agree on the decoding of a value, but that the 2 instances for basic types are more liberal than . api-toolsTool to generate  instance for an API node api-toolsTool to generate 0 instance for an API node, which relies on the  instance. api-toolsTool to generate  instance for an API node api-tools Generate  instances like this: 8instance FromJSON T where parseJSON = parseJSONDefault Safe-Inferred" api-toolsWhen to validate the data against the schema (each level implies the preceding levels): api-tools Not at all api-tools!At start and end of the migration api-toolsAfter custom migrations api-toolsAfter every change api-toolsCustom migrations used in the changelog must be implemented in Haskell, and supplied in this record. There are three kinds:Whole-database migrations, which may arbitrarily change the API schema and the data to match;Type migrations, which may change the schema of a single type; andSingle field migrations, which may change only the type of the field (with the new type specified in the changelog).For database and type migrations, if the schema is unchanged, the corresponding function should return .The db, ty and fld parameters should be instantiated with the enumeration types generated by , which correspond to the exact set of custom migration tags used in the changelog. api-toolsMigrate a dataset from one version of an API schema to another. The data must be described by a named type, the name of which is assumed not to change.The db, rec and fld types must be enumerations of all the custom migration tags in the changelog, as generated by generateMigrationKind. api-tools:Lift a custom record migration to work on arbitrary values api-toolsLift a schema change on record types to work on arbitrary type declarations api-toolsUse for ,  or 7 to indicate that changes to the data are not required api-toolsUse for  or 3 to indicate that the schema should not be changed api-tools1Whether to validate the dataset after this change api-tools%The earliest version in the changelog api-tools#The latest version in the changelog api-toolsChangelog in order starting from oldest version up to newest. Entries are  (from, to, changes-oldest-first). api-toolsChangelog in order as written, with latest version at the beginning, going back to older versions. Entries are  (to, from, changes-latest-first). api-toolsIs the changelog in the correct order? If not, return a pair of out-of-order versions. api-toolsSets of custom migration tags in the changelog for whole-database, single-record and single-field migrations api-tools0Sets of custom migration tags in a single change api-toolsGiven a type to be modified, find the positions in which each type in the API must be updated api-toolsCheck that a changelog adequately describes how to migrate from one version to another. api-toolsInternal version of , which works on unsafe migration tags and returns the list of s to apply to the dataset. api-toolsApply a list of changes to an API, returning the updated API and a list of the changes with appropriate TableChanges interspersed. On failure, return the list of successfully applied changes, the change that failed and the reason for the failure. api-toolsApply the API change api-tools5This is the low level one that just does the changes.We assume the changes have already been validated, and that the data matches the API. api-tools>Apply an update at the given position in a declaration's value api-tools6Apply an upate at the given position in a type's value api-toolsThis actually applies the change to the data value, assuming it is already in the correct place api-tools>Apply an update at the given position in a declaration's value api-tools7Apply an update at the given position in a type's value api-toolsThis actually applies the change to the data value, assuming it is already in the correct place api-toolsCheck if there is a "default" default value for a field of the given type: list and maybe have [] and nothing respectively. Note that type synonyms do not preserve defaults, since we do not have access to the entire API. api-toolsCheck that a dataset matches an API, which is necessary for succesful migration. The name of the dataset's type must be specified. api-toolsGenerate enumeration datatypes corresponding to the custom migrations used in an API migration changelog. api-toolsStarting schema and version api-toolsEnding schema and version api-tools(Log of changes, containing both versions api-toolsCustom migration functions api-toolsName of the dataset's type api-tools"How thoroughly to validate changes api-toolsDataset to be migrated api-toolsStarting schema and version api-toolsEnding schema and version api-tools(Log of changes, containing both versions api-toolsCustom migration functions api-toolsName of the dataset's type api-tools"How thoroughly to validate changes api-toolsDataset to be migrated api-toolsStarting schema and version api-toolsEnding schema and version api-toolsChangelog to be validated api-toolsCustom migration functions api-toolsName of the dataset's type api-tools"How thoroughly to validate changes api-toolsStarting schema and version api-toolsEnding schema and version api-toolsChangelog to be validated api-toolsCustom migration functions api-toolsName of the dataset's type api-tools"How thoroughly to validate changes   Safe-Inferred  9  9  Safe-Inferred" api-tools+API description of the api-tools API itself Safe-Inferred" api-toolsSerialise a JSON value as a CBOR term in a generic but schema-dependent fashion. This is necessary because the JSON representation carries less information than we need in CBOR (e.g. it lacks a distinction between bytestrings and text).There is a corner case where this may lose information: if the schema contains a field with type ? json (i.e.   ), then we have 5toJSON Nothing == Null toJSON (Just Null) == Nullso  cannot distinguish these values, and will use the CBOR-encoding of  for both. api-toolsConvert a JSON value into a CBOR term in a generic but schema-dependent fashion.  api-toolsEncode a record as a map from field names to values. Crucially, the fields are in ascending order by field name.  api-toolsEncode a union as a single-element map from the field name to the value.  api-toolsEncode an enumerated value as its name; we do not check that it actually belongs to the type here. api-toolsWhen a JSON value has been deserialised from CBOR, the representation may need some modifications in order to match the result of  on a Haskell datatype. In particular, Aeson's representation of   does not round-trip (because  is encoded as  and  x as  x), so CBOR uses a different representation (as an empty or 1-element list).  api-toolsForce the unnecessarily lazy  representation. Safe-Inferred api-tools:Tool to generate a list of JSON round-trip tests of type [(,  )]( with the given name. This depends on jsonTool and quickCheckTool. api-tools:Tool to generate a list of CBOR round-trip tests of type [(,  )]( with the given name. This depends on cborTool and quickCheckTool.  api-tools)Tool to generate a list of tests of type [(,  )]4 based on instantiating the first argument at type  A -> Bool for each type A in the API. The second argument is the name of the declaration that should be produced.  api-toolsFor an APINode, generate a (String, Property) pair giving the type name and an appropriate instance of the property api-toolsTool to generate a list of CBOR-to-JSON conversion tests of type [(,  )]. The first name must be the o being tested, and the second should be the name of the declaration to be produced. This depends on cborTool, jsonTool and quickCheckTool. api-toolsTool to generate a list of JSON-to-CBOR conversion tests of type [(,  )]. The first name must be the o being tested, and the second should be the name of the declaration to be produced. This depends on cborTool, jsonTool and quickCheckTool. api-tools*Tool to generate a list of tests that the  generic representation agrees with the type-specific JSON representation. api-tools*Tool to generate a list of tests that the  generic representation agrees with the type-specific CBOR representation.  api-toolsTool to generate a list of tests of properties that take the API and the type name as arguments, and return a  . api-toolsQuickCheck property that a . decodes to an expected Haskell value, using  api-toolsQuickCheck property that a . decodes to an expected Haskell value, using  with the given  api-tools=QuickCheck property that Haskell values can be encoded with toJSON and decoded with  to get the original value api-toolsQuickCheck property that CBOR decoding is a left inverse for encoding api-toolsQuickCheck property that toJSON agrees with encoding to CBOR directly and then decoding using the schema-aware generic decoder. From this and  it follows that >fromJSONWithErrs . deserialiseJSONWithSchema . serialise == id api-toolsQuickCheck property that direct encoding to CBOR agrees with conversion to JSON followed by the schema-aware generic encoder. From this and  it follows that 4deserialise . serialiseJSONWithSchema . toJSON == id    Safe-InferredY api-tools/Generate the datatypes corresponding to an API. api-tools>Generate the datatypes corresponding to an API, allowing the  to be overriden. api-toolsApply a list of tools to an o, generating TH declarations. See the individual tool descriptions for details. Note that  must be called first, and some tools have dependencies, which must be included in the same or a preceding call to . api-toolsApply a list of tools to an o4, generating TH declarations. This form allows the  to be overridden.! Safe-Inferred"6" Safe-Inferredʁ( Safe-Inferred"%& api-tools(Generate a web page documenting all the s in a web application) Safe-Inferred"%&z api-tools"Generate a web page documenting a * Safe-Inferredˣ  Safe-Inferred44# Safe-Inferred%&@ api-tools;Take an API spec and generate a JSON description of the API api-tools"Generate an API spec from the JSON +,-+./0123456789:;<=>?@ABCDEFGHIJKLMMNOPQRSTUVWXYZ[\]^_`abccdeefgghijkllmnnopqqrsttuvwxyz{{|}~                                            ''''''''''''''''''''''''''''''''''''''''''''''''''                                                         !O!!!!!!!V!!!!!!!!!\!!!!!!!!!!!!!b!b!!!q!q!!!t!t!!!!!!w!!!!{!{!!!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!v!u!s!r!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""()####$$$$$$$0%%%%0+++0&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 000+++0)api-tools-0.10.1.0-BI5kL3HLrRV3rlHauFLX4dData.API.JSON.Compat Data.Binary.Serialise.CBOR.Extra Data.API.TimeData.API.UtilsData.API.TypesData.API.Tools.Combinators Data.API.TH Data.API.PPData.API.NormalFormData.API.MarkdownData.Binary.Serialise.CBOR.JSON Data.API.DocData.API.Changes.TypesData.API.ErrorData.API.Tools.DatatypesData.API.Tools.TraversalData.API.Tools.SafeCopyData.API.Tools.QuickCheckData.API.Tools.LensData.API.Tools.ExampleData.API.Tools.EnumData.API.Tools.DeepSeqData.API.Tools.CBOR Data.API.JSONData.API.ValueData.API.Tools.JSONData.API.ChangesData.API.ParseData.API.API.DSLData.API.JSONToCBORData.API.Tools.JSONTestsData.API.ToolsData.API.API.GenData.API.Doc.Subst Data.API.APIData.API.TH.Compat Text.Regex Data.API.ScanData.API.Doc.TypesData.API.Doc.DirData.API.Doc.CallData.API.Tutorial$aeson-2.1.2.1-7ri1VdfqDcN6EK5ROjEWGaData.Aeson.KeyMapKeyMapData.Aeson.KeyKeybase Control.Monad<$!>printUTCparseUTCparseDay parseUTC_oldunsafeParseUTCunsafeParseDay$fArbitraryUTCTime MergeResult OnlyInLeftInBoth OnlyInRightsimpleParseVersion?!?!? mergeMapsdiffMaps matchMaps$fEqMergeResult$fShowMergeResultencodeListWithencodeMaybeWithencodeRecordFields encodeUnion decodeUniondecodeListWithdecodeMaybeWithBinary_Binary DefaultValue DefValList DefValMaybe DefValString DefValBool DefValInt DefValUtc BasicTypeBTstringBTbinaryBTboolBTintBTutcAPITypeTyListTyMaybeTyNameTyBasicTyJSON ConversionSpecEnumseAlts SpecUnionsuFields FieldTypeftType ftReadOnly ftDefault ftComment SpecRecordsrFieldsRegExre_textre_regexUTCRangeur_lour_hiIntRangeir_loir_hiFilterFtrStrgFtrIntgFtrUTC SpecNewtypesnTypesnFilterSpec SpNewtypeSpRecordSpUnionSpEnum SpSynonymPrefix MDComment FieldName _FieldNameTypeName _TypeNameAPINodeanName anCommentanPrefixanSpec anConvertThing ThCommentThNodeAPI inIntRange inUTCRangemkRegExdefaultValueAsJsValuebase64ToBinary$fArbitraryText$fLiftBoxedRepTypeName$fLiftBoxedRepFieldName$fNFDataIntRange$fLiftBoxedRepUTCRange$fNFDataUTCRange$fLiftBoxedRepRegEx $fShowRegEx $fEqRegEx$fFromJSONRegEx $fToJSONRegEx $fNFDataRegEx$fNFDataFilter$fNFDataSpecEnum$fNFDataBasicType$fNFDataAPIType$fIsStringAPIType$fNFDataSpecUnion$fNFDataSpecNewtype$fLiftBoxedRepDefaultValue$fNFDataDefaultValue$fNFDataFieldType$fNFDataSpecRecord $fNFDataSpec$fLiftBoxedRepAPINode$fNFDataAPINode $fNFDataThing$fArbitraryBinary$fFromJSONBinary$fToJSONBinary $fShowBinary $fEqBinary $fOrdBinary$fNFDataBinary$fSerialiseBinary $fEqThing$fLiftBoxedRepThing $fShowThing $fEqAPINode $fShowAPINode$fEqSpec$fLiftBoxedRepSpec $fShowSpec$fEqSpecRecord$fLiftBoxedRepSpecRecord$fShowSpecRecord $fEqFieldType$fLiftBoxedRepFieldType$fShowFieldType$fEqDefaultValue$fShowDefaultValue$fEqSpecNewtype$fLiftBoxedRepSpecNewtype$fShowSpecNewtype $fEqSpecUnion$fLiftBoxedRepSpecUnion$fShowSpecUnion $fEqAPIType$fLiftBoxedRepAPIType $fShowAPIType $fEqBasicType$fLiftBoxedRepBasicType$fShowBasicType $fEqSpecEnum$fLiftBoxedRepSpecEnum$fShowSpecEnum $fEqFilter$fLiftBoxedRepFilter $fShowFilter $fEqUTCRange$fShowUTCRange $fEqIntRange$fLiftBoxedRepIntRange$fShowIntRange $fEqFieldName$fOrdFieldName$fShowFieldName$fNFDataFieldName$fIsStringFieldName $fEqTypeName $fOrdTypeName$fShowTypeName$fNFDataTypeName$fIsStringTypeName$fSafeCopyBinary$fFromJSONThing $fToJSONThing$fFromJSONAPINode$fToJSONAPINode$fFromJSONSpec $fToJSONSpec$fFromJSONAPIType$fToJSONAPIType$fFromJSONBasicType$fToJSONBasicType$fFromJSONUTCRange$fToJSONUTCRange$fFromJSONIntRange$fToJSONIntRange$fFromJSONFilter$fToJSONFilter$fFromJSONSpecNewtype$fToJSONSpecNewtype$fFromJSONFieldType$fToJSONFieldType$fFromJSONSpecRecord$fToJSONSpecRecord$fFromJSONSpecUnion$fToJSONSpecUnion$fFromJSONSpecEnum$fToJSONSpecEnum$fFromJSONDefaultValue$fToJSONDefaultValue$fFromJSONFieldName$fToJSONFieldName$fFromJSONTypeName$fToJSONTypeName $fFromJSONCI $fToJSONCI APINodeToolAPIToolToolrunTool ToolSettingswarnOnOmittedInstancenewtypeSmartConstructorsdefaultToolSettings simpleToolmkTool contramapToolreadToolsubTools apiNodeToolapiDataTypeTool apiSpecTool $fMonoidTool$fSemigroupTool applicativeEoptionalInstanceDfunSigDsimpleD simpleSigD mkNameText fieldNameE fieldNameVarE typeNameEPPLinesppLinesPPpp inFrontOfindent$fPPDefaultValue $fPPBasicType $fPPAPIType $fPPFieldName $fPPTypeName$fPPText$fPPSet $fPPVersion$fPP[] $fPPLines(,) $fPPLines[]$fPPLinesValue NormEnumType NormUnionTypeNormRecordType NormTypeDecl NRecordType NUnionType NEnumType NTypeSynonymNNewtypeNormAPI apiNormalFormdeclNFtypeDeclsFreeVarstypeDeclFreeVars typeFreeVarstypeDeclaredInApi typeUsedInApitypeUsedInTransitiveDeptransitiveDepstransitiveReverseDeps typeIsValid declIsValid apiInvariant substTypeDecl substTyperenameTypeUses$fPPLinesNormTypeDecl$fNFDataNormTypeDecl$fEqNormTypeDecl$fShowNormTypeDeclMarkdownMethodsMDMmdmSummaryPostfixmdmLinkmdmPpmdmFieldDefaultdefaultMarkdownMethodsmarkdownthing lookupKey listToObject objectToListmatchSingletonObjectsingletonObject insertKey deleteKey objectToMap mapToObjecttraverseObjectWithKeyfieldNameToKey textToKeykeyToFieldName keyToText adjustObject encodeJSON decodeJSON cborToJson jsonToCbor$fSerialiseValueDocInfodoc_info_call_urldoc_info_type_urlBody EmptyBodyJSONBody OtherBodySample sample_status sample_typesample_responseViewview_id view_typeview_doc view_paramsParam param_name param_expl param_desc param_typeparam_requiredHeader header_name header_expl header_desc header_typeheader_requiredCallcall_http_method call_pathcall_descriptioncall_auth_required call_headers call_body call_params call_views call_samples StatusCode HTTPMethodURLrenderBodyType renderAPITypemk_linkAPITableChange APIChange ValidateData UpdateTypePos UpdateList UpdateMaybe UpdateNamed UpdateDeclPos UpdateHere UpdateRecord UpdateUnion UpdateType VersionExtraRelease DevVersion MigrationTag ChAddType ChDeleteType ChRenameType ChAddField ChDeleteField ChRenameField ChChangeField ChAddUnionAltChDeleteUnionAltChRenameUnionAlt ChAddEnumValChDeleteEnumValChRenameEnumVal ChCustomType ChCustomAll APIChangelog ChangesUpTo ChangesStartAPIWithChangelogshowVersionExtra$fPPLinesAPIChange$fPPVersionExtra$fPPLinesAPITableChange$fEqAPITableChange$fShowAPITableChange$fEqUpdateDeclPos$fShowUpdateDeclPos$fEqUpdateTypePos$fShowUpdateTypePos$fEqAPIChangelog$fShowAPIChangelog$fEqVersionExtra$fOrdVersionExtra$fShowVersionExtra $fEqAPIChange$fShowAPIChangeMigrateWarningMigrateFailureValidateFailure ValueErrorTypeKindTKRecordTKUnionTKEnum TKNewtype TKTypeSynonym ApplyFailure TypeExistsTypeDoesNotExist TypeWrongKind TypeInUse TypeMalformed DeclMalformed FieldExistsFieldDoesNotExistFieldBadDefaultValueDefaultMissingTableChangeErrorafExistingType afMissingType afTypeNameafExpectedKindafTypeafMissingTypesafDecl afTypeKindafExistingFieldafMissingField afFieldName afFieldType afBadDefaultafCustomMessageValidateWarningChangelogOutOfOrderCannotDowngrade ApiInvalidChangelogEntryInvalidChangelogIncompletevfLaterVersionvfEarlierVersion vfFromVersion vfToVersionvfInvalidVersionvfMissingDeclarationsvfSuccessfullyAppliedvfFailedToApplyvfApplyFailurevfChangelogVersionvfTargetVersion vfDifferences JSONErrorCustomMigrationError InvalidAPIStepInFieldInElemPositionFormatExpected FmtBinaryFmtUTCFmtOtherExpectedExpArrayExpBoolExpInt ExpObject ExpString JSONWarning BadFormat MissingField MissingAltUnexpectedFieldUnexpectedEnumVal IntRangeError UTCRangeError RegexError SyntaxError expectedArray expectedBool expectedIntexpectedObjectexpectedString badFormatprettyJSONErrorinField prettyStepprettyJSONErrorPositionsprettyMigrateFailureprettyValidateFailureprettyValueErrorprettyValueErrorPosition $fPPLinesStep $fPPTypeKind$fPPLinesApplyFailure$fPPLinesValidateFailure$fPPLinesValueError$fPPLinesMigrateFailure$fEqMigrateFailure$fShowMigrateFailure$fEqValueError$fShowValueError$fEqValidateFailure$fShowValidateFailure$fEqApplyFailure$fShowApplyFailure $fEqTypeKind$fShowTypeKind$fShowValidateWarning$fEqStep $fShowStep $fEqJSONError$fShowJSONError$fEqFormatExpected$fShowFormatExpected $fEqExpected$fShowExpected$fFromJSONExpected$fToJSONExpected$fFromJSONFormatExpected$fToJSONFormatExpected$fFromJSONStep $fToJSONStep$fFromJSONJSONError$fToJSONJSONError$fSafeCopyStep datatypesTooldatatypesTool'defaultDerivedClassestype_nm rep_type_nmnodeTnodeRepTnodeConEnodeConPnodeNewtypeConE nodeFieldE nodeFieldP nodeAltConE nodeAltConPnewtypeProjectionE traversalTooltraversalsTool safeCopyToolquickCheckToollensToolbinaryExampleexample samplesTool exampleTool$fExampleUTCTime$fExampleValue$fExampleBinary $fExampleText $fExampleBool $fExampleInt $fExample[]$fExampleMaybeenumTool text_enum_nm map_enum_nm deepSeqToolcborToolFromJSONWithErrsparseJSONWithErrs ParseFlags useDefaultsenforceReadOnlyFieldsenforceFiltersParserWithErrsdefaultParseFlagsrunParserWithErrsTopfromJSONWithErrsfromJSONWithErrs'fromJSONWithErrs''decodeWithErrsdecodeWithErrs'parseJSONDefaultwithParseFlagsfailWithwithInt withIntRange withBinarywithBoolwithText withRegExwithUTC withUTCRange withVersion withFieldwithDefaultField.:..:: withUnion$fMonadFailParserWithErrs$fMonadParserWithErrs$fAlternativeParserWithErrs$fApplicativeParserWithErrs$fFromJSONWithErrsVersion$fFromJSONWithErrsUTCTime$fFromJSONWithErrsText$fFromJSONWithErrsBinary$fFromJSONWithErrsBool$fFromJSONWithErrsInteger$fFromJSONWithErrsInt$fFromJSONWithErrs[]$fFromJSONWithErrsMaybe$fFromJSONWithErrs()$fFromJSONWithErrsValue$fFunctorParserWithErrsField fieldName fieldValueRecordValueStringUTCTimeBytesBoolIntListMaybeUnionEnumJSONfromDefaultValuefromJSON parseJSONencodedecodematchesNormAPI expectRecord expectEnum expectUnion expectList expectMaybe lookupType arbitraryarbitraryOfTypearbitraryJSONValueprop_jsonRoundTripprop_jsonGenericprop_cborRoundTripprop_cborGeneric recordToMap mapToRecord insertField deleteField renameField findField joinRecords $fToJSONValue $fNFDataField $fNFDataValue $fEqField $fShowField $fEqValue $fShowValuejsonTool jsonTool'toJsonNodeToolfromJsonNodeToolfromJsonWithErrsNodeTool DataChecksNoChecksCheckStartAndEnd CheckCustomCheckAllCustomMigrationsdatabaseMigrationdatabaseMigrationSchema typeMigrationtypeMigrationSchemafieldMigrationmigrateDataDumpmigrateDataDump'mkRecordMigrationmkRecordMigration'mkRecordMigrationSchema noDataChangesnoSchemaChangeschangelogStartVersionchangelogVersionvalidateChangesdataMatchesAPIgenerateMigrationKinds$fEqDataChecks$fOrdDataChecksparseAPIparseAPIWithChangelogapiapiWithChangelogapiAPIserialiseJSONWithSchemajsonToCBORWithSchemadeserialiseJSONWithSchemapostprocessJSON jsonTestsTool cborTestsToolcborToJSONTestsTooljsonToCBORTestsTooljsonGenericValueTestsToolcborGenericValueTestsToolprop_decodesToprop_decodesTo'prop_resultsMatchRoundtripprop_cborRoundtripprop_cborToJSONprop_jsonToCBORgenerate generateWithgenerateAPIToolsgenerateAPIToolsWithDV_listDV_maybe DV_string DV_boolean DV_integerDV_utc BT_string BT_binary BT_boolean BT_integerBT_utcTypeRef_TypeRefTY_listTY_maybeTY_refTY_basicTY_json_fd_name_fd_type _fd_readonly _fd_default _fd_comment _cv_injection_cv_projection_ur_lo_ur_hi_ir_lo_ir_hiRegularExpression_RegularExpression FT_string FT_integerFT_utc_sn_type _sn_filter SP_newtype SP_recordSP_unionSP_enum SP_synonym_an_name _an_comment _an_prefix_an_spec _an_convertAPISpec$fOrdBasicType$fBoundedBasicType$fEnumBasicType$fIsStringTypeRef $fShowTypeRef $fEqTypeRef $fOrdTypeRef$fShowConversion$fEqConversion$fIsStringRegularExpression$fShowRegularExpression$fEqRegularExpression$fOrdRegularExpression_text_BasicType_map_BasicType an_comment an_convertan_name an_prefixan_spec sn_filtersn_typeregularExpression cv_injection cv_projection fd_comment fd_defaultfd_name fd_readonlyfd_typetypeRef apiAPISamplesapiAPITestsJSONapiAPITestsCBORapiAPITestsCBORToJSONapiAPITestsJSONToCBOR$fExampleDefaultValue$fExampleBasicType$fExampleTypeRef$fExampleAPIType$fExampleField$fExampleConversion$fExampleUTCRange$fExampleIntRange$fExampleRegularExpression$fExampleFilter$fExampleSpecNewtype $fExampleSpec$fExampleAPINode$fSafeCopyDefaultValue$fSafeCopyBasicType$fSafeCopyTypeRef$fSafeCopyAPIType$fSafeCopyField$fSafeCopyConversion$fSafeCopyUTCRange$fSafeCopyIntRange$fSafeCopyRegularExpression$fSafeCopyFilter$fSafeCopySpecNewtype$fSafeCopySpec$fSafeCopyAPINode$fArbitraryDefaultValue$fArbitraryBasicType$fArbitraryTypeRef$fArbitraryAPIType$fArbitraryField$fArbitraryConversion$fArbitraryUTCRange$fArbitraryIntRange$fArbitraryRegularExpression$fArbitraryFilter$fArbitrarySpecNewtype$fArbitrarySpec$fArbitraryAPINode$fNFDataTypeRef$fNFDataConversion$fNFDataRegularExpression$fSerialiseDefaultValue$fSerialiseBasicType$fSerialiseTypeRef$fSerialiseAPIType$fSerialiseField$fSerialiseConversion$fSerialiseUTCRange$fSerialiseIntRange$fSerialiseRegularExpression$fSerialiseFilter$fSerialiseSpecNewtype$fSerialiseSpec$fSerialiseAPINode$fFromJSONWithErrsDefaultValue$fFromJSONWithErrsBasicType$fFromJSONWithErrsTypeRef$fFromJSONTypeRef$fToJSONTypeRef$fFromJSONWithErrsAPIType$fFromJSONWithErrsField$fFromJSONField $fToJSONField$fFromJSONWithErrsConversion$fFromJSONConversion$fToJSONConversion$fFromJSONWithErrsUTCRange$fFromJSONWithErrsIntRange#$fFromJSONWithErrsRegularExpression$fFromJSONRegularExpression$fToJSONRegularExpression$fFromJSONWithErrsFilter$fFromJSONWithErrsSpecNewtype$fFromJSONWithErrsSpec$fFromJSONWithErrsAPINodeDictsubstprepmkDictextDictdirHtmlcallHtml extractAPI convertAPI unconvertAPI$fFromJSONWithErrsThing Strictness TyVarBndr'mkDataD mkInstanceD mkNewtypeD annIsStrict annNotStrict time-1.11.1.1 Data.Time.Clock.Internal.UTCTimeData.Time.Calendar.DaysDay parserDay parserTimeparserTimeZone GHC.MaybeNothingmkRegexmkRegexWithOpts matchRegex matchRegexAllghc-prim GHC.TypesTrueJust'regex-tdfa-1.3.2-KlBgyBYdik1D8az0A5JGAGText.Regex.TDFA.CommonRegexData.Aeson.Types.InternalData.Aeson.Types.ToJSONtoJSONData.Aeson.Types.FromJSONGHC.BaseMonoid utf8EncodeTokenIntegerVersion AlternativeSemiDefaultChangesUTCToBarBInaryBraKetColColColonCommaEqualsLtEqGtEqBooleanQueryJsonWithBasicAddedRemovedRenamedChanged MigrationNOTHINGTRUEFALSEReadonlyUTCTIMECommentTypeIdenVarIdenIntgStrgERRORPTokenAlexPosnAlexPnkeywordsscantransitiveClosure GHC.ClassesOrd Data.Version sortDiffsgen_sy gen_sn_dt gen_sr_dt gen_su_dt gen_se_dtnewtype_prj_nmnewtype_con_nmnewtype_smart_con_nm pref_field_nm pref_con_nm traversalName traversalType traverser traverser'traversalRecordtraversalUnion(safecopy-0.10.4.2-5Z0i7x9Arzs9jXlfDAsrgxData.SafeCopy.SafeCopySafeCopy(QuickCheck-2.14.2-9EAFA6afNUqGbN355JryFuTest.QuickCheck.Arbitrary Arbitrary gen_sn_abarbitraryBoundedIntegral gen_sr_ab gen_su_ab gen_se_abarbitraryIntRangearbitraryUTCRange gen_sn_ex gen_sr_ex gen_su_ex gen_se_exdeepseq-1.4.6.1Control.DeepSeqNFData(serialise-0.2.6.0-JoUnGJ6CggLLaPebm8OdOFCodec.Serialise.Class Serialise(attoparsec-0.14.4-JsuKmdStdgzGnjs00FwIcH#Data.Attoparsec.ByteString.InternalParserMonad ApplicativemodifyTopError withFilterwithStrictFieldcontainers-0.6.5.1Data.Map.InternalMapNull lookupTyName lookupSet lookupMapToJSONFromJSON gen_FromJSON validateAfterviewChangelogReverse viewChangelogisChangelogOrdered changelogTags changeTags findUpdatePosvalidateChanges'applyAPIChangesToAPI doChangeAPIapplyChangesToDatabase updateDeclAt updateTypeAtapplyChangeToData updateDeclAt' updateTypeAt'applyChangeToData'defaultValueForTypeHappyStkjsonToCBORRecordjsonToCBORUnionjsonToCBOREnum forceUTCTimeTest.QuickCheck.PropertyProperty testsTool generatePropschemaTestsToolResult