summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Volkov <die.marmelade@yandex.ru>2022-09-26 19:41:41 +0400
committerGitHub <noreply@github.com>2022-09-26 17:41:41 +0200
commitd67f6ddefd7e32455c43c3e45f12ca8f2066a7a0 (patch)
tree03364194ffab9bec1c8b5dd511eb162895b58402
parent72aec98f82ec42e7384dd1633509416c42308aa5 (diff)
downloadpygments-git-d67f6ddefd7e32455c43c3e45f12ca8f2066a7a0.tar.gz
Add tl-b lexer (#2247)
-rw-r--r--pygments/lexers/_mapping.py1
-rw-r--r--pygments/lexers/tlb.py57
-rw-r--r--tests/examplefiles/tlb/block.tlb868
-rw-r--r--tests/examplefiles/tlb/block.tlb.output9295
4 files changed, 10221 insertions, 0 deletions
diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py
index a1248d68..be3f4d79 100644
--- a/pygments/lexers/_mapping.py
+++ b/pygments/lexers/_mapping.py
@@ -490,6 +490,7 @@ LEXERS = {
'ThingsDBLexer': ('pygments.lexers.thingsdb', 'ThingsDB', ('ti', 'thingsdb'), ('*.ti',), ()),
'ThriftLexer': ('pygments.lexers.dsls', 'Thrift', ('thrift',), ('*.thrift',), ('application/x-thrift',)),
'TiddlyWiki5Lexer': ('pygments.lexers.markup', 'tiddler', ('tid',), ('*.tid',), ('text/vnd.tiddlywiki',)),
+ 'TlbLexer': ('pygments.lexers.tlb', 'Tl-b', ('tlb',), ('*.tlb',), ()),
'TodotxtLexer': ('pygments.lexers.textfmts', 'Todotxt', ('todotxt',), ('todo.txt', '*.todotxt'), ('text/x-todo',)),
'TransactSqlLexer': ('pygments.lexers.sql', 'Transact-SQL', ('tsql', 't-sql'), ('*.sql',), ('text/x-tsql',)),
'TreetopLexer': ('pygments.lexers.parsers', 'Treetop', ('treetop',), ('*.treetop', '*.tt'), ()),
diff --git a/pygments/lexers/tlb.py b/pygments/lexers/tlb.py
new file mode 100644
index 00000000..1990ec90
--- /dev/null
+++ b/pygments/lexers/tlb.py
@@ -0,0 +1,57 @@
+"""
+ pygments.lexers.tlb
+ ~~~~~~~~~~~~~~~~~~~
+
+ Lexers for TL-b.
+
+ :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from pygments.lexer import RegexLexer, include, words
+from pygments.token import Operator, Name, \
+ Number, Whitespace, Punctuation, Comment
+
+__all__ = ['TlbLexer']
+
+
+class TlbLexer(RegexLexer):
+ """
+ For TL-b source code.
+ """
+
+ name = 'Tl-b'
+ aliases = ['tlb']
+ filenames = ['*.tlb']
+
+ tokens = {
+ 'root': [
+ (r'\s+', Whitespace),
+
+ include('comments'),
+
+ (r'[0-9]+', Number),
+ (words((
+ '+', '-', '*', '=', '?', '~', '.',
+ '^', '==', '<', '>', '<=', '>=', '!='
+ )), Operator),
+ (words(('##', '#<', '#<=')), Name.Tag),
+ (r'#[0-9a-f]*_?', Name.Tag),
+ (r'\$[01]*_?', Name.Tag),
+
+ (r'[a-zA-Z_][0-9a-zA-Z_]*', Name),
+
+ (r'[;():\[\]{}]', Punctuation)
+ ],
+
+ 'comments': [
+ (r'//.*', Comment.Singleline),
+ (r'/\*', Comment.Multiline, 'comment'),
+ ],
+ 'comment': [
+ (r'[^/*]+', Comment.Multiline),
+ (r'/\*', Comment.Multiline, '#push'),
+ (r'\*/', Comment.Multiline, '#pop'),
+ (r'[*/]', Comment.Multiline),
+ ],
+ }
diff --git a/tests/examplefiles/tlb/block.tlb b/tests/examplefiles/tlb/block.tlb
new file mode 100644
index 00000000..7e6666cd
--- /dev/null
+++ b/tests/examplefiles/tlb/block.tlb
@@ -0,0 +1,868 @@
+unit$_ = Unit;
+true$_ = True;
+// EMPTY False;
+bool_false$0 = Bool;
+bool_true$1 = Bool;
+bool_false$0 = BoolFalse;
+bool_true$1 = BoolTrue;
+nothing$0 {X:Type} = Maybe X;
+just$1 {X:Type} value:X = Maybe X;
+left$0 {X:Type} {Y:Type} value:X = Either X Y;
+right$1 {X:Type} {Y:Type} value:Y = Either X Y;
+pair$_ {X:Type} {Y:Type} first:X second:Y = Both X Y;
+
+bit$_ (## 1) = Bit;
+/*
+ *
+ * FROM hashmap.tlb
+ *
+ */
+// ordinary Hashmap / HashmapE, with fixed length keys
+//
+hm_edge#_ {n:#} {X:Type} {l:#} {m:#} label:(HmLabel ~l n)
+ {n = (~m) + l} node:(HashmapNode m X) = Hashmap n X;
+
+hmn_leaf#_ {X:Type} value:X = HashmapNode 0 X;
+hmn_fork#_ {n:#} {X:Type} left:^(Hashmap n X)
+ right:^(Hashmap n X) = HashmapNode (n + 1) X;
+
+hml_short$0 {m:#} {n:#} len:(Unary ~n) {n <= m} s:(n * Bit) = HmLabel ~n m;
+hml_long$10 {m:#} n:(#<= m) s:(n * Bit) = HmLabel ~n m;
+hml_same$11 {m:#} v:Bit n:(#<= m) = HmLabel ~n m;
+
+unary_zero$0 = Unary ~0;
+unary_succ$1 {n:#} x:(Unary ~n) = Unary ~(n + 1);
+
+hme_empty$0 {n:#} {X:Type} = HashmapE n X;
+hme_root$1 {n:#} {X:Type} root:^(Hashmap n X) = HashmapE n X;
+
+// true#_ = True;
+_ {n:#} _:(Hashmap n True) = BitstringSet n;
+
+// HashmapAug, hashmap with an extra value
+// (augmentation) of type Y at every node
+//
+ahm_edge#_ {n:#} {X:Type} {Y:Type} {l:#} {m:#}
+ label:(HmLabel ~l n) {n = (~m) + l}
+ node:(HashmapAugNode m X Y) = HashmapAug n X Y;
+ahmn_leaf#_ {X:Type} {Y:Type} extra:Y value:X = HashmapAugNode 0 X Y;
+ahmn_fork#_ {n:#} {X:Type} {Y:Type} left:^(HashmapAug n X Y)
+ right:^(HashmapAug n X Y) extra:Y = HashmapAugNode (n + 1) X Y;
+
+ahme_empty$0 {n:#} {X:Type} {Y:Type} extra:Y
+ = HashmapAugE n X Y;
+ahme_root$1 {n:#} {X:Type} {Y:Type} root:^(HashmapAug n X Y)
+ extra:Y = HashmapAugE n X Y;
+
+// VarHashmap / VarHashmapE, with variable-length keys
+//
+vhm_edge#_ {n:#} {X:Type} {l:#} {m:#} label:(HmLabel ~l n)
+ {n = (~m) + l} node:(VarHashmapNode m X)
+ = VarHashmap n X;
+vhmn_leaf$00 {n:#} {X:Type} value:X = VarHashmapNode n X;
+vhmn_fork$01 {n:#} {X:Type} left:^(VarHashmap n X)
+ right:^(VarHashmap n X) value:(Maybe X)
+ = VarHashmapNode (n + 1) X;
+vhmn_cont$1 {n:#} {X:Type} branch:Bit child:^(VarHashmap n X)
+ value:X = VarHashmapNode (n + 1) X;
+
+// nothing$0 {X:Type} = Maybe X;
+// just$1 {X:Type} value:X = Maybe X;
+
+vhme_empty$0 {n:#} {X:Type} = VarHashmapE n X;
+vhme_root$1 {n:#} {X:Type} root:^(VarHashmap n X)
+ = VarHashmapE n X;
+
+//
+// PfxHashmap / PfxHashmapE, with variable-length keys
+// constituting a prefix code
+//
+
+phm_edge#_ {n:#} {X:Type} {l:#} {m:#} label:(HmLabel ~l n)
+ {n = (~m) + l} node:(PfxHashmapNode m X)
+ = PfxHashmap n X;
+
+phmn_leaf$0 {n:#} {X:Type} value:X = PfxHashmapNode n X;
+phmn_fork$1 {n:#} {X:Type} left:^(PfxHashmap n X)
+ right:^(PfxHashmap n X) = PfxHashmapNode (n + 1) X;
+
+phme_empty$0 {n:#} {X:Type} = PfxHashmapE n X;
+phme_root$1 {n:#} {X:Type} root:^(PfxHashmap n X)
+ = PfxHashmapE n X;
+/*
+ *
+ * END hashmap.tlb
+ *
+ */
+//
+// TON BLOCK LAYOUT
+//
+addr_none$00 = MsgAddressExt;
+addr_extern$01 len:(## 9) external_address:(bits len)
+ = MsgAddressExt;
+anycast_info$_ depth:(#<= 30) { depth >= 1 }
+ rewrite_pfx:(bits depth) = Anycast;
+addr_std$10 anycast:(Maybe Anycast)
+ workchain_id:int8 address:bits256 = MsgAddressInt;
+addr_var$11 anycast:(Maybe Anycast) addr_len:(## 9)
+ workchain_id:int32 address:(bits addr_len) = MsgAddressInt;
+_ _:MsgAddressInt = MsgAddress;
+_ _:MsgAddressExt = MsgAddress;
+//
+var_uint$_ {n:#} len:(#< n) value:(uint (len * 8))
+ = VarUInteger n;
+var_int$_ {n:#} len:(#< n) value:(int (len * 8))
+ = VarInteger n;
+nanograms$_ amount:(VarUInteger 16) = Grams;
+//
+extra_currencies$_ dict:(HashmapE 32 (VarUInteger 32))
+ = ExtraCurrencyCollection;
+currencies$_ grams:Grams other:ExtraCurrencyCollection
+ = CurrencyCollection;
+//
+int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool
+ src:MsgAddressInt dest:MsgAddressInt
+ value:CurrencyCollection ihr_fee:Grams fwd_fee:Grams
+ created_lt:uint64 created_at:uint32 = CommonMsgInfo;
+ext_in_msg_info$10 src:MsgAddressExt dest:MsgAddressInt
+ import_fee:Grams = CommonMsgInfo;
+ext_out_msg_info$11 src:MsgAddressInt dest:MsgAddressExt
+ created_lt:uint64 created_at:uint32 = CommonMsgInfo;
+
+int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool
+ src:MsgAddress dest:MsgAddressInt
+ value:CurrencyCollection ihr_fee:Grams fwd_fee:Grams
+ created_lt:uint64 created_at:uint32 = CommonMsgInfoRelaxed;
+ext_out_msg_info$11 src:MsgAddress dest:MsgAddressExt
+ created_lt:uint64 created_at:uint32 = CommonMsgInfoRelaxed;
+
+tick_tock$_ tick:Bool tock:Bool = TickTock;
+
+_ split_depth:(Maybe (## 5)) special:(Maybe TickTock)
+ code:(Maybe ^Cell) data:(Maybe ^Cell)
+ library:(HashmapE 256 SimpleLib) = StateInit;
+
+simple_lib$_ public:Bool root:^Cell = SimpleLib;
+
+message$_ {X:Type} info:CommonMsgInfo
+ init:(Maybe (Either StateInit ^StateInit))
+ body:(Either X ^X) = Message X;
+
+message$_ {X:Type} info:CommonMsgInfoRelaxed
+ init:(Maybe (Either StateInit ^StateInit))
+ body:(Either X ^X) = MessageRelaxed X;
+
+_ (Message Any) = MessageAny;
+
+//
+interm_addr_regular$0 use_dest_bits:(#<= 96)
+ = IntermediateAddress;
+interm_addr_simple$10 workchain_id:int8 addr_pfx:uint64
+ = IntermediateAddress;
+interm_addr_ext$11 workchain_id:int32 addr_pfx:uint64
+ = IntermediateAddress;
+msg_envelope#4 cur_addr:IntermediateAddress
+ next_addr:IntermediateAddress fwd_fee_remaining:Grams
+ msg:^(Message Any) = MsgEnvelope;
+//
+msg_import_ext$000 msg:^(Message Any) transaction:^Transaction
+ = InMsg;
+msg_import_ihr$010 msg:^(Message Any) transaction:^Transaction
+ ihr_fee:Grams proof_created:^Cell = InMsg;
+msg_import_imm$011 in_msg:^MsgEnvelope
+ transaction:^Transaction fwd_fee:Grams = InMsg;
+msg_import_fin$100 in_msg:^MsgEnvelope
+ transaction:^Transaction fwd_fee:Grams = InMsg;
+msg_import_tr$101 in_msg:^MsgEnvelope out_msg:^MsgEnvelope
+ transit_fee:Grams = InMsg;
+msg_discard_fin$110 in_msg:^MsgEnvelope transaction_id:uint64
+ fwd_fee:Grams = InMsg;
+msg_discard_tr$111 in_msg:^MsgEnvelope transaction_id:uint64
+ fwd_fee:Grams proof_delivered:^Cell = InMsg;
+//
+import_fees$_ fees_collected:Grams
+ value_imported:CurrencyCollection = ImportFees;
+
+_ (HashmapAugE 256 InMsg ImportFees) = InMsgDescr;
+
+msg_export_ext$000 msg:^(Message Any)
+ transaction:^Transaction = OutMsg;
+msg_export_imm$010 out_msg:^MsgEnvelope
+ transaction:^Transaction reimport:^InMsg = OutMsg;
+msg_export_new$001 out_msg:^MsgEnvelope
+ transaction:^Transaction = OutMsg;
+msg_export_tr$011 out_msg:^MsgEnvelope
+ imported:^InMsg = OutMsg;
+msg_export_deq$1100 out_msg:^MsgEnvelope
+ import_block_lt:uint63 = OutMsg;
+msg_export_deq_short$1101 msg_env_hash:bits256
+ next_workchain:int32 next_addr_pfx:uint64
+ import_block_lt:uint64 = OutMsg;
+msg_export_tr_req$111 out_msg:^MsgEnvelope
+ imported:^InMsg = OutMsg;
+msg_export_deq_imm$100 out_msg:^MsgEnvelope
+ reimport:^InMsg = OutMsg;
+
+_ enqueued_lt:uint64 out_msg:^MsgEnvelope = EnqueuedMsg;
+
+_ (HashmapAugE 256 OutMsg CurrencyCollection) = OutMsgDescr;
+
+_ (HashmapAugE 352 EnqueuedMsg uint64) = OutMsgQueue;
+
+processed_upto$_ last_msg_lt:uint64 last_msg_hash:bits256 = ProcessedUpto;
+// key is [ shard:uint64 mc_seqno:uint32 ]
+_ (HashmapE 96 ProcessedUpto) = ProcessedInfo;
+
+ihr_pending$_ import_lt:uint64 = IhrPendingSince;
+_ (HashmapE 320 IhrPendingSince) = IhrPendingInfo;
+
+_ out_queue:OutMsgQueue proc_info:ProcessedInfo
+ ihr_pending:IhrPendingInfo = OutMsgQueueInfo;
+//
+storage_used$_ cells:(VarUInteger 7) bits:(VarUInteger 7)
+ public_cells:(VarUInteger 7) = StorageUsed;
+
+storage_used_short$_ cells:(VarUInteger 7)
+ bits:(VarUInteger 7) = StorageUsedShort;
+
+storage_info$_ used:StorageUsed last_paid:uint32
+ due_payment:(Maybe Grams) = StorageInfo;
+
+account_none$0 = Account;
+account$1 addr:MsgAddressInt storage_stat:StorageInfo
+ storage:AccountStorage = Account;
+
+account_storage$_ last_trans_lt:uint64
+ balance:CurrencyCollection state:AccountState
+ = AccountStorage;
+
+account_uninit$00 = AccountState;
+account_active$1 _:StateInit = AccountState;
+account_frozen$01 state_hash:bits256 = AccountState;
+
+acc_state_uninit$00 = AccountStatus;
+acc_state_frozen$01 = AccountStatus;
+acc_state_active$10 = AccountStatus;
+acc_state_nonexist$11 = AccountStatus;
+
+/* duplicates
+tick_tock$_ tick:Bool tock:Bool = TickTock;
+
+_ split_depth:(Maybe (## 5)) special:(Maybe TickTock)
+ code:(Maybe ^Cell) data:(Maybe ^Cell)
+ library:(Maybe ^Cell) = StateInit;
+*/
+
+account_descr$_ account:^Account last_trans_hash:bits256
+ last_trans_lt:uint64 = ShardAccount;
+
+depth_balance$_ split_depth:(#<= 30) balance:CurrencyCollection = DepthBalanceInfo;
+
+_ (HashmapAugE 256 ShardAccount DepthBalanceInfo) = ShardAccounts;
+
+transaction$0111 account_addr:bits256 lt:uint64
+ prev_trans_hash:bits256 prev_trans_lt:uint64 now:uint32
+ outmsg_cnt:uint15
+ orig_status:AccountStatus end_status:AccountStatus
+ ^[ in_msg:(Maybe ^(Message Any)) out_msgs:(HashmapE 15 ^(Message Any)) ]
+ total_fees:CurrencyCollection state_update:^(HASH_UPDATE Account)
+ description:^TransactionDescr = Transaction;
+
+merkle_update#02 {X:Type} old_hash:bits256 new_hash:bits256
+ old:^X new:^X = MERKLE_UPDATE X;
+update_hashes#72 {X:Type} old_hash:bits256 new_hash:bits256
+ = HASH_UPDATE X;
+merkle_proof#03 {X:Type} virtual_hash:bits256 depth:uint16 virtual_root:^X = MERKLE_PROOF X;
+
+acc_trans#5 account_addr:bits256
+ transactions:(HashmapAug 64 ^Transaction CurrencyCollection)
+ state_update:^(HASH_UPDATE Account)
+ = AccountBlock;
+
+_ (HashmapAugE 256 AccountBlock CurrencyCollection) = ShardAccountBlocks;
+//
+tr_phase_storage$_ storage_fees_collected:Grams
+ storage_fees_due:(Maybe Grams)
+ status_change:AccStatusChange
+ = TrStoragePhase;
+
+acst_unchanged$0 = AccStatusChange; // x -> x
+acst_frozen$10 = AccStatusChange; // init -> frozen
+acst_deleted$11 = AccStatusChange; // frozen -> deleted
+
+tr_phase_credit$_ due_fees_collected:(Maybe Grams)
+ credit:CurrencyCollection = TrCreditPhase;
+
+tr_phase_compute_skipped$0 reason:ComputeSkipReason
+ = TrComputePhase;
+tr_phase_compute_vm$1 success:Bool msg_state_used:Bool
+ account_activated:Bool gas_fees:Grams
+ ^[ gas_used:(VarUInteger 7)
+ gas_limit:(VarUInteger 7) gas_credit:(Maybe (VarUInteger 3))
+ mode:int8 exit_code:int32 exit_arg:(Maybe int32)
+ vm_steps:uint32
+ vm_init_state_hash:bits256 vm_final_state_hash:bits256 ]
+ = TrComputePhase;
+cskip_no_state$00 = ComputeSkipReason;
+cskip_bad_state$01 = ComputeSkipReason;
+cskip_no_gas$10 = ComputeSkipReason;
+
+tr_phase_action$_ success:Bool valid:Bool no_funds:Bool
+ status_change:AccStatusChange
+ total_fwd_fees:(Maybe Grams) total_action_fees:(Maybe Grams)
+ result_code:int32 result_arg:(Maybe int32) tot_actions:uint16
+ spec_actions:uint16 skipped_actions:uint16 msgs_created:uint16
+ action_list_hash:bits256 tot_msg_size:StorageUsedShort
+ = TrActionPhase;
+
+tr_phase_bounce_negfunds$00 = TrBouncePhase;
+tr_phase_bounce_nofunds$01 msg_size:StorageUsedShort
+ req_fwd_fees:Grams = TrBouncePhase;
+tr_phase_bounce_ok$1 msg_size:StorageUsedShort
+ msg_fees:Grams fwd_fees:Grams = TrBouncePhase;
+//
+trans_ord$0000 credit_first:Bool
+ storage_ph:(Maybe TrStoragePhase)
+ credit_ph:(Maybe TrCreditPhase)
+ compute_ph:TrComputePhase action:(Maybe ^TrActionPhase)
+ aborted:Bool bounce:(Maybe TrBouncePhase)
+ destroyed:Bool
+ = TransactionDescr;
+
+trans_storage$0001 storage_ph:TrStoragePhase
+ = TransactionDescr;
+
+trans_tick_tock$001 is_tock:Bool storage_ph:TrStoragePhase
+ compute_ph:TrComputePhase action:(Maybe ^TrActionPhase)
+ aborted:Bool destroyed:Bool = TransactionDescr;
+//
+split_merge_info$_ cur_shard_pfx_len:(## 6)
+ acc_split_depth:(## 6) this_addr:bits256 sibling_addr:bits256
+ = SplitMergeInfo;
+trans_split_prepare$0100 split_info:SplitMergeInfo
+ storage_ph:(Maybe TrStoragePhase)
+ compute_ph:TrComputePhase action:(Maybe ^TrActionPhase)
+ aborted:Bool destroyed:Bool
+ = TransactionDescr;
+trans_split_install$0101 split_info:SplitMergeInfo
+ prepare_transaction:^Transaction
+ installed:Bool = TransactionDescr;
+
+trans_merge_prepare$0110 split_info:SplitMergeInfo
+ storage_ph:TrStoragePhase aborted:Bool
+ = TransactionDescr;
+trans_merge_install$0111 split_info:SplitMergeInfo
+ prepare_transaction:^Transaction
+ storage_ph:(Maybe TrStoragePhase)
+ credit_ph:(Maybe TrCreditPhase)
+ compute_ph:TrComputePhase action:(Maybe ^TrActionPhase)
+ aborted:Bool destroyed:Bool
+ = TransactionDescr;
+
+smc_info#076ef1ea actions:uint16 msgs_sent:uint16
+ unixtime:uint32 block_lt:uint64 trans_lt:uint64
+ rand_seed:bits256 balance_remaining:CurrencyCollection
+ myself:MsgAddressInt = SmartContractInfo;
+//
+//
+out_list_empty$_ = OutList 0;
+out_list$_ {n:#} prev:^(OutList n) action:OutAction
+ = OutList (n + 1);
+action_send_msg#0ec3c86d mode:(## 8)
+ out_msg:^(MessageRelaxed Any) = OutAction;
+action_set_code#ad4de08e new_code:^Cell = OutAction;
+action_reserve_currency#36e6b809 mode:(## 8)
+ currency:CurrencyCollection = OutAction;
+libref_hash$0 lib_hash:bits256 = LibRef;
+libref_ref$1 library:^Cell = LibRef;
+action_change_library#26fa1dd4 mode:(## 7) { mode <= 2 }
+ libref:LibRef = OutAction;
+
+out_list_node$_ prev:^Cell action:OutAction = OutListNode;
+//
+//
+shard_ident$00 shard_pfx_bits:(#<= 60)
+ workchain_id:int32 shard_prefix:uint64 = ShardIdent;
+
+ext_blk_ref$_ end_lt:uint64
+ seq_no:uint32 root_hash:bits256 file_hash:bits256
+ = ExtBlkRef;
+
+block_id_ext$_ shard_id:ShardIdent seq_no:uint32
+ root_hash:bits256 file_hash:bits256 = BlockIdExt;
+
+master_info$_ master:ExtBlkRef = BlkMasterInfo;
+
+shard_state#9023afe2 global_id:int32
+ shard_id:ShardIdent
+ seq_no:uint32 vert_seq_no:#
+ gen_utime:uint32 gen_lt:uint64
+ min_ref_mc_seqno:uint32
+ out_msg_queue_info:^OutMsgQueueInfo
+ before_split:(## 1)
+ accounts:^ShardAccounts
+ ^[ overload_history:uint64 underload_history:uint64
+ total_balance:CurrencyCollection
+ total_validator_fees:CurrencyCollection
+ libraries:(HashmapE 256 LibDescr)
+ master_ref:(Maybe BlkMasterInfo) ]
+ custom:(Maybe ^McStateExtra)
+ = ShardStateUnsplit;
+
+_ ShardStateUnsplit = ShardState;
+split_state#5f327da5 left:^ShardStateUnsplit right:^ShardStateUnsplit = ShardState;
+
+shared_lib_descr$00 lib:^Cell publishers:(Hashmap 256 True)
+ = LibDescr;
+
+block_info#9bc7a987 version:uint32
+ not_master:(## 1)
+ after_merge:(## 1) before_split:(## 1)
+ after_split:(## 1)
+ want_split:Bool want_merge:Bool
+ key_block:Bool vert_seqno_incr:(## 1)
+ flags:(## 8) { flags <= 1 }
+ seq_no:# vert_seq_no:# { vert_seq_no >= vert_seqno_incr }
+ { prev_seq_no:# } { ~prev_seq_no + 1 = seq_no }
+ shard:ShardIdent gen_utime:uint32
+ start_lt:uint64 end_lt:uint64
+ gen_validator_list_hash_short:uint32
+ gen_catchain_seqno:uint32
+ min_ref_mc_seqno:uint32
+ prev_key_block_seqno:uint32
+ gen_software:flags . 0?GlobalVersion
+ master_ref:not_master?^BlkMasterInfo
+ prev_ref:^(BlkPrevInfo after_merge)
+ prev_vert_ref:vert_seqno_incr?^(BlkPrevInfo 0)
+ = BlockInfo;
+
+prev_blk_info$_ prev:ExtBlkRef = BlkPrevInfo 0;
+prev_blks_info$_ prev1:^ExtBlkRef prev2:^ExtBlkRef = BlkPrevInfo 1;
+
+block#11ef55aa global_id:int32
+ info:^BlockInfo value_flow:^ValueFlow
+ state_update:^(MERKLE_UPDATE ShardState)
+ extra:^BlockExtra = Block;
+
+block_extra in_msg_descr:^InMsgDescr
+ out_msg_descr:^OutMsgDescr
+ account_blocks:^ShardAccountBlocks
+ rand_seed:bits256
+ created_by:bits256
+ custom:(Maybe ^McBlockExtra) = BlockExtra;
+//
+value_flow ^[ from_prev_blk:CurrencyCollection
+ to_next_blk:CurrencyCollection
+ imported:CurrencyCollection
+ exported:CurrencyCollection ]
+ fees_collected:CurrencyCollection
+ ^[
+ fees_imported:CurrencyCollection
+ recovered:CurrencyCollection
+ created:CurrencyCollection
+ minted:CurrencyCollection
+ ] = ValueFlow;
+
+//
+//
+bt_leaf$0 {X:Type} leaf:X = BinTree X;
+bt_fork$1 {X:Type} left:^(BinTree X) right:^(BinTree X)
+ = BinTree X;
+
+fsm_none$0 = FutureSplitMerge;
+fsm_split$10 split_utime:uint32 interval:uint32 = FutureSplitMerge;
+fsm_merge$11 merge_utime:uint32 interval:uint32 = FutureSplitMerge;
+
+shard_descr#b seq_no:uint32 reg_mc_seqno:uint32
+ start_lt:uint64 end_lt:uint64
+ root_hash:bits256 file_hash:bits256
+ before_split:Bool before_merge:Bool
+ want_split:Bool want_merge:Bool
+ nx_cc_updated:Bool flags:(## 3) { flags = 0 }
+ next_catchain_seqno:uint32 next_validator_shard:uint64
+ min_ref_mc_seqno:uint32 gen_utime:uint32
+ split_merge_at:FutureSplitMerge
+ fees_collected:CurrencyCollection
+ funds_created:CurrencyCollection = ShardDescr;
+
+shard_descr_new#a seq_no:uint32 reg_mc_seqno:uint32
+ start_lt:uint64 end_lt:uint64
+ root_hash:bits256 file_hash:bits256
+ before_split:Bool before_merge:Bool
+ want_split:Bool want_merge:Bool
+ nx_cc_updated:Bool flags:(## 3) { flags = 0 }
+ next_catchain_seqno:uint32 next_validator_shard:uint64
+ min_ref_mc_seqno:uint32 gen_utime:uint32
+ split_merge_at:FutureSplitMerge
+ ^[ fees_collected:CurrencyCollection
+ funds_created:CurrencyCollection ] = ShardDescr;
+
+_ (HashmapE 32 ^(BinTree ShardDescr)) = ShardHashes;
+
+bta_leaf$0 {X:Type} {Y:Type} extra:Y leaf:X = BinTreeAug X Y;
+bta_fork$1 {X:Type} {Y:Type} left:^(BinTreeAug X Y)
+ right:^(BinTreeAug X Y) extra:Y = BinTreeAug X Y;
+
+_ fees:CurrencyCollection create:CurrencyCollection = ShardFeeCreated;
+_ (HashmapAugE 96 ShardFeeCreated ShardFeeCreated) = ShardFees;
+
+_ config_addr:bits256 config:^(Hashmap 32 ^Cell)
+ = ConfigParams;
+
+validator_info$_
+ validator_list_hash_short:uint32
+ catchain_seqno:uint32
+ nx_cc_updated:Bool
+= ValidatorInfo;
+
+validator_base_info$_
+ validator_list_hash_short:uint32
+ catchain_seqno:uint32
+= ValidatorBaseInfo;
+
+_ key:Bool max_end_lt:uint64 = KeyMaxLt;
+_ key:Bool blk_ref:ExtBlkRef = KeyExtBlkRef;
+
+_ (HashmapAugE 32 KeyExtBlkRef KeyMaxLt) = OldMcBlocksInfo;
+
+
+counters#_ last_updated:uint32 total:uint64 cnt2048:uint64 cnt65536:uint64 = Counters;
+creator_info#4 mc_blocks:Counters shard_blocks:Counters = CreatorStats;
+block_create_stats#17 counters:(HashmapE 256 CreatorStats) = BlockCreateStats;
+block_create_stats_ext#34 counters:(HashmapAugE 256 CreatorStats uint32) = BlockCreateStats;
+
+masterchain_state_extra#cc26
+ shard_hashes:ShardHashes
+ config:ConfigParams
+ ^[ flags:(## 16) { flags <= 1 }
+ validator_info:ValidatorInfo
+ prev_blocks:OldMcBlocksInfo
+ after_key_block:Bool
+ last_key_block:(Maybe ExtBlkRef)
+ block_create_stats:(flags . 0)?BlockCreateStats ]
+ global_balance:CurrencyCollection
+= McStateExtra;
+
+ed25519_pubkey#8e81278a pubkey:bits256 = SigPubKey; // 288 bits
+ed25519_signature#5 R:bits256 s:bits256 = CryptoSignatureSimple; // 516 bits
+_ CryptoSignatureSimple = CryptoSignature;
+sig_pair$_ node_id_short:bits256 sign:CryptoSignature = CryptoSignaturePair; // 256+x ~ 772 bits
+
+certificate#4 temp_key:SigPubKey valid_since:uint32 valid_until:uint32 = Certificate; // 356 bits
+certificate_env#a419b7d certificate:Certificate = CertificateEnv; // 384 bits
+signed_certificate$_ certificate:Certificate certificate_signature:CryptoSignature
+ = SignedCertificate; // 356+516 = 872 bits
+// certificate_signature is the signature of CertificateEnv (with embedded certificate) with persistent key
+chained_signature#f signed_cert:^SignedCertificate temp_key_signature:CryptoSignatureSimple
+ = CryptoSignature; // 4+(356+516)+516 = 520 bits+ref (1392 bits total)
+// temp_key_signature is the signature of whatever was originally intended to be signed with temp_key from certificate
+
+masterchain_block_extra#cca5
+ key_block:(## 1)
+ shard_hashes:ShardHashes
+ shard_fees:ShardFees
+ ^[ prev_blk_signatures:(HashmapE 16 CryptoSignaturePair)
+ recover_create_msg:(Maybe ^InMsg)
+ mint_msg:(Maybe ^InMsg) ]
+ config:key_block?ConfigParams
+= McBlockExtra;
+
+//
+// CONFIGURATION PARAMETERS
+//
+
+validator#53 public_key:SigPubKey weight:uint64 = ValidatorDescr;
+validator_addr#73 public_key:SigPubKey weight:uint64 adnl_addr:bits256 = ValidatorDescr;
+validators#11 utime_since:uint32 utime_until:uint32
+ total:(## 16) main:(## 16) { main <= total } { main >= 1 }
+ list:(Hashmap 16 ValidatorDescr) = ValidatorSet;
+validators_ext#12 utime_since:uint32 utime_until:uint32
+ total:(## 16) main:(## 16) { main <= total } { main >= 1 }
+ total_weight:uint64 list:(HashmapE 16 ValidatorDescr) = ValidatorSet;
+
+_ config_addr:bits256 = ConfigParam 0;
+_ elector_addr:bits256 = ConfigParam 1;
+_ minter_addr:bits256 = ConfigParam 2; // ConfigParam 0 is used if absent
+_ fee_collector_addr:bits256 = ConfigParam 3; // ConfigParam 1 is used if absent
+_ dns_root_addr:bits256 = ConfigParam 4; // root TON DNS resolver
+
+_ mint_new_price:Grams mint_add_price:Grams = ConfigParam 6;
+_ to_mint:ExtraCurrencyCollection = ConfigParam 7;
+
+capabilities#c4 version:uint32 capabilities:uint64 = GlobalVersion;
+_ GlobalVersion = ConfigParam 8; // all zero if absent
+_ mandatory_params:(Hashmap 32 True) = ConfigParam 9;
+_ critical_params:(Hashmap 32 True) = ConfigParam 10;
+
+cfg_vote_cfg#36 min_tot_rounds:uint8 max_tot_rounds:uint8 min_wins:uint8 max_losses:uint8 min_store_sec:uint32 max_store_sec:uint32 bit_price:uint32 cell_price:uint32 = ConfigProposalSetup;
+cfg_vote_setup#91 normal_params:^ConfigProposalSetup critical_params:^ConfigProposalSetup = ConfigVotingSetup;
+_ ConfigVotingSetup = ConfigParam 11;
+
+cfg_proposal#f3 param_id:int32 param_value:(Maybe ^Cell) if_hash_equal:(Maybe uint256)
+ = ConfigProposal;
+cfg_proposal_status#ce expires:uint32 proposal:^ConfigProposal is_critical:Bool
+ voters:(HashmapE 16 True) remaining_weight:int64 validator_set_id:uint256
+ rounds_remaining:uint8 wins:uint8 losses:uint8 = ConfigProposalStatus;
+
+wfmt_basic#1 vm_version:int32 vm_mode:uint64 = WorkchainFormat 1;
+wfmt_ext#0 min_addr_len:(## 12) max_addr_len:(## 12) addr_len_step:(## 12)
+ { min_addr_len >= 64 } { min_addr_len <= max_addr_len }
+ { max_addr_len <= 1023 } { addr_len_step <= 1023 }
+ workchain_type_id:(## 32) { workchain_type_id >= 1 }
+ = WorkchainFormat 0;
+
+workchain#a6 enabled_since:uint32 actual_min_split:(## 8)
+ min_split:(## 8) max_split:(## 8) { actual_min_split <= min_split }
+//workchain#a5 enabled_since:uint32 min_split:(## 8) max_split:(## 8)
+// { min_split <= max_split } { max_split <= 60 }
+ basic:(## 1) active:Bool accept_msgs:Bool flags:(## 13) { flags = 0 }
+ zerostate_root_hash:bits256 zerostate_file_hash:bits256
+ version:uint32 format:(WorkchainFormat basic)
+ = WorkchainDescr;
+
+_ workchains:(HashmapE 32 WorkchainDescr) = ConfigParam 12;
+
+complaint_prices#1a deposit:Grams bit_price:Grams cell_price:Grams = ComplaintPricing;
+_ ComplaintPricing = ConfigParam 13;
+
+block_grams_created#6b masterchain_block_fee:Grams basechain_block_fee:Grams
+ = BlockCreateFees;
+_ BlockCreateFees = ConfigParam 14;
+
+_ validators_elected_for:uint32 elections_start_before:uint32
+ elections_end_before:uint32 stake_held_for:uint32
+ = ConfigParam 15;
+
+_ max_validators:(## 16) max_main_validators:(## 16) min_validators:(## 16)
+ { max_validators >= max_main_validators }
+ { max_main_validators >= min_validators }
+ { min_validators >= 1 }
+ = ConfigParam 16;
+
+_ min_stake:Grams max_stake:Grams min_total_stake:Grams max_stake_factor:uint32 = ConfigParam 17;
+
+_#cc utime_since:uint32 bit_price_ps:uint64 cell_price_ps:uint64
+ mc_bit_price_ps:uint64 mc_cell_price_ps:uint64 = StoragePrices;
+_ (Hashmap 32 StoragePrices) = ConfigParam 18;
+
+gas_prices#dd gas_price:uint64 gas_limit:uint64 gas_credit:uint64
+ block_gas_limit:uint64 freeze_due_limit:uint64 delete_due_limit:uint64
+ = GasLimitsPrices;
+
+gas_prices_ext#de gas_price:uint64 gas_limit:uint64 special_gas_limit:uint64 gas_credit:uint64
+ block_gas_limit:uint64 freeze_due_limit:uint64 delete_due_limit:uint64
+ = GasLimitsPrices;
+
+gas_flat_pfx#d1 flat_gas_limit:uint64 flat_gas_price:uint64 other:GasLimitsPrices
+ = GasLimitsPrices;
+
+config_mc_gas_prices#_ GasLimitsPrices = ConfigParam 20;
+config_gas_prices#_ GasLimitsPrices = ConfigParam 21;
+
+param_limits#c3 underload:# soft_limit:# { underload <= soft_limit }
+ hard_limit:# { soft_limit <= hard_limit } = ParamLimits;
+block_limits#5d bytes:ParamLimits gas:ParamLimits lt_delta:ParamLimits
+ = BlockLimits;
+
+config_mc_block_limits#_ BlockLimits = ConfigParam 22;
+config_block_limits#_ BlockLimits = ConfigParam 23;
+
+// msg_fwd_fees = (lump_price + ceil((bit_price * msg.bits + cell_price * msg.cells)/2^16)) nanograms
+// ihr_fwd_fees = ceil((msg_fwd_fees * ihr_price_factor)/2^16) nanograms
+// bits in the root cell of a message are not included in msg.bits (lump_price pays for them)
+msg_forward_prices#ea lump_price:uint64 bit_price:uint64 cell_price:uint64
+ ihr_price_factor:uint32 first_frac:uint16 next_frac:uint16 = MsgForwardPrices;
+
+// used for messages to/from masterchain
+config_mc_fwd_prices#_ MsgForwardPrices = ConfigParam 24;
+// used for all other messages
+config_fwd_prices#_ MsgForwardPrices = ConfigParam 25;
+
+catchain_config#c1 mc_catchain_lifetime:uint32 shard_catchain_lifetime:uint32
+ shard_validators_lifetime:uint32 shard_validators_num:uint32 = CatchainConfig;
+
+catchain_config_new#c2 flags:(## 7) { flags = 0 } shuffle_mc_validators:Bool
+ mc_catchain_lifetime:uint32 shard_catchain_lifetime:uint32
+ shard_validators_lifetime:uint32 shard_validators_num:uint32 = CatchainConfig;
+
+consensus_config#d6 round_candidates:# { round_candidates >= 1 }
+ next_candidate_delay_ms:uint32 consensus_timeout_ms:uint32
+ fast_attempts:uint32 attempt_duration:uint32 catchain_max_deps:uint32
+ max_block_bytes:uint32 max_collated_bytes:uint32 = ConsensusConfig;
+
+consensus_config_new#d7 flags:(## 7) { flags = 0 } new_catchain_ids:Bool
+ round_candidates:(## 8) { round_candidates >= 1 }
+ next_candidate_delay_ms:uint32 consensus_timeout_ms:uint32
+ fast_attempts:uint32 attempt_duration:uint32 catchain_max_deps:uint32
+ max_block_bytes:uint32 max_collated_bytes:uint32 = ConsensusConfig;
+
+consensus_config_v3#d8 flags:(## 7) { flags = 0 } new_catchain_ids:Bool
+ round_candidates:(## 8) { round_candidates >= 1 }
+ next_candidate_delay_ms:uint32 consensus_timeout_ms:uint32
+ fast_attempts:uint32 attempt_duration:uint32 catchain_max_deps:uint32
+ max_block_bytes:uint32 max_collated_bytes:uint32
+ proto_version:uint16 = ConsensusConfig;
+
+consensus_config_v4#d9 flags:(## 7) { flags = 0 } new_catchain_ids:Bool
+ round_candidates:(## 8) { round_candidates >= 1 }
+ next_candidate_delay_ms:uint32 consensus_timeout_ms:uint32
+ fast_attempts:uint32 attempt_duration:uint32 catchain_max_deps:uint32
+ max_block_bytes:uint32 max_collated_bytes:uint32
+ proto_version:uint16 catchain_max_blocks_coeff:uint32 = ConsensusConfig;
+
+_ CatchainConfig = ConfigParam 28;
+_ ConsensusConfig = ConfigParam 29;
+
+_ fundamental_smc_addr:(HashmapE 256 True) = ConfigParam 31;
+_ prev_validators:ValidatorSet = ConfigParam 32;
+_ prev_temp_validators:ValidatorSet = ConfigParam 33;
+_ cur_validators:ValidatorSet = ConfigParam 34;
+_ cur_temp_validators:ValidatorSet = ConfigParam 35;
+_ next_validators:ValidatorSet = ConfigParam 36;
+_ next_temp_validators:ValidatorSet = ConfigParam 37;
+
+validator_temp_key#3 adnl_addr:bits256 temp_public_key:SigPubKey seqno:# valid_until:uint32 = ValidatorTempKey;
+signed_temp_key#4 key:^ValidatorTempKey signature:CryptoSignature = ValidatorSignedTempKey;
+_ (HashmapE 256 ValidatorSignedTempKey) = ConfigParam 39;
+
+misbehaviour_punishment_config_v1#01
+ default_flat_fine:Grams default_proportional_fine:uint32
+ severity_flat_mult:uint16 severity_proportional_mult:uint16
+ unpunishable_interval:uint16
+ long_interval:uint16 long_flat_mult:uint16 long_proportional_mult:uint16
+ medium_interval:uint16 medium_flat_mult:uint16 medium_proportional_mult:uint16
+ = MisbehaviourPunishmentConfig;
+_ MisbehaviourPunishmentConfig = ConfigParam 40;
+
+oracle_bridge_params#_ bridge_address:bits256 oracle_mutlisig_address:bits256 oracles:(HashmapE 256 uint256) external_chain_address:bits256 = OracleBridgeParams;
+_ OracleBridgeParams = ConfigParam 71; // Ethereum bridge
+_ OracleBridgeParams = ConfigParam 72; // Binance Smart Chain bridge
+_ OracleBridgeParams = ConfigParam 73; // Polygon bridge
+
+//
+// PROOFS
+//
+block_signatures_pure#_ sig_count:uint32 sig_weight:uint64
+ signatures:(HashmapE 16 CryptoSignaturePair) = BlockSignaturesPure;
+block_signatures#11 validator_info:ValidatorBaseInfo pure_signatures:BlockSignaturesPure = BlockSignatures;
+block_proof#c3 proof_for:BlockIdExt root:^Cell signatures:(Maybe ^BlockSignatures) = BlockProof;
+
+chain_empty$_ = ProofChain 0;
+chain_link$_ {n:#} root:^Cell prev:n?^(ProofChain n) = ProofChain (n + 1);
+top_block_descr#d5 proof_for:BlockIdExt signatures:(Maybe ^BlockSignatures)
+ len:(## 8) { len >= 1 } { len <= 8 } chain:(ProofChain len) = TopBlockDescr;
+
+//
+// COLLATED DATA
+//
+top_block_descr_set#4ac789f3 collection:(HashmapE 96 ^TopBlockDescr) = TopBlockDescrSet;
+
+//
+// VALIDATOR MISBEHAVIOR COMPLAINTS
+//
+prod_info#34 utime:uint32 mc_blk_ref:ExtBlkRef state_proof:^(MERKLE_PROOF Block)
+ prod_proof:^(MERKLE_PROOF ShardState) = ProducerInfo;
+no_blk_gen from_utime:uint32 prod_info:^ProducerInfo = ComplaintDescr;
+no_blk_gen_diff prod_info_old:^ProducerInfo prod_info_new:^ProducerInfo = ComplaintDescr;
+validator_complaint#bc validator_pubkey:bits256 description:^ComplaintDescr created_at:uint32 severity:uint8 reward_addr:uint256 paid:Grams suggested_fine:Grams suggested_fine_part:uint32 = ValidatorComplaint;
+complaint_status#2d complaint:^ValidatorComplaint voters:(HashmapE 16 True) vset_id:uint256 weight_remaining:int64 = ValidatorComplaintStatus;
+
+//
+// TVM REFLECTION
+//
+vm_stk_null#00 = VmStackValue;
+vm_stk_tinyint#01 value:int64 = VmStackValue;
+vm_stk_int#0201_ value:int257 = VmStackValue;
+vm_stk_nan#02ff = VmStackValue;
+vm_stk_cell#03 cell:^Cell = VmStackValue;
+_ cell:^Cell st_bits:(## 10) end_bits:(## 10) { st_bits <= end_bits }
+ st_ref:(#<= 4) end_ref:(#<= 4) { st_ref <= end_ref } = VmCellSlice;
+vm_stk_slice#04 _:VmCellSlice = VmStackValue;
+vm_stk_builder#05 cell:^Cell = VmStackValue;
+vm_stk_cont#06 cont:VmCont = VmStackValue;
+vm_tupref_nil$_ = VmTupleRef 0;
+vm_tupref_single$_ entry:^VmStackValue = VmTupleRef 1;
+vm_tupref_any$_ {n:#} ref:^(VmTuple (n + 2)) = VmTupleRef (n + 2);
+vm_tuple_nil$_ = VmTuple 0;
+vm_tuple_tcons$_ {n:#} head:(VmTupleRef n) tail:^VmStackValue = VmTuple (n + 1);
+vm_stk_tuple#07 len:(## 16) data:(VmTuple len) = VmStackValue;
+
+vm_stack#_ depth:(## 24) stack:(VmStackList depth) = VmStack;
+vm_stk_cons#_ {n:#} rest:^(VmStackList n) tos:VmStackValue = VmStackList (n + 1);
+vm_stk_nil#_ = VmStackList 0;
+
+_ cregs:(HashmapE 4 VmStackValue) = VmSaveList;
+gas_limits#_ remaining:int64 _:^[ max_limit:int64 cur_limit:int64 credit:int64 ]
+ = VmGasLimits;
+_ libraries:(HashmapE 256 ^Cell) = VmLibraries;
+
+vm_ctl_data$_ nargs:(Maybe uint13) stack:(Maybe VmStack) save:VmSaveList
+cp:(Maybe int16) = VmControlData;
+vmc_std$00 cdata:VmControlData code:VmCellSlice = VmCont;
+vmc_envelope$01 cdata:VmControlData next:^VmCont = VmCont;
+vmc_quit$1000 exit_code:int32 = VmCont;
+vmc_quit_exc$1001 = VmCont;
+vmc_repeat$10100 count:uint63 body:^VmCont after:^VmCont = VmCont;
+vmc_until$110000 body:^VmCont after:^VmCont = VmCont;
+vmc_again$110001 body:^VmCont = VmCont;
+vmc_while_cond$110010 cond:^VmCont body:^VmCont
+after:^VmCont = VmCont;
+vmc_while_body$110011 cond:^VmCont body:^VmCont
+after:^VmCont = VmCont;
+vmc_pushint$1111 value:int32 next:^VmCont = VmCont;
+
+//
+// DNS RECORDS
+//
+_ (HashmapE 256 DNSRecord) = DNS_RecordSet;
+
+chunk_ref$_ {n:#} ref:^(TextChunks (n + 1)) = TextChunkRef (n + 1);
+chunk_ref_empty$_ = TextChunkRef 0;
+text_chunk$_ {n:#} len:(## 8) data:(bits (len * 8)) next:(TextChunkRef n) = TextChunks (n + 1);
+text_chunk_empty$_ = TextChunks 0;
+text$_ chunks:(## 8) rest:(TextChunks chunks) = Text;
+dns_text#1eda _:Text = DNSRecord;
+
+dns_next_resolver#ba93 resolver:MsgAddressInt = DNSRecord; // usually in record #-1
+
+dns_adnl_address#ad01 adnl_addr:bits256 flags:(## 8) { flags <= 1 }
+ proto_list:flags . 0?ProtoList = DNSRecord; // often in record #2
+proto_list_nil$0 = ProtoList;
+proto_list_next$1 head:Protocol tail:ProtoList = ProtoList;
+proto_http#4854 = Protocol;
+
+dns_smc_address#9fd3 smc_addr:MsgAddressInt flags:(## 8) { flags <= 1 }
+ cap_list:flags . 0?SmcCapList = DNSRecord; // often in record #1
+cap_list_nil$0 = SmcCapList;
+cap_list_next$1 head:SmcCapability tail:SmcCapList = SmcCapList;
+cap_method_seqno#5371 = SmcCapability;
+cap_method_pubkey#71f4 = SmcCapability;
+cap_is_wallet#2177 = SmcCapability;
+cap_name#ff name:Text = SmcCapability;
+
+//
+// PAYMENT CHANNELS
+//
+
+chan_config$_ init_timeout:uint32 close_timeout:uint32 a_key:bits256 b_key:bits256
+ a_addr:^MsgAddressInt b_addr:^MsgAddressInt channel_id:uint64 min_A_extra:Grams = ChanConfig;
+
+chan_state_init$000 signed_A:Bool signed_B:Bool min_A:Grams min_B:Grams expire_at:uint32 A:Grams B:Grams = ChanState;
+chan_state_close$001 signed_A:Bool signed_B:Bool promise_A:Grams promise_B:Grams expire_at:uint32 A:Grams B:Grams = ChanState;
+chan_state_payout$010 A:Grams B:Grams = ChanState;
+
+chan_promise$_ channel_id:uint64 promise_A:Grams promise_B:Grams = ChanPromise;
+chan_signed_promise#_ sig:(Maybe ^bits512) promise:ChanPromise = ChanSignedPromise;
+
+chan_msg_init#27317822 inc_A:Grams inc_B:Grams min_A:Grams min_B:Grams channel_id:uint64 = ChanMsg;
+chan_msg_close#f28ae183 extra_A:Grams extra_B:Grams promise:ChanSignedPromise = ChanMsg;
+chan_msg_timeout#43278a28 = ChanMsg;
+chan_msg_payout#37fe7810 = ChanMsg;
+
+chan_signed_msg$_ sig_A:(Maybe ^bits512) sig_B:(Maybe ^bits512) msg:ChanMsg = ChanSignedMsg;
+
+chan_op_cmd#912838d1 msg:ChanSignedMsg = ChanOp;
+
+
+chan_data$_ config:^ChanConfig state:^ChanState = ChanData;
+
diff --git a/tests/examplefiles/tlb/block.tlb.output b/tests/examplefiles/tlb/block.tlb.output
new file mode 100644
index 00000000..c36da60d
--- /dev/null
+++ b/tests/examplefiles/tlb/block.tlb.output
@@ -0,0 +1,9295 @@
+'unit' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Unit' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'true' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'True' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'// EMPTY False;' Comment.Singleline
+'\n' Text.Whitespace
+
+'bool_false' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Bool' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'bool_true' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Bool' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'bool_false' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BoolFalse' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'bool_true' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BoolTrue' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'nothing' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Maybe' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'just' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'X' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Maybe' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'left' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'Y' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'X' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Either' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'right' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'Y' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'Y' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Either' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'pair' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'Y' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'first' Name
+':' Punctuation
+'X' Name
+' ' Text.Whitespace
+'second' Name
+':' Punctuation
+'Y' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Both' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'bit' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Bit' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'/*' Comment.Multiline
+'\n ' Comment.Multiline
+'*' Comment.Multiline
+'\n ' Comment.Multiline
+'*' Comment.Multiline
+' FROM hashmap.tlb\n ' Comment.Multiline
+'*' Comment.Multiline
+'\n ' Comment.Multiline
+'*/' Comment.Multiline
+'\n' Text.Whitespace
+
+'// ordinary Hashmap / HashmapE, with fixed length keys' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'hm_edge' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'l' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'m' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'label' Name
+':' Punctuation
+'(' Punctuation
+'HmLabel' Name
+' ' Text.Whitespace
+'~' Operator
+'l' Name
+' ' Text.Whitespace
+'n' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'{' Punctuation
+'n' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'(' Punctuation
+'~' Operator
+'m' Name
+')' Punctuation
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'l' Name
+'}' Punctuation
+' ' Text.Whitespace
+'node' Name
+':' Punctuation
+'(' Punctuation
+'HashmapNode' Name
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Hashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'hmn_leaf' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'X' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HashmapNode' Name
+' ' Text.Whitespace
+'0' Literal.Number
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'hmn_fork' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'left' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'Hashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'right' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'Hashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HashmapNode' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'hml_short' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'m' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'len' Name
+':' Punctuation
+'(' Punctuation
+'Unary' Name
+' ' Text.Whitespace
+'~' Operator
+'n' Name
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'m' Name
+'}' Punctuation
+' ' Text.Whitespace
+'s' Name
+':' Punctuation
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'*' Operator
+' ' Text.Whitespace
+'Bit' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HmLabel' Name
+' ' Text.Whitespace
+'~' Operator
+'n' Name
+' ' Text.Whitespace
+'m' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'hml_long' Name
+'$10' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'m' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'n' Name
+':' Punctuation
+'(' Punctuation
+'#<=' Name.Tag
+' ' Text.Whitespace
+'m' Name
+')' Punctuation
+' ' Text.Whitespace
+'s' Name
+':' Punctuation
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'*' Operator
+' ' Text.Whitespace
+'Bit' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HmLabel' Name
+' ' Text.Whitespace
+'~' Operator
+'n' Name
+' ' Text.Whitespace
+'m' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'hml_same' Name
+'$11' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'m' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'v' Name
+':' Punctuation
+'Bit' Name
+' ' Text.Whitespace
+'n' Name
+':' Punctuation
+'(' Punctuation
+'#<=' Name.Tag
+' ' Text.Whitespace
+'m' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HmLabel' Name
+' ' Text.Whitespace
+'~' Operator
+'n' Name
+' ' Text.Whitespace
+'m' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'unary_zero' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Unary' Name
+' ' Text.Whitespace
+'~' Operator
+'0' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'unary_succ' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'x' Name
+':' Punctuation
+'(' Punctuation
+'Unary' Name
+' ' Text.Whitespace
+'~' Operator
+'n' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Unary' Name
+' ' Text.Whitespace
+'~' Operator
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'hme_empty' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HashmapE' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'hme_root' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'root' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'Hashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HashmapE' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'// true#_ = True;' Comment.Singleline
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'_' Name
+':' Punctuation
+'(' Punctuation
+'Hashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'True' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BitstringSet' Name
+' ' Text.Whitespace
+'n' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'// HashmapAug, hashmap with an extra value ' Comment.Singleline
+'\n' Text.Whitespace
+
+'// (augmentation) of type Y at every node' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'ahm_edge' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'Y' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'l' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'m' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' \n ' Text.Whitespace
+'label' Name
+':' Punctuation
+'(' Punctuation
+'HmLabel' Name
+' ' Text.Whitespace
+'~' Operator
+'l' Name
+' ' Text.Whitespace
+'n' Name
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'(' Punctuation
+'~' Operator
+'m' Name
+')' Punctuation
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'l' Name
+'}' Punctuation
+' \n ' Text.Whitespace
+'node' Name
+':' Punctuation
+'(' Punctuation
+'HashmapAugNode' Name
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HashmapAug' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'ahmn_leaf' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'Y' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'extra' Name
+':' Punctuation
+'Y' Name
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'X' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HashmapAugNode' Name
+' ' Text.Whitespace
+'0' Literal.Number
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'ahmn_fork' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'Y' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'left' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'HashmapAug' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'right' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'HashmapAug' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+')' Punctuation
+' ' Text.Whitespace
+'extra' Name
+':' Punctuation
+'Y' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HashmapAugNode' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'ahme_empty' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'Y' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'extra' Name
+':' Punctuation
+'Y' Name
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HashmapAugE' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'ahme_root' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'Y' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'root' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'HashmapAug' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'extra' Name
+':' Punctuation
+'Y' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HashmapAugE' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'// VarHashmap / VarHashmapE, with variable-length keys' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'vhm_edge' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'l' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'m' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'label' Name
+':' Punctuation
+'(' Punctuation
+'HmLabel' Name
+' ' Text.Whitespace
+'~' Operator
+'l' Name
+' ' Text.Whitespace
+'n' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'{' Punctuation
+'n' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'(' Punctuation
+'~' Operator
+'m' Name
+')' Punctuation
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'l' Name
+'}' Punctuation
+' ' Text.Whitespace
+'node' Name
+':' Punctuation
+'(' Punctuation
+'VarHashmapNode' Name
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VarHashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vhmn_leaf' Name
+'$00' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'X' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VarHashmapNode' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vhmn_fork' Name
+'$01' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'left' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'VarHashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'right' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'VarHashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VarHashmapNode' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vhmn_cont' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'branch' Name
+':' Punctuation
+'Bit' Name
+' ' Text.Whitespace
+'child' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'VarHashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'value' Name
+':' Punctuation
+'X' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VarHashmapNode' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'// nothing$0 {X:Type} = Maybe X;' Comment.Singleline
+'\n' Text.Whitespace
+
+'// just$1 {X:Type} value:X = Maybe X;' Comment.Singleline
+'\n\n' Text.Whitespace
+
+'vhme_empty' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VarHashmapE' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vhme_root' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'root' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'VarHashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VarHashmapE' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'// PfxHashmap / PfxHashmapE, with variable-length keys' Comment.Singleline
+'\n' Text.Whitespace
+
+'// constituting a prefix code' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n\n' Text.Whitespace
+
+'phm_edge' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'l' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'m' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'label' Name
+':' Punctuation
+'(' Punctuation
+'HmLabel' Name
+' ' Text.Whitespace
+'~' Operator
+'l' Name
+' ' Text.Whitespace
+'n' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'{' Punctuation
+'n' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'(' Punctuation
+'~' Operator
+'m' Name
+')' Punctuation
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'l' Name
+'}' Punctuation
+' ' Text.Whitespace
+'node' Name
+':' Punctuation
+'(' Punctuation
+'PfxHashmapNode' Name
+' ' Text.Whitespace
+'m' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'PfxHashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'phmn_leaf' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'X' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'PfxHashmapNode' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'phmn_fork' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'left' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'PfxHashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'right' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'PfxHashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'PfxHashmapNode' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'phme_empty' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'PfxHashmapE' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'phme_root' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'root' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'PfxHashmap' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'PfxHashmapE' Name
+' ' Text.Whitespace
+'n' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'/*' Comment.Multiline
+'\n ' Comment.Multiline
+'*' Comment.Multiline
+'\n ' Comment.Multiline
+'*' Comment.Multiline
+' END hashmap.tlb\n ' Comment.Multiline
+'*' Comment.Multiline
+'\n ' Comment.Multiline
+'*/' Comment.Multiline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'// TON BLOCK LAYOUT' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'addr_none' Name
+'$00' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MsgAddressExt' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'addr_extern' Name
+'$01' Name.Tag
+' ' Text.Whitespace
+'len' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'9' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'external_address' Name
+':' Punctuation
+'(' Punctuation
+'bits' Name
+' ' Text.Whitespace
+'len' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MsgAddressExt' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'anycast_info' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'depth' Name
+':' Punctuation
+'(' Punctuation
+'#<=' Name.Tag
+' ' Text.Whitespace
+'30' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'depth' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'rewrite_pfx' Name
+':' Punctuation
+'(' Punctuation
+'bits' Name
+' ' Text.Whitespace
+'depth' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Anycast' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'addr_std' Name
+'$10' Name.Tag
+' ' Text.Whitespace
+'anycast' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'Anycast' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'workchain_id' Name
+':' Punctuation
+'int8' Name
+' ' Text.Whitespace
+'address' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MsgAddressInt' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'addr_var' Name
+'$11' Name.Tag
+' ' Text.Whitespace
+'anycast' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'Anycast' Name
+')' Punctuation
+' ' Text.Whitespace
+'addr_len' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'9' Literal.Number
+')' Punctuation
+' \n ' Text.Whitespace
+'workchain_id' Name
+':' Punctuation
+'int32' Name
+' ' Text.Whitespace
+'address' Name
+':' Punctuation
+'(' Punctuation
+'bits' Name
+' ' Text.Whitespace
+'addr_len' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MsgAddressInt' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'_' Name
+':' Punctuation
+'MsgAddressInt' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MsgAddress' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'_' Name
+':' Punctuation
+'MsgAddressExt' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MsgAddress' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'var_uint' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'len' Name
+':' Punctuation
+'(' Punctuation
+'#<' Name.Tag
+' ' Text.Whitespace
+'n' Name
+')' Punctuation
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'(' Punctuation
+'uint' Name
+' ' Text.Whitespace
+'(' Punctuation
+'len' Name
+' ' Text.Whitespace
+'*' Operator
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+')' Punctuation
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VarUInteger' Name
+' ' Text.Whitespace
+'n' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'var_int' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'len' Name
+':' Punctuation
+'(' Punctuation
+'#<' Name.Tag
+' ' Text.Whitespace
+'n' Name
+')' Punctuation
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'(' Punctuation
+'int' Name
+' ' Text.Whitespace
+'(' Punctuation
+'len' Name
+' ' Text.Whitespace
+'*' Operator
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+')' Punctuation
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VarInteger' Name
+' ' Text.Whitespace
+'n' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'nanograms' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'amount' Name
+':' Punctuation
+'(' Punctuation
+'VarUInteger' Name
+' ' Text.Whitespace
+'16' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Grams' Name
+';' Punctuation
+' \n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'extra_currencies' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'dict' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'32' Literal.Number
+' ' Text.Whitespace
+'(' Punctuation
+'VarUInteger' Name
+' ' Text.Whitespace
+'32' Literal.Number
+')' Punctuation
+')' Punctuation
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ExtraCurrencyCollection' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'currencies' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'grams' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'other' Name
+':' Punctuation
+'ExtraCurrencyCollection' Name
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CurrencyCollection' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'int_msg_info' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'ihr_disabled' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'bounce' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'bounced' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'src' Name
+':' Punctuation
+'MsgAddressInt' Name
+' ' Text.Whitespace
+'dest' Name
+':' Punctuation
+'MsgAddressInt' Name
+' \n ' Text.Whitespace
+'value' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+'ihr_fee' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'fwd_fee' Name
+':' Punctuation
+'Grams' Name
+'\n ' Text.Whitespace
+'created_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'created_at' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CommonMsgInfo' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'ext_in_msg_info' Name
+'$10' Name.Tag
+' ' Text.Whitespace
+'src' Name
+':' Punctuation
+'MsgAddressExt' Name
+' ' Text.Whitespace
+'dest' Name
+':' Punctuation
+'MsgAddressInt' Name
+' \n ' Text.Whitespace
+'import_fee' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CommonMsgInfo' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'ext_out_msg_info' Name
+'$11' Name.Tag
+' ' Text.Whitespace
+'src' Name
+':' Punctuation
+'MsgAddressInt' Name
+' ' Text.Whitespace
+'dest' Name
+':' Punctuation
+'MsgAddressExt' Name
+'\n ' Text.Whitespace
+'created_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'created_at' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CommonMsgInfo' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'int_msg_info' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'ihr_disabled' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'bounce' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'bounced' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'src' Name
+':' Punctuation
+'MsgAddress' Name
+' ' Text.Whitespace
+'dest' Name
+':' Punctuation
+'MsgAddressInt' Name
+' \n ' Text.Whitespace
+'value' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+'ihr_fee' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'fwd_fee' Name
+':' Punctuation
+'Grams' Name
+'\n ' Text.Whitespace
+'created_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'created_at' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CommonMsgInfoRelaxed' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'ext_out_msg_info' Name
+'$11' Name.Tag
+' ' Text.Whitespace
+'src' Name
+':' Punctuation
+'MsgAddress' Name
+' ' Text.Whitespace
+'dest' Name
+':' Punctuation
+'MsgAddressExt' Name
+'\n ' Text.Whitespace
+'created_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'created_at' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CommonMsgInfoRelaxed' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'tick_tock' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'tick' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'tock' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TickTock' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'split_depth' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'5' Literal.Number
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'special' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'TickTock' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'code' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'Cell' Name
+')' Punctuation
+' ' Text.Whitespace
+'data' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'Cell' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'library' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'SimpleLib' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'StateInit' Name
+';' Punctuation
+'\n \n' Text.Whitespace
+
+'simple_lib' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'public' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'root' Name
+':' Punctuation
+'^' Operator
+'Cell' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'SimpleLib' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'message' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'info' Name
+':' Punctuation
+'CommonMsgInfo' Name
+'\n ' Text.Whitespace
+'init' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'(' Punctuation
+'Either' Name
+' ' Text.Whitespace
+'StateInit' Name
+' ' Text.Whitespace
+'^' Operator
+'StateInit' Name
+')' Punctuation
+')' Punctuation
+'\n ' Text.Whitespace
+'body' Name
+':' Punctuation
+'(' Punctuation
+'Either' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'^' Operator
+'X' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Message' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'message' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'info' Name
+':' Punctuation
+'CommonMsgInfoRelaxed' Name
+'\n ' Text.Whitespace
+'init' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'(' Punctuation
+'Either' Name
+' ' Text.Whitespace
+'StateInit' Name
+' ' Text.Whitespace
+'^' Operator
+'StateInit' Name
+')' Punctuation
+')' Punctuation
+'\n ' Text.Whitespace
+'body' Name
+':' Punctuation
+'(' Punctuation
+'Either' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'^' Operator
+'X' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MessageRelaxed' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n \n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'Message' Name
+' ' Text.Whitespace
+'Any' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MessageAny' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'interm_addr_regular' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'use_dest_bits' Name
+':' Punctuation
+'(' Punctuation
+'#<=' Name.Tag
+' ' Text.Whitespace
+'96' Literal.Number
+')' Punctuation
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'IntermediateAddress' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'interm_addr_simple' Name
+'$10' Name.Tag
+' ' Text.Whitespace
+'workchain_id' Name
+':' Punctuation
+'int8' Name
+' ' Text.Whitespace
+'addr_pfx' Name
+':' Punctuation
+'uint64' Name
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'IntermediateAddress' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'interm_addr_ext' Name
+'$11' Name.Tag
+' ' Text.Whitespace
+'workchain_id' Name
+':' Punctuation
+'int32' Name
+' ' Text.Whitespace
+'addr_pfx' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'IntermediateAddress' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_envelope' Name
+'#4' Name.Tag
+' ' Text.Whitespace
+'cur_addr' Name
+':' Punctuation
+'IntermediateAddress' Name
+' \n ' Text.Whitespace
+'next_addr' Name
+':' Punctuation
+'IntermediateAddress' Name
+' ' Text.Whitespace
+'fwd_fee_remaining' Name
+':' Punctuation
+'Grams' Name
+' \n ' Text.Whitespace
+'msg' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'Message' Name
+' ' Text.Whitespace
+'Any' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MsgEnvelope' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'msg_import_ext' Name
+'$000' Name.Tag
+' ' Text.Whitespace
+'msg' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'Message' Name
+' ' Text.Whitespace
+'Any' Name
+')' Punctuation
+' ' Text.Whitespace
+'transaction' Name
+':' Punctuation
+'^' Operator
+'Transaction' Name
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'InMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_import_ihr' Name
+'$010' Name.Tag
+' ' Text.Whitespace
+'msg' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'Message' Name
+' ' Text.Whitespace
+'Any' Name
+')' Punctuation
+' ' Text.Whitespace
+'transaction' Name
+':' Punctuation
+'^' Operator
+'Transaction' Name
+' \n ' Text.Whitespace
+'ihr_fee' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'proof_created' Name
+':' Punctuation
+'^' Operator
+'Cell' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'InMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_import_imm' Name
+'$011' Name.Tag
+' ' Text.Whitespace
+'in_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+'\n ' Text.Whitespace
+'transaction' Name
+':' Punctuation
+'^' Operator
+'Transaction' Name
+' ' Text.Whitespace
+'fwd_fee' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'InMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_import_fin' Name
+'$100' Name.Tag
+' ' Text.Whitespace
+'in_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+' \n ' Text.Whitespace
+'transaction' Name
+':' Punctuation
+'^' Operator
+'Transaction' Name
+' ' Text.Whitespace
+'fwd_fee' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'InMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_import_tr' Name
+'$101' Name.Tag
+' ' Text.Whitespace
+'in_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+' ' Text.Whitespace
+'out_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+' \n ' Text.Whitespace
+'transit_fee' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'InMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_discard_fin' Name
+'$110' Name.Tag
+' ' Text.Whitespace
+'in_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+' ' Text.Whitespace
+'transaction_id' Name
+':' Punctuation
+'uint64' Name
+' \n ' Text.Whitespace
+'fwd_fee' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'InMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_discard_tr' Name
+'$111' Name.Tag
+' ' Text.Whitespace
+'in_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+' ' Text.Whitespace
+'transaction_id' Name
+':' Punctuation
+'uint64' Name
+' \n ' Text.Whitespace
+'fwd_fee' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'proof_delivered' Name
+':' Punctuation
+'^' Operator
+'Cell' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'InMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'import_fees' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'fees_collected' Name
+':' Punctuation
+'Grams' Name
+' \n ' Text.Whitespace
+'value_imported' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ImportFees' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'HashmapAugE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'InMsg' Name
+' ' Text.Whitespace
+'ImportFees' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'InMsgDescr' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'msg_export_ext' Name
+'$000' Name.Tag
+' ' Text.Whitespace
+'msg' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'Message' Name
+' ' Text.Whitespace
+'Any' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'transaction' Name
+':' Punctuation
+'^' Operator
+'Transaction' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_export_imm' Name
+'$010' Name.Tag
+' ' Text.Whitespace
+'out_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+' \n ' Text.Whitespace
+'transaction' Name
+':' Punctuation
+'^' Operator
+'Transaction' Name
+' ' Text.Whitespace
+'reimport' Name
+':' Punctuation
+'^' Operator
+'InMsg' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_export_new' Name
+'$001' Name.Tag
+' ' Text.Whitespace
+'out_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+' \n ' Text.Whitespace
+'transaction' Name
+':' Punctuation
+'^' Operator
+'Transaction' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_export_tr' Name
+'$011' Name.Tag
+' ' Text.Whitespace
+'out_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+' \n ' Text.Whitespace
+'imported' Name
+':' Punctuation
+'^' Operator
+'InMsg' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_export_deq' Name
+'$1100' Name.Tag
+' ' Text.Whitespace
+'out_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+'\n ' Text.Whitespace
+'import_block_lt' Name
+':' Punctuation
+'uint63' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_export_deq_short' Name
+'$1101' Name.Tag
+' ' Text.Whitespace
+'msg_env_hash' Name
+':' Punctuation
+'bits256' Name
+'\n ' Text.Whitespace
+'next_workchain' Name
+':' Punctuation
+'int32' Name
+' ' Text.Whitespace
+'next_addr_pfx' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'import_block_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_export_tr_req' Name
+'$111' Name.Tag
+' ' Text.Whitespace
+'out_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+' \n ' Text.Whitespace
+'imported' Name
+':' Punctuation
+'^' Operator
+'InMsg' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'msg_export_deq_imm' Name
+'$100' Name.Tag
+' ' Text.Whitespace
+'out_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+' \n ' Text.Whitespace
+'reimport' Name
+':' Punctuation
+'^' Operator
+'InMsg' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutMsg' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'enqueued_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'out_msg' Name
+':' Punctuation
+'^' Operator
+'MsgEnvelope' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'EnqueuedMsg' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'HashmapAugE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'OutMsg' Name
+' ' Text.Whitespace
+'CurrencyCollection' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutMsgDescr' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'HashmapAugE' Name
+' ' Text.Whitespace
+'352' Literal.Number
+' ' Text.Whitespace
+'EnqueuedMsg' Name
+' ' Text.Whitespace
+'uint64' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutMsgQueue' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'processed_upto' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'last_msg_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'last_msg_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ProcessedUpto' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'// key is [ shard:uint64 mc_seqno:uint32 ] ' Comment.Singleline
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'96' Literal.Number
+' ' Text.Whitespace
+'ProcessedUpto' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ProcessedInfo' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'ihr_pending' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'import_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'IhrPendingSince' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'320' Literal.Number
+' ' Text.Whitespace
+'IhrPendingSince' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'IhrPendingInfo' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'out_queue' Name
+':' Punctuation
+'OutMsgQueue' Name
+' ' Text.Whitespace
+'proc_info' Name
+':' Punctuation
+'ProcessedInfo' Name
+'\n ' Text.Whitespace
+'ihr_pending' Name
+':' Punctuation
+'IhrPendingInfo' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutMsgQueueInfo' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'storage_used' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'cells' Name
+':' Punctuation
+'(' Punctuation
+'VarUInteger' Name
+' ' Text.Whitespace
+'7' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'bits' Name
+':' Punctuation
+'(' Punctuation
+'VarUInteger' Name
+' ' Text.Whitespace
+'7' Literal.Number
+')' Punctuation
+' \n ' Text.Whitespace
+'public_cells' Name
+':' Punctuation
+'(' Punctuation
+'VarUInteger' Name
+' ' Text.Whitespace
+'7' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'StorageUsed' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'storage_used_short' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'cells' Name
+':' Punctuation
+'(' Punctuation
+'VarUInteger' Name
+' ' Text.Whitespace
+'7' Literal.Number
+')' Punctuation
+' \n ' Text.Whitespace
+'bits' Name
+':' Punctuation
+'(' Punctuation
+'VarUInteger' Name
+' ' Text.Whitespace
+'7' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'StorageUsedShort' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'storage_info' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'used' Name
+':' Punctuation
+'StorageUsed' Name
+' ' Text.Whitespace
+'last_paid' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'due_payment' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'Grams' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'StorageInfo' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'account_none' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Account' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'account' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'addr' Name
+':' Punctuation
+'MsgAddressInt' Name
+' ' Text.Whitespace
+'storage_stat' Name
+':' Punctuation
+'StorageInfo' Name
+'\n ' Text.Whitespace
+'storage' Name
+':' Punctuation
+'AccountStorage' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Account' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'account_storage' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'last_trans_lt' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'balance' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+'state' Name
+':' Punctuation
+'AccountState' Name
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'AccountStorage' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'account_uninit' Name
+'$00' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'AccountState' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'account_active' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'_' Name
+':' Punctuation
+'StateInit' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'AccountState' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'account_frozen' Name
+'$01' Name.Tag
+' ' Text.Whitespace
+'state_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'AccountState' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'acc_state_uninit' Name
+'$00' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'AccountStatus' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'acc_state_frozen' Name
+'$01' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'AccountStatus' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'acc_state_active' Name
+'$10' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'AccountStatus' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'acc_state_nonexist' Name
+'$11' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'AccountStatus' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'/*' Comment.Multiline
+' duplicates\ntick_tock$_ tick:Bool tock:Bool = TickTock;\n\n_ split_depth:(Maybe (## 5)) special:(Maybe TickTock)\n code:(Maybe ^Cell) data:(Maybe ^Cell)\n library:(Maybe ^Cell) = StateInit;\n' Comment.Multiline
+
+'*/' Comment.Multiline
+'\n\n' Text.Whitespace
+
+'account_descr' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'account' Name
+':' Punctuation
+'^' Operator
+'Account' Name
+' ' Text.Whitespace
+'last_trans_hash' Name
+':' Punctuation
+'bits256' Name
+' \n ' Text.Whitespace
+'last_trans_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ShardAccount' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'depth_balance' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'split_depth' Name
+':' Punctuation
+'(' Punctuation
+'#<=' Name.Tag
+' ' Text.Whitespace
+'30' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'balance' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'DepthBalanceInfo' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'HashmapAugE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'ShardAccount' Name
+' ' Text.Whitespace
+'DepthBalanceInfo' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ShardAccounts' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'transaction' Name
+'$0111' Name.Tag
+' ' Text.Whitespace
+'account_addr' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'lt' Name
+':' Punctuation
+'uint64' Name
+' \n ' Text.Whitespace
+'prev_trans_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'prev_trans_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'now' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'outmsg_cnt' Name
+':' Punctuation
+'uint15' Name
+'\n ' Text.Whitespace
+'orig_status' Name
+':' Punctuation
+'AccountStatus' Name
+' ' Text.Whitespace
+'end_status' Name
+':' Punctuation
+'AccountStatus' Name
+'\n ' Text.Whitespace
+'^' Operator
+'[' Punctuation
+' ' Text.Whitespace
+'in_msg' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'(' Punctuation
+'Message' Name
+' ' Text.Whitespace
+'Any' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'out_msgs' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'15' Literal.Number
+' ' Text.Whitespace
+'^' Operator
+'(' Punctuation
+'Message' Name
+' ' Text.Whitespace
+'Any' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+']' Punctuation
+'\n ' Text.Whitespace
+'total_fees' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+'state_update' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'HASH_UPDATE' Name
+' ' Text.Whitespace
+'Account' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'description' Name
+':' Punctuation
+'^' Operator
+'TransactionDescr' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Transaction' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'merkle_update' Name
+'#02' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'old_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'new_hash' Name
+':' Punctuation
+'bits256' Name
+'\n ' Text.Whitespace
+'old' Name
+':' Punctuation
+'^' Operator
+'X' Name
+' ' Text.Whitespace
+'new' Name
+':' Punctuation
+'^' Operator
+'X' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MERKLE_UPDATE' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'update_hashes' Name
+'#72' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'old_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'new_hash' Name
+':' Punctuation
+'bits256' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'HASH_UPDATE' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'merkle_proof' Name
+'#03' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'virtual_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'depth' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'virtual_root' Name
+':' Punctuation
+'^' Operator
+'X' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MERKLE_PROOF' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'acc_trans' Name
+'#5' Name.Tag
+' ' Text.Whitespace
+'account_addr' Name
+':' Punctuation
+'bits256' Name
+'\n ' Text.Whitespace
+'transactions' Name
+':' Punctuation
+'(' Punctuation
+'HashmapAug' Name
+' ' Text.Whitespace
+'64' Literal.Number
+' ' Text.Whitespace
+'^' Operator
+'Transaction' Name
+' ' Text.Whitespace
+'CurrencyCollection' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'state_update' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'HASH_UPDATE' Name
+' ' Text.Whitespace
+'Account' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'AccountBlock' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'HashmapAugE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'AccountBlock' Name
+' ' Text.Whitespace
+'CurrencyCollection' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ShardAccountBlocks' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'tr_phase_storage' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'storage_fees_collected' Name
+':' Punctuation
+'Grams' Name
+' \n ' Text.Whitespace
+'storage_fees_due' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'Grams' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'status_change' Name
+':' Punctuation
+'AccStatusChange' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TrStoragePhase' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'acst_unchanged' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'AccStatusChange' Name
+';' Punctuation
+' ' Text.Whitespace
+'// x -> x' Comment.Singleline
+'\n' Text.Whitespace
+
+'acst_frozen' Name
+'$10' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'AccStatusChange' Name
+';' Punctuation
+' ' Text.Whitespace
+'// init -> frozen' Comment.Singleline
+'\n' Text.Whitespace
+
+'acst_deleted' Name
+'$11' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'AccStatusChange' Name
+';' Punctuation
+' ' Text.Whitespace
+'// frozen -> deleted' Comment.Singleline
+'\n\n' Text.Whitespace
+
+'tr_phase_credit' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'due_fees_collected' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'Grams' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'credit' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TrCreditPhase' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'tr_phase_compute_skipped' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'reason' Name
+':' Punctuation
+'ComputeSkipReason' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TrComputePhase' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'tr_phase_compute_vm' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'success' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'msg_state_used' Name
+':' Punctuation
+'Bool' Name
+' \n ' Text.Whitespace
+'account_activated' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'gas_fees' Name
+':' Punctuation
+'Grams' Name
+'\n ' Text.Whitespace
+'^' Operator
+'[' Punctuation
+' ' Text.Whitespace
+'gas_used' Name
+':' Punctuation
+'(' Punctuation
+'VarUInteger' Name
+' ' Text.Whitespace
+'7' Literal.Number
+')' Punctuation
+'\n ' Text.Whitespace
+'gas_limit' Name
+':' Punctuation
+'(' Punctuation
+'VarUInteger' Name
+' ' Text.Whitespace
+'7' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'gas_credit' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'(' Punctuation
+'VarUInteger' Name
+' ' Text.Whitespace
+'3' Literal.Number
+')' Punctuation
+')' Punctuation
+'\n ' Text.Whitespace
+'mode' Name
+':' Punctuation
+'int8' Name
+' ' Text.Whitespace
+'exit_code' Name
+':' Punctuation
+'int32' Name
+' ' Text.Whitespace
+'exit_arg' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'int32' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'vm_steps' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'vm_init_state_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'vm_final_state_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+']' Punctuation
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TrComputePhase' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'cskip_no_state' Name
+'$00' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ComputeSkipReason' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'cskip_bad_state' Name
+'$01' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ComputeSkipReason' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'cskip_no_gas' Name
+'$10' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ComputeSkipReason' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'tr_phase_action' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'success' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'valid' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'no_funds' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'status_change' Name
+':' Punctuation
+'AccStatusChange' Name
+'\n ' Text.Whitespace
+'total_fwd_fees' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'Grams' Name
+')' Punctuation
+' ' Text.Whitespace
+'total_action_fees' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'Grams' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'result_code' Name
+':' Punctuation
+'int32' Name
+' ' Text.Whitespace
+'result_arg' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'int32' Name
+')' Punctuation
+' ' Text.Whitespace
+'tot_actions' Name
+':' Punctuation
+'uint16' Name
+'\n ' Text.Whitespace
+'spec_actions' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'skipped_actions' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'msgs_created' Name
+':' Punctuation
+'uint16' Name
+' \n ' Text.Whitespace
+'action_list_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'tot_msg_size' Name
+':' Punctuation
+'StorageUsedShort' Name
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TrActionPhase' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'tr_phase_bounce_negfunds' Name
+'$00' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TrBouncePhase' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'tr_phase_bounce_nofunds' Name
+'$01' Name.Tag
+' ' Text.Whitespace
+'msg_size' Name
+':' Punctuation
+'StorageUsedShort' Name
+'\n ' Text.Whitespace
+'req_fwd_fees' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TrBouncePhase' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'tr_phase_bounce_ok' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'msg_size' Name
+':' Punctuation
+'StorageUsedShort' Name
+' \n ' Text.Whitespace
+'msg_fees' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'fwd_fees' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TrBouncePhase' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'trans_ord' Name
+'$0000' Name.Tag
+' ' Text.Whitespace
+'credit_first' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'storage_ph' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'TrStoragePhase' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'credit_ph' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'TrCreditPhase' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'compute_ph' Name
+':' Punctuation
+'TrComputePhase' Name
+' ' Text.Whitespace
+'action' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'TrActionPhase' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'aborted' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'bounce' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'TrBouncePhase' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'destroyed' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TransactionDescr' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'trans_storage' Name
+'$0001' Name.Tag
+' ' Text.Whitespace
+'storage_ph' Name
+':' Punctuation
+'TrStoragePhase' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TransactionDescr' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'trans_tick_tock' Name
+'$001' Name.Tag
+' ' Text.Whitespace
+'is_tock' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'storage_ph' Name
+':' Punctuation
+'TrStoragePhase' Name
+'\n ' Text.Whitespace
+'compute_ph' Name
+':' Punctuation
+'TrComputePhase' Name
+' ' Text.Whitespace
+'action' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'TrActionPhase' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'aborted' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'destroyed' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TransactionDescr' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'split_merge_info' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'cur_shard_pfx_len' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'6' Literal.Number
+')' Punctuation
+'\n ' Text.Whitespace
+'acc_split_depth' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'6' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'this_addr' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'sibling_addr' Name
+':' Punctuation
+'bits256' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'SplitMergeInfo' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'trans_split_prepare' Name
+'$0100' Name.Tag
+' ' Text.Whitespace
+'split_info' Name
+':' Punctuation
+'SplitMergeInfo' Name
+'\n ' Text.Whitespace
+'storage_ph' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'TrStoragePhase' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'compute_ph' Name
+':' Punctuation
+'TrComputePhase' Name
+' ' Text.Whitespace
+'action' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'TrActionPhase' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'aborted' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'destroyed' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TransactionDescr' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'trans_split_install' Name
+'$0101' Name.Tag
+' ' Text.Whitespace
+'split_info' Name
+':' Punctuation
+'SplitMergeInfo' Name
+'\n ' Text.Whitespace
+'prepare_transaction' Name
+':' Punctuation
+'^' Operator
+'Transaction' Name
+'\n ' Text.Whitespace
+'installed' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TransactionDescr' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'trans_merge_prepare' Name
+'$0110' Name.Tag
+' ' Text.Whitespace
+'split_info' Name
+':' Punctuation
+'SplitMergeInfo' Name
+'\n ' Text.Whitespace
+'storage_ph' Name
+':' Punctuation
+'TrStoragePhase' Name
+' ' Text.Whitespace
+'aborted' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TransactionDescr' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'trans_merge_install' Name
+'$0111' Name.Tag
+' ' Text.Whitespace
+'split_info' Name
+':' Punctuation
+'SplitMergeInfo' Name
+'\n ' Text.Whitespace
+'prepare_transaction' Name
+':' Punctuation
+'^' Operator
+'Transaction' Name
+'\n ' Text.Whitespace
+'storage_ph' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'TrStoragePhase' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'credit_ph' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'TrCreditPhase' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'compute_ph' Name
+':' Punctuation
+'TrComputePhase' Name
+' ' Text.Whitespace
+'action' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'TrActionPhase' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'aborted' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'destroyed' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TransactionDescr' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'smc_info' Name
+'#076ef1ea' Name.Tag
+' ' Text.Whitespace
+'actions' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'msgs_sent' Name
+':' Punctuation
+'uint16' Name
+'\n ' Text.Whitespace
+'unixtime' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'block_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'trans_lt' Name
+':' Punctuation
+'uint64' Name
+' \n ' Text.Whitespace
+'rand_seed' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'balance_remaining' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n ' Text.Whitespace
+'myself' Name
+':' Punctuation
+'MsgAddressInt' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'SmartContractInfo' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'out_list_empty' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutList' Name
+' ' Text.Whitespace
+'0' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'out_list' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'prev' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'OutList' Name
+' ' Text.Whitespace
+'n' Name
+')' Punctuation
+' ' Text.Whitespace
+'action' Name
+':' Punctuation
+'OutAction' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutList' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+';' Punctuation
+'\n' Text.Whitespace
+
+'action_send_msg' Name
+'#0ec3c86d' Name.Tag
+' ' Text.Whitespace
+'mode' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' \n ' Text.Whitespace
+'out_msg' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'MessageRelaxed' Name
+' ' Text.Whitespace
+'Any' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutAction' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'action_set_code' Name
+'#ad4de08e' Name.Tag
+' ' Text.Whitespace
+'new_code' Name
+':' Punctuation
+'^' Operator
+'Cell' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutAction' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'action_reserve_currency' Name
+'#36e6b809' Name.Tag
+' ' Text.Whitespace
+'mode' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+'\n ' Text.Whitespace
+'currency' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutAction' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'libref_hash' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'lib_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'LibRef' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'libref_ref' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'library' Name
+':' Punctuation
+'^' Operator
+'Cell' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'LibRef' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'action_change_library' Name
+'#26fa1dd4' Name.Tag
+' ' Text.Whitespace
+'mode' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'7' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'mode' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'2' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'libref' Name
+':' Punctuation
+'LibRef' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutAction' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'out_list_node' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'prev' Name
+':' Punctuation
+'^' Operator
+'Cell' Name
+' ' Text.Whitespace
+'action' Name
+':' Punctuation
+'OutAction' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OutListNode' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'shard_ident' Name
+'$00' Name.Tag
+' ' Text.Whitespace
+'shard_pfx_bits' Name
+':' Punctuation
+'(' Punctuation
+'#<=' Name.Tag
+' ' Text.Whitespace
+'60' Literal.Number
+')' Punctuation
+' \n ' Text.Whitespace
+'workchain_id' Name
+':' Punctuation
+'int32' Name
+' ' Text.Whitespace
+'shard_prefix' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ShardIdent' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'ext_blk_ref' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'end_lt' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'seq_no' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'root_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'file_hash' Name
+':' Punctuation
+'bits256' Name
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ExtBlkRef' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'block_id_ext' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'shard_id' Name
+':' Punctuation
+'ShardIdent' Name
+' ' Text.Whitespace
+'seq_no' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'root_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'file_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlockIdExt' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'master_info' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'master' Name
+':' Punctuation
+'ExtBlkRef' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlkMasterInfo' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'shard_state' Name
+'#9023afe2' Name.Tag
+' ' Text.Whitespace
+'global_id' Name
+':' Punctuation
+'int32' Name
+'\n ' Text.Whitespace
+'shard_id' Name
+':' Punctuation
+'ShardIdent' Name
+' \n ' Text.Whitespace
+'seq_no' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'vert_seq_no' Name
+':' Punctuation
+'#' Name.Tag
+'\n ' Text.Whitespace
+'gen_utime' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'gen_lt' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'min_ref_mc_seqno' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'out_msg_queue_info' Name
+':' Punctuation
+'^' Operator
+'OutMsgQueueInfo' Name
+'\n ' Text.Whitespace
+'before_split' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+'\n ' Text.Whitespace
+'accounts' Name
+':' Punctuation
+'^' Operator
+'ShardAccounts' Name
+'\n ' Text.Whitespace
+'^' Operator
+'[' Punctuation
+' ' Text.Whitespace
+'overload_history' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'underload_history' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'total_balance' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n ' Text.Whitespace
+'total_validator_fees' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n ' Text.Whitespace
+'libraries' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'LibDescr' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'master_ref' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'BlkMasterInfo' Name
+')' Punctuation
+' ' Text.Whitespace
+']' Punctuation
+'\n ' Text.Whitespace
+'custom' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'McStateExtra' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ShardStateUnsplit' Name
+';' Punctuation
+'\n \n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'ShardStateUnsplit' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ShardState' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'split_state' Name
+'#5f327da5' Name.Tag
+' ' Text.Whitespace
+'left' Name
+':' Punctuation
+'^' Operator
+'ShardStateUnsplit' Name
+' ' Text.Whitespace
+'right' Name
+':' Punctuation
+'^' Operator
+'ShardStateUnsplit' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ShardState' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'shared_lib_descr' Name
+'$00' Name.Tag
+' ' Text.Whitespace
+'lib' Name
+':' Punctuation
+'^' Operator
+'Cell' Name
+' ' Text.Whitespace
+'publishers' Name
+':' Punctuation
+'(' Punctuation
+'Hashmap' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'True' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'LibDescr' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'block_info' Name
+'#9bc7a987' Name.Tag
+' ' Text.Whitespace
+'version' Name
+':' Punctuation
+'uint32' Name
+' \n ' Text.Whitespace
+'not_master' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+' \n ' Text.Whitespace
+'after_merge' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'before_split' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+' \n ' Text.Whitespace
+'after_split' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+' \n ' Text.Whitespace
+'want_split' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'want_merge' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'key_block' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'vert_seqno_incr' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+'\n ' Text.Whitespace
+'flags' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'flags' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'seq_no' Name
+':' Punctuation
+'#' Name.Tag
+' ' Text.Whitespace
+'vert_seq_no' Name
+':' Punctuation
+'#' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'vert_seq_no' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'vert_seqno_incr' Name
+' ' Text.Whitespace
+'}' Punctuation
+' \n ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'prev_seq_no' Name
+':' Punctuation
+'#' Name.Tag
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'~' Operator
+'prev_seq_no' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'seq_no' Name
+' ' Text.Whitespace
+'}' Punctuation
+' \n ' Text.Whitespace
+'shard' Name
+':' Punctuation
+'ShardIdent' Name
+' ' Text.Whitespace
+'gen_utime' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'start_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'end_lt' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'gen_validator_list_hash_short' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'gen_catchain_seqno' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'min_ref_mc_seqno' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'prev_key_block_seqno' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'gen_software' Name
+':' Punctuation
+'flags' Name
+' ' Text.Whitespace
+'.' Operator
+' ' Text.Whitespace
+'0' Literal.Number
+'?' Operator
+'GlobalVersion' Name
+'\n ' Text.Whitespace
+'master_ref' Name
+':' Punctuation
+'not_master' Name
+'?' Operator
+'^' Operator
+'BlkMasterInfo' Name
+' \n ' Text.Whitespace
+'prev_ref' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'BlkPrevInfo' Name
+' ' Text.Whitespace
+'after_merge' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'prev_vert_ref' Name
+':' Punctuation
+'vert_seqno_incr' Name
+'?' Operator
+'^' Operator
+'(' Punctuation
+'BlkPrevInfo' Name
+' ' Text.Whitespace
+'0' Literal.Number
+')' Punctuation
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlockInfo' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'prev_blk_info' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'prev' Name
+':' Punctuation
+'ExtBlkRef' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlkPrevInfo' Name
+' ' Text.Whitespace
+'0' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'prev_blks_info' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'prev1' Name
+':' Punctuation
+'^' Operator
+'ExtBlkRef' Name
+' ' Text.Whitespace
+'prev2' Name
+':' Punctuation
+'^' Operator
+'ExtBlkRef' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlkPrevInfo' Name
+' ' Text.Whitespace
+'1' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'block' Name
+'#11ef55aa' Name.Tag
+' ' Text.Whitespace
+'global_id' Name
+':' Punctuation
+'int32' Name
+'\n ' Text.Whitespace
+'info' Name
+':' Punctuation
+'^' Operator
+'BlockInfo' Name
+' ' Text.Whitespace
+'value_flow' Name
+':' Punctuation
+'^' Operator
+'ValueFlow' Name
+'\n ' Text.Whitespace
+'state_update' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'MERKLE_UPDATE' Name
+' ' Text.Whitespace
+'ShardState' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'extra' Name
+':' Punctuation
+'^' Operator
+'BlockExtra' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Block' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'block_extra' Name
+' ' Text.Whitespace
+'in_msg_descr' Name
+':' Punctuation
+'^' Operator
+'InMsgDescr' Name
+'\n ' Text.Whitespace
+'out_msg_descr' Name
+':' Punctuation
+'^' Operator
+'OutMsgDescr' Name
+'\n ' Text.Whitespace
+'account_blocks' Name
+':' Punctuation
+'^' Operator
+'ShardAccountBlocks' Name
+'\n ' Text.Whitespace
+'rand_seed' Name
+':' Punctuation
+'bits256' Name
+'\n ' Text.Whitespace
+'created_by' Name
+':' Punctuation
+'bits256' Name
+'\n ' Text.Whitespace
+'custom' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'McBlockExtra' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlockExtra' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'value_flow' Name
+' ' Text.Whitespace
+'^' Operator
+'[' Punctuation
+' ' Text.Whitespace
+'from_prev_blk' Name
+':' Punctuation
+'CurrencyCollection' Name
+' \n ' Text.Whitespace
+'to_next_blk' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n ' Text.Whitespace
+'imported' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n ' Text.Whitespace
+'exported' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+']' Punctuation
+'\n ' Text.Whitespace
+'fees_collected' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n ' Text.Whitespace
+'^' Operator
+'[' Punctuation
+'\n ' Text.Whitespace
+'fees_imported' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n ' Text.Whitespace
+'recovered' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n ' Text.Whitespace
+'created' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n ' Text.Whitespace
+'minted' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ValueFlow' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'bt_leaf' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'leaf' Name
+':' Punctuation
+'X' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BinTree' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'bt_fork' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'left' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'BinTree' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' ' Text.Whitespace
+'right' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'BinTree' Name
+' ' Text.Whitespace
+'X' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BinTree' Name
+' ' Text.Whitespace
+'X' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'fsm_none' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'FutureSplitMerge' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'fsm_split' Name
+'$10' Name.Tag
+' ' Text.Whitespace
+'split_utime' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'interval' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'FutureSplitMerge' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'fsm_merge' Name
+'$11' Name.Tag
+' ' Text.Whitespace
+'merge_utime' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'interval' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'FutureSplitMerge' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'shard_descr' Name
+'#b' Name.Tag
+' ' Text.Whitespace
+'seq_no' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'reg_mc_seqno' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'start_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'end_lt' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'root_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'file_hash' Name
+':' Punctuation
+'bits256' Name
+' \n ' Text.Whitespace
+'before_split' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'before_merge' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'want_split' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'want_merge' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'nx_cc_updated' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'flags' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'3' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'flags' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'0' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'next_catchain_seqno' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'next_validator_shard' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'min_ref_mc_seqno' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'gen_utime' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'split_merge_at' Name
+':' Punctuation
+'FutureSplitMerge' Name
+'\n ' Text.Whitespace
+'fees_collected' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n ' Text.Whitespace
+'funds_created' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ShardDescr' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'shard_descr_new' Name
+'#a' Name.Tag
+' ' Text.Whitespace
+'seq_no' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'reg_mc_seqno' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'start_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'end_lt' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'root_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'file_hash' Name
+':' Punctuation
+'bits256' Name
+' \n ' Text.Whitespace
+'before_split' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'before_merge' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'want_split' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'want_merge' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'nx_cc_updated' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'flags' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'3' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'flags' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'0' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'next_catchain_seqno' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'next_validator_shard' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'min_ref_mc_seqno' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'gen_utime' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'split_merge_at' Name
+':' Punctuation
+'FutureSplitMerge' Name
+'\n ' Text.Whitespace
+'^' Operator
+'[' Punctuation
+' ' Text.Whitespace
+'fees_collected' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n ' Text.Whitespace
+'funds_created' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+']' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ShardDescr' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'32' Literal.Number
+' ' Text.Whitespace
+'^' Operator
+'(' Punctuation
+'BinTree' Name
+' ' Text.Whitespace
+'ShardDescr' Name
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ShardHashes' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'bta_leaf' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'Y' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'extra' Name
+':' Punctuation
+'Y' Name
+' ' Text.Whitespace
+'leaf' Name
+':' Punctuation
+'X' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BinTreeAug' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'bta_fork' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'X' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+'Y' Name
+':' Punctuation
+'Type' Name
+'}' Punctuation
+' ' Text.Whitespace
+'left' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'BinTreeAug' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'right' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'BinTreeAug' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+')' Punctuation
+' ' Text.Whitespace
+'extra' Name
+':' Punctuation
+'Y' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BinTreeAug' Name
+' ' Text.Whitespace
+'X' Name
+' ' Text.Whitespace
+'Y' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'fees' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+'create' Name
+':' Punctuation
+'CurrencyCollection' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ShardFeeCreated' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'HashmapAugE' Name
+' ' Text.Whitespace
+'96' Literal.Number
+' ' Text.Whitespace
+'ShardFeeCreated' Name
+' ' Text.Whitespace
+'ShardFeeCreated' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ShardFees' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'config_addr' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'config' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'Hashmap' Name
+' ' Text.Whitespace
+'32' Literal.Number
+' ' Text.Whitespace
+'^' Operator
+'Cell' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParams' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'validator_info' Name
+'$_' Name.Tag
+'\n ' Text.Whitespace
+'validator_list_hash_short' Name
+':' Punctuation
+'uint32' Name
+' \n ' Text.Whitespace
+'catchain_seqno' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'nx_cc_updated' Name
+':' Punctuation
+'Bool' Name
+'\n' Text.Whitespace
+
+'=' Operator
+' ' Text.Whitespace
+'ValidatorInfo' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'validator_base_info' Name
+'$_' Name.Tag
+'\n ' Text.Whitespace
+'validator_list_hash_short' Name
+':' Punctuation
+'uint32' Name
+' \n ' Text.Whitespace
+'catchain_seqno' Name
+':' Punctuation
+'uint32' Name
+'\n' Text.Whitespace
+
+'=' Operator
+' ' Text.Whitespace
+'ValidatorBaseInfo' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'key' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'max_end_lt' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'KeyMaxLt' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'key' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'blk_ref' Name
+':' Punctuation
+'ExtBlkRef' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'KeyExtBlkRef' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'HashmapAugE' Name
+' ' Text.Whitespace
+'32' Literal.Number
+' ' Text.Whitespace
+'KeyExtBlkRef' Name
+' ' Text.Whitespace
+'KeyMaxLt' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OldMcBlocksInfo' Name
+';' Punctuation
+'\n\n\n' Text.Whitespace
+
+'counters' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'last_updated' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'total' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'cnt2048' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'cnt65536' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Counters' Name
+';' Punctuation
+' \n' Text.Whitespace
+
+'creator_info' Name
+'#4' Name.Tag
+' ' Text.Whitespace
+'mc_blocks' Name
+':' Punctuation
+'Counters' Name
+' ' Text.Whitespace
+'shard_blocks' Name
+':' Punctuation
+'Counters' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CreatorStats' Name
+';' Punctuation
+' \n' Text.Whitespace
+
+'block_create_stats' Name
+'#17' Name.Tag
+' ' Text.Whitespace
+'counters' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'CreatorStats' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlockCreateStats' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'block_create_stats_ext' Name
+'#34' Name.Tag
+' ' Text.Whitespace
+'counters' Name
+':' Punctuation
+'(' Punctuation
+'HashmapAugE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'CreatorStats' Name
+' ' Text.Whitespace
+'uint32' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlockCreateStats' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'masterchain_state_extra' Name
+'#cc26' Name.Tag
+'\n ' Text.Whitespace
+'shard_hashes' Name
+':' Punctuation
+'ShardHashes' Name
+'\n ' Text.Whitespace
+'config' Name
+':' Punctuation
+'ConfigParams' Name
+'\n ' Text.Whitespace
+'^' Operator
+'[' Punctuation
+' ' Text.Whitespace
+'flags' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'16' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'flags' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'validator_info' Name
+':' Punctuation
+'ValidatorInfo' Name
+'\n ' Text.Whitespace
+'prev_blocks' Name
+':' Punctuation
+'OldMcBlocksInfo' Name
+'\n ' Text.Whitespace
+'after_key_block' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'last_key_block' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'ExtBlkRef' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'block_create_stats' Name
+':' Punctuation
+'(' Punctuation
+'flags' Name
+' ' Text.Whitespace
+'.' Operator
+' ' Text.Whitespace
+'0' Literal.Number
+')' Punctuation
+'?' Operator
+'BlockCreateStats' Name
+' ' Text.Whitespace
+']' Punctuation
+'\n ' Text.Whitespace
+'global_balance' Name
+':' Punctuation
+'CurrencyCollection' Name
+'\n' Text.Whitespace
+
+'=' Operator
+' ' Text.Whitespace
+'McStateExtra' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'ed25519_pubkey' Name
+'#8e81278a' Name.Tag
+' ' Text.Whitespace
+'pubkey' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'SigPubKey' Name
+';' Punctuation
+' ' Text.Whitespace
+'// 288 bits' Comment.Singleline
+'\n' Text.Whitespace
+
+'ed25519_signature' Name
+'#5' Name.Tag
+' ' Text.Whitespace
+'R' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'s' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CryptoSignatureSimple' Name
+';' Punctuation
+' ' Text.Whitespace
+'// 516 bits' Comment.Singleline
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'CryptoSignatureSimple' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CryptoSignature' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'sig_pair' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'node_id_short' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'sign' Name
+':' Punctuation
+'CryptoSignature' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CryptoSignaturePair' Name
+';' Punctuation
+' ' Text.Whitespace
+'// 256+x ~ 772 bits' Comment.Singleline
+'\n\n' Text.Whitespace
+
+'certificate' Name
+'#4' Name.Tag
+' ' Text.Whitespace
+'temp_key' Name
+':' Punctuation
+'SigPubKey' Name
+' ' Text.Whitespace
+'valid_since' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'valid_until' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Certificate' Name
+';' Punctuation
+' ' Text.Whitespace
+'// 356 bits' Comment.Singleline
+'\n' Text.Whitespace
+
+'certificate_env' Name
+'#a419b7d' Name.Tag
+' ' Text.Whitespace
+'certificate' Name
+':' Punctuation
+'Certificate' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CertificateEnv' Name
+';' Punctuation
+' ' Text.Whitespace
+'// 384 bits' Comment.Singleline
+'\n' Text.Whitespace
+
+'signed_certificate' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'certificate' Name
+':' Punctuation
+'Certificate' Name
+' ' Text.Whitespace
+'certificate_signature' Name
+':' Punctuation
+'CryptoSignature' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'SignedCertificate' Name
+';' Punctuation
+' ' Text.Whitespace
+'// 356+516 = 872 bits' Comment.Singleline
+'\n' Text.Whitespace
+
+'// certificate_signature is the signature of CertificateEnv (with embedded certificate) with persistent key' Comment.Singleline
+'\n' Text.Whitespace
+
+'chained_signature' Name
+'#f' Name.Tag
+' ' Text.Whitespace
+'signed_cert' Name
+':' Punctuation
+'^' Operator
+'SignedCertificate' Name
+' ' Text.Whitespace
+'temp_key_signature' Name
+':' Punctuation
+'CryptoSignatureSimple' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CryptoSignature' Name
+';' Punctuation
+' ' Text.Whitespace
+'// 4+(356+516)+516 = 520 bits+ref (1392 bits total)' Comment.Singleline
+'\n' Text.Whitespace
+
+'// temp_key_signature is the signature of whatever was originally intended to be signed with temp_key from certificate' Comment.Singleline
+'\n\n' Text.Whitespace
+
+'masterchain_block_extra' Name
+'#cca5' Name.Tag
+'\n ' Text.Whitespace
+'key_block' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+'\n ' Text.Whitespace
+'shard_hashes' Name
+':' Punctuation
+'ShardHashes' Name
+'\n ' Text.Whitespace
+'shard_fees' Name
+':' Punctuation
+'ShardFees' Name
+'\n ' Text.Whitespace
+'^' Operator
+'[' Punctuation
+' ' Text.Whitespace
+'prev_blk_signatures' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'16' Literal.Number
+' ' Text.Whitespace
+'CryptoSignaturePair' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'recover_create_msg' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'InMsg' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'mint_msg' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'InMsg' Name
+')' Punctuation
+' ' Text.Whitespace
+']' Punctuation
+'\n ' Text.Whitespace
+'config' Name
+':' Punctuation
+'key_block' Name
+'?' Operator
+'ConfigParams' Name
+'\n' Text.Whitespace
+
+'=' Operator
+' ' Text.Whitespace
+'McBlockExtra' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'// CONFIGURATION PARAMETERS' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n\n' Text.Whitespace
+
+'validator' Name
+'#53' Name.Tag
+' ' Text.Whitespace
+'public_key' Name
+':' Punctuation
+'SigPubKey' Name
+' ' Text.Whitespace
+'weight' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ValidatorDescr' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'validator_addr' Name
+'#73' Name.Tag
+' ' Text.Whitespace
+'public_key' Name
+':' Punctuation
+'SigPubKey' Name
+' ' Text.Whitespace
+'weight' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'adnl_addr' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ValidatorDescr' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'validators' Name
+'#11' Name.Tag
+' ' Text.Whitespace
+'utime_since' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'utime_until' Name
+':' Punctuation
+'uint32' Name
+' \n ' Text.Whitespace
+'total' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'16' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'main' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'16' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'main' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'total' Name
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'main' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+' \n ' Text.Whitespace
+'list' Name
+':' Punctuation
+'(' Punctuation
+'Hashmap' Name
+' ' Text.Whitespace
+'16' Literal.Number
+' ' Text.Whitespace
+'ValidatorDescr' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ValidatorSet' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'validators_ext' Name
+'#12' Name.Tag
+' ' Text.Whitespace
+'utime_since' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'utime_until' Name
+':' Punctuation
+'uint32' Name
+' \n ' Text.Whitespace
+'total' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'16' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'main' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'16' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'main' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'total' Name
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'main' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+' \n ' Text.Whitespace
+'total_weight' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'list' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'16' Literal.Number
+' ' Text.Whitespace
+'ValidatorDescr' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ValidatorSet' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'config_addr' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'0' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'elector_addr' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'1' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'minter_addr' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'2' Literal.Number
+';' Punctuation
+' ' Text.Whitespace
+'// ConfigParam 0 is used if absent' Comment.Singleline
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'fee_collector_addr' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'3' Literal.Number
+';' Punctuation
+' ' Text.Whitespace
+'// ConfigParam 1 is used if absent' Comment.Singleline
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'dns_root_addr' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'4' Literal.Number
+';' Punctuation
+' ' Text.Whitespace
+'// root TON DNS resolver' Comment.Singleline
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'mint_new_price' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'mint_add_price' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'6' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'to_mint' Name
+':' Punctuation
+'ExtraCurrencyCollection' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'7' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'capabilities' Name
+'#c4' Name.Tag
+' ' Text.Whitespace
+'version' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'capabilities' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'GlobalVersion' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'GlobalVersion' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'8' Literal.Number
+';' Punctuation
+' ' Text.Whitespace
+'// all zero if absent' Comment.Singleline
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'mandatory_params' Name
+':' Punctuation
+'(' Punctuation
+'Hashmap' Name
+' ' Text.Whitespace
+'32' Literal.Number
+' ' Text.Whitespace
+'True' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'9' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'critical_params' Name
+':' Punctuation
+'(' Punctuation
+'Hashmap' Name
+' ' Text.Whitespace
+'32' Literal.Number
+' ' Text.Whitespace
+'True' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'10' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'cfg_vote_cfg' Name
+'#36' Name.Tag
+' ' Text.Whitespace
+'min_tot_rounds' Name
+':' Punctuation
+'uint8' Name
+' ' Text.Whitespace
+'max_tot_rounds' Name
+':' Punctuation
+'uint8' Name
+' ' Text.Whitespace
+'min_wins' Name
+':' Punctuation
+'uint8' Name
+' ' Text.Whitespace
+'max_losses' Name
+':' Punctuation
+'uint8' Name
+' ' Text.Whitespace
+'min_store_sec' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'max_store_sec' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'bit_price' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'cell_price' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigProposalSetup' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'cfg_vote_setup' Name
+'#91' Name.Tag
+' ' Text.Whitespace
+'normal_params' Name
+':' Punctuation
+'^' Operator
+'ConfigProposalSetup' Name
+' ' Text.Whitespace
+'critical_params' Name
+':' Punctuation
+'^' Operator
+'ConfigProposalSetup' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigVotingSetup' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'ConfigVotingSetup' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'11' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'cfg_proposal' Name
+'#f3' Name.Tag
+' ' Text.Whitespace
+'param_id' Name
+':' Punctuation
+'int32' Name
+' ' Text.Whitespace
+'param_value' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'Cell' Name
+')' Punctuation
+' ' Text.Whitespace
+'if_hash_equal' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'uint256' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigProposal' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'cfg_proposal_status' Name
+'#ce' Name.Tag
+' ' Text.Whitespace
+'expires' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'proposal' Name
+':' Punctuation
+'^' Operator
+'ConfigProposal' Name
+' ' Text.Whitespace
+'is_critical' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'voters' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'16' Literal.Number
+' ' Text.Whitespace
+'True' Name
+')' Punctuation
+' ' Text.Whitespace
+'remaining_weight' Name
+':' Punctuation
+'int64' Name
+' ' Text.Whitespace
+'validator_set_id' Name
+':' Punctuation
+'uint256' Name
+' \n ' Text.Whitespace
+'rounds_remaining' Name
+':' Punctuation
+'uint8' Name
+' ' Text.Whitespace
+'wins' Name
+':' Punctuation
+'uint8' Name
+' ' Text.Whitespace
+'losses' Name
+':' Punctuation
+'uint8' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigProposalStatus' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'wfmt_basic' Name
+'#1' Name.Tag
+' ' Text.Whitespace
+'vm_version' Name
+':' Punctuation
+'int32' Name
+' ' Text.Whitespace
+'vm_mode' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'WorkchainFormat' Name
+' ' Text.Whitespace
+'1' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'wfmt_ext' Name
+'#0' Name.Tag
+' ' Text.Whitespace
+'min_addr_len' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'12' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'max_addr_len' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'12' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'addr_len_step' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'12' Literal.Number
+')' Punctuation
+'\n ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'min_addr_len' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'64' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'min_addr_len' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'max_addr_len' Name
+' ' Text.Whitespace
+'}' Punctuation
+' \n ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'max_addr_len' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'1023' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'addr_len_step' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'1023' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'workchain_type_id' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'32' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'workchain_type_id' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'WorkchainFormat' Name
+' ' Text.Whitespace
+'0' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'workchain' Name
+'#a6' Name.Tag
+' ' Text.Whitespace
+'enabled_since' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'actual_min_split' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' \n ' Text.Whitespace
+'min_split' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'max_split' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'actual_min_split' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'min_split' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n' Text.Whitespace
+
+'//workchain#a5 enabled_since:uint32 min_split:(## 8) max_split:(## 8)' Comment.Singleline
+'\n' Text.Whitespace
+
+'// { min_split <= max_split } { max_split <= 60 }' Comment.Singleline
+'\n ' Text.Whitespace
+'basic' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'active' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'accept_msgs' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'flags' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'13' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'flags' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'0' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'zerostate_root_hash' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'zerostate_file_hash' Name
+':' Punctuation
+'bits256' Name
+'\n ' Text.Whitespace
+'version' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'format' Name
+':' Punctuation
+'(' Punctuation
+'WorkchainFormat' Name
+' ' Text.Whitespace
+'basic' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'WorkchainDescr' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'workchains' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'32' Literal.Number
+' ' Text.Whitespace
+'WorkchainDescr' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'12' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'complaint_prices' Name
+'#1a' Name.Tag
+' ' Text.Whitespace
+'deposit' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'bit_price' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'cell_price' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ComplaintPricing' Name
+';' Punctuation
+' \n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'ComplaintPricing' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'13' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'block_grams_created' Name
+'#6b' Name.Tag
+' ' Text.Whitespace
+'masterchain_block_fee' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'basechain_block_fee' Name
+':' Punctuation
+'Grams' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlockCreateFees' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'BlockCreateFees' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'14' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'validators_elected_for' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'elections_start_before' Name
+':' Punctuation
+'uint32' Name
+' \n ' Text.Whitespace
+'elections_end_before' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'stake_held_for' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'15' Literal.Number
+';' Punctuation
+'\n \n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'max_validators' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'16' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'max_main_validators' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'16' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'min_validators' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'16' Literal.Number
+')' Punctuation
+' \n ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'max_validators' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'max_main_validators' Name
+' ' Text.Whitespace
+'}' Punctuation
+' \n ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'max_main_validators' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'min_validators' Name
+' ' Text.Whitespace
+'}' Punctuation
+' \n ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'min_validators' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'16' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'min_stake' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'max_stake' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'min_total_stake' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'max_stake_factor' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'17' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+'#cc' Name.Tag
+' ' Text.Whitespace
+'utime_since' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'bit_price_ps' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'cell_price_ps' Name
+':' Punctuation
+'uint64' Name
+' \n ' Text.Whitespace
+'mc_bit_price_ps' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'mc_cell_price_ps' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'StoragePrices' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'Hashmap' Name
+' ' Text.Whitespace
+'32' Literal.Number
+' ' Text.Whitespace
+'StoragePrices' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'18' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'gas_prices' Name
+'#dd' Name.Tag
+' ' Text.Whitespace
+'gas_price' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'gas_limit' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'gas_credit' Name
+':' Punctuation
+'uint64' Name
+' \n ' Text.Whitespace
+'block_gas_limit' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'freeze_due_limit' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'delete_due_limit' Name
+':' Punctuation
+'uint64' Name
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'GasLimitsPrices' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'gas_prices_ext' Name
+'#de' Name.Tag
+' ' Text.Whitespace
+'gas_price' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'gas_limit' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'special_gas_limit' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'gas_credit' Name
+':' Punctuation
+'uint64' Name
+' \n ' Text.Whitespace
+'block_gas_limit' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'freeze_due_limit' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'delete_due_limit' Name
+':' Punctuation
+'uint64' Name
+' \n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'GasLimitsPrices' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'gas_flat_pfx' Name
+'#d1' Name.Tag
+' ' Text.Whitespace
+'flat_gas_limit' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'flat_gas_price' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'other' Name
+':' Punctuation
+'GasLimitsPrices' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'GasLimitsPrices' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'config_mc_gas_prices' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'GasLimitsPrices' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'20' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'config_gas_prices' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'GasLimitsPrices' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'21' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'param_limits' Name
+'#c3' Name.Tag
+' ' Text.Whitespace
+'underload' Name
+':' Punctuation
+'#' Name.Tag
+' ' Text.Whitespace
+'soft_limit' Name
+':' Punctuation
+'#' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'underload' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'soft_limit' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'hard_limit' Name
+':' Punctuation
+'#' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'soft_limit' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'hard_limit' Name
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ParamLimits' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'block_limits' Name
+'#5d' Name.Tag
+' ' Text.Whitespace
+'bytes' Name
+':' Punctuation
+'ParamLimits' Name
+' ' Text.Whitespace
+'gas' Name
+':' Punctuation
+'ParamLimits' Name
+' ' Text.Whitespace
+'lt_delta' Name
+':' Punctuation
+'ParamLimits' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlockLimits' Name
+';' Punctuation
+'\n \n' Text.Whitespace
+
+'config_mc_block_limits' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'BlockLimits' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'22' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'config_block_limits' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'BlockLimits' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'23' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'// msg_fwd_fees = (lump_price + ceil((bit_price * msg.bits + cell_price * msg.cells)/2^16)) nanograms' Comment.Singleline
+'\n' Text.Whitespace
+
+'// ihr_fwd_fees = ceil((msg_fwd_fees * ihr_price_factor)/2^16) nanograms' Comment.Singleline
+'\n' Text.Whitespace
+
+'// bits in the root cell of a message are not included in msg.bits (lump_price pays for them)' Comment.Singleline
+'\n' Text.Whitespace
+
+'msg_forward_prices' Name
+'#ea' Name.Tag
+' ' Text.Whitespace
+'lump_price' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'bit_price' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'cell_price' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'ihr_price_factor' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'first_frac' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'next_frac' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MsgForwardPrices' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'// used for messages to/from masterchain' Comment.Singleline
+'\n' Text.Whitespace
+
+'config_mc_fwd_prices' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'MsgForwardPrices' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'24' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'// used for all other messages' Comment.Singleline
+'\n' Text.Whitespace
+
+'config_fwd_prices' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'MsgForwardPrices' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'25' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'catchain_config' Name
+'#c1' Name.Tag
+' ' Text.Whitespace
+'mc_catchain_lifetime' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'shard_catchain_lifetime' Name
+':' Punctuation
+'uint32' Name
+' \n ' Text.Whitespace
+'shard_validators_lifetime' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'shard_validators_num' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CatchainConfig' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'catchain_config_new' Name
+'#c2' Name.Tag
+' ' Text.Whitespace
+'flags' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'7' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'flags' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'0' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'shuffle_mc_validators' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'mc_catchain_lifetime' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'shard_catchain_lifetime' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'shard_validators_lifetime' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'shard_validators_num' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'CatchainConfig' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'consensus_config' Name
+'#d6' Name.Tag
+' ' Text.Whitespace
+'round_candidates' Name
+':' Punctuation
+'#' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'round_candidates' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'next_candidate_delay_ms' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'consensus_timeout_ms' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'fast_attempts' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'attempt_duration' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'catchain_max_deps' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'max_block_bytes' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'max_collated_bytes' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConsensusConfig' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'consensus_config_new' Name
+'#d7' Name.Tag
+' ' Text.Whitespace
+'flags' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'7' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'flags' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'0' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'new_catchain_ids' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'round_candidates' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'round_candidates' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'next_candidate_delay_ms' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'consensus_timeout_ms' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'fast_attempts' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'attempt_duration' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'catchain_max_deps' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'max_block_bytes' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'max_collated_bytes' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConsensusConfig' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'consensus_config_v3' Name
+'#d8' Name.Tag
+' ' Text.Whitespace
+'flags' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'7' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'flags' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'0' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'new_catchain_ids' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'round_candidates' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'round_candidates' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'next_candidate_delay_ms' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'consensus_timeout_ms' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'fast_attempts' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'attempt_duration' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'catchain_max_deps' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'max_block_bytes' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'max_collated_bytes' Name
+':' Punctuation
+'uint32' Name
+' \n ' Text.Whitespace
+'proto_version' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConsensusConfig' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'consensus_config_v4' Name
+'#d9' Name.Tag
+' ' Text.Whitespace
+'flags' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'7' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'flags' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'0' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'new_catchain_ids' Name
+':' Punctuation
+'Bool' Name
+'\n ' Text.Whitespace
+'round_candidates' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'round_candidates' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'next_candidate_delay_ms' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'consensus_timeout_ms' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'fast_attempts' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'attempt_duration' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'catchain_max_deps' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'max_block_bytes' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'max_collated_bytes' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'proto_version' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'catchain_max_blocks_coeff' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConsensusConfig' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'CatchainConfig' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'28' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'ConsensusConfig' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'29' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'fundamental_smc_addr' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'True' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'31' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'prev_validators' Name
+':' Punctuation
+'ValidatorSet' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'32' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'prev_temp_validators' Name
+':' Punctuation
+'ValidatorSet' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'33' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'cur_validators' Name
+':' Punctuation
+'ValidatorSet' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'34' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'cur_temp_validators' Name
+':' Punctuation
+'ValidatorSet' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'35' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'next_validators' Name
+':' Punctuation
+'ValidatorSet' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'36' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'next_temp_validators' Name
+':' Punctuation
+'ValidatorSet' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'37' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'validator_temp_key' Name
+'#3' Name.Tag
+' ' Text.Whitespace
+'adnl_addr' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'temp_public_key' Name
+':' Punctuation
+'SigPubKey' Name
+' ' Text.Whitespace
+'seqno' Name
+':' Punctuation
+'#' Name.Tag
+' ' Text.Whitespace
+'valid_until' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ValidatorTempKey' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'signed_temp_key' Name
+'#4' Name.Tag
+' ' Text.Whitespace
+'key' Name
+':' Punctuation
+'^' Operator
+'ValidatorTempKey' Name
+' ' Text.Whitespace
+'signature' Name
+':' Punctuation
+'CryptoSignature' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ValidatorSignedTempKey' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'ValidatorSignedTempKey' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'39' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'misbehaviour_punishment_config_v1' Name
+'#01' Name.Tag
+' \n ' Text.Whitespace
+'default_flat_fine' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'default_proportional_fine' Name
+':' Punctuation
+'uint32' Name
+'\n ' Text.Whitespace
+'severity_flat_mult' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'severity_proportional_mult' Name
+':' Punctuation
+'uint16' Name
+'\n ' Text.Whitespace
+'unpunishable_interval' Name
+':' Punctuation
+'uint16' Name
+'\n ' Text.Whitespace
+'long_interval' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'long_flat_mult' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'long_proportional_mult' Name
+':' Punctuation
+'uint16' Name
+'\n ' Text.Whitespace
+'medium_interval' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'medium_flat_mult' Name
+':' Punctuation
+'uint16' Name
+' ' Text.Whitespace
+'medium_proportional_mult' Name
+':' Punctuation
+'uint16' Name
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'MisbehaviourPunishmentConfig' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'MisbehaviourPunishmentConfig' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'40' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'oracle_bridge_params' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'bridge_address' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'oracle_mutlisig_address' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'oracles' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'uint256' Name
+')' Punctuation
+' ' Text.Whitespace
+'external_chain_address' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'OracleBridgeParams' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'OracleBridgeParams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'71' Literal.Number
+';' Punctuation
+' ' Text.Whitespace
+'// Ethereum bridge' Comment.Singleline
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'OracleBridgeParams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'72' Literal.Number
+';' Punctuation
+' ' Text.Whitespace
+'// Binance Smart Chain bridge' Comment.Singleline
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'OracleBridgeParams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ConfigParam' Name
+' ' Text.Whitespace
+'73' Literal.Number
+';' Punctuation
+' ' Text.Whitespace
+'// Polygon bridge' Comment.Singleline
+'\n\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'// PROOFS' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'block_signatures_pure' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'sig_count' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'sig_weight' Name
+':' Punctuation
+'uint64' Name
+'\n ' Text.Whitespace
+'signatures' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'16' Literal.Number
+' ' Text.Whitespace
+'CryptoSignaturePair' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlockSignaturesPure' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'block_signatures' Name
+'#11' Name.Tag
+' ' Text.Whitespace
+'validator_info' Name
+':' Punctuation
+'ValidatorBaseInfo' Name
+' ' Text.Whitespace
+'pure_signatures' Name
+':' Punctuation
+'BlockSignaturesPure' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlockSignatures' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'block_proof' Name
+'#c3' Name.Tag
+' ' Text.Whitespace
+'proof_for' Name
+':' Punctuation
+'BlockIdExt' Name
+' ' Text.Whitespace
+'root' Name
+':' Punctuation
+'^' Operator
+'Cell' Name
+' ' Text.Whitespace
+'signatures' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'BlockSignatures' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'BlockProof' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'chain_empty' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ProofChain' Name
+' ' Text.Whitespace
+'0' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'chain_link' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'root' Name
+':' Punctuation
+'^' Operator
+'Cell' Name
+' ' Text.Whitespace
+'prev' Name
+':' Punctuation
+'n' Name
+'?' Operator
+'^' Operator
+'(' Punctuation
+'ProofChain' Name
+' ' Text.Whitespace
+'n' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ProofChain' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+';' Punctuation
+'\n' Text.Whitespace
+
+'top_block_descr' Name
+'#d5' Name.Tag
+' ' Text.Whitespace
+'proof_for' Name
+':' Punctuation
+'BlockIdExt' Name
+' ' Text.Whitespace
+'signatures' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'BlockSignatures' Name
+')' Punctuation
+' \n ' Text.Whitespace
+'len' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'len' Name
+' ' Text.Whitespace
+'>=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'len' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'8' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'chain' Name
+':' Punctuation
+'(' Punctuation
+'ProofChain' Name
+' ' Text.Whitespace
+'len' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TopBlockDescr' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'// COLLATED DATA' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'top_block_descr_set' Name
+'#4ac789f3' Name.Tag
+' ' Text.Whitespace
+'collection' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'96' Literal.Number
+' ' Text.Whitespace
+'^' Operator
+'TopBlockDescr' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TopBlockDescrSet' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'// VALIDATOR MISBEHAVIOR COMPLAINTS' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'prod_info' Name
+'#34' Name.Tag
+' ' Text.Whitespace
+'utime' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'mc_blk_ref' Name
+':' Punctuation
+'ExtBlkRef' Name
+' ' Text.Whitespace
+'state_proof' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'MERKLE_PROOF' Name
+' ' Text.Whitespace
+'Block' Name
+')' Punctuation
+'\n ' Text.Whitespace
+'prod_proof' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'MERKLE_PROOF' Name
+' ' Text.Whitespace
+'ShardState' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ProducerInfo' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'no_blk_gen' Name
+' ' Text.Whitespace
+'from_utime' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'prod_info' Name
+':' Punctuation
+'^' Operator
+'ProducerInfo' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ComplaintDescr' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'no_blk_gen_diff' Name
+' ' Text.Whitespace
+'prod_info_old' Name
+':' Punctuation
+'^' Operator
+'ProducerInfo' Name
+' ' Text.Whitespace
+'prod_info_new' Name
+':' Punctuation
+'^' Operator
+'ProducerInfo' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ComplaintDescr' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'validator_complaint' Name
+'#bc' Name.Tag
+' ' Text.Whitespace
+'validator_pubkey' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'description' Name
+':' Punctuation
+'^' Operator
+'ComplaintDescr' Name
+' ' Text.Whitespace
+'created_at' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'severity' Name
+':' Punctuation
+'uint8' Name
+' ' Text.Whitespace
+'reward_addr' Name
+':' Punctuation
+'uint256' Name
+' ' Text.Whitespace
+'paid' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'suggested_fine' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'suggested_fine_part' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ValidatorComplaint' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'complaint_status' Name
+'#2d' Name.Tag
+' ' Text.Whitespace
+'complaint' Name
+':' Punctuation
+'^' Operator
+'ValidatorComplaint' Name
+' ' Text.Whitespace
+'voters' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'16' Literal.Number
+' ' Text.Whitespace
+'True' Name
+')' Punctuation
+' ' Text.Whitespace
+'vset_id' Name
+':' Punctuation
+'uint256' Name
+' ' Text.Whitespace
+'weight_remaining' Name
+':' Punctuation
+'int64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ValidatorComplaintStatus' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'// TVM REFLECTION' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'vm_stk_null' Name
+'#00' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmStackValue' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_stk_tinyint' Name
+'#01' Name.Tag
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'int64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmStackValue' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_stk_int' Name
+'#0201_' Name.Tag
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'int257' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmStackValue' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_stk_nan' Name
+'#02ff' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmStackValue' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_stk_cell' Name
+'#03' Name.Tag
+' ' Text.Whitespace
+'cell' Name
+':' Punctuation
+'^' Operator
+'Cell' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmStackValue' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'cell' Name
+':' Punctuation
+'^' Operator
+'Cell' Name
+' ' Text.Whitespace
+'st_bits' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'10' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'end_bits' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'10' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'st_bits' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'end_bits' Name
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'st_ref' Name
+':' Punctuation
+'(' Punctuation
+'#<=' Name.Tag
+' ' Text.Whitespace
+'4' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'end_ref' Name
+':' Punctuation
+'(' Punctuation
+'#<=' Name.Tag
+' ' Text.Whitespace
+'4' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'st_ref' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'end_ref' Name
+' ' Text.Whitespace
+'}' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmCellSlice' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_stk_slice' Name
+'#04' Name.Tag
+' ' Text.Whitespace
+'_' Name
+':' Punctuation
+'VmCellSlice' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmStackValue' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_stk_builder' Name
+'#05' Name.Tag
+' ' Text.Whitespace
+'cell' Name
+':' Punctuation
+'^' Operator
+'Cell' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmStackValue' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_stk_cont' Name
+'#06' Name.Tag
+' ' Text.Whitespace
+'cont' Name
+':' Punctuation
+'VmCont' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmStackValue' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_tupref_nil' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmTupleRef' Name
+' ' Text.Whitespace
+'0' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_tupref_single' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'entry' Name
+':' Punctuation
+'^' Operator
+'VmStackValue' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmTupleRef' Name
+' ' Text.Whitespace
+'1' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_tupref_any' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'ref' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'VmTuple' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'2' Literal.Number
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmTupleRef' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'2' Literal.Number
+')' Punctuation
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_tuple_nil' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmTuple' Name
+' ' Text.Whitespace
+'0' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_tuple_tcons' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'head' Name
+':' Punctuation
+'(' Punctuation
+'VmTupleRef' Name
+' ' Text.Whitespace
+'n' Name
+')' Punctuation
+' ' Text.Whitespace
+'tail' Name
+':' Punctuation
+'^' Operator
+'VmStackValue' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmTuple' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_stk_tuple' Name
+'#07' Name.Tag
+' ' Text.Whitespace
+'len' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'16' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'data' Name
+':' Punctuation
+'(' Punctuation
+'VmTuple' Name
+' ' Text.Whitespace
+'len' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmStackValue' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'vm_stack' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'depth' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'24' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'stack' Name
+':' Punctuation
+'(' Punctuation
+'VmStackList' Name
+' ' Text.Whitespace
+'depth' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmStack' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_stk_cons' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'rest' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'VmStackList' Name
+' ' Text.Whitespace
+'n' Name
+')' Punctuation
+' ' Text.Whitespace
+'tos' Name
+':' Punctuation
+'VmStackValue' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmStackList' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+';' Punctuation
+'\n' Text.Whitespace
+
+'vm_stk_nil' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmStackList' Name
+' ' Text.Whitespace
+'0' Literal.Number
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'cregs' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'4' Literal.Number
+' ' Text.Whitespace
+'VmStackValue' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmSaveList' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'gas_limits' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'remaining' Name
+':' Punctuation
+'int64' Name
+' ' Text.Whitespace
+'_' Name
+':' Punctuation
+'^' Operator
+'[' Punctuation
+' ' Text.Whitespace
+'max_limit' Name
+':' Punctuation
+'int64' Name
+' ' Text.Whitespace
+'cur_limit' Name
+':' Punctuation
+'int64' Name
+' ' Text.Whitespace
+'credit' Name
+':' Punctuation
+'int64' Name
+' ' Text.Whitespace
+']' Punctuation
+'\n ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmGasLimits' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'libraries' Name
+':' Punctuation
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'^' Operator
+'Cell' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmLibraries' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'vm_ctl_data' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'nargs' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'uint13' Name
+')' Punctuation
+' ' Text.Whitespace
+'stack' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'VmStack' Name
+')' Punctuation
+' ' Text.Whitespace
+'save' Name
+':' Punctuation
+'VmSaveList' Name
+'\n' Text.Whitespace
+
+'cp' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'int16' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmControlData' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vmc_std' Name
+'$00' Name.Tag
+' ' Text.Whitespace
+'cdata' Name
+':' Punctuation
+'VmControlData' Name
+' ' Text.Whitespace
+'code' Name
+':' Punctuation
+'VmCellSlice' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmCont' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vmc_envelope' Name
+'$01' Name.Tag
+' ' Text.Whitespace
+'cdata' Name
+':' Punctuation
+'VmControlData' Name
+' ' Text.Whitespace
+'next' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmCont' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vmc_quit' Name
+'$1000' Name.Tag
+' ' Text.Whitespace
+'exit_code' Name
+':' Punctuation
+'int32' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmCont' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vmc_quit_exc' Name
+'$1001' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmCont' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vmc_repeat' Name
+'$10100' Name.Tag
+' ' Text.Whitespace
+'count' Name
+':' Punctuation
+'uint63' Name
+' ' Text.Whitespace
+'body' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+' ' Text.Whitespace
+'after' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmCont' Name
+';' Punctuation
+' \n' Text.Whitespace
+
+'vmc_until' Name
+'$110000' Name.Tag
+' ' Text.Whitespace
+'body' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+' ' Text.Whitespace
+'after' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmCont' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vmc_again' Name
+'$110001' Name.Tag
+' ' Text.Whitespace
+'body' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmCont' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vmc_while_cond' Name
+'$110010' Name.Tag
+' ' Text.Whitespace
+'cond' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+' ' Text.Whitespace
+'body' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+'\n' Text.Whitespace
+
+'after' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmCont' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vmc_while_body' Name
+'$110011' Name.Tag
+' ' Text.Whitespace
+'cond' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+' ' Text.Whitespace
+'body' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+'\n' Text.Whitespace
+
+'after' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmCont' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'vmc_pushint' Name
+'$1111' Name.Tag
+' ' Text.Whitespace
+'value' Name
+':' Punctuation
+'int32' Name
+' ' Text.Whitespace
+'next' Name
+':' Punctuation
+'^' Operator
+'VmCont' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'VmCont' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'// DNS RECORDS' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'_' Name
+' ' Text.Whitespace
+'(' Punctuation
+'HashmapE' Name
+' ' Text.Whitespace
+'256' Literal.Number
+' ' Text.Whitespace
+'DNSRecord' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'DNS_RecordSet' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'chunk_ref' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'ref' Name
+':' Punctuation
+'^' Operator
+'(' Punctuation
+'TextChunks' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TextChunkRef' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+';' Punctuation
+'\n' Text.Whitespace
+
+'chunk_ref_empty' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TextChunkRef' Name
+' ' Text.Whitespace
+'0' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'text_chunk' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'{' Punctuation
+'n' Name
+':' Punctuation
+'#' Name.Tag
+'}' Punctuation
+' ' Text.Whitespace
+'len' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'data' Name
+':' Punctuation
+'(' Punctuation
+'bits' Name
+' ' Text.Whitespace
+'(' Punctuation
+'len' Name
+' ' Text.Whitespace
+'*' Operator
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+')' Punctuation
+' ' Text.Whitespace
+'next' Name
+':' Punctuation
+'(' Punctuation
+'TextChunkRef' Name
+' ' Text.Whitespace
+'n' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TextChunks' Name
+' ' Text.Whitespace
+'(' Punctuation
+'n' Name
+' ' Text.Whitespace
+'+' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+')' Punctuation
+';' Punctuation
+'\n' Text.Whitespace
+
+'text_chunk_empty' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'TextChunks' Name
+' ' Text.Whitespace
+'0' Literal.Number
+';' Punctuation
+'\n' Text.Whitespace
+
+'text' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'chunks' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'rest' Name
+':' Punctuation
+'(' Punctuation
+'TextChunks' Name
+' ' Text.Whitespace
+'chunks' Name
+')' Punctuation
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Text' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'dns_text' Name
+'#1eda' Name.Tag
+' ' Text.Whitespace
+'_' Name
+':' Punctuation
+'Text' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'DNSRecord' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'dns_next_resolver' Name
+'#ba93' Name.Tag
+' ' Text.Whitespace
+'resolver' Name
+':' Punctuation
+'MsgAddressInt' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'DNSRecord' Name
+';' Punctuation
+' ' Text.Whitespace
+'// usually in record #-1' Comment.Singleline
+'\n\n' Text.Whitespace
+
+'dns_adnl_address' Name
+'#ad01' Name.Tag
+' ' Text.Whitespace
+'adnl_addr' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'flags' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'flags' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'proto_list' Name
+':' Punctuation
+'flags' Name
+' ' Text.Whitespace
+'.' Operator
+' ' Text.Whitespace
+'0' Literal.Number
+'?' Operator
+'ProtoList' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'DNSRecord' Name
+';' Punctuation
+' ' Text.Whitespace
+'// often in record #2' Comment.Singleline
+'\n' Text.Whitespace
+
+'proto_list_nil' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ProtoList' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'proto_list_next' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'head' Name
+':' Punctuation
+'Protocol' Name
+' ' Text.Whitespace
+'tail' Name
+':' Punctuation
+'ProtoList' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ProtoList' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'proto_http' Name
+'#4854' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'Protocol' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'dns_smc_address' Name
+'#9fd3' Name.Tag
+' ' Text.Whitespace
+'smc_addr' Name
+':' Punctuation
+'MsgAddressInt' Name
+' ' Text.Whitespace
+'flags' Name
+':' Punctuation
+'(' Punctuation
+'##' Name.Tag
+' ' Text.Whitespace
+'8' Literal.Number
+')' Punctuation
+' ' Text.Whitespace
+'{' Punctuation
+' ' Text.Whitespace
+'flags' Name
+' ' Text.Whitespace
+'<=' Operator
+' ' Text.Whitespace
+'1' Literal.Number
+' ' Text.Whitespace
+'}' Punctuation
+'\n ' Text.Whitespace
+'cap_list' Name
+':' Punctuation
+'flags' Name
+' ' Text.Whitespace
+'.' Operator
+' ' Text.Whitespace
+'0' Literal.Number
+'?' Operator
+'SmcCapList' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'DNSRecord' Name
+';' Punctuation
+' ' Text.Whitespace
+'// often in record #1' Comment.Singleline
+'\n' Text.Whitespace
+
+'cap_list_nil' Name
+'$0' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'SmcCapList' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'cap_list_next' Name
+'$1' Name.Tag
+' ' Text.Whitespace
+'head' Name
+':' Punctuation
+'SmcCapability' Name
+' ' Text.Whitespace
+'tail' Name
+':' Punctuation
+'SmcCapList' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'SmcCapList' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'cap_method_seqno' Name
+'#5371' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'SmcCapability' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'cap_method_pubkey' Name
+'#71f4' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'SmcCapability' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'cap_is_wallet' Name
+'#2177' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'SmcCapability' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'cap_name' Name
+'#ff' Name.Tag
+' ' Text.Whitespace
+'name' Name
+':' Punctuation
+'Text' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'SmcCapability' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n' Text.Whitespace
+
+'// PAYMENT CHANNELS' Comment.Singleline
+'\n' Text.Whitespace
+
+'//' Comment.Singleline
+'\n\n' Text.Whitespace
+
+'chan_config' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'init_timeout' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'close_timeout' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'a_key' Name
+':' Punctuation
+'bits256' Name
+' ' Text.Whitespace
+'b_key' Name
+':' Punctuation
+'bits256' Name
+' \n ' Text.Whitespace
+'a_addr' Name
+':' Punctuation
+'^' Operator
+'MsgAddressInt' Name
+' ' Text.Whitespace
+'b_addr' Name
+':' Punctuation
+'^' Operator
+'MsgAddressInt' Name
+' ' Text.Whitespace
+'channel_id' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'min_A_extra' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanConfig' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'chan_state_init' Name
+'$000' Name.Tag
+' ' Text.Whitespace
+'signed_A' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'signed_B' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'min_A' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'min_B' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'expire_at' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'A' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'B' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanState' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'chan_state_close' Name
+'$001' Name.Tag
+' ' Text.Whitespace
+'signed_A' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'signed_B' Name
+':' Punctuation
+'Bool' Name
+' ' Text.Whitespace
+'promise_A' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'promise_B' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'expire_at' Name
+':' Punctuation
+'uint32' Name
+' ' Text.Whitespace
+'A' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'B' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanState' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'chan_state_payout' Name
+'$010' Name.Tag
+' ' Text.Whitespace
+'A' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'B' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanState' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'chan_promise' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'channel_id' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'promise_A' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'promise_B' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanPromise' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'chan_signed_promise' Name
+'#_' Name.Tag
+' ' Text.Whitespace
+'sig' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'bits512' Name
+')' Punctuation
+' ' Text.Whitespace
+'promise' Name
+':' Punctuation
+'ChanPromise' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanSignedPromise' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'chan_msg_init' Name
+'#27317822' Name.Tag
+' ' Text.Whitespace
+'inc_A' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'inc_B' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'min_A' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'min_B' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'channel_id' Name
+':' Punctuation
+'uint64' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'chan_msg_close' Name
+'#f28ae183' Name.Tag
+' ' Text.Whitespace
+'extra_A' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'extra_B' Name
+':' Punctuation
+'Grams' Name
+' ' Text.Whitespace
+'promise' Name
+':' Punctuation
+'ChanSignedPromise' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'chan_msg_timeout' Name
+'#43278a28' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanMsg' Name
+';' Punctuation
+'\n' Text.Whitespace
+
+'chan_msg_payout' Name
+'#37fe7810' Name.Tag
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanMsg' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'chan_signed_msg' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'sig_A' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'bits512' Name
+')' Punctuation
+' ' Text.Whitespace
+'sig_B' Name
+':' Punctuation
+'(' Punctuation
+'Maybe' Name
+' ' Text.Whitespace
+'^' Operator
+'bits512' Name
+')' Punctuation
+' ' Text.Whitespace
+'msg' Name
+':' Punctuation
+'ChanMsg' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanSignedMsg' Name
+';' Punctuation
+'\n\n' Text.Whitespace
+
+'chan_op_cmd' Name
+'#912838d1' Name.Tag
+' ' Text.Whitespace
+'msg' Name
+':' Punctuation
+'ChanSignedMsg' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanOp' Name
+';' Punctuation
+'\n\n\n' Text.Whitespace
+
+'chan_data' Name
+'$_' Name.Tag
+' ' Text.Whitespace
+'config' Name
+':' Punctuation
+'^' Operator
+'ChanConfig' Name
+' ' Text.Whitespace
+'state' Name
+':' Punctuation
+'^' Operator
+'ChanState' Name
+' ' Text.Whitespace
+'=' Operator
+' ' Text.Whitespace
+'ChanData' Name
+';' Punctuation
+'\n' Text.Whitespace