Files
quixos-protocol/src/capability-language/generated/QuixosCapability.interp
T
Timothy J. Aveni 483bc68a94 Implement workspace evolution, migrations, and runtime continuity
Enable evolution by default for source-backed workspaces. Add stable
conformance ownership, semantic-major review, candidate typechecking,
and durable fenced cutover with explicit migrations and forward recovery.

Independently supervise package runtimes so unchanged resource owners keep
their processes and connections across cutover. Add scoped invocation
authority, resource sessions, and typed callback rebinding.

Wire opaque object references through generated bindings and RPCs. Add
canonical relationship sets, keyed maps, and ordered lists with scoped
transactional mutations, revision checks, and inverse consistency. Support
planned cascade deletion, protection, tombstones, and lifecycle foundations.

Add journaled structural edits, package/function/migration scaffolding,
managed repository creation, and resumable bottom-up dependency pin
publication. Document lifetime boundaries, revision pinning, prototype
compatibility policy, commands, and deferred work.

Validate with 210 tests, user-systemd process/connection continuity,
generated-package TypeScript checks, and Nix host/protocol checks.
TTL handoff, physical reclamation, general multi-step migrations, and
root-systemd migration isolation acceptance remain deferred.
2026-09-10 18:29:25 -07:00

287 lines
28 KiB
Plaintext

token literal names:
null
'workspace'
'fragment'
'import'
'external'
'atom'
'interface'
'interfaces'
'package'
'value'
'relation'
'operation'
'function'
'constructor'
'constructs'
'input'
'conform'
'as'
'bind'
'to'
'private'
'shared'
'state'
'edge'
'projection'
'with'
'using'
'via'
'materialize'
'if'
'absent'
'on'
'policy'
'default'
'source'
'repository'
'commit'
'revision'
'semantic-major'
'on-delete'
'retain-other'
'keyed'
'public-traversal'
'id'
'doc'
'mode'
'emits'
'receiver'
'requires'
'any'
'get'
'set'
'watch'
'start'
'stop'
'read'
'write'
'resolve'
'connect'
'disconnect'
'call'
'watch-start'
'watch-stop'
'subscribe'
'unsubscribe'
'optimistic-register'
'crdt'
'optional-one'
'exactly-one'
'many-unique'
'many'
'ordered'
'unit'
'watch-handle'
'message'
'atom-ref'
'interface-ref'
'optional'
'list'
'bool'
'bytes'
'double'
'int32'
'int64'
'string'
'uint32'
'uint64'
'true'
'false'
'null'
'->'
':'
';'
','
'.'
'{'
'}'
'['
']'
'('
')'
'<'
'>'
null
null
null
null
null
null
null
token symbolic names:
null
WORKSPACE
FRAGMENT
IMPORT
EXTERNAL
ATOM
INTERFACE
INTERFACES
PACKAGE
VALUE
RELATION
OPERATION
FUNCTION
CONSTRUCTOR
CONSTRUCTS
INPUT
CONFORM
AS
BIND
TO
PRIVATE
SHARED
STATE
EDGE
PROJECTION
WITH
USING
VIA
MATERIALIZE
IF
ABSENT
ON
POLICY
DEFAULT
SOURCE
REPOSITORY
COMMIT
REVISION
SEMANTIC_MAJOR
ON_DELETE
RETAIN_OTHER
KEYED
PUBLIC_TRAVERSAL
ID
DOC
MODE
EMITS
RECEIVER
REQUIRES
ANY
GET
SET
WATCH
START
STOP
READ
WRITE
RESOLVE
CONNECT
DISCONNECT
CALL
WATCH_START
WATCH_STOP
SUBSCRIBE
UNSUBSCRIBE
OPTIMISTIC_REGISTER
CRDT
OPTIONAL_ONE
EXACTLY_ONE
MANY_UNIQUE
MANY
ORDERED
UNIT
WATCH_HANDLE
MESSAGE
ATOM_REF
INTERFACE_REF
OPTIONAL
LIST
BOOL
BYTES
DOUBLE
INT32
INT64
STRING
UINT32
UINT64
TRUE
FALSE
NULL
ARROW
COLON
SEMI
COMMA
DOT
LBRACE
RBRACE
LBRACK
RBRACK
LPAREN
RPAREN
LT
GT
INTEGER
JSON_NUMBER
IDENTIFIER
STRING_LITERAL
LINE_COMMENT
BLOCK_COMMENT
WS
rule names:
document
fragmentDecl
sourceImportDecl
workspaceDecl
workspaceItem
resourceImportDecl
externalAtomDecl
externalInterfaceDecl
resourcePreamble
atomDecl
interfaceResourceDecl
interfaceMember
operationMember
valueMember
valueMemberOperation
relationshipMember
relationshipOperation
targetConstraint
packageResourceDecl
packageExport
packageOperationExport
packageFunctionExport
packageConstructorExport
eventClause
operationMode
receiverRequirement
identifierList
dependencyBlock
dependencyPort
primitiveList
primitive
sharedAttachmentDecl
attachmentDecl
stateDecl
storagePolicy
edgeDecl
edgeEndpoint
conformanceDecl
conformanceItem
relationshipMaterializationDecl
operationBindingDecl
memberOperationRef
operationName
operationProvider
statePrimitive
edgePrimitive
dependencyBindingBlock
dependencyBinding
constructorBindingDecl
valueType
scalarType
cardinality
jsonLiteral
jsonObject
jsonMember
jsonArray
identifier
stringLiteral
atn:
[4, 1, 109, 805, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 129, 8, 0, 1, 1, 1, 1, 1, 1, 5, 1, 134, 8, 1, 10, 1, 12, 1, 137, 9, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 155, 8, 3, 10, 3, 12, 3, 158, 9, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 168, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 180, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 3, 8, 199, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 207, 8, 9, 1, 9, 1, 9, 1, 10, 5, 10, 212, 8, 10, 10, 10, 12, 10, 215, 9, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 225, 8, 10, 10, 10, 12, 10, 228, 9, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 3, 11, 235, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 260, 8, 13, 10, 13, 12, 13, 263, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 286, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 296, 8, 15, 1, 15, 1, 15, 5, 15, 300, 8, 15, 10, 15, 12, 15, 303, 9, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 331, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 337, 8, 17, 1, 18, 5, 18, 340, 8, 18, 10, 18, 12, 18, 343, 9, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 353, 8, 18, 1, 18, 1, 18, 5, 18, 357, 8, 18, 10, 18, 12, 18, 360, 9, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 3, 19, 367, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 380, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 385, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 398, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 411, 8, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 426, 8, 25, 1, 25, 3, 25, 429, 8, 25, 1, 26, 1, 26, 1, 26, 5, 26, 434, 8, 26, 10, 26, 12, 26, 437, 9, 26, 1, 27, 1, 27, 1, 27, 5, 27, 442, 8, 27, 10, 27, 12, 27, 445, 9, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 484, 8, 28, 1, 28, 1, 28, 3, 28, 488, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 494, 8, 29, 10, 29, 12, 29, 497, 9, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 508, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 522, 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 532, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 550, 8, 36, 1, 36, 1, 36, 3, 36, 554, 8, 36, 1, 36, 3, 36, 557, 8, 36, 1, 36, 1, 36, 3, 36, 561, 8, 36, 1, 36, 3, 36, 564, 8, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 574, 8, 37, 1, 37, 1, 37, 3, 37, 578, 8, 37, 1, 37, 1, 37, 5, 37, 582, 8, 37, 10, 37, 12, 37, 585, 9, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 593, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 630, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 649, 8, 43, 3, 43, 651, 8, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 5, 46, 660, 8, 46, 10, 46, 12, 46, 663, 9, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 677, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 693, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 707, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 717, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 726, 8, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 755, 8, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 769, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 775, 8, 53, 10, 53, 12, 53, 778, 9, 53, 3, 53, 780, 8, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 792, 8, 55, 10, 55, 12, 55, 795, 9, 55, 3, 55, 797, 8, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 0, 0, 58, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 0, 7, 1, 0, 60, 64, 2, 0, 55, 59, 61, 62, 2, 0, 55, 56, 61, 62, 2, 0, 57, 59, 61, 62, 1, 0, 79, 86, 1, 0, 67, 70, 2, 0, 34, 34, 105, 105, 844, 0, 128, 1, 0, 0, 0, 2, 130, 1, 0, 0, 0, 4, 140, 1, 0, 0, 0, 6, 144, 1, 0, 0, 0, 8, 167, 1, 0, 0, 0, 10, 179, 1, 0, 0, 0, 12, 181, 1, 0, 0, 0, 14, 188, 1, 0, 0, 0, 16, 198, 1, 0, 0, 0, 18, 200, 1, 0, 0, 0, 20, 213, 1, 0, 0, 0, 22, 234, 1, 0, 0, 0, 24, 236, 1, 0, 0, 0, 26, 251, 1, 0, 0, 0, 28, 285, 1, 0, 0, 0, 30, 287, 1, 0, 0, 0, 32, 330, 1, 0, 0, 0, 34, 336, 1, 0, 0, 0, 36, 341, 1, 0, 0, 0, 38, 366, 1, 0, 0, 0, 40, 368, 1, 0, 0, 0, 42, 388, 1, 0, 0, 0, 44, 401, 1, 0, 0, 0, 46, 414, 1, 0, 0, 0, 48, 417, 1, 0, 0, 0, 50, 428, 1, 0, 0, 0, 52, 430, 1, 0, 0, 0, 54, 438, 1, 0, 0, 0, 56, 487, 1, 0, 0, 0, 58, 489, 1, 0, 0, 0, 60, 500, 1, 0, 0, 0, 62, 502, 1, 0, 0, 0, 64, 507, 1, 0, 0, 0, 66, 509, 1, 0, 0, 0, 68, 531, 1, 0, 0, 0, 70, 533, 1, 0, 0, 0, 72, 542, 1, 0, 0, 0, 74, 567, 1, 0, 0, 0, 76, 592, 1, 0, 0, 0, 78, 594, 1, 0, 0, 0, 80, 608, 1, 0, 0, 0, 82, 614, 1, 0, 0, 0, 84, 629, 1, 0, 0, 0, 86, 650, 1, 0, 0, 0, 88, 652, 1, 0, 0, 0, 90, 654, 1, 0, 0, 0, 92, 656, 1, 0, 0, 0, 94, 716, 1, 0, 0, 0, 96, 718, 1, 0, 0, 0, 98, 754, 1, 0, 0, 0, 100, 756, 1, 0, 0, 0, 102, 758, 1, 0, 0, 0, 104, 768, 1, 0, 0, 0, 106, 770, 1, 0, 0, 0, 108, 783, 1, 0, 0, 0, 110, 787, 1, 0, 0, 0, 112, 800, 1, 0, 0, 0, 114, 802, 1, 0, 0, 0, 116, 117, 3, 6, 3, 0, 117, 118, 5, 0, 0, 1, 118, 129, 1, 0, 0, 0, 119, 120, 3, 20, 10, 0, 120, 121, 5, 0, 0, 1, 121, 129, 1, 0, 0, 0, 122, 123, 3, 36, 18, 0, 123, 124, 5, 0, 0, 1, 124, 129, 1, 0, 0, 0, 125, 126, 3, 2, 1, 0, 126, 127, 5, 0, 0, 1, 127, 129, 1, 0, 0, 0, 128, 116, 1, 0, 0, 0, 128, 119, 1, 0, 0, 0, 128, 122, 1, 0, 0, 0, 128, 125, 1, 0, 0, 0, 129, 1, 1, 0, 0, 0, 130, 131, 5, 2, 0, 0, 131, 135, 5, 95, 0, 0, 132, 134, 3, 8, 4, 0, 133, 132, 1, 0, 0, 0, 134, 137, 1, 0, 0, 0, 135, 133, 1, 0, 0, 0, 135, 136, 1, 0, 0, 0, 136, 138, 1, 0, 0, 0, 137, 135, 1, 0, 0, 0, 138, 139, 5, 96, 0, 0, 139, 3, 1, 0, 0, 0, 140, 141, 5, 3, 0, 0, 141, 142, 3, 114, 57, 0, 142, 143, 5, 92, 0, 0, 143, 5, 1, 0, 0, 0, 144, 145, 5, 1, 0, 0, 145, 146, 3, 112, 56, 0, 146, 147, 5, 43, 0, 0, 147, 148, 3, 114, 57, 0, 148, 149, 5, 37, 0, 0, 149, 150, 3, 114, 57, 0, 150, 151, 5, 36, 0, 0, 151, 152, 3, 114, 57, 0, 152, 156, 5, 95, 0, 0, 153, 155, 3, 8, 4, 0, 154, 153, 1, 0, 0, 0, 155, 158, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157, 159, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 159, 160, 5, 96, 0, 0, 160, 7, 1, 0, 0, 0, 161, 168, 3, 4, 2, 0, 162, 168, 3, 18, 9, 0, 163, 168, 3, 10, 5, 0, 164, 168, 3, 62, 31, 0, 165, 168, 3, 74, 37, 0, 166, 168, 3, 96, 48, 0, 167, 161, 1, 0, 0, 0, 167, 162, 1, 0, 0, 0, 167, 163, 1, 0, 0, 0, 167, 164, 1, 0, 0, 0, 167, 165, 1, 0, 0, 0, 167, 166, 1, 0, 0, 0, 168, 9, 1, 0, 0, 0, 169, 170, 5, 3, 0, 0, 170, 171, 5, 6, 0, 0, 171, 172, 3, 112, 56, 0, 172, 173, 5, 92, 0, 0, 173, 180, 1, 0, 0, 0, 174, 175, 5, 3, 0, 0, 175, 176, 5, 8, 0, 0, 176, 177, 3, 112, 56, 0, 177, 178, 5, 92, 0, 0, 178, 180, 1, 0, 0, 0, 179, 169, 1, 0, 0, 0, 179, 174, 1, 0, 0, 0, 180, 11, 1, 0, 0, 0, 181, 182, 5, 4, 0, 0, 182, 183, 5, 5, 0, 0, 183, 184, 3, 112, 56, 0, 184, 185, 5, 43, 0, 0, 185, 186, 3, 114, 57, 0, 186, 187, 5, 92, 0, 0, 187, 13, 1, 0, 0, 0, 188, 189, 5, 4, 0, 0, 189, 190, 5, 6, 0, 0, 190, 191, 3, 112, 56, 0, 191, 192, 5, 37, 0, 0, 192, 193, 3, 114, 57, 0, 193, 194, 5, 92, 0, 0, 194, 15, 1, 0, 0, 0, 195, 199, 3, 10, 5, 0, 196, 199, 3, 12, 6, 0, 197, 199, 3, 14, 7, 0, 198, 195, 1, 0, 0, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, 199, 17, 1, 0, 0, 0, 200, 201, 5, 5, 0, 0, 201, 202, 3, 112, 56, 0, 202, 203, 5, 43, 0, 0, 203, 206, 3, 114, 57, 0, 204, 205, 5, 44, 0, 0, 205, 207, 3, 114, 57, 0, 206, 204, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 208, 1, 0, 0, 0, 208, 209, 5, 92, 0, 0, 209, 19, 1, 0, 0, 0, 210, 212, 3, 16, 8, 0, 211, 210, 1, 0, 0, 0, 212, 215, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 216, 1, 0, 0, 0, 215, 213, 1, 0, 0, 0, 216, 217, 5, 6, 0, 0, 217, 218, 3, 112, 56, 0, 218, 219, 5, 43, 0, 0, 219, 220, 3, 114, 57, 0, 220, 221, 5, 37, 0, 0, 221, 222, 3, 114, 57, 0, 222, 226, 5, 95, 0, 0, 223, 225, 3, 22, 11, 0, 224, 223, 1, 0, 0, 0, 225, 228, 1, 0, 0, 0, 226, 224, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 229, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 229, 230, 5, 96, 0, 0, 230, 21, 1, 0, 0, 0, 231, 235, 3, 26, 13, 0, 232, 235, 3, 30, 15, 0, 233, 235, 3, 24, 12, 0, 234, 231, 1, 0, 0, 0, 234, 232, 1, 0, 0, 0, 234, 233, 1, 0, 0, 0, 235, 23, 1, 0, 0, 0, 236, 237, 5, 11, 0, 0, 237, 238, 3, 112, 56, 0, 238, 239, 5, 43, 0, 0, 239, 240, 3, 114, 57, 0, 240, 241, 5, 91, 0, 0, 241, 242, 3, 98, 49, 0, 242, 243, 5, 90, 0, 0, 243, 244, 3, 98, 49, 0, 244, 245, 5, 95, 0, 0, 245, 246, 5, 60, 0, 0, 246, 247, 5, 43, 0, 0, 247, 248, 3, 114, 57, 0, 248, 249, 5, 92, 0, 0, 249, 250, 5, 96, 0, 0, 250, 25, 1, 0, 0, 0, 251, 252, 5, 9, 0, 0, 252, 253, 3, 112, 56, 0, 253, 254, 5, 43, 0, 0, 254, 255, 3, 114, 57, 0, 255, 256, 5, 91, 0, 0, 256, 257, 3, 98, 49, 0, 257, 261, 5, 95, 0, 0, 258, 260, 3, 28, 14, 0, 259, 258, 1, 0, 0, 0, 260, 263, 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 264, 1, 0, 0, 0, 263, 261, 1, 0, 0, 0, 264, 265, 5, 96, 0, 0, 265, 27, 1, 0, 0, 0, 266, 267, 5, 50, 0, 0, 267, 268, 5, 43, 0, 0, 268, 269, 3, 114, 57, 0, 269, 270, 5, 92, 0, 0, 270, 286, 1, 0, 0, 0, 271, 272, 5, 51, 0, 0, 272, 273, 5, 43, 0, 0, 273, 274, 3, 114, 57, 0, 274, 275, 5, 92, 0, 0, 275, 286, 1, 0, 0, 0, 276, 277, 5, 52, 0, 0, 277, 278, 5, 53, 0, 0, 278, 279, 5, 43, 0, 0, 279, 280, 3, 114, 57, 0, 280, 281, 5, 54, 0, 0, 281, 282, 5, 43, 0, 0, 282, 283, 3, 114, 57, 0, 283, 284, 5, 92, 0, 0, 284, 286, 1, 0, 0, 0, 285, 266, 1, 0, 0, 0, 285, 271, 1, 0, 0, 0, 285, 276, 1, 0, 0, 0, 286, 29, 1, 0, 0, 0, 287, 288, 5, 10, 0, 0, 288, 289, 3, 112, 56, 0, 289, 290, 5, 43, 0, 0, 290, 291, 3, 114, 57, 0, 291, 292, 5, 91, 0, 0, 292, 293, 3, 102, 51, 0, 293, 295, 3, 34, 17, 0, 294, 296, 5, 71, 0, 0, 295, 294, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 301, 5, 95, 0, 0, 298, 300, 3, 32, 16, 0, 299, 298, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 304, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 305, 5, 96, 0, 0, 305, 31, 1, 0, 0, 0, 306, 307, 5, 57, 0, 0, 307, 308, 5, 43, 0, 0, 308, 309, 3, 114, 57, 0, 309, 310, 5, 92, 0, 0, 310, 331, 1, 0, 0, 0, 311, 312, 5, 58, 0, 0, 312, 313, 5, 43, 0, 0, 313, 314, 3, 114, 57, 0, 314, 315, 5, 92, 0, 0, 315, 331, 1, 0, 0, 0, 316, 317, 5, 59, 0, 0, 317, 318, 5, 43, 0, 0, 318, 319, 3, 114, 57, 0, 319, 320, 5, 92, 0, 0, 320, 331, 1, 0, 0, 0, 321, 322, 5, 52, 0, 0, 322, 323, 5, 53, 0, 0, 323, 324, 5, 43, 0, 0, 324, 325, 3, 114, 57, 0, 325, 326, 5, 54, 0, 0, 326, 327, 5, 43, 0, 0, 327, 328, 3, 114, 57, 0, 328, 329, 5, 92, 0, 0, 329, 331, 1, 0, 0, 0, 330, 306, 1, 0, 0, 0, 330, 311, 1, 0, 0, 0, 330, 316, 1, 0, 0, 0, 330, 321, 1, 0, 0, 0, 331, 33, 1, 0, 0, 0, 332, 333, 5, 5, 0, 0, 333, 337, 3, 112, 56, 0, 334, 335, 5, 6, 0, 0, 335, 337, 3, 112, 56, 0, 336, 332, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 337, 35, 1, 0, 0, 0, 338, 340, 3, 16, 8, 0, 339, 338, 1, 0, 0, 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 344, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 344, 345, 5, 8, 0, 0, 345, 346, 3, 112, 56, 0, 346, 347, 5, 43, 0, 0, 347, 348, 3, 114, 57, 0, 348, 349, 5, 37, 0, 0, 349, 352, 3, 114, 57, 0, 350, 351, 5, 38, 0, 0, 351, 353, 5, 103, 0, 0, 352, 350, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 358, 5, 95, 0, 0, 355, 357, 3, 38, 19, 0, 356, 355, 1, 0, 0, 0, 357, 360, 1, 0, 0, 0, 358, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 361, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 361, 362, 5, 96, 0, 0, 362, 37, 1, 0, 0, 0, 363, 367, 3, 40, 20, 0, 364, 367, 3, 42, 21, 0, 365, 367, 3, 44, 22, 0, 366, 363, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 366, 365, 1, 0, 0, 0, 367, 39, 1, 0, 0, 0, 368, 369, 5, 11, 0, 0, 369, 370, 3, 112, 56, 0, 370, 371, 5, 43, 0, 0, 371, 372, 3, 114, 57, 0, 372, 373, 5, 91, 0, 0, 373, 374, 3, 98, 49, 0, 374, 375, 5, 90, 0, 0, 375, 376, 3, 98, 49, 0, 376, 377, 5, 45, 0, 0, 377, 379, 3, 48, 24, 0, 378, 380, 3, 46, 23, 0, 379, 378, 1, 0, 0, 0, 379, 380, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 382, 5, 47, 0, 0, 382, 384, 3, 50, 25, 0, 383, 385, 3, 54, 27, 0, 384, 383, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 386, 1, 0, 0, 0, 386, 387, 5, 92, 0, 0, 387, 41, 1, 0, 0, 0, 388, 389, 5, 12, 0, 0, 389, 390, 3, 112, 56, 0, 390, 391, 5, 43, 0, 0, 391, 392, 3, 114, 57, 0, 392, 393, 5, 91, 0, 0, 393, 394, 3, 98, 49, 0, 394, 395, 5, 90, 0, 0, 395, 397, 3, 98, 49, 0, 396, 398, 3, 54, 27, 0, 397, 396, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 400, 5, 92, 0, 0, 400, 43, 1, 0, 0, 0, 401, 402, 5, 13, 0, 0, 402, 403, 3, 112, 56, 0, 403, 404, 5, 43, 0, 0, 404, 405, 3, 114, 57, 0, 405, 406, 5, 14, 0, 0, 406, 407, 3, 112, 56, 0, 407, 408, 5, 91, 0, 0, 408, 410, 3, 98, 49, 0, 409, 411, 3, 54, 27, 0, 410, 409, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 413, 5, 92, 0, 0, 413, 45, 1, 0, 0, 0, 414, 415, 5, 46, 0, 0, 415, 416, 3, 98, 49, 0, 416, 47, 1, 0, 0, 0, 417, 418, 7, 0, 0, 0, 418, 49, 1, 0, 0, 0, 419, 429, 5, 49, 0, 0, 420, 421, 5, 5, 0, 0, 421, 429, 3, 112, 56, 0, 422, 423, 5, 7, 0, 0, 423, 425, 5, 97, 0, 0, 424, 426, 3, 52, 26, 0, 425, 424, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 429, 5, 98, 0, 0, 428, 419, 1, 0, 0, 0, 428, 420, 1, 0, 0, 0, 428, 422, 1, 0, 0, 0, 429, 51, 1, 0, 0, 0, 430, 435, 3, 112, 56, 0, 431, 432, 5, 93, 0, 0, 432, 434, 3, 112, 56, 0, 433, 431, 1, 0, 0, 0, 434, 437, 1, 0, 0, 0, 435, 433, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 53, 1, 0, 0, 0, 437, 435, 1, 0, 0, 0, 438, 439, 5, 48, 0, 0, 439, 443, 5, 95, 0, 0, 440, 442, 3, 56, 28, 0, 441, 440, 1, 0, 0, 0, 442, 445, 1, 0, 0, 0, 443, 441, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 446, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 446, 447, 5, 96, 0, 0, 447, 55, 1, 0, 0, 0, 448, 449, 5, 22, 0, 0, 449, 450, 3, 112, 56, 0, 450, 451, 5, 43, 0, 0, 451, 452, 3, 114, 57, 0, 452, 453, 5, 91, 0, 0, 453, 454, 3, 98, 49, 0, 454, 455, 3, 58, 29, 0, 455, 456, 5, 92, 0, 0, 456, 488, 1, 0, 0, 0, 457, 458, 5, 23, 0, 0, 458, 459, 3, 112, 56, 0, 459, 460, 5, 43, 0, 0, 460, 461, 3, 114, 57, 0, 461, 462, 5, 91, 0, 0, 462, 463, 3, 102, 51, 0, 463, 464, 3, 34, 17, 0, 464, 465, 3, 58, 29, 0, 465, 466, 5, 92, 0, 0, 466, 488, 1, 0, 0, 0, 467, 468, 5, 6, 0, 0, 468, 469, 3, 112, 56, 0, 469, 470, 5, 43, 0, 0, 470, 471, 3, 114, 57, 0, 471, 472, 5, 91, 0, 0, 472, 473, 3, 112, 56, 0, 473, 474, 5, 92, 0, 0, 474, 488, 1, 0, 0, 0, 475, 476, 5, 13, 0, 0, 476, 477, 3, 112, 56, 0, 477, 478, 5, 43, 0, 0, 478, 479, 3, 114, 57, 0, 479, 480, 5, 91, 0, 0, 480, 483, 3, 112, 56, 0, 481, 482, 5, 15, 0, 0, 482, 484, 3, 98, 49, 0, 483, 481, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 486, 5, 92, 0, 0, 486, 488, 1, 0, 0, 0, 487, 448, 1, 0, 0, 0, 487, 457, 1, 0, 0, 0, 487, 467, 1, 0, 0, 0, 487, 475, 1, 0, 0, 0, 488, 57, 1, 0, 0, 0, 489, 490, 5, 97, 0, 0, 490, 495, 3, 60, 30, 0, 491, 492, 5, 93, 0, 0, 492, 494, 3, 60, 30, 0, 493, 491, 1, 0, 0, 0, 494, 497, 1, 0, 0, 0, 495, 493, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 498, 499, 5, 98, 0, 0, 499, 59, 1, 0, 0, 0, 500, 501, 7, 1, 0, 0, 501, 61, 1, 0, 0, 0, 502, 503, 5, 21, 0, 0, 503, 504, 3, 64, 32, 0, 504, 63, 1, 0, 0, 0, 505, 508, 3, 66, 33, 0, 506, 508, 3, 70, 35, 0, 507, 505, 1, 0, 0, 0, 507, 506, 1, 0, 0, 0, 508, 65, 1, 0, 0, 0, 509, 510, 5, 22, 0, 0, 510, 511, 3, 112, 56, 0, 511, 512, 5, 43, 0, 0, 512, 513, 3, 114, 57, 0, 513, 514, 5, 31, 0, 0, 514, 515, 3, 112, 56, 0, 515, 516, 5, 91, 0, 0, 516, 517, 3, 98, 49, 0, 517, 518, 5, 32, 0, 0, 518, 521, 3, 68, 34, 0, 519, 520, 5, 33, 0, 0, 520, 522, 3, 104, 52, 0, 521, 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 524, 5, 92, 0, 0, 524, 67, 1, 0, 0, 0, 525, 532, 5, 65, 0, 0, 526, 527, 5, 66, 0, 0, 527, 528, 5, 99, 0, 0, 528, 529, 3, 98, 49, 0, 529, 530, 5, 100, 0, 0, 530, 532, 1, 0, 0, 0, 531, 525, 1, 0, 0, 0, 531, 526, 1, 0, 0, 0, 532, 69, 1, 0, 0, 0, 533, 534, 5, 23, 0, 0, 534, 535, 3, 112, 56, 0, 535, 536, 5, 43, 0, 0, 536, 537, 3, 114, 57, 0, 537, 538, 5, 95, 0, 0, 538, 539, 3, 72, 36, 0, 539, 540, 3, 72, 36, 0, 540, 541, 5, 96, 0, 0, 541, 71, 1, 0, 0, 0, 542, 543, 3, 34, 17, 0, 543, 544, 5, 24, 0, 0, 544, 545, 3, 112, 56, 0, 545, 546, 5, 43, 0, 0, 546, 547, 3, 114, 57, 0, 547, 549, 3, 102, 51, 0, 548, 550, 5, 71, 0, 0, 549, 548, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 553, 1, 0, 0, 0, 551, 552, 5, 39, 0, 0, 552, 554, 3, 114, 57, 0, 553, 551, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 556, 1, 0, 0, 0, 555, 557, 5, 40, 0, 0, 556, 555, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 560, 1, 0, 0, 0, 558, 559, 5, 41, 0, 0, 559, 561, 3, 114, 57, 0, 560, 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 563, 1, 0, 0, 0, 562, 564, 5, 42, 0, 0, 563, 562, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 5, 92, 0, 0, 566, 73, 1, 0, 0, 0, 567, 568, 5, 16, 0, 0, 568, 569, 3, 112, 56, 0, 569, 570, 5, 17, 0, 0, 570, 573, 3, 112, 56, 0, 571, 572, 5, 43, 0, 0, 572, 574, 3, 114, 57, 0, 573, 571, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 574, 577, 1, 0, 0, 0, 575, 576, 5, 38, 0, 0, 576, 578, 5, 103, 0, 0, 577, 575, 1, 0, 0, 0, 577, 578, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 583, 5, 95, 0, 0, 580, 582, 3, 76, 38, 0, 581, 580, 1, 0, 0, 0, 582, 585, 1, 0, 0, 0, 583, 581, 1, 0, 0, 0, 583, 584, 1, 0, 0, 0, 584, 586, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 586, 587, 5, 96, 0, 0, 587, 75, 1, 0, 0, 0, 588, 589, 5, 20, 0, 0, 589, 593, 3, 64, 32, 0, 590, 593, 3, 80, 40, 0, 591, 593, 3, 78, 39, 0, 592, 588, 1, 0, 0, 0, 592, 590, 1, 0, 0, 0, 592, 591, 1, 0, 0, 0, 593, 77, 1, 0, 0, 0, 594, 595, 5, 28, 0, 0, 595, 596, 3, 112, 56, 0, 596, 597, 5, 29, 0, 0, 597, 598, 5, 30, 0, 0, 598, 599, 5, 26, 0, 0, 599, 600, 5, 13, 0, 0, 600, 601, 3, 112, 56, 0, 601, 602, 5, 27, 0, 0, 602, 603, 5, 23, 0, 0, 603, 604, 3, 112, 56, 0, 604, 605, 5, 94, 0, 0, 605, 606, 3, 112, 56, 0, 606, 607, 5, 92, 0, 0, 607, 79, 1, 0, 0, 0, 608, 609, 5, 18, 0, 0, 609, 610, 3, 82, 41, 0, 610, 611, 5, 19, 0, 0, 611, 612, 3, 86, 43, 0, 612, 613, 5, 92, 0, 0, 613, 81, 1, 0, 0, 0, 614, 615, 3, 112, 56, 0, 615, 616, 5, 94, 0, 0, 616, 617, 3, 84, 42, 0, 617, 83, 1, 0, 0, 0, 618, 630, 3, 112, 56, 0, 619, 630, 5, 60, 0, 0, 620, 630, 5, 50, 0, 0, 621, 630, 5, 51, 0, 0, 622, 630, 5, 57, 0, 0, 623, 630, 5, 58, 0, 0, 624, 630, 5, 59, 0, 0, 625, 630, 5, 61, 0, 0, 626, 630, 5, 62, 0, 0, 627, 630, 5, 63, 0, 0, 628, 630, 5, 64, 0, 0, 629, 618, 1, 0, 0, 0, 629, 619, 1, 0, 0, 0, 629, 620, 1, 0, 0, 0, 629, 621, 1, 0, 0, 0, 629, 622, 1, 0, 0, 0, 629, 623, 1, 0, 0, 0, 629, 624, 1, 0, 0, 0, 629, 625, 1, 0, 0, 0, 629, 626, 1, 0, 0, 0, 629, 627, 1, 0, 0, 0, 629, 628, 1, 0, 0, 0, 630, 85, 1, 0, 0, 0, 631, 632, 5, 22, 0, 0, 632, 633, 3, 112, 56, 0, 633, 634, 5, 94, 0, 0, 634, 635, 3, 88, 44, 0, 635, 651, 1, 0, 0, 0, 636, 637, 5, 23, 0, 0, 637, 638, 3, 112, 56, 0, 638, 639, 5, 94, 0, 0, 639, 640, 3, 112, 56, 0, 640, 641, 5, 94, 0, 0, 641, 642, 3, 90, 45, 0, 642, 651, 1, 0, 0, 0, 643, 644, 5, 8, 0, 0, 644, 645, 3, 112, 56, 0, 645, 646, 5, 94, 0, 0, 646, 648, 3, 112, 56, 0, 647, 649, 3, 92, 46, 0, 648, 647, 1, 0, 0, 0, 648, 649, 1, 0, 0, 0, 649, 651, 1, 0, 0, 0, 650, 631, 1, 0, 0, 0, 650, 636, 1, 0, 0, 0, 650, 643, 1, 0, 0, 0, 651, 87, 1, 0, 0, 0, 652, 653, 7, 2, 0, 0, 653, 89, 1, 0, 0, 0, 654, 655, 7, 3, 0, 0, 655, 91, 1, 0, 0, 0, 656, 657, 5, 25, 0, 0, 657, 661, 5, 95, 0, 0, 658, 660, 3, 94, 47, 0, 659, 658, 1, 0, 0, 0, 660, 663, 1, 0, 0, 0, 661, 659, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 664, 1, 0, 0, 0, 663, 661, 1, 0, 0, 0, 664, 665, 5, 96, 0, 0, 665, 93, 1, 0, 0, 0, 666, 667, 3, 112, 56, 0, 667, 668, 5, 19, 0, 0, 668, 669, 5, 22, 0, 0, 669, 676, 3, 112, 56, 0, 670, 671, 5, 27, 0, 0, 671, 672, 5, 23, 0, 0, 672, 673, 3, 112, 56, 0, 673, 674, 5, 94, 0, 0, 674, 675, 3, 112, 56, 0, 675, 677, 1, 0, 0, 0, 676, 670, 1, 0, 0, 0, 676, 677, 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 679, 5, 92, 0, 0, 679, 717, 1, 0, 0, 0, 680, 681, 3, 112, 56, 0, 681, 682, 5, 19, 0, 0, 682, 683, 5, 23, 0, 0, 683, 684, 3, 112, 56, 0, 684, 685, 5, 94, 0, 0, 685, 692, 3, 112, 56, 0, 686, 687, 5, 27, 0, 0, 687, 688, 5, 23, 0, 0, 688, 689, 3, 112, 56, 0, 689, 690, 5, 94, 0, 0, 690, 691, 3, 112, 56, 0, 691, 693, 1, 0, 0, 0, 692, 686, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 695, 5, 92, 0, 0, 695, 717, 1, 0, 0, 0, 696, 697, 3, 112, 56, 0, 697, 698, 5, 19, 0, 0, 698, 699, 5, 6, 0, 0, 699, 706, 3, 112, 56, 0, 700, 701, 5, 27, 0, 0, 701, 702, 5, 23, 0, 0, 702, 703, 3, 112, 56, 0, 703, 704, 5, 94, 0, 0, 704, 705, 3, 112, 56, 0, 705, 707, 1, 0, 0, 0, 706, 700, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 5, 92, 0, 0, 709, 717, 1, 0, 0, 0, 710, 711, 3, 112, 56, 0, 711, 712, 5, 19, 0, 0, 712, 713, 5, 13, 0, 0, 713, 714, 3, 112, 56, 0, 714, 715, 5, 92, 0, 0, 715, 717, 1, 0, 0, 0, 716, 666, 1, 0, 0, 0, 716, 680, 1, 0, 0, 0, 716, 696, 1, 0, 0, 0, 716, 710, 1, 0, 0, 0, 717, 95, 1, 0, 0, 0, 718, 719, 5, 13, 0, 0, 719, 720, 3, 112, 56, 0, 720, 721, 5, 19, 0, 0, 721, 722, 3, 112, 56, 0, 722, 723, 5, 94, 0, 0, 723, 725, 3, 112, 56, 0, 724, 726, 3, 92, 46, 0, 725, 724, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 728, 5, 92, 0, 0, 728, 97, 1, 0, 0, 0, 729, 755, 3, 100, 50, 0, 730, 755, 5, 72, 0, 0, 731, 755, 5, 73, 0, 0, 732, 733, 5, 74, 0, 0, 733, 755, 3, 114, 57, 0, 734, 735, 5, 75, 0, 0, 735, 736, 5, 101, 0, 0, 736, 737, 3, 112, 56, 0, 737, 738, 5, 102, 0, 0, 738, 755, 1, 0, 0, 0, 739, 740, 5, 76, 0, 0, 740, 741, 5, 101, 0, 0, 741, 742, 3, 112, 56, 0, 742, 743, 5, 102, 0, 0, 743, 755, 1, 0, 0, 0, 744, 745, 5, 77, 0, 0, 745, 746, 5, 101, 0, 0, 746, 747, 3, 98, 49, 0, 747, 748, 5, 102, 0, 0, 748, 755, 1, 0, 0, 0, 749, 750, 5, 78, 0, 0, 750, 751, 5, 101, 0, 0, 751, 752, 3, 98, 49, 0, 752, 753, 5, 102, 0, 0, 753, 755, 1, 0, 0, 0, 754, 729, 1, 0, 0, 0, 754, 730, 1, 0, 0, 0, 754, 731, 1, 0, 0, 0, 754, 732, 1, 0, 0, 0, 754, 734, 1, 0, 0, 0, 754, 739, 1, 0, 0, 0, 754, 744, 1, 0, 0, 0, 754, 749, 1, 0, 0, 0, 755, 99, 1, 0, 0, 0, 756, 757, 7, 4, 0, 0, 757, 101, 1, 0, 0, 0, 758, 759, 7, 5, 0, 0, 759, 103, 1, 0, 0, 0, 760, 769, 3, 114, 57, 0, 761, 769, 5, 103, 0, 0, 762, 769, 5, 104, 0, 0, 763, 769, 5, 87, 0, 0, 764, 769, 5, 88, 0, 0, 765, 769, 5, 89, 0, 0, 766, 769, 3, 106, 53, 0, 767, 769, 3, 110, 55, 0, 768, 760, 1, 0, 0, 0, 768, 761, 1, 0, 0, 0, 768, 762, 1, 0, 0, 0, 768, 763, 1, 0, 0, 0, 768, 764, 1, 0, 0, 0, 768, 765, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 768, 767, 1, 0, 0, 0, 769, 105, 1, 0, 0, 0, 770, 779, 5, 95, 0, 0, 771, 776, 3, 108, 54, 0, 772, 773, 5, 93, 0, 0, 773, 775, 3, 108, 54, 0, 774, 772, 1, 0, 0, 0, 775, 778, 1, 0, 0, 0, 776, 774, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 780, 1, 0, 0, 0, 778, 776, 1, 0, 0, 0, 779, 771, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, 782, 5, 96, 0, 0, 782, 107, 1, 0, 0, 0, 783, 784, 3, 114, 57, 0, 784, 785, 5, 91, 0, 0, 785, 786, 3, 104, 52, 0, 786, 109, 1, 0, 0, 0, 787, 796, 5, 97, 0, 0, 788, 793, 3, 104, 52, 0, 789, 790, 5, 93, 0, 0, 790, 792, 3, 104, 52, 0, 791, 789, 1, 0, 0, 0, 792, 795, 1, 0, 0, 0, 793, 791, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 797, 1, 0, 0, 0, 795, 793, 1, 0, 0, 0, 796, 788, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 799, 5, 98, 0, 0, 799, 111, 1, 0, 0, 0, 800, 801, 7, 6, 0, 0, 801, 113, 1, 0, 0, 0, 802, 803, 5, 106, 0, 0, 803, 115, 1, 0, 0, 0, 58, 128, 135, 156, 167, 179, 198, 206, 213, 226, 234, 261, 285, 295, 301, 330, 336, 341, 352, 358, 366, 379, 384, 397, 410, 425, 428, 435, 443, 483, 487, 495, 507, 521, 531, 549, 553, 556, 560, 563, 573, 577, 583, 592, 629, 648, 650, 661, 676, 692, 706, 716, 725, 754, 768, 776, 779, 793, 796]