LCOV - code coverage report
Current view: top level - discof/restore/utils - fd_ssmanifest_parser.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 790 1906 41.4 %
Date: 2026-08-13 04:56:22 Functions: 13 13 100.0 %

          Line data    Source code
       1             : #include "fd_ssmanifest_parser.h"
       2             : 
       3             : #include "fd_ssmsg.h"
       4             : 
       5             : #include "../../../util/log/fd_log.h"
       6             : #include "../../../flamenco/runtime/sysvar/fd_sysvar_epoch_schedule.h"
       7             : 
       8             : #define SSMANIFEST_DEBUG 0
       9             : 
      10             : #define MAX_SPARSE_ARRAY_LEN      (1UL<<20UL) /* upper bound on element count for sparsely validated arrays */
      11             : #define MAX_VOTE_ACCOUNT_DATA_LEN (10UL*(1UL<<20UL)) /* 10 MiB upper bound on vote account data byte size */
      12             : 
      13           9 : #define STATE_BLOCKHASH_QUEUE_LAST_HASH_INDEX                                                            (  0)
      14          12 : #define STATE_BLOCKHASH_QUEUE_LAST_HASH_OPTION                                                           (  1)
      15           6 : #define STATE_BLOCKHASH_QUEUE_LAST_HASH                                                                  (  2)
      16          15 : #define STATE_BLOCKHASH_QUEUE_AGES_LENGTH                                                                (  3)
      17           6 : #define STATE_BLOCKHASH_QUEUE_AGES_HASH                                                                  (  4)
      18           6 : #define STATE_BLOCKHASH_QUEUE_AGES_LAMPORTS_PER_SIGNATURE                                                (  5)
      19           6 : #define STATE_BLOCKHASH_QUEUE_AGES_HASH_INDEX                                                            (  6)
      20           9 : #define STATE_BLOCKHASH_QUEUE_AGES_TIMESTAMP                                                             (  7)
      21          12 : #define STATE_BLOCKHASH_QUEUE_MAX_AGE                                                                    (  8)
      22          12 : #define STATE_ANCESTORS_LENGTH                                                                           (  9)
      23           0 : #define STATE_ANCESTORS_SLOT                                                                             ( 10)
      24           0 : #define STATE_ANCESTORS_VAL                                                                              ( 11)
      25           9 : #define STATE_HASH                                                                                       ( 12)
      26           6 : #define STATE_PARENT_HASH                                                                                ( 13)
      27           6 : #define STATE_PARENT_SLOT                                                                                ( 14)
      28          12 : #define STATE_HARD_FORKS_LENGTH                                                                          ( 15)
      29           0 : #define STATE_HARD_FORKS_SLOT                                                                            ( 16)
      30           0 : #define STATE_HARD_FORKS_VAL                                                                             ( 17)
      31           9 : #define STATE_TRANSACTION_COUNT                                                                          ( 18)
      32           6 : #define STATE_TICK_HEIGHT                                                                                ( 19)
      33           6 : #define STATE_SIGNATURE_COUNT                                                                            ( 20)
      34           6 : #define STATE_CAPITALIZATION                                                                             ( 21)
      35           6 : #define STATE_MAX_TICK_HEIGHT                                                                            ( 22)
      36          12 : #define STATE_HASHES_PER_TICK_OPTION                                                                     ( 23)
      37           6 : #define STATE_HASHES_PER_TICK                                                                            ( 24)
      38           6 : #define STATE_TICKS_PER_SLOT                                                                             ( 25)
      39           6 : #define STATE_NS_PER_SLOT                                                                                ( 26)
      40           6 : #define STATE_GENSIS_CREATION_TIME                                                                       ( 27)
      41           6 : #define STATE_SLOTS_PER_YEAR                                                                             ( 28)
      42           6 : #define STATE_ACCOUNTS_DATA_LEN                                                                          ( 29)
      43           6 : #define STATE_SLOT                                                                                       ( 30)
      44           6 : #define STATE_EPOCH                                                                                      ( 31)
      45           6 : #define STATE_BLOCK_HEIGHT                                                                               ( 32)
      46           6 : #define STATE_COLLECTOR_ID                                                                               ( 33)
      47           6 : #define STATE_COLLECTOR_FEES                                                                             ( 34)
      48           6 : #define STATE_FEE_COLLECTOR_LAMPORTS_PER_SIGNATURE                                                       ( 35)
      49           6 : #define STATE_FEE_RATE_GOVERNOR_TARGET_LAMPORTS_PER_SIGNATURE                                            ( 36)
      50           6 : #define STATE_FEE_RATE_GOVERNOR_TARGET_SIGNATURES_PER_SLOT                                               ( 37)
      51           6 : #define STATE_FEE_RATE_GOVERNOR_MIN_LAMPORTS_PER_SIGNATURE                                               ( 38)
      52           6 : #define STATE_FEE_RATE_GOVERNOR_MAX_LAMPORTS_PER_SIGNATURE                                               ( 39)
      53           6 : #define STATE_FEE_RATE_GOVERNOR_BURN_PERCENT                                                             ( 40)
      54           6 : #define STATE_COLLECTED_RENT                                                                             ( 41)
      55           6 : #define STATE_RENT_COLLECTOR_EPOCH                                                                       ( 42)
      56           6 : #define STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_SLOTS_PER_EPOCH                                              ( 43)
      57           6 : #define STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET                                  ( 44)
      58           6 : #define STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_WARMUP                                                       ( 45)
      59           6 : #define STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_FIRST_NORMAL_EPOCH                                           ( 46)
      60           6 : #define STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT                                            ( 47)
      61           6 : #define STATE_RENT_COLLECTOR_SLOTS_PER_YEAR                                                              ( 48)
      62           6 : #define STATE_RENT_COLLECTOR_RENT_LAMPORTS_PER_UINT8_YEAR                                                ( 49)
      63           6 : #define STATE_RENT_COLLECTOR_RENT_EXEMPTION_THRESHOLD                                                    ( 50)
      64           6 : #define STATE_RENT_COLLECTOR_RENT_BURN_PERCENT                                                           ( 51)
      65           6 : #define STATE_EPOCH_SCHEDULE_SLOTS_PER_EPOCH                                                             ( 52)
      66           6 : #define STATE_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET                                                 ( 53)
      67           9 : #define STATE_EPOCH_SCHEDULE_WARMUP                                                                      ( 54)
      68           6 : #define STATE_EPOCH_SCHEDULE_FIRST_NORMAL_EPOCH                                                          ( 55)
      69           6 : #define STATE_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT                                                           ( 56)
      70           6 : #define STATE_INFLATION_INITIAL                                                                          ( 57)
      71           6 : #define STATE_INFLATION_TERMINAL                                                                         ( 58)
      72           6 : #define STATE_INFLATION_TAPER                                                                            ( 59)
      73           6 : #define STATE_INFLATION_FOUNDATION                                                                       ( 60)
      74           6 : #define STATE_INFLATION_FOUNDATION_TERM                                                                  ( 61)
      75           6 : #define STATE_INFLATION_UNUSED                                                                           ( 62)
      76          12 : #define STATE_STAKES_VOTE_ACCOUNTS_LENGTH                                                                ( 63)
      77           0 : #define STATE_STAKES_VOTE_ACCOUNTS_KEY                                                                   ( 64)
      78           0 : #define STATE_STAKES_VOTE_ACCOUNTS_STAKE                                                                 ( 65)
      79           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS                                                        ( 66)
      80           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH                                                     ( 67)
      81           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT                                                    ( 68)
      82           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_NODE_PUBKEY                                             ( 69)
      83           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_WITHDRAWER                                   ( 70)
      84           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COLLECTOR                             ( 71)
      85           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COLLECTOR                                 ( 72)
      86           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COMMISSION_BPS                        ( 73)
      87           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COMMISSION_BPS                            ( 74)
      88           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_PENDING_DELEGATOR_REWARDS                               ( 75)
      89           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION                            ( 76)
      90           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED                                   ( 77)
      91           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES_LENGTH                                            ( 78)
      92           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES                                                   ( 79)
      93           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION                                        ( 80)
      94           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT                                               ( 81)
      95           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS_LENGTH                                ( 82)
      96           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS                                       ( 83)
      97           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS_LENGTH                                    ( 84)
      98           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS                                           ( 85)
      99           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_SLOT                                     ( 86)
     100           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_TIMESTAMP                                ( 87)
     101           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY                                             ( 88)
     102           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_WITHDRAWER                                   ( 89)
     103           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_COMMISSION                                              ( 90)
     104           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES_LENGTH                                            ( 91)
     105           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES                                                   ( 92)
     106           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION                                        ( 93)
     107           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT                                               ( 94)
     108           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH                                ( 95)
     109           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS                                       ( 96)
     110           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_PRIOR_VOTERS                                            ( 97)
     111           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS_LENGTH                                    ( 98)
     112           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS                                           ( 99)
     113           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_SLOT                                     (100)
     114           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_TIMESTAMP                                (101)
     115           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY                                         (102)
     116           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER                               (103)
     117           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION                                          (104)
     118           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH                                        (105)
     119           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES                                               (106)
     120           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION                                    (107)
     121           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT                                           (108)
     122           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH                            (109)
     123           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS                                   (110)
     124           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS                                        (111)
     125           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH                                (112)
     126           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS                                       (113)
     127           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT                                 (114)
     128           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP                            (115)
     129           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY                                          (116)
     130           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER                                     (117)
     131           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH                               (118)
     132           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS                                         (119)
     133           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER                                (120)
     134           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION                                           (121)
     135           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH                                         (122)
     136           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES                                                (123)
     137           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION                                     (124)
     138           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT                                            (125)
     139           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH                                 (126)
     140           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS                                        (127)
     141           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT                                  (128)
     142           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP                             (129)
     143           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY                                                      (130)
     144           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_OWNER                                                           (131)
     145           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE                                                      (132)
     146           0 : #define STATE_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH                                                      (133)
     147          15 : #define STATE_STAKES_STAKE_DELEGATIONS_LENGTH                                                            (134)
     148           0 : #define STATE_STAKES_STAKE_DELEGATIONS_KEY                                                               (135)
     149           0 : #define STATE_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY                                                      (136)
     150           0 : #define STATE_STAKES_STAKE_DELEGATIONS_STAKE                                                             (137)
     151           0 : #define STATE_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH                                                  (138)
     152           0 : #define STATE_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH                                                (139)
     153           0 : #define STATE_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE                                              (140)
     154           9 : #define STATE_STAKES_UNUSED                                                                              (141)
     155           6 : #define STATE_STAKES_EPOCH                                                                               (142)
     156           9 : #define STATE_STAKES_STAKE_HISTORY_LENGTH                                                                (143)
     157           6 : #define STATE_STAKES_STAKE_HISTORY                                                                       (144)
     158           9 : #define STATE_UNUSED_ACCOUNTS1_LENGTH                                                                    (145)
     159           6 : #define STATE_UNUSED_ACCOUNTS1_UNUSED                                                                    (146)
     160          12 : #define STATE_UNUSED_ACCOUNTS2_LENGTH                                                                    (147)
     161           6 : #define STATE_UNUSED_ACCOUNTS2_UNUSED                                                                    (148)
     162          15 : #define STATE_UNUSED_ACCOUNTS3_LENGTH                                                                    (149)
     163           6 : #define STATE_UNUSED_ACCOUNTS3_UNUSED                                                                    (150)
     164          12 : #define STATE_EPOCH_STAKES_LENGTH                                                                        (151)
     165           0 : #define STATE_EPOCH_STAKES_KEY                                                                           (152)
     166           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH                                                          (153)
     167           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_KEY                                                             (154)
     168           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_STAKE                                                           (155)
     169           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS                                                  (156)
     170           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH                                               (157)
     171           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT                                              (158)
     172           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_NODE_PUBKEY                                       (159)
     173           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_WITHDRAWER                             (160)
     174           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COLLECTOR                       (161)
     175           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COLLECTOR                           (162)
     176           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COMMISSION_BPS                  (163)
     177           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COMMISSION_BPS                      (164)
     178           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_PENDING_DELEGATOR_REWARDS                         (165)
     179           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION                      (166)
     180           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED                             (167)
     181           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES_LENGTH                                      (168)
     182           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES                                             (169)
     183           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION                                  (170)
     184           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT                                         (171)
     185           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS_LENGTH                          (172)
     186           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS                                 (173)
     187           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS_LENGTH                              (174)
     188           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS                                     (175)
     189           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_SLOT                               (176)
     190           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_TIMESTAMP                          (177)
     191           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY                                       (178)
     192           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_WITHDRAWER                             (179)
     193           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_COMMISSION                                        (180)
     194          27 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES_LENGTH                                      (181)
     195           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES                                             (182)
     196           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION                                  (183)
     197           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT                                         (184)
     198           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH                          (185)
     199           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS                                 (186)
     200           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_PRIOR_VOTERS                                      (187)
     201           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS_LENGTH                              (188)
     202           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS                                     (189)
     203           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_SLOT                               (190)
     204           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_TIMESTAMP                          (191)
     205           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY                                   (192)
     206           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER                         (193)
     207           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION                                    (194)
     208           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH                                  (195)
     209           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES                                         (196)
     210           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION                              (197)
     211           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT                                     (198)
     212           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH                      (199)
     213           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS                             (200)
     214           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS                                  (201)
     215           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH                          (202)
     216           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS                                 (203)
     217           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT                           (204)
     218           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP                      (205)
     219           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY                                    (206)
     220           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER                               (207)
     221           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH                         (208)
     222           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS                                   (209)
     223           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER                          (210)
     224           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION                                     (211)
     225           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH                                   (212)
     226           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES                                          (213)
     227           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION                               (214)
     228           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT                                      (215)
     229           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH                           (216)
     230           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS                                  (217)
     231           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT                            (218)
     232           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP                       (219)
     233           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY                                                (220)
     234           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_OWNER                                                     (221)
     235           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE                                                (222)
     236           0 : #define STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH                                                (223)
     237           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH                                                      (224)
     238           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_KEY                                                         (225)
     239           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY                                                (226)
     240           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_STAKE                                                       (227)
     241           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH                                            (228)
     242           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH                                          (229)
     243           0 : #define STATE_EPOCH_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE                                        (230)
     244           0 : #define STATE_EPOCH_STAKES_UNUSED                                                                        (231)
     245           0 : #define STATE_EPOCH_STAKES_EPOCH                                                                         (232)
     246           0 : #define STATE_EPOCH_STAKES_STAKE_HISTORY_LENGTH                                                          (233)
     247           0 : #define STATE_EPOCH_STAKES_STAKE_HISTORY                                                                 (234)
     248           0 : #define STATE_EPOCH_STAKES_TOTAL_STAKE                                                                   (235)
     249           0 : #define STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH                                               (236)
     250           0 : #define STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_KEY                                                  (237)
     251           0 : #define STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH                                 (238)
     252           0 : #define STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS                                        (239)
     253           0 : #define STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE                                          (240)
     254           0 : #define STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH                                                (241)
     255           0 : #define STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS                                                       (242)
     256           9 : #define STATE_IS_DELTA                                                                                   (243)
     257          12 : #define STATE_ACCOUNTS_DB_STORAGES_LENGTH                                                                (244)
     258           0 : #define STATE_ACCOUNTS_DB_STORAGES_SLOT                                                                  (245)
     259           0 : #define STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_LENGTH                                                   (246)
     260           0 : #define STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_ID                                                       (247)
     261           0 : #define STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_FILE_SZ                                                  (248)
     262           0 : #define STATE_ACCOUNTS_DB_STORAGES_DUMMY                                                                 (249)
     263           9 : #define STATE_ACCOUNTS_DB_VERSION                                                                        (250)
     264           6 : #define STATE_ACCOUNTS_DB_SLOT                                                                           (251)
     265           6 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_ACCOUNTS_DELTA_HASH                                             (252)
     266           6 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_ACCOUNTS_HASH                                                   (253)
     267           6 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_UPDATED_ACCOUNTS                                      (254)
     268           6 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_REMOVED_ACCOUNTS                                      (255)
     269           6 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_LAMPORTS_STORED                                       (256)
     270           6 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_TOTAL_DATA_LEN                                            (257)
     271           6 : #define STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_EXECUTABLE_ACCOUNTS                                   (258)
     272           9 : #define STATE_ACCOUNTS_DB_HISTORICAL_ROOTS_LENGTH                                                        (259)
     273           6 : #define STATE_ACCOUNTS_DB_HISTORICAL_ROOTS                                                               (260)
     274          12 : #define STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH_LENGTH                                                    (261)
     275           6 : #define STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH                                                           (262)
     276           6 : #define STATE_LAMPORTS_PER_SIGNATURE                                                                     (263)
     277          12 : #define STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_OPTION                                               (264)
     278           0 : #define STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_SLOT                                            (265)
     279           0 : #define STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_HASH                                            (266)
     280           0 : #define STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_CAPITALIZATION                                  (267)
     281           0 : #define STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_INCREMENTAL_HASH                                     (268)
     282           0 : #define STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_INCREMENTAL_CAPITALIZATION                           (269)
     283          15 : #define STATE_EPOCH_ACCOUNT_HASH_OPTION                                                                  (270)
     284           0 : #define STATE_EPOCH_ACCOUNT_HASH                                                                         (271)
     285          21 : #define STATE_VERSIONED_EPOCH_STAKES_LENGTH                                                              (272)
     286          18 : #define STATE_VERSIONED_EPOCH_STAKES_EPOCH                                                               (273)
     287          27 : #define STATE_VERSIONED_EPOCH_STAKES_VARIANT                                                             (274)
     288          63 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH                                         (275)
     289          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_KEY                                            (276)
     290          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_STAKE                                          (277)
     291          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS                                 (278)
     292          81 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH                              (279)
     293          81 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT                             (280)
     294          81 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_NODE_PUBKEY                      (281)
     295          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_WITHDRAWER            (282)
     296          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COLLECTOR      (283)
     297          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COLLECTOR          (284)
     298          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COMMISSION_BPS (285)
     299          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COMMISSION_BPS     (286)
     300          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_PENDING_DELEGATOR_REWARDS        (287)
     301         108 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION     (288)
     302           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED            (289)
     303          81 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES_LENGTH                     (290)
     304          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES                            (291)
     305         108 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION                 (292)
     306           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT                        (293)
     307          81 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS_LENGTH         (294)
     308          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS                (295)
     309          81 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS_LENGTH             (296)
     310          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS                    (297)
     311          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_SLOT              (298)
     312          81 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_TIMESTAMP         (299)
     313           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY                      (300)
     314           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_WITHDRAWER            (301)
     315           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_COMMISSION                       (302)
     316          27 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES_LENGTH                     (303)
     317           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES                            (304)
     318           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION                 (305)
     319           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT                        (306)
     320          27 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH         (307)
     321           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS                (308)
     322           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_PRIOR_VOTERS                     (309)
     323          27 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS_LENGTH             (310)
     324           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS                    (311)
     325           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_SLOT              (312)
     326          27 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_TIMESTAMP         (313)
     327           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY                  (314)
     328           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER        (315)
     329           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION                   (316)
     330           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH                 (317)
     331           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES                        (318)
     332           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION             (319)
     333           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT                    (320)
     334          27 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH     (321)
     335           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS            (322)
     336           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS                 (323)
     337          27 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH         (324)
     338           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS                (325)
     339           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT          (326)
     340          27 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP     (327)
     341           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY                   (328)
     342           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER              (329)
     343           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH        (330)
     344           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS                  (331)
     345           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER         (332)
     346           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION                    (333)
     347           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH                  (334)
     348           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES                         (335)
     349           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION              (336)
     350           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT                     (337)
     351          27 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH          (338)
     352           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS                 (339)
     353           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT           (340)
     354          27 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP      (341)
     355          81 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY                               (342)
     356          54 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_OWNER                                    (343)
     357          81 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE                               (344)
     358          81 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH                               (345)
     359          72 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH                                     (346)
     360           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_KEY                                        (347)
     361           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY                               (348)
     362           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_STAKE                                      (349)
     363           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH                           (350)
     364           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH                         (351)
     365           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE                       (352)
     366           0 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_CREDITS_OBSERVED                           (353)
     367          27 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_UNUSED                                                       (354)
     368          18 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_EPOCH                                                        (355)
     369          27 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY_LENGTH                                         (356)
     370          18 : #define STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY                                                (357)
     371          18 : #define STATE_VERSIONED_EPOCH_STAKES_TOTAL_STAKE                                                         (358)
     372          36 : #define STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH                                     (359)
     373           0 : #define STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_KEY                                        (360)
     374           0 : #define STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH                       (361)
     375           0 : #define STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS                              (362)
     376           0 : #define STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE                                (363)
     377          36 : #define STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH                                      (364)
     378          27 : #define STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS                                             (365)
     379          24 : #define STATE_LTHASH_OPTION                                                                              (366)
     380           6 : #define STATE_LTHASH                                                                                     (367)
     381          12 : #define STATE_BLOCK_ID_OPTION                                                                            (368)
     382           9 : #define STATE_BLOCK_ID                                                                                   (369)
     383           9 : #define STATE_DONE                                                                                       (370)
     384             : 
     385             : struct fd_ssmanifest_parser_private {
     386             :   int     state;
     387             :   ulong   off;
     388             :   uchar * dst;
     389             :   ulong   dst_cur;
     390             :   ulong   dst_sz;
     391             : 
     392             :   uchar   option;
     393             :   uint    variant;
     394             : 
     395             :   ulong   idx1;
     396             :   ulong   idx2;
     397             :   ulong   length1;
     398             :   ulong   length2;
     399             :   ulong   length3;
     400             :   ulong   length4;
     401             : 
     402             :   ulong   epoch_stakes_len;
     403             :   ulong   epoch;
     404             :   ulong   epoch_stakes_epoch;
     405             :   ulong   epoch_idx;
     406             :   ulong   leader_schedule_epoch;
     407             : 
     408             :   ulong   account_data_start;
     409             : 
     410             :   ulong acc_vec_slot;
     411             :   ulong acc_vec_file_sz;
     412             : 
     413             :   ulong seed;
     414             : 
     415             :   fd_snapshot_manifest_t * manifest;
     416             : };
     417             : 
     418             : static inline ulong
     419        1098 : state_size( fd_ssmanifest_parser_t * parser ) {
     420        1098 :   ulong length1 = parser->length1;
     421        1098 :   ulong length2 = parser->length2;
     422        1098 :   ulong length3 = parser->length3;
     423        1098 :   ulong length4 = parser->length4;
     424             : 
     425        1098 :   switch( parser->state ) {
     426           3 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH_INDEX:                                                               return 8UL         ;
     427           3 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH_OPTION:                                                              return 1UL         ;
     428           3 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH:                                                                     return 32UL        ;
     429           3 :     case STATE_BLOCKHASH_QUEUE_AGES_LENGTH:                                                                   return 8UL         ;
     430           3 :     case STATE_BLOCKHASH_QUEUE_AGES_HASH:                                                                     return 32UL        ;
     431           3 :     case STATE_BLOCKHASH_QUEUE_AGES_LAMPORTS_PER_SIGNATURE:                                                   return 8UL         ;
     432           3 :     case STATE_BLOCKHASH_QUEUE_AGES_HASH_INDEX:                                                               return 8UL         ;
     433           3 :     case STATE_BLOCKHASH_QUEUE_AGES_TIMESTAMP:                                                                return 8UL         ;
     434           3 :     case STATE_BLOCKHASH_QUEUE_MAX_AGE:                                                                       return 8UL         ;
     435           3 :     case STATE_ANCESTORS_LENGTH:                                                                              return 8UL         ;
     436           0 :     case STATE_ANCESTORS_SLOT:                                                                                return 8UL         ;
     437           0 :     case STATE_ANCESTORS_VAL:                                                                                 return 8UL         ;
     438           3 :     case STATE_HASH:                                                                                          return 32UL        ;
     439           3 :     case STATE_PARENT_HASH:                                                                                   return 32UL        ;
     440           3 :     case STATE_PARENT_SLOT:                                                                                   return 8UL         ;
     441           3 :     case STATE_HARD_FORKS_LENGTH:                                                                             return 8UL         ;
     442           0 :     case STATE_HARD_FORKS_SLOT:                                                                               return 8UL         ;
     443           0 :     case STATE_HARD_FORKS_VAL:                                                                                return 8UL         ;
     444           3 :     case STATE_TRANSACTION_COUNT:                                                                             return 8UL         ;
     445           3 :     case STATE_TICK_HEIGHT:                                                                                   return 8UL         ;
     446           3 :     case STATE_SIGNATURE_COUNT:                                                                               return 8UL         ;
     447           3 :     case STATE_CAPITALIZATION:                                                                                return 8UL         ;
     448           3 :     case STATE_MAX_TICK_HEIGHT:                                                                               return 8UL         ;
     449           3 :     case STATE_HASHES_PER_TICK_OPTION:                                                                        return 1UL         ;
     450           3 :     case STATE_HASHES_PER_TICK:                                                                               return 8UL         ;
     451           3 :     case STATE_TICKS_PER_SLOT:                                                                                return 8UL         ;
     452           3 :     case STATE_NS_PER_SLOT:                                                                                   return 16UL        ;
     453           3 :     case STATE_GENSIS_CREATION_TIME:                                                                          return 8UL         ;
     454           3 :     case STATE_SLOTS_PER_YEAR:                                                                                return 8UL         ;
     455           3 :     case STATE_ACCOUNTS_DATA_LEN:                                                                             return 8UL         ;
     456           3 :     case STATE_SLOT:                                                                                          return 8UL         ;
     457           3 :     case STATE_EPOCH:                                                                                         return 8UL         ;
     458           3 :     case STATE_BLOCK_HEIGHT:                                                                                  return 8UL         ;
     459           3 :     case STATE_COLLECTOR_ID:                                                                                  return 32UL        ;
     460           3 :     case STATE_COLLECTOR_FEES:                                                                                return 8UL         ;
     461           3 :     case STATE_FEE_COLLECTOR_LAMPORTS_PER_SIGNATURE:                                                          return 8UL         ;
     462           3 :     case STATE_FEE_RATE_GOVERNOR_TARGET_LAMPORTS_PER_SIGNATURE:                                               return 8UL         ;
     463           3 :     case STATE_FEE_RATE_GOVERNOR_TARGET_SIGNATURES_PER_SLOT:                                                  return 8UL         ;
     464           3 :     case STATE_FEE_RATE_GOVERNOR_MIN_LAMPORTS_PER_SIGNATURE:                                                  return 8UL         ;
     465           3 :     case STATE_FEE_RATE_GOVERNOR_MAX_LAMPORTS_PER_SIGNATURE:                                                  return 8UL         ;
     466           3 :     case STATE_FEE_RATE_GOVERNOR_BURN_PERCENT:                                                                return 1UL         ;
     467           3 :     case STATE_COLLECTED_RENT:                                                                                return 8UL         ;
     468           3 :     case STATE_RENT_COLLECTOR_EPOCH:                                                                          return 8UL         ;
     469           3 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_SLOTS_PER_EPOCH:                                                 return 8UL         ;
     470           3 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET:                                     return 8UL         ;
     471           3 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_WARMUP:                                                          return 1UL         ;
     472           3 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_FIRST_NORMAL_EPOCH:                                              return 8UL         ;
     473           3 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT:                                               return 8UL         ;
     474           3 :     case STATE_RENT_COLLECTOR_SLOTS_PER_YEAR:                                                                 return 8UL         ;
     475           3 :     case STATE_RENT_COLLECTOR_RENT_LAMPORTS_PER_UINT8_YEAR:                                                   return 8UL         ;
     476           3 :     case STATE_RENT_COLLECTOR_RENT_EXEMPTION_THRESHOLD:                                                       return 8UL         ;
     477           3 :     case STATE_RENT_COLLECTOR_RENT_BURN_PERCENT:                                                              return 1UL         ;
     478           3 :     case STATE_EPOCH_SCHEDULE_SLOTS_PER_EPOCH:                                                                return 8UL         ;
     479           3 :     case STATE_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET:                                                    return 8UL         ;
     480           3 :     case STATE_EPOCH_SCHEDULE_WARMUP:                                                                         return 1UL         ;
     481           3 :     case STATE_EPOCH_SCHEDULE_FIRST_NORMAL_EPOCH:                                                             return 8UL         ;
     482           3 :     case STATE_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT:                                                              return 8UL         ;
     483           3 :     case STATE_INFLATION_INITIAL:                                                                             return 8UL         ;
     484           3 :     case STATE_INFLATION_TERMINAL:                                                                            return 8UL         ;
     485           3 :     case STATE_INFLATION_TAPER:                                                                               return 8UL         ;
     486           3 :     case STATE_INFLATION_FOUNDATION:                                                                          return 8UL         ;
     487           3 :     case STATE_INFLATION_FOUNDATION_TERM:                                                                     return 8UL         ;
     488           3 :     case STATE_INFLATION_UNUSED:                                                                              return 8UL         ;
     489           3 :     case STATE_STAKES_VOTE_ACCOUNTS_LENGTH:                                                                   return 8UL         ;
     490           0 :     case STATE_STAKES_VOTE_ACCOUNTS_KEY:                                                                      return 32UL        ;
     491           0 :     case STATE_STAKES_VOTE_ACCOUNTS_STAKE:                                                                    return 8UL         ;
     492           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS:                                                           return 8UL         ;
     493           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                                                        return 8UL         ;
     494           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                                                       return 4UL         ;
     495           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_NODE_PUBKEY:                                                return 32UL        ;
     496           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_WITHDRAWER:                                      return 32UL        ;
     497           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COLLECTOR:                                return 32UL        ;
     498           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COLLECTOR:                                    return 32UL        ;
     499           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COMMISSION_BPS:                           return 2UL         ;
     500           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COMMISSION_BPS:                               return 2UL         ;
     501           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_PENDING_DELEGATOR_REWARDS:                                  return 8UL         ;
     502           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION:                               return 1UL         ;
     503           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED:                                      return 48UL        ;
     504           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES_LENGTH:                                               return 8UL         ;
     505           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES:                                                      return 13UL*length3;
     506           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION:                                           return 1UL         ;
     507           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT:                                                  return 8UL         ;
     508           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS_LENGTH:                                   return 8UL         ;
     509           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS:                                          return 40UL*length3;
     510           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS_LENGTH:                                       return 8UL         ;
     511           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS:                                              return 24UL*length4;
     512           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_SLOT:                                        return 8UL         ;
     513           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_TIMESTAMP:                                   return 8UL         ;
     514           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY:                                                return 32UL        ;
     515           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_WITHDRAWER:                                      return 32UL        ;
     516           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_COMMISSION:                                                 return 1UL         ;
     517           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES_LENGTH:                                               return 8UL         ;
     518           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES:                                                      return 13UL*length3;
     519           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION:                                           return 1UL         ;
     520           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT:                                                  return 8UL         ;
     521           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH:                                   return 8UL         ;
     522           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS:                                          return 40UL*length3;
     523           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_PRIOR_VOTERS:                                               return 9UL+48UL*32UL;
     524           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS_LENGTH:                                       return 8UL         ;
     525           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS:                                              return 24UL*length4;
     526           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_SLOT:                                        return 8UL         ;
     527           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_TIMESTAMP:                                   return 8UL         ;
     528           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY:                                            return 32UL        ;
     529           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER:                                  return 32UL        ;
     530           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:                                             return 1UL         ;
     531           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:                                           return 8UL         ;
     532           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES:                                                  return 12UL*length3;
     533           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:                                       return 1UL         ;
     534           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT:                                              return 8UL         ;
     535           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:                               return 8UL         ;
     536           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS:                                      return 40UL*length3;
     537           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS:                                           return 9UL+48UL*32UL;
     538           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:                                   return 8UL         ;
     539           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS:                                          return 24UL*length4;
     540           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:                                    return 8UL         ;
     541           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:                               return 8UL         ;
     542           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY:                                             return 32UL        ;
     543           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER:                                        return 32UL        ;
     544           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH:                                  return 8UL         ;
     545           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS:                                            return 1800UL      ;
     546           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER:                                   return 32UL        ;
     547           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:                                              return 1UL         ;
     548           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:                                            return 8UL         ;
     549           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES:                                                   return 12UL*length3;
     550           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION:                                        return 1UL         ;
     551           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT:                                               return 8UL         ;
     552           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:                                    return 8UL         ;
     553           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS:                                           return 24UL*length4;
     554           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT:                                     return 8UL         ;
     555           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:                                return 8UL         ;
     556           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY:                                                         return parser->length2-(parser->off-parser->account_data_start);
     557           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_OWNER:                                                              return 32UL        ;
     558           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:                                                         return 1UL         ;
     559           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                                                         return 8UL         ;
     560           3 :     case STATE_STAKES_STAKE_DELEGATIONS_LENGTH:                                                               return 8UL         ;
     561           0 :     case STATE_STAKES_STAKE_DELEGATIONS_KEY:                                                                  return 32UL        ;
     562           0 :     case STATE_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY:                                                         return 32UL        ;
     563           0 :     case STATE_STAKES_STAKE_DELEGATIONS_STAKE:                                                                return 8UL         ;
     564           0 :     case STATE_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH:                                                     return 8UL         ;
     565           0 :     case STATE_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH:                                                   return 8UL         ;
     566           0 :     case STATE_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                                                 return 8UL         ;
     567           3 :     case STATE_STAKES_UNUSED:                                                                                 return 8UL         ;
     568           3 :     case STATE_STAKES_EPOCH:                                                                                  return 8UL         ;
     569           3 :     case STATE_STAKES_STAKE_HISTORY_LENGTH:                                                                   return 8UL         ;
     570           3 :     case STATE_STAKES_STAKE_HISTORY:                                                                          return 32UL*length1;
     571           3 :     case STATE_UNUSED_ACCOUNTS1_LENGTH:                                                                       return 8UL         ;
     572           3 :     case STATE_UNUSED_ACCOUNTS1_UNUSED:                                                                       return 32UL*length1;
     573           3 :     case STATE_UNUSED_ACCOUNTS2_LENGTH:                                                                       return 8UL         ;
     574           3 :     case STATE_UNUSED_ACCOUNTS2_UNUSED:                                                                       return 32UL*length1;
     575           3 :     case STATE_UNUSED_ACCOUNTS3_LENGTH:                                                                       return 8UL         ;
     576           3 :     case STATE_UNUSED_ACCOUNTS3_UNUSED:                                                                       return 40UL*length1;
     577           3 :     case STATE_EPOCH_STAKES_LENGTH:                                                                           return 8UL         ;
     578           0 :     case STATE_EPOCH_STAKES_KEY:                                                                              return 8UL         ;
     579           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH:                                                             return 8UL         ;
     580           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_KEY:                                                                return 32UL        ;
     581           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_STAKE:                                                              return 8UL         ;
     582           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS:                                                     return 8UL         ;
     583           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                                                  return 8UL         ;
     584           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                                                 return 4UL         ;
     585           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_NODE_PUBKEY:                                          return 32UL        ;
     586           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_WITHDRAWER:                                return 32UL        ;
     587           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COLLECTOR:                          return 32UL        ;
     588           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COLLECTOR:                              return 32UL        ;
     589           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COMMISSION_BPS:                     return 2UL         ;
     590           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COMMISSION_BPS:                         return 2UL         ;
     591           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_PENDING_DELEGATOR_REWARDS:                            return 8UL         ;
     592           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION:                         return 1UL         ;
     593           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED:                                return 48UL        ;
     594           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES_LENGTH:                                         return 8UL         ;
     595           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES:                                                return 13UL*length4;
     596           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION:                                     return 1UL         ;
     597           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT:                                            return 8UL         ;
     598           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS_LENGTH:                             return 8UL         ;
     599           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS:                                    return 40UL*length4;
     600           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS_LENGTH:                                 return 8UL         ;
     601           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS:                                        return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );
     602           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_SLOT:                                  return 8UL         ;
     603           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_TIMESTAMP:                             return 8UL         ;
     604           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY:                                          return 32UL        ;
     605           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_WITHDRAWER:                                return 32UL        ;
     606           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_COMMISSION:                                           return 1UL         ;
     607           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES_LENGTH:                                         return 8UL         ;
     608           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES:                                                return 13UL*length4;
     609           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION:                                     return 1UL         ;
     610           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT:                                            return 8UL         ;
     611           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH:                             return 8UL         ;
     612           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS:                                    return 40UL*length4;
     613           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_PRIOR_VOTERS:                                         return 9UL+48UL*32UL;
     614           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS_LENGTH:                                 return 8UL         ;
     615           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS:                                        return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );
     616           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_SLOT:                                  return 8UL         ;
     617           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_TIMESTAMP:                             return 8UL         ;
     618           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY:                                      return 32UL        ;
     619           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER:                            return 32UL        ;
     620           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:                                       return 1UL         ;
     621           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:                                     return 8UL         ;
     622           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES:                                            return 12UL*length4;
     623           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:                                 return 1UL         ;
     624           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT:                                        return 8UL         ;
     625           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:                         return 8UL         ;
     626           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS:                                return 40UL*length4;
     627           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS:                                     return 9UL+48UL*32UL;
     628           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:                             return 8UL         ;
     629           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS:                                    return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );
     630           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:                              return 8UL         ;
     631           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:                         return 8UL         ;
     632           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY:                                       return 32UL        ;
     633           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER:                                  return 32UL        ;
     634           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH:                            return 8UL         ;
     635           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS:                                      return 1800UL      ;
     636           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER:                             return 32UL        ;
     637           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:                                        return 1UL         ;
     638           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:                                      return 8UL         ;
     639           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES:                                             return 12UL*length4;
     640           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION:                                  return 1UL         ;
     641           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT:                                         return 8UL         ;
     642           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:                              return 8UL         ;
     643           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS:                                     return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );
     644           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT:                               return 8UL         ;
     645           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:                          return 8UL         ;
     646           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY:                                                   return parser->length3-(parser->off-parser->account_data_start);
     647           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_OWNER:                                                        return 32UL        ;
     648           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:                                                   return 1UL         ;
     649           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                                                   return 8UL         ;
     650           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH:                                                         return 8UL         ;
     651           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_KEY:                                                            return 32UL        ;
     652           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY:                                                   return 32UL        ;
     653           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_STAKE:                                                          return 8UL         ;
     654           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH:                                               return 8UL         ;
     655           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH:                                             return 8UL         ;
     656           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                                           return 8UL         ;
     657           0 :     case STATE_EPOCH_STAKES_UNUSED:                                                                           return 8UL         ;
     658           0 :     case STATE_EPOCH_STAKES_EPOCH:                                                                            return 8UL         ;
     659           0 :     case STATE_EPOCH_STAKES_STAKE_HISTORY_LENGTH:                                                             return 8UL         ;
     660           0 :     case STATE_EPOCH_STAKES_STAKE_HISTORY:                                                                    return 32UL*length2;
     661           0 :     case STATE_EPOCH_STAKES_TOTAL_STAKE:                                                                      return 8UL         ;
     662           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:                                                  return 8UL         ;
     663           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_KEY:                                                     return 32UL        ;
     664           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH:                                    return 8UL         ;
     665           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS:                                           return 32UL*length3;
     666           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE:                                             return 8UL         ;
     667           0 :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:                                                   return 8UL         ;
     668           0 :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS:                                                          return 64UL*length2;
     669           3 :     case STATE_IS_DELTA:                                                                                      return 1UL         ;
     670           3 :     case STATE_ACCOUNTS_DB_STORAGES_LENGTH:                                                                   return 8UL         ;
     671           0 :     case STATE_ACCOUNTS_DB_STORAGES_SLOT:                                                                     return 8UL         ;
     672           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_LENGTH:                                                      return 8UL         ;
     673           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_ID:                                                          return 8UL         ;
     674           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_FILE_SZ:                                                     return 8UL         ;
     675           0 :     case STATE_ACCOUNTS_DB_STORAGES_DUMMY:                                                                    return 0UL         ;
     676           3 :     case STATE_ACCOUNTS_DB_VERSION:                                                                           return 8UL         ;
     677           3 :     case STATE_ACCOUNTS_DB_SLOT:                                                                              return 8UL         ;
     678           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_ACCOUNTS_DELTA_HASH:                                                return 32UL        ;
     679           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_ACCOUNTS_HASH:                                                      return 32UL        ;
     680           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_UPDATED_ACCOUNTS:                                         return 8UL         ;
     681           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_REMOVED_ACCOUNTS:                                         return 8UL         ;
     682           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_LAMPORTS_STORED:                                          return 8UL         ;
     683           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_TOTAL_DATA_LEN:                                               return 8UL         ;
     684           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_EXECUTABLE_ACCOUNTS:                                      return 8UL         ;
     685           3 :     case STATE_ACCOUNTS_DB_HISTORICAL_ROOTS_LENGTH:                                                           return 8UL         ;
     686           3 :     case STATE_ACCOUNTS_DB_HISTORICAL_ROOTS:                                                                  return 8UL*length1 ;
     687           3 :     case STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH_LENGTH:                                                       return 8UL         ;
     688           3 :     case STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH:                                                              return 40UL*length1;
     689           3 :     case STATE_LAMPORTS_PER_SIGNATURE:                                                                        return 8UL         ;
     690           3 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_OPTION:                                                  return 1UL         ;
     691           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_SLOT:                                               return 8UL         ;
     692           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_HASH:                                               return 32UL        ;
     693           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_CAPITALIZATION:                                     return 8UL         ;
     694           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_INCREMENTAL_HASH:                                        return 32UL        ;
     695           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_INCREMENTAL_CAPITALIZATION:                              return 8UL         ;
     696           3 :     case STATE_EPOCH_ACCOUNT_HASH_OPTION:                                                                     return 1UL         ;
     697           0 :     case STATE_EPOCH_ACCOUNT_HASH:                                                                            return 32UL        ;
     698           3 :     case STATE_VERSIONED_EPOCH_STAKES_LENGTH:                                                                 return 8UL         ;
     699           9 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH:                                                                  return 8UL         ;
     700           9 :     case STATE_VERSIONED_EPOCH_STAKES_VARIANT:                                                                return 4UL         ;
     701           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH:                                            return 8UL         ;
     702          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_KEY:                                               return 32UL        ;
     703          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_STAKE:                                             return 8UL         ;
     704          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS:                                    return 8UL         ;
     705          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                                 return 8UL         ;
     706          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                                return 4UL         ;
     707          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_NODE_PUBKEY:                         return 32UL        ;
     708          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_WITHDRAWER:               return 32UL        ;
     709          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COLLECTOR:         return 32UL        ;
     710          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COLLECTOR:             return 32UL        ;
     711          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COMMISSION_BPS:    return 2UL         ;
     712          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COMMISSION_BPS:        return 2UL         ;
     713          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_PENDING_DELEGATOR_REWARDS:           return 8UL         ;
     714          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION:        return 1UL         ;
     715           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED:               return 48UL        ;
     716          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES_LENGTH:                        return 8UL         ;
     717          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES:                               return 13UL*length4;
     718          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION:                    return 1UL         ;
     719           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT:                           return 8UL         ;
     720          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS_LENGTH:            return 8UL         ;
     721          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS:                   return 40UL*length4;
     722          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS_LENGTH:                return 8UL         ;
     723          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS:                       return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );
     724          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_SLOT:                 return 8UL         ;
     725          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_TIMESTAMP:            return 8UL         ;
     726           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY:                         return 32UL        ;
     727           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_WITHDRAWER:               return 32UL        ;
     728           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_COMMISSION:                          return 1UL         ;
     729           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES_LENGTH:                        return 8UL         ;
     730           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES:                               return 13UL*length4;
     731           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION:                    return 1UL         ;
     732           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT:                           return 8UL         ;
     733           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH:            return 8UL         ;
     734           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS:                   return 40UL*length4;
     735           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_PRIOR_VOTERS:                        return 9UL+48UL*32UL;
     736           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS_LENGTH:                return 8UL         ;
     737           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS:                       return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );
     738           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_SLOT:                 return 8UL         ;
     739           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_TIMESTAMP:            return 8UL         ;
     740           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY:                     return 32UL        ;
     741           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER:           return 32UL        ;
     742           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:                      return 1UL         ;
     743           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:                    return 8UL         ;
     744           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES:                           return 12UL*length4;
     745           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:                return 1UL         ;
     746           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT:                       return 8UL         ;
     747           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:        return 8UL         ;
     748           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS:               return 40UL*length4;
     749           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS:                    return 9UL+48UL*32UL;
     750           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:            return 8UL         ;
     751           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS:                   return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );
     752           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:             return 8UL         ;
     753           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:        return 8UL         ;
     754           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY:                      return 32UL        ;
     755           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER:                 return 32UL        ;
     756           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH:           return 8UL         ;
     757           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS:                     return 1800UL      ;
     758           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER:            return 32UL        ;
     759           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:                       return 1UL         ;
     760           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:                     return 8UL         ;
     761           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES:                            return 12UL*length4;
     762           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION:                 return 1UL         ;
     763           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT:                        return 8UL         ;
     764           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:             return 8UL         ;
     765           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS:                    return 24UL*(parser->epoch_idx!=ULONG_MAX ? parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : length4 );;
     766           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT:              return 8UL         ;
     767           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:         return 8UL         ;
     768          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY:                                  return parser->length3-(parser->off-parser->account_data_start);
     769          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_OWNER:                                       return 32UL        ;
     770          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:                                  return 1UL         ;
     771          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                                  return 8UL         ;
     772           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH:                                        return 8UL         ;
     773           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_KEY:                                           return 32UL        ;
     774           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY:                                  return 32UL        ;
     775           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_STAKE:                                         return 8UL         ;
     776           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH:                              return 8UL         ;
     777           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH:                            return 8UL         ;
     778           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                          return 8UL         ;
     779           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_CREDITS_OBSERVED:                              return 8UL         ;
     780           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_UNUSED:                                                          return 8UL         ;
     781           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_EPOCH:                                                           return 8UL         ;
     782           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY_LENGTH:                                            return 8UL         ;
     783           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY:                                                   return 32UL*length2;
     784           9 :     case STATE_VERSIONED_EPOCH_STAKES_TOTAL_STAKE:                                                            return 8UL         ;
     785           9 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:                                        return 8UL         ;
     786           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_KEY:                                           return 32UL        ;
     787           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH:                          return 8UL         ;
     788           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS:                                 return 32UL*length3;
     789           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE:                                   return 8UL         ;
     790           9 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:                                         return 8UL         ;
     791           9 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS:                                                return 64UL*length2;
     792           3 :     case STATE_LTHASH_OPTION:                                                                                 return 1UL         ;
     793           3 :     case STATE_LTHASH:                                                                                        return 2048UL      ;
     794           3 :     case STATE_BLOCK_ID_OPTION:                                                                               return 1UL         ;
     795           3 :     case STATE_BLOCK_ID:                                                                                      return 32UL        ;
     796           3 :     case STATE_DONE:                                                                                          return 0UL         ;
     797           0 :     default: FD_LOG_ERR(( "unknown state %d", parser->state ));
     798        1098 :   }
     799        1098 : }
     800             : 
     801             : static inline uchar *
     802        1098 : state_dst( fd_ssmanifest_parser_t * parser ) {
     803        1098 :   ulong idx1 = parser->idx1;
     804        1098 :   ulong idx2 = parser->idx2;
     805        1098 :   fd_snapshot_manifest_t * manifest = parser->manifest;
     806             : 
     807        1098 :   switch( parser->state ) {
     808           3 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH_INDEX:                                                               return NULL;
     809           3 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH_OPTION:                                                              return &parser->option;
     810           3 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH:                                                                     return NULL;
     811           3 :     case STATE_BLOCKHASH_QUEUE_AGES_LENGTH:                                                                   return (uchar*)&manifest->blockhashes_len;
     812           3 :     case STATE_BLOCKHASH_QUEUE_AGES_HASH:                                                                     return (uchar*)manifest->blockhashes[ idx1 ].hash;
     813           3 :     case STATE_BLOCKHASH_QUEUE_AGES_LAMPORTS_PER_SIGNATURE:                                                   return (uchar*)&manifest->blockhashes[ idx1 ].lamports_per_signature;
     814           3 :     case STATE_BLOCKHASH_QUEUE_AGES_HASH_INDEX:                                                               return (uchar*)&manifest->blockhashes[ idx1 ].hash_index;
     815           3 :     case STATE_BLOCKHASH_QUEUE_AGES_TIMESTAMP:                                                                return (uchar*)&manifest->blockhashes[ idx1 ].timestamp;
     816           3 :     case STATE_BLOCKHASH_QUEUE_MAX_AGE:                                                                       return NULL;
     817           3 :     case STATE_ANCESTORS_LENGTH:                                                                              return (uchar*)&parser->length1;
     818           0 :     case STATE_ANCESTORS_SLOT:                                                                                return NULL;
     819           0 :     case STATE_ANCESTORS_VAL:                                                                                 return NULL;
     820           3 :     case STATE_HASH:                                                                                          return manifest->bank_hash;
     821           3 :     case STATE_PARENT_HASH:                                                                                   return manifest->parent_bank_hash;
     822           3 :     case STATE_PARENT_SLOT:                                                                                   return (uchar*)&manifest->parent_slot;
     823           3 :     case STATE_HARD_FORKS_LENGTH:                                                                             return (uchar*)&manifest->hard_fork_cnt;
     824           0 :     case STATE_HARD_FORKS_SLOT:                                                                               return (uchar*)&manifest->hard_forks[ idx1 ].slot;
     825           0 :     case STATE_HARD_FORKS_VAL:                                                                                return (uchar*)&manifest->hard_forks[ idx1 ].cnt;
     826           3 :     case STATE_TRANSACTION_COUNT:                                                                             return (uchar*)&manifest->transaction_count;
     827           3 :     case STATE_TICK_HEIGHT:                                                                                   return (uchar*)&manifest->tick_height;
     828           3 :     case STATE_SIGNATURE_COUNT:                                                                               return (uchar*)&manifest->signature_count;
     829           3 :     case STATE_CAPITALIZATION:                                                                                return (uchar*)&manifest->capitalization;
     830           3 :     case STATE_MAX_TICK_HEIGHT:                                                                               return (uchar*)&manifest->max_tick_height;
     831           3 :     case STATE_HASHES_PER_TICK_OPTION:                                                                        return &parser->option;
     832           3 :     case STATE_HASHES_PER_TICK:                                                                               return (uchar*)&manifest->hashes_per_tick;
     833           3 :     case STATE_TICKS_PER_SLOT:                                                                                return (uchar*)&manifest->ticks_per_slot;
     834           3 :     case STATE_NS_PER_SLOT:                                                                                   return (uchar*)&manifest->ns_per_slot;
     835           3 :     case STATE_GENSIS_CREATION_TIME:                                                                          return (uchar*)&manifest->creation_time_seconds;
     836           3 :     case STATE_SLOTS_PER_YEAR:                                                                                return (uchar*)&manifest->slots_per_year;
     837           3 :     case STATE_ACCOUNTS_DATA_LEN:                                                                             return NULL;
     838           3 :     case STATE_SLOT:                                                                                          return (uchar*)&manifest->slot;
     839           3 :     case STATE_EPOCH:                                                                                         return (uchar*)&parser->epoch;
     840           3 :     case STATE_BLOCK_HEIGHT:                                                                                  return (uchar*)&manifest->block_height;
     841           3 :     case STATE_COLLECTOR_ID:                                                                                  return NULL;
     842           3 :     case STATE_COLLECTOR_FEES:                                                                                return (uchar*)&manifest->collector_fees;
     843           3 :     case STATE_FEE_COLLECTOR_LAMPORTS_PER_SIGNATURE:                                                          return NULL;
     844           3 :     case STATE_FEE_RATE_GOVERNOR_TARGET_LAMPORTS_PER_SIGNATURE:                                               return (uchar*)&manifest->fee_rate_governor.target_lamports_per_signature;
     845           3 :     case STATE_FEE_RATE_GOVERNOR_TARGET_SIGNATURES_PER_SLOT:                                                  return (uchar*)&manifest->fee_rate_governor.target_signatures_per_slot;
     846           3 :     case STATE_FEE_RATE_GOVERNOR_MIN_LAMPORTS_PER_SIGNATURE:                                                  return (uchar*)&manifest->fee_rate_governor.min_lamports_per_signature;
     847           3 :     case STATE_FEE_RATE_GOVERNOR_MAX_LAMPORTS_PER_SIGNATURE:                                                  return (uchar*)&manifest->fee_rate_governor.max_lamports_per_signature;
     848           3 :     case STATE_FEE_RATE_GOVERNOR_BURN_PERCENT:                                                                return (uchar*)&manifest->fee_rate_governor.burn_percent;
     849           3 :     case STATE_COLLECTED_RENT:                                                                                return NULL;
     850           3 :     case STATE_RENT_COLLECTOR_EPOCH:                                                                          return NULL;
     851           3 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_SLOTS_PER_EPOCH:                                                 return NULL;
     852           3 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET:                                     return NULL;
     853           3 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_WARMUP:                                                          return NULL;
     854           3 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_FIRST_NORMAL_EPOCH:                                              return NULL;
     855           3 :     case STATE_RENT_COLLECTOR_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT:                                               return NULL;
     856           3 :     case STATE_RENT_COLLECTOR_SLOTS_PER_YEAR:                                                                 return NULL;
     857           3 :     case STATE_RENT_COLLECTOR_RENT_LAMPORTS_PER_UINT8_YEAR:                                                   return (uchar*)&manifest->rent_params.lamports_per_uint8_year;
     858           3 :     case STATE_RENT_COLLECTOR_RENT_EXEMPTION_THRESHOLD:                                                       return (uchar*)&manifest->rent_params.exemption_threshold;
     859           3 :     case STATE_RENT_COLLECTOR_RENT_BURN_PERCENT:                                                              return (uchar*)&manifest->rent_params.burn_percent;
     860           3 :     case STATE_EPOCH_SCHEDULE_SLOTS_PER_EPOCH:                                                                return (uchar*)&manifest->epoch_schedule_params.slots_per_epoch;
     861           3 :     case STATE_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET:                                                    return (uchar*)&manifest->epoch_schedule_params.leader_schedule_slot_offset;
     862           3 :     case STATE_EPOCH_SCHEDULE_WARMUP:                                                                         return (uchar*)&manifest->epoch_schedule_params.warmup;
     863           3 :     case STATE_EPOCH_SCHEDULE_FIRST_NORMAL_EPOCH:                                                             return (uchar*)&manifest->epoch_schedule_params.first_normal_epoch;
     864           3 :     case STATE_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT:                                                              return (uchar*)&manifest->epoch_schedule_params.first_normal_slot;
     865           3 :     case STATE_INFLATION_INITIAL:                                                                             return (uchar*)&manifest->inflation_params.initial;
     866           3 :     case STATE_INFLATION_TERMINAL:                                                                            return (uchar*)&manifest->inflation_params.terminal;
     867           3 :     case STATE_INFLATION_TAPER:                                                                               return (uchar*)&manifest->inflation_params.taper;
     868           3 :     case STATE_INFLATION_FOUNDATION:                                                                          return (uchar*)&manifest->inflation_params.foundation;
     869           3 :     case STATE_INFLATION_FOUNDATION_TERM:                                                                     return (uchar*)&manifest->inflation_params.foundation_term;
     870           3 :     case STATE_INFLATION_UNUSED:                                                                              return NULL;
     871           3 :     case STATE_STAKES_VOTE_ACCOUNTS_LENGTH:                                                                   return (uchar*)&manifest->vote_accounts_len;
     872           0 :     case STATE_STAKES_VOTE_ACCOUNTS_KEY:                                                                      return manifest->vote_accounts[ idx1 ].vote_account_pubkey;
     873           0 :     case STATE_STAKES_VOTE_ACCOUNTS_STAKE:                                                                    return (uchar*)&manifest->vote_accounts[ idx1 ].stake;
     874           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS:                                                           return NULL;
     875           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                                                        return (uchar*)&parser->length2;
     876           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                                                       return (uchar*)&parser->variant;
     877           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_NODE_PUBKEY:                                                return (uchar*)&manifest->vote_accounts[ idx1 ].node_account_pubkey;
     878           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_WITHDRAWER:                                      return NULL;
     879           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COLLECTOR:                                return NULL;
     880           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COLLECTOR:                                    return NULL;
     881           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COMMISSION_BPS:                           return NULL;
     882           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COMMISSION_BPS:                               return NULL;
     883           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_PENDING_DELEGATOR_REWARDS:                                  return NULL;
     884           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION:                               return &parser->option;
     885           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED:                                      return NULL;
     886           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES_LENGTH:                                               return (uchar*)&parser->length3;
     887           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES:                                                      return NULL;
     888           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION:                                           return &parser->option;
     889           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT:                                                  return NULL;
     890           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS_LENGTH:                                   return (uchar*)&parser->length3;
     891           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS:                                          return NULL;
     892           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS_LENGTH:                                       return (uchar*)&parser->length4;
     893           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS:                                              return NULL;
     894           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_SLOT:                                        return NULL;
     895           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_TIMESTAMP:                                   return NULL;
     896           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY:                                                return (uchar*)&manifest->vote_accounts[ idx1 ].node_account_pubkey;
     897           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_WITHDRAWER:                                      return NULL;
     898           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_COMMISSION:                                                 return NULL;
     899           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES_LENGTH:                                               return (uchar*)&parser->length3;
     900           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES:                                                      return NULL;
     901           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION:                                           return &parser->option;
     902           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT:                                                  return NULL;
     903           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH:                                   return (uchar*)&parser->length3;
     904           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS:                                          return NULL;
     905           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_PRIOR_VOTERS:                                               return NULL;
     906           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS_LENGTH:                                       return (uchar*)&parser->length4;
     907           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS:                                              return NULL;
     908           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_SLOT:                                        return NULL;
     909           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_TIMESTAMP:                                   return NULL;
     910           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY:                                            return (uchar*)&manifest->vote_accounts[ idx1 ].node_account_pubkey;
     911           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER:                                  return NULL;
     912           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:                                             return NULL;
     913           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:                                           return (uchar*)&parser->length3;
     914           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES:                                                  return NULL;
     915           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:                                       return &parser->option;
     916           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT:                                              return NULL;
     917           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:                               return (uchar*)&parser->length3;
     918           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS:                                      return NULL;
     919           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS:                                           return NULL;
     920           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:                                   return (uchar*)&parser->length4;
     921           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS:                                          return NULL;
     922           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:                                    return NULL;
     923           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:                               return NULL;
     924           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY:                                             return (uchar*)&manifest->vote_accounts[ idx1 ].node_account_pubkey;
     925           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER:                                        return NULL;
     926           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH:                                  return NULL;
     927           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS:                                            return NULL;
     928           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER:                                   return NULL;
     929           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:                                              return NULL;
     930           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:                                            return (uchar*)&parser->length3;
     931           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES:                                                   return NULL;
     932           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION:                                        return &parser->option;
     933           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT:                                               return NULL;
     934           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:                                    return (uchar*)&parser->length4;
     935           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS:                                           return NULL;
     936           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT:                                     return NULL;
     937           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:                                return NULL;
     938           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY:                                                         return NULL;
     939           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_OWNER:                                                              return NULL;
     940           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:                                                         return (uchar*)&parser->option;
     941           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                                                         return NULL;
     942           3 :     case STATE_STAKES_STAKE_DELEGATIONS_LENGTH:                                                               return (uchar*)&manifest->stake_delegations_len;
     943           0 :     case STATE_STAKES_STAKE_DELEGATIONS_KEY:                                                                  return (uchar*)&manifest->stake_delegations[ idx1 ].stake_pubkey;
     944           0 :     case STATE_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY:                                                         return (uchar*)&manifest->stake_delegations[ idx1 ].vote_pubkey;
     945           0 :     case STATE_STAKES_STAKE_DELEGATIONS_STAKE:                                                                return (uchar*)&manifest->stake_delegations[ idx1 ].stake_delegation;
     946           0 :     case STATE_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH:                                                     return (uchar*)&manifest->stake_delegations[ idx1 ].activation_epoch;
     947           0 :     case STATE_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH:                                                   return (uchar*)&manifest->stake_delegations[ idx1 ].deactivation_epoch;
     948           0 :     case STATE_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                                                 return (uchar*)&manifest->stake_delegations[ idx1 ].warmup_cooldown_rate;
     949           3 :     case STATE_STAKES_UNUSED:                                                                                 return NULL;
     950           3 :     case STATE_STAKES_EPOCH:                                                                                  return NULL;
     951           3 :     case STATE_STAKES_STAKE_HISTORY_LENGTH:                                                                   return (uchar*)&parser->length1;
     952           3 :     case STATE_STAKES_STAKE_HISTORY:                                                                          return NULL;
     953           3 :     case STATE_UNUSED_ACCOUNTS1_LENGTH:                                                                       return (uchar*)&parser->length1;
     954           3 :     case STATE_UNUSED_ACCOUNTS1_UNUSED:                                                                       return NULL;
     955           3 :     case STATE_UNUSED_ACCOUNTS2_LENGTH:                                                                       return (uchar*)&parser->length1;
     956           3 :     case STATE_UNUSED_ACCOUNTS2_UNUSED:                                                                       return NULL;
     957           3 :     case STATE_UNUSED_ACCOUNTS3_LENGTH:                                                                       return (uchar*)&parser->length1;
     958           3 :     case STATE_UNUSED_ACCOUNTS3_UNUSED:                                                                       return NULL;
     959           3 :     case STATE_EPOCH_STAKES_LENGTH:                                                                           return (uchar*)&parser->epoch_stakes_len;
     960           0 :     case STATE_EPOCH_STAKES_KEY:                                                                              return (uchar*)&parser->epoch_stakes_epoch;
     961           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH:                                                             return parser->epoch_idx!=ULONG_MAX ? (uchar*)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : (uchar*)&parser->length2;
     962           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_KEY:                                                                return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].vote : NULL;
     963           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_STAKE:                                                              return parser->epoch_idx!=ULONG_MAX ? (uchar*)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].stake : NULL;
     964           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS:                                                     return NULL;
     965           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                                                  return (uchar*)&parser->length3;
     966           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                                                 return (uchar*)&parser->variant;
     967           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_NODE_PUBKEY:                                          return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
     968           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_WITHDRAWER:                                return NULL;
     969           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COLLECTOR:                          return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission_inflation : NULL;
     970           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COLLECTOR:                              return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission_block : NULL;
     971           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COMMISSION_BPS:                     return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
     972           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COMMISSION_BPS:                         return NULL;
     973           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_PENDING_DELEGATOR_REWARDS:                            return NULL;
     974           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION:                         return &parser->option;
     975           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED:                                return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity_bls : NULL;
     976           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES_LENGTH:                                         return (uchar*)&parser->length4;
     977           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES:                                                return NULL;
     978           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION:                                     return &parser->option;
     979           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT:                                            return NULL;
     980           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS_LENGTH:                             return (uchar*)&parser->length4;
     981           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS:                                    return NULL;
     982           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS_LENGTH:                                 return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
     983           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS:                                        return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
     984           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_SLOT:                                  return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
     985           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_TIMESTAMP:                             return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
     986           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY:                                          return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
     987           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_WITHDRAWER:                                return NULL;
     988           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_COMMISSION:                                           return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
     989           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES_LENGTH:                                         return (uchar*)&parser->length4;
     990           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES:                                                return NULL;
     991           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION:                                     return &parser->option;
     992           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT:                                            return NULL;
     993           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH:                             return (uchar*)&parser->length4;
     994           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS:                                    return NULL;
     995           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_PRIOR_VOTERS:                                         return NULL;
     996           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS_LENGTH:                                 return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
     997           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS:                                        return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
     998           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_SLOT:                                  return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
     999           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_TIMESTAMP:                             return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
    1000           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY:                                      return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
    1001           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER:                            return NULL;
    1002           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:                                       return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
    1003           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:                                     return (uchar*)&parser->length4;
    1004           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES:                                            return NULL;
    1005           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:                                 return &parser->option;
    1006           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT:                                        return NULL;
    1007           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:                         return (uchar*)&parser->length4;
    1008           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS:                                return NULL;
    1009           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS:                                     return NULL;
    1010           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:                             return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
    1011           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS:                                    return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
    1012           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:                              return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
    1013           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:                         return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
    1014           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY:                                       return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
    1015           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER:                                  return NULL;
    1016           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH:                            return NULL;
    1017           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS:                                      return NULL;
    1018           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER:                             return NULL;
    1019           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:                                        return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
    1020           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:                                      return (uchar*)&parser->length4;
    1021           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES:                                             return NULL;
    1022           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION:                                  return &parser->option;
    1023           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT:                                         return NULL;
    1024           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:                              return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
    1025           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS:                                     return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
    1026           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT:                               return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
    1027           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:                          return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
    1028           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY:                                                   return NULL;
    1029           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_OWNER:                                                        return NULL;
    1030           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:                                                   return &parser->option;
    1031           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                                                   return NULL;
    1032           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH:                                                         return (uchar*)&parser->length2;
    1033           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_KEY:                                                            return NULL;
    1034           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY:                                                   return NULL;
    1035           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_STAKE:                                                          return NULL;
    1036           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH:                                               return NULL;
    1037           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH:                                             return NULL;
    1038           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                                           return NULL;
    1039           0 :     case STATE_EPOCH_STAKES_UNUSED:                                                                           return NULL;
    1040           0 :     case STATE_EPOCH_STAKES_EPOCH:                                                                            return NULL;
    1041           0 :     case STATE_EPOCH_STAKES_STAKE_HISTORY_LENGTH:                                                             return (uchar*)&parser->length2;
    1042           0 :     case STATE_EPOCH_STAKES_STAKE_HISTORY:                                                                    return NULL;
    1043           0 :     case STATE_EPOCH_STAKES_TOTAL_STAKE:                                                                      return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].total_stake : NULL;;
    1044           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:                                                  return (uchar*)&parser->length2;
    1045           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_KEY:                                                     return NULL;
    1046           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH:                                    return (uchar*)&parser->length3;
    1047           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS:                                           return NULL;
    1048           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE:                                             return NULL;
    1049           0 :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:                                                   return (uchar*)&parser->length2;
    1050           0 :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS:                                                          return NULL;
    1051           3 :     case STATE_IS_DELTA:                                                                                      return NULL;
    1052           3 :     case STATE_ACCOUNTS_DB_STORAGES_LENGTH:                                                                   return (uchar*)&parser->length1;
    1053           0 :     case STATE_ACCOUNTS_DB_STORAGES_SLOT:                                                                     return (uchar*)&parser->acc_vec_slot;
    1054           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_LENGTH:                                                      return (uchar*)&parser->length2;
    1055           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_ID:                                                          return NULL;
    1056           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_FILE_SZ:                                                     return (uchar*)&parser->acc_vec_file_sz;
    1057           0 :     case STATE_ACCOUNTS_DB_STORAGES_DUMMY:                                                                    return NULL;
    1058           3 :     case STATE_ACCOUNTS_DB_VERSION:                                                                           return NULL;
    1059           3 :     case STATE_ACCOUNTS_DB_SLOT:                                                                              return NULL;
    1060           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_ACCOUNTS_DELTA_HASH:                                                return manifest->accounts_delta_hash;
    1061           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_ACCOUNTS_HASH:                                                      return manifest->accounts_hash;
    1062           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_UPDATED_ACCOUNTS:                                         return NULL;
    1063           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_REMOVED_ACCOUNTS:                                         return NULL;
    1064           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_LAMPORTS_STORED:                                          return NULL;
    1065           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_TOTAL_DATA_LEN:                                               return NULL;
    1066           3 :     case STATE_ACCOUNTS_DB_BANK_HASH_INFO_STATS_NUM_EXECUTABLE_ACCOUNTS:                                      return NULL;
    1067           3 :     case STATE_ACCOUNTS_DB_HISTORICAL_ROOTS_LENGTH:                                                           return (uchar*)&parser->length1;
    1068           3 :     case STATE_ACCOUNTS_DB_HISTORICAL_ROOTS:                                                                  return NULL;
    1069           3 :     case STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH_LENGTH:                                                       return (uchar*)&parser->length1;
    1070           3 :     case STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH:                                                              return NULL;
    1071           3 :     case STATE_LAMPORTS_PER_SIGNATURE:                                                                        return (uchar*)&manifest->lamports_per_signature;
    1072           3 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_OPTION:                                                  return &parser->option;
    1073           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_SLOT:                                               return NULL;
    1074           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_HASH:                                               return NULL;
    1075           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_FULL_CAPITALIZATION:                                     return NULL;
    1076           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_INCREMENTAL_HASH:                                        return NULL;
    1077           0 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_INCREMENTAL_CAPITALIZATION:                              return NULL;
    1078           3 :     case STATE_EPOCH_ACCOUNT_HASH_OPTION:                                                                     return &parser->option;
    1079           0 :     case STATE_EPOCH_ACCOUNT_HASH:                                                                            return manifest->epoch_account_hash;
    1080           3 :     case STATE_VERSIONED_EPOCH_STAKES_LENGTH:                                                                 return (uchar*)&parser->epoch_stakes_len;
    1081           9 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH:                                                                  return (uchar*)&parser->epoch_stakes_epoch;
    1082           9 :     case STATE_VERSIONED_EPOCH_STAKES_VARIANT:                                                                return (uchar*)&parser->variant;
    1083           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH:                                            return parser->epoch_idx!=ULONG_MAX ? (uchar*)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : (uchar*)&parser->length2;
    1084          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_KEY:                                               return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].vote : NULL;
    1085          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_STAKE:                                             return parser->epoch_idx!=ULONG_MAX ? (uchar*)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].stake : NULL;
    1086          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_LAMPORTS:                                    return NULL;
    1087          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                                 return (uchar*)&parser->length3;
    1088          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                                return (uchar*)&parser->variant;
    1089          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_NODE_PUBKEY:                         return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
    1090          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_WITHDRAWER:               return NULL;
    1091          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COLLECTOR:         return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission_inflation : NULL;
    1092          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COLLECTOR:             return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission_block : NULL;
    1093          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_INFLATION_REWARDS_COMMISSION_BPS:    return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
    1094          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLOCK_REVENUE_COMMISSION_BPS:        return NULL;
    1095          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_PENDING_DELEGATOR_REWARDS:           return NULL;
    1096          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION:        return &parser->option;
    1097           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED:               return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity_bls : NULL;
    1098          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES_LENGTH:                        return (uchar*)&parser->length4;
    1099          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES:                               return NULL;
    1100          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION:                    return &parser->option;
    1101           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT:                           return NULL;
    1102          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS_LENGTH:            return (uchar*)&parser->length4;
    1103          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS:                   return NULL;
    1104          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS_LENGTH:                return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
    1105          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS:                       return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
    1106          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_SLOT:                 return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
    1107          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_TIMESTAMP:            return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
    1108           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY:                         return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
    1109           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_WITHDRAWER:               return NULL;
    1110           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_COMMISSION:                          return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
    1111           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES_LENGTH:                        return (uchar*)&parser->length4;
    1112           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES:                               return NULL;
    1113           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION:                    return &parser->option;
    1114           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT:                           return NULL;
    1115           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH:            return (uchar*)&parser->length4;
    1116           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS:                   return NULL;
    1117           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_PRIOR_VOTERS:                        return NULL;
    1118           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS_LENGTH:                return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
    1119           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS:                       return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
    1120           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_SLOT:                 return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
    1121           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_TIMESTAMP:            return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
    1122           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY:                     return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
    1123           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_WITHDRAWER:           return NULL;
    1124           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION:                      return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
    1125           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:                    return (uchar*)&parser->length4;
    1126           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES:                           return NULL;
    1127           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:                return &parser->option;
    1128           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT:                       return NULL;
    1129           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:        return (uchar*)&parser->length4;
    1130           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS:               return NULL;
    1131           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_PRIOR_VOTERS:                    return NULL;
    1132           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:            return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
    1133           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS:                   return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
    1134           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_SLOT:             return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
    1135           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:        return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
    1136           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY:                      return parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].identity : NULL;
    1137           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER:                 return NULL;
    1138           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_VOTER_EPOCH:           return NULL;
    1139           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_PRIOR_VOTERS:                     return NULL;
    1140           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_AUTHORIZED_WITHDRAWER:            return NULL;
    1141           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION:                       return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].commission : NULL;
    1142           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:                     return (uchar*)&parser->length4;
    1143           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES:                            return NULL;
    1144           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION:                 return &parser->option;
    1145           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT:                        return NULL;
    1146           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:             return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits_history_len : (uchar*)&parser->length4;
    1147           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS:                    return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].epoch_credits : NULL;
    1148           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_SLOT:              return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].slot : NULL;
    1149           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:         return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ idx2 ].timestamp : NULL;
    1150          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY:                                  return NULL;
    1151          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_OWNER:                                       return NULL;
    1152          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:                                  return &parser->option;
    1153          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                                  return NULL;
    1154           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH:                                        return (uchar*)&parser->length2;
    1155           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_KEY:                                           return NULL;
    1156           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_VOTER_PUBKEY:                                  return NULL;
    1157           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_STAKE:                                         return NULL;
    1158           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_ACTIVATION_EPOCH:                              return NULL;
    1159           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_DEACTIVATION_EPOCH:                            return NULL;
    1160           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                          return NULL;
    1161           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_CREDITS_OBSERVED:                              return NULL;
    1162           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_UNUSED:                                                          return NULL;
    1163           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_EPOCH:                                                           return NULL;
    1164           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY_LENGTH:                                            return (uchar*)&parser->length2;
    1165           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY:                                                   return NULL;
    1166           9 :     case STATE_VERSIONED_EPOCH_STAKES_TOTAL_STAKE:                                                            return parser->epoch_idx!=ULONG_MAX ? (uchar *)&manifest->epoch_stakes[ parser->epoch_idx ].total_stake : NULL;
    1167           9 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:                                        return (uchar*)&parser->length2;
    1168           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_KEY:                                           return NULL;
    1169           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH:                          return (uchar*)&parser->length3;
    1170           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS:                                 return NULL;
    1171           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE:                                   return NULL;
    1172           9 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:                                         return (uchar*)&parser->length2;
    1173           9 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS:                                                return NULL;
    1174           3 :     case STATE_LTHASH_OPTION:                                                                                 return &parser->option;
    1175           3 :     case STATE_LTHASH:                                                                                        return manifest->accounts_lthash;
    1176           3 :     case STATE_BLOCK_ID_OPTION:                                                                               return &parser->option;
    1177           3 :     case STATE_BLOCK_ID:                                                                                      return manifest->block_id;
    1178           3 :     case STATE_DONE:                                                                                          return NULL;
    1179           0 :     default: FD_LOG_ERR(( "unknown state %d", parser->state ));
    1180        1098 :   }
    1181        1098 : }
    1182             : 
    1183             : #if SSMANIFEST_DEBUG
    1184             : static inline void
    1185             : state_log( fd_ssmanifest_parser_t * parser ) {
    1186             :   fd_snapshot_manifest_t * manifest = parser->manifest;
    1187             : 
    1188             :   switch( parser->state ) {
    1189             :     case STATE_FEE_RATE_GOVERNOR_TARGET_LAMPORTS_PER_SIGNATURE:                  FD_LOG_NOTICE(( "STATE_FEE_RATE_GOVERNOR_TARGET_LAMPORTS_PER_SIGNATURE                   %lu", manifest->fee_rate_governor.target_lamports_per_signature ));   break;
    1190             :     case STATE_FEE_RATE_GOVERNOR_TARGET_SIGNATURES_PER_SLOT:                     FD_LOG_NOTICE(( "STATE_FEE_RATE_GOVERNOR_TARGET_SIGNATURES_PER_SLOT                      %lu", manifest->fee_rate_governor.target_signatures_per_slot ));      break;
    1191             :     case STATE_FEE_RATE_GOVERNOR_MIN_LAMPORTS_PER_SIGNATURE:                     FD_LOG_NOTICE(( "STATE_FEE_RATE_GOVERNOR_MIN_LAMPORTS_PER_SIGNATURE                      %lu", manifest->fee_rate_governor.min_lamports_per_signature ));      break;
    1192             :     case STATE_FEE_RATE_GOVERNOR_MAX_LAMPORTS_PER_SIGNATURE:                     FD_LOG_NOTICE(( "STATE_FEE_RATE_GOVERNOR_MAX_LAMPORTS_PER_SIGNATURE                      %lu", manifest->fee_rate_governor.max_lamports_per_signature ));      break;
    1193             :     case STATE_FEE_RATE_GOVERNOR_BURN_PERCENT:                                   FD_LOG_NOTICE(( "STATE_FEE_RATE_GOVERNOR_BURN_PERCENT                                    %u",  manifest->fee_rate_governor.burn_percent ));                    break;
    1194             :     case STATE_EPOCH_SCHEDULE_SLOTS_PER_EPOCH:                                   FD_LOG_NOTICE(( "STATE_EPOCH_SCHEDULE_SLOTS_PER_EPOCH                                    %lu", manifest->epoch_schedule_params.slots_per_epoch ));             break;
    1195             :     case STATE_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET:                       FD_LOG_NOTICE(( "STATE_EPOCH_SCHEDULE_LEADER_SCHEDULE_SLOT_OFFSET                        %lu", manifest->epoch_schedule_params.leader_schedule_slot_offset )); break;
    1196             :     case STATE_EPOCH_SCHEDULE_WARMUP:                                            FD_LOG_NOTICE(( "STATE_EPOCH_SCHEDULE_WARMUP                                             %d",  manifest->epoch_schedule_params.warmup ));                      break;
    1197             :     case STATE_INFLATION_INITIAL:                                                FD_LOG_NOTICE(( "STATE_INFLATION_INITIAL                                                 %lf", manifest->inflation_params.initial ));                          break;
    1198             :     case STATE_INFLATION_TERMINAL:                                               FD_LOG_NOTICE(( "STATE_INFLATION_TERMINAL                                                %lf", manifest->inflation_params.terminal ));                         break;
    1199             :     case STATE_INFLATION_TAPER:                                                  FD_LOG_NOTICE(( "STATE_INFLATION_TAPER                                                   %lf", manifest->inflation_params.taper ));                            break;
    1200             :     case STATE_INFLATION_FOUNDATION:                                             FD_LOG_NOTICE(( "STATE_INFLATION_FOUNDATION                                              %lf", manifest->inflation_params.foundation ));                       break;
    1201             :     case STATE_INFLATION_FOUNDATION_TERM:                                        FD_LOG_NOTICE(( "STATE_INFLATION_FOUNDATION_TERM                                         %lf", manifest->inflation_params.foundation_term ));                  break;
    1202             :     case STATE_STAKES_VOTE_ACCOUNTS_LENGTH:                                      FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_LENGTH                                       %lu", manifest->vote_accounts_len ));                                 break;
    1203             :     case STATE_STAKES_STAKE_DELEGATIONS_LENGTH:                                  FD_LOG_NOTICE(( "STATE_STAKES_STAKE_DELEGATIONS_LENGTH                                   %lu", parser->length1 ));                                             break;
    1204             :     case STATE_STAKES_STAKE_HISTORY_LENGTH:                                      FD_LOG_NOTICE(( "STATE_STAKES_STAKE_HISTORY_LENGTH                                       %lu", parser->length1 ));                                             break;
    1205             :     case STATE_EPOCH_STAKES_LENGTH:                                              FD_LOG_NOTICE(( "STATE_EPOCH_STAKES_LENGTH                                               %lu", parser->length1 ));                                             break;
    1206             :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH:                                FD_LOG_NOTICE(( "STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH                                 %lu", parser->length2 ));                                             break;
    1207             :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH:                            FD_LOG_NOTICE(( "STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH                             %lu", parser->length2 ));                                             break;
    1208             :     case STATE_EPOCH_STAKES_STAKE_HISTORY_LENGTH:                                FD_LOG_NOTICE(( "STATE_EPOCH_STAKES_STAKE_HISTORY_LENGTH:                                %lu", parser->length2 ));                                             break;
    1209             :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:                      FD_LOG_NOTICE(( "STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH                       %lu", parser->length2 ));                                             break;
    1210             :     case STATE_ACCOUNTS_DB_STORAGES_LENGTH:                                      FD_LOG_NOTICE(( "STATE_ACCOUNTS_DB_STORAGES_LENGTH                                       %lu", parser->length1 ));                                             break;
    1211             :     case STATE_ACCOUNTS_DB_HISTORICAL_ROOTS_LENGTH:                              FD_LOG_NOTICE(( "STATE_ACCOUNTS_DB_HISTORICAL_ROOTS_LENGTH                               %lu", parser->length1 ));                                             break;
    1212             :     case STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH_LENGTH:                          FD_LOG_NOTICE(( "STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH_LENGTH                           %lu", parser->length1 ));                                             break;
    1213             :     case STATE_VERSIONED_EPOCH_STAKES_LENGTH:                                    FD_LOG_NOTICE(( "STATE_VERSIONED_EPOCH_STAKES_LENGTH                                     %lu", parser->epoch_stakes_len ));                                    break;
    1214             :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH:               FD_LOG_NOTICE(( "STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH                %lu", parser->length2 ));                                             break;
    1215             :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH:           FD_LOG_NOTICE(( "STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH            %lu", parser->length2 ));                                             break;
    1216             :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY_LENGTH:               FD_LOG_NOTICE(( "STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY_LENGTH                %lu", parser->length2 ));                                             break;
    1217             :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:           FD_LOG_NOTICE(( "STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH            %lu", parser->length2 ));                                             break;
    1218             :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:            FD_LOG_NOTICE(( "STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH             %lu", parser->length2 ));                                             break;
    1219             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:              FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH               %lu", parser->length3 ));                                             break;
    1220             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:               FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH                %lu", parser->length3 ));                                             break;
    1221             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION:          FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION            %d", parser->option ));                                              break;
    1222             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                          FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:                           %u", parser->variant ));                                             break;
    1223             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                           FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:                           %lu", parser->length2 ));                                             break;
    1224             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH:      FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH:      %lu", parser->length3 ));                                             break;
    1225             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:  FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:  %lu", parser->length3 ));                                             break;
    1226             :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:      FD_LOG_NOTICE(( "STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:      %lu", parser->length4 ));                                        break;
    1227             :     default: break;
    1228             :   }
    1229             : }
    1230             : #endif
    1231             : 
    1232             : static inline int
    1233        1095 : state_validate( fd_ssmanifest_parser_t * parser ) {
    1234        1095 :   fd_snapshot_manifest_t * manifest = parser->manifest;
    1235             : 
    1236             :   /* Option values in bincode must be either 0 or 1 */
    1237        1095 :   switch( parser->state ) {
    1238           3 :     case STATE_EPOCH_SCHEDULE_WARMUP: {
    1239           3 :       if( FD_UNLIKELY( manifest->epoch_schedule_params.warmup>1 ) ) {
    1240           0 :         FD_LOG_WARNING(( "invalid epoch_schedule_warmup bool %d", manifest->epoch_schedule_params.warmup ));
    1241           0 :         return -1;
    1242           0 :       }
    1243           3 :       break;
    1244           3 :     }
    1245           3 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH_OPTION: {
    1246           3 :       if( FD_UNLIKELY( !parser->option ) ) {
    1247           0 :         FD_LOG_WARNING(( "blockhash queue last hash option is None, expected Some" ));
    1248           0 :         return -1;
    1249           0 :       }
    1250           3 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1251           0 :         FD_LOG_WARNING(( "invalid blockhash queue last hash option %d", parser->option ));
    1252           0 :         return -1;
    1253           0 :       }
    1254           3 :       break;
    1255           3 :     }
    1256           3 :     case STATE_HASHES_PER_TICK_OPTION: {
    1257           3 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1258           0 :         FD_LOG_WARNING(( "invalid hashes_per_tick option %d", parser->option ));
    1259           0 :         return -1;
    1260           0 :       }
    1261           3 :       break;
    1262           3 :     }
    1263           3 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_OPTION: {
    1264           3 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1265           0 :         FD_LOG_WARNING(( "invalid bank_incremental_snapshot_persistence option %d", parser->option ));
    1266           0 :         return -1;
    1267           0 :       }
    1268           3 :       break;
    1269           3 :     }
    1270           3 :     case STATE_EPOCH_ACCOUNT_HASH_OPTION: {
    1271           3 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1272           0 :         FD_LOG_WARNING(( "invalid epoch_account_hash option %d", parser->option ));
    1273           0 :         return -1;
    1274           0 :       }
    1275           3 :       break;
    1276           3 :     }
    1277           3 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:
    1278           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT:
    1279          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT: {
    1280          27 :       if( FD_UNLIKELY( parser->variant>3 ) ) {
    1281           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data variant %u", parser->variant ));
    1282           0 :         return -1;
    1283           0 :       }
    1284          27 :       break;
    1285          27 :     }
    1286          27 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:
    1287           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE:
    1288          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_EXECUTABLE: {
    1289          27 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1290           0 :         FD_LOG_WARNING(( "invalid vote_accounts value executable %d", parser->option ));
    1291           0 :         return -1;
    1292           0 :       }
    1293          27 :       break;
    1294          27 :     }
    1295          27 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION: {
    1296           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1297           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data v4 bls pubkey compressed option %d", parser->option ));
    1298           0 :         return -1;
    1299           0 :       }
    1300           0 :       break;
    1301           0 :     }
    1302           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION: {
    1303           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1304           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data current root slot option %d", parser->option ));
    1305           0 :         return -1;
    1306           0 :       }
    1307           0 :       break;
    1308           0 :     }
    1309           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION: {
    1310           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1311           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data current root slot option %d", parser->option ));
    1312           0 :         return -1;
    1313           0 :       }
    1314           0 :       break;
    1315           0 :     }
    1316           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION: {
    1317           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1318           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data v11411 root slot option %d", parser->option ));
    1319           0 :         return -1;
    1320           0 :       }
    1321           0 :       break;
    1322           0 :     }
    1323           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION: {
    1324           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1325           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data v0235 root slot option %d", parser->option ));
    1326           0 :         return -1;
    1327           0 :       }
    1328           0 :       break;
    1329           0 :     }
    1330           9 :     case STATE_VERSIONED_EPOCH_STAKES_VARIANT: {
    1331           9 :       if( FD_UNLIKELY( parser->variant ) ) {
    1332           0 :         FD_LOG_WARNING(( "invalid epoch_stakes variant %u", parser->variant ));
    1333           0 :         return -1;
    1334           0 :       }
    1335           9 :       break;
    1336           9 :     }
    1337           9 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION: {
    1338           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1339           0 :         FD_LOG_WARNING(( "invalid epoch_stakes.vote_accounts value data v4 bls pubkey compressed option %d", parser->option ));
    1340           0 :         return -1;
    1341           0 :       }
    1342           0 :       break;
    1343           0 :     }
    1344           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION: {
    1345           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1346           0 :         FD_LOG_WARNING(( "invalid epoch_stakes.vote_accounts value data current root slot option %d", parser->option ));
    1347           0 :         return -1;
    1348           0 :       }
    1349           0 :       break;
    1350           0 :     }
    1351           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION: {
    1352           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1353           0 :         FD_LOG_WARNING(( "invalid epoch_stakes.vote_accounts value data current root slot option %d", parser->option ));
    1354           0 :         return -1;
    1355           0 :       }
    1356           0 :       break;
    1357           0 :     }
    1358           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION: {
    1359           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1360           0 :         FD_LOG_WARNING(( "invalid epoch_stakes.vote_accounts value data v11411 root slot option %d", parser->option ));
    1361           0 :         return -1;
    1362           0 :       }
    1363           0 :       break;
    1364           0 :     }
    1365           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION: {
    1366           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1367           0 :         FD_LOG_WARNING(( "invalid epoch_stakes.vote_accounts value data v0235 root slot option %d", parser->option ));
    1368           0 :         return -1;
    1369           0 :       }
    1370           0 :       break;
    1371           0 :     }
    1372          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION: {
    1373          27 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1374           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data v4 bls pubkey compressed option %d", parser->option ));
    1375           0 :         return -1;
    1376           0 :       }
    1377          27 :       break;
    1378          27 :     }
    1379          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION: {
    1380          27 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1381           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data current root slot option %d", parser->option ));
    1382           0 :         return -1;
    1383           0 :       }
    1384          27 :       break;
    1385          27 :     }
    1386          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION: {
    1387           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1388           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data current root slot option %d", parser->option ));
    1389           0 :         return -1;
    1390           0 :       }
    1391           0 :       break;
    1392           0 :     }
    1393           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION: {
    1394           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1395           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data v11411 root slot option %d", parser->option ));
    1396           0 :         return -1;
    1397           0 :       }
    1398           0 :       break;
    1399           0 :     }
    1400           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION: {
    1401           0 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1402           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data v0235 root slot option %d", parser->option ));
    1403           0 :         return -1;
    1404           0 :       }
    1405           0 :       break;
    1406           0 :     }
    1407           3 :     case STATE_LTHASH_OPTION: {
    1408           3 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1409           0 :         FD_LOG_WARNING(( "invalid accounts_lthash option %d", parser->option ));
    1410           0 :         return -1;
    1411           0 :       }
    1412           3 :       break;
    1413           3 :     }
    1414           3 :     case STATE_BLOCK_ID_OPTION: {
    1415           3 :       if( FD_UNLIKELY( parser->option>1 ) ) {
    1416           0 :         FD_LOG_WARNING(( "invalid block_id option %d", parser->option ));
    1417           0 :         return -1;
    1418           0 :       }
    1419           3 :       break;
    1420           3 :     }
    1421           3 :     case STATE_BLOCK_ID: {
    1422           3 :       static uchar const zeros[32] = {0};
    1423           3 :       if( FD_UNLIKELY( !memcmp( manifest->block_id, zeros, 32UL ) ) ) {
    1424           0 :         FD_LOG_WARNING(( "invalid snapshot manifest block_id value all zeros" ));
    1425           0 :         return -1;
    1426           0 :       }
    1427           3 :       break;
    1428           3 :     }
    1429         954 :     default: break;
    1430        1095 :   }
    1431             : 
    1432             :   /* Lengths must be valid */
    1433        1095 :   switch( parser->state ) {
    1434           3 :     case STATE_BLOCKHASH_QUEUE_AGES_LENGTH: {
    1435           3 :       if( FD_UNLIKELY( !manifest->blockhashes_len || manifest->blockhashes_len>FD_BLOCKHASHES_MAX ) ) {
    1436           0 :         FD_LOG_WARNING(( "invalid blockhash_queue_ages length %lu (max %lu)", manifest->blockhashes_len, FD_BLOCKHASHES_MAX ));
    1437           0 :         return -1;
    1438           0 :       }
    1439           3 :       break;
    1440           3 :     }
    1441           3 :     case STATE_ANCESTORS_LENGTH: {
    1442             :       /* Agave's bank now creates an ancestor set with a single entry
    1443             :          (the current slot), and the ancestors list is deprecated.
    1444             :          However, length must still be checked to keep it backward
    1445             :          compatible:
    1446             :          https://github.com/anza-xyz/agave/blob/v4.0.0-beta.1/runtime/src/bank.rs#L1846 */
    1447           3 :       if( FD_UNLIKELY( parser->length1>8192UL ) ) {
    1448           0 :         FD_LOG_WARNING(( "invalid ancestors length %lu", parser->length1 ));
    1449           0 :         return -1;
    1450           0 :       }
    1451           3 :       break;
    1452           3 :     }
    1453           3 :     case STATE_HARD_FORKS_LENGTH: {
    1454           3 :       if( FD_UNLIKELY( manifest->hard_fork_cnt>FD_HARD_FORKS_MAX ) ) {
    1455           0 :         FD_LOG_WARNING(( "invalid hard_forks length %lu (max %lu)", manifest->hard_fork_cnt, FD_HARD_FORKS_MAX ));
    1456           0 :         return -1;
    1457           0 :       }
    1458           3 :       break;
    1459           3 :     }
    1460           3 :     case STATE_STAKES_VOTE_ACCOUNTS_LENGTH: {
    1461           3 :       if( FD_UNLIKELY( manifest->vote_accounts_len>FD_RUNTIME_MAX_SNAPSHOT_VOTE_ACCOUNTS ) ) {
    1462           0 :         FD_LOG_WARNING(( "invalid vote_accounts_len %lu (max %lu)", manifest->vote_accounts_len, FD_RUNTIME_MAX_SNAPSHOT_VOTE_ACCOUNTS ));
    1463           0 :         return -1;
    1464           0 :       }
    1465           3 :       break;
    1466           3 :     }
    1467           3 :     case STATE_STAKES_STAKE_DELEGATIONS_LENGTH: {
    1468           3 :       if( FD_UNLIKELY( manifest->stake_delegations_len>FD_RUNTIME_MAX_STAKE_ACCOUNTS ) ) {
    1469           0 :         FD_LOG_WARNING(( "invalid stakes_stake_delegations length %lu (max %lu)", manifest->stake_delegations_len, FD_RUNTIME_MAX_STAKE_ACCOUNTS ));
    1470           0 :         return -1;
    1471           0 :       }
    1472           3 :       break;
    1473           3 :     }
    1474           3 :     case STATE_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE: {
    1475           0 :       if( FD_UNLIKELY( manifest->stake_delegations[ parser->idx1 ].warmup_cooldown_rate>1.0 ) ) {
    1476           0 :         FD_LOG_WARNING(( "invalid stakes_stake_delegations warmup cooldown rate %f", manifest->stake_delegations[ parser->idx1 ].warmup_cooldown_rate ));
    1477           0 :         return -1;
    1478           0 :       }
    1479           0 :       break;
    1480           0 :     }
    1481           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS_LENGTH:
    1482           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS_LENGTH:
    1483           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:
    1484           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH: {
    1485           0 :       if( FD_UNLIKELY( parser->length4>FD_EPOCH_CREDITS_MAX ) ) {
    1486           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data current epoch credits length %lu (max %lu)", parser->length4, FD_EPOCH_CREDITS_MAX ));
    1487           0 :         return -1;
    1488           0 :       }
    1489           0 :       break;
    1490           0 :     }
    1491           3 :     case STATE_EPOCH_STAKES_LENGTH: {
    1492           3 :       if( FD_UNLIKELY( parser->epoch_stakes_len ) ) {
    1493             :         /* The epoch stakes in the bank is a deprecated, unused field.
    1494             :            https://github.com/anza-xyz/agave/blob/v3.1.9/runtime/src/serde_snapshot.rs#L461 */
    1495           0 :         FD_LOG_WARNING(( "invalid bank epoch stakes length %lu, expected to be 0 because the bank epoch stakes field is deprecated", parser->epoch_stakes_len ));
    1496           0 :         return -1;
    1497           0 :       }
    1498           3 :       break;
    1499           3 :     }
    1500           3 :     case STATE_VERSIONED_EPOCH_STAKES_LENGTH: {
    1501           3 :       if( FD_UNLIKELY( parser->epoch_stakes_len>6UL ) ) {
    1502           0 :         FD_LOG_WARNING(( "invalid epoch_stakes_len %lu", parser->epoch_stakes_len ));
    1503           0 :         return -1;
    1504           0 :       }
    1505           3 :       break;
    1506           3 :     }
    1507           3 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES_LENGTH: {
    1508           0 :       if( FD_UNLIKELY( parser->length3>31 ) ) {
    1509           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data current votes length %lu", parser->length3 ));
    1510           0 :         return -1;
    1511           0 :       }
    1512           0 :       break;
    1513           0 :     }
    1514           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES_LENGTH: {
    1515           0 :       if( FD_UNLIKELY( parser->length3>31 ) ) {
    1516           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data current votes length %lu", parser->length3 ));
    1517           0 :         return -1;
    1518           0 :       }
    1519           0 :       break;
    1520           0 :     }
    1521           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH: {
    1522           0 :       if( FD_UNLIKELY( parser->length3>31 ) ) {
    1523           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data v11411 votes length %lu", parser->length3 ));
    1524           0 :         return -1;
    1525           0 :       }
    1526           0 :       break;
    1527           0 :     }
    1528           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH: {
    1529           0 :       if( FD_UNLIKELY( parser->length3>31 ) ) {
    1530           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data v0235 votes length %lu", parser->length3 ));
    1531           0 :         return -1;
    1532           0 :       }
    1533           0 :       break;
    1534           0 :     }
    1535           3 :     case STATE_ACCOUNTS_DB_STORAGES_LENGTH: {
    1536           3 :       if( FD_UNLIKELY( parser->length1>MAX_SPARSE_ARRAY_LEN ) ) {
    1537           0 :         FD_LOG_WARNING(( "invalid accounts_db_storages length %lu", parser->length1 ));
    1538           0 :         return -1;
    1539           0 :       }
    1540           3 :       break;
    1541           3 :     }
    1542           3 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_LENGTH: {
    1543           0 :       if( FD_UNLIKELY( parser->length2>(1UL<<16UL ) ) ) {
    1544           0 :         FD_LOG_WARNING(( "invalid accounts_db_storages account vecs length %lu", parser->length2 ));
    1545           0 :         return -1;
    1546           0 :       }
    1547           0 :       break;
    1548           0 :     }
    1549           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH:
    1550           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH: {
    1551           9 :       ulong stakes_len = parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : parser->length2;
    1552           9 :       if( FD_UNLIKELY( stakes_len>FD_RUNTIME_MAX_VAT_VOTE_ACCOUNTS ) ) {
    1553           0 :         FD_LOG_WARNING(( "invalid versioned epoch stakes vote accounts length %lu (max %lu)", stakes_len, FD_RUNTIME_MAX_VAT_VOTE_ACCOUNTS ));
    1554           0 :         return -1;
    1555           0 :       }
    1556           9 :       break;
    1557           9 :     }
    1558           9 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH:
    1559           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH: {
    1560           9 :       if( FD_UNLIKELY( parser->length2>( 1UL<<22UL ) ) ) { /* 2^21 needed, arbitrarily put 2^22 to have some margin */
    1561           0 :         FD_LOG_WARNING(( "invalid epoch stakes/versioned epoch stakes stake delegations length %lu", parser->length2 ));
    1562           0 :         return -1;
    1563           0 :       }
    1564           9 :       break;
    1565           9 :     }
    1566           9 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH: {
    1567           0 :       if( FD_UNLIKELY( parser->length2>MAX_VOTE_ACCOUNT_DATA_LEN ) ) { /* 10 MiB */
    1568           0 :         FD_LOG_WARNING(( "invalid vote_accounts value data length %lu", parser->length2 ));
    1569           0 :         return -1;
    1570           0 :       }
    1571           0 :       break;
    1572           0 :     }
    1573           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH:
    1574          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH: {
    1575          27 :       if( FD_UNLIKELY( parser->length3>MAX_VOTE_ACCOUNT_DATA_LEN ) ) { /* 10 MiB */
    1576           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data length %lu", parser->length3 ));
    1577           0 :         return -1;
    1578           0 :       }
    1579          27 :       break;
    1580          27 :     }
    1581          27 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS_LENGTH:
    1582           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS_LENGTH:
    1583           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:
    1584           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH:
    1585          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_EPOCH_CREDITS_LENGTH:
    1586          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_EPOCH_CREDITS_LENGTH:
    1587          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_EPOCH_CREDITS_LENGTH:
    1588          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_EPOCH_CREDITS_LENGTH: {
    1589          27 :       ulong length = parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].epoch_credits_history_len : parser->length4;
    1590          27 :       if( FD_UNLIKELY( length>FD_EPOCH_CREDITS_MAX ) ) {
    1591           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data current epoch credits length %lu (max %lu)", length, FD_EPOCH_CREDITS_MAX ));
    1592           0 :         return -1;
    1593           0 :       }
    1594          27 :       break;
    1595          27 :     }
    1596          27 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES_LENGTH:
    1597          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_VOTES_LENGTH:
    1598          27 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES_LENGTH:
    1599          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_VOTES_LENGTH: {
    1600          27 :       if( FD_UNLIKELY( parser->length4>31 ) ) {
    1601           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data current votes length %lu", parser->length4 ));
    1602           0 :         return -1;
    1603           0 :       }
    1604          27 :       break;
    1605          27 :     }
    1606          27 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH:
    1607           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_VOTES_LENGTH: {
    1608           0 :       if( FD_UNLIKELY( parser->length4>31 ) ) {
    1609           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data v11411 votes length %lu", parser->length4 ));
    1610           0 :         return -1;
    1611           0 :       }
    1612           0 :       break;
    1613           0 :     }
    1614           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH:
    1615           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_VOTES_LENGTH: {
    1616           0 :       if( FD_UNLIKELY( parser->length4>31 ) ) {
    1617           0 :         FD_LOG_WARNING(( "invalid version_epoch_stakes.vote_accounts value data v0235 votes length %lu", parser->length4 ));
    1618           0 :         return -1;
    1619           0 :       }
    1620           0 :       break;
    1621           0 :     }
    1622           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:
    1623           9 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH: {
    1624           9 :       if( FD_UNLIKELY( parser->length2>(1UL<<16UL) ) ) {
    1625           0 :         FD_LOG_WARNING(( "invalid versioned epoch stakes node id to vote accounts length %lu", parser->length2 ));
    1626           0 :         return -1;
    1627           0 :       }
    1628           9 :       break;
    1629           9 :     }
    1630           9 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS_LENGTH:
    1631           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH:
    1632           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH: {
    1633           0 :       if( FD_UNLIKELY( parser->length3>1024UL ) ) {
    1634           0 :         FD_LOG_WARNING(( "invalid vote account authorized voters length %lu", parser->length3 ));
    1635           0 :         return -1;
    1636           0 :       }
    1637           0 :       break;
    1638           0 :     }
    1639           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS_LENGTH:
    1640           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH:
    1641           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH:
    1642          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_AUTHORIZED_VOTERS_LENGTH:
    1643          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_AUTHORIZED_VOTERS_LENGTH:
    1644          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_AUTHORIZED_VOTERS_LENGTH: {
    1645          27 :       if( FD_UNLIKELY( parser->length4>1024UL ) ) {
    1646           0 :         FD_LOG_WARNING(( "invalid epoch stakes vote account authorized voters length %lu", parser->length4 ));
    1647           0 :         return -1;
    1648           0 :       }
    1649          27 :       break;
    1650          27 :     }
    1651          27 :     case STATE_STAKES_STAKE_HISTORY_LENGTH: {
    1652           3 :       if( FD_UNLIKELY( parser->length1>MAX_SPARSE_ARRAY_LEN ) ) {
    1653           0 :         FD_LOG_WARNING(( "invalid stake history length %lu", parser->length1 ));
    1654           0 :         return -1;
    1655           0 :       }
    1656           3 :       break;
    1657           3 :     }
    1658           3 :     case STATE_EPOCH_STAKES_STAKE_HISTORY_LENGTH: {
    1659           0 :       if( FD_UNLIKELY( parser->length2>MAX_SPARSE_ARRAY_LEN ) ) {
    1660           0 :         FD_LOG_WARNING(( "invalid epoch stakes stake history length %lu", parser->length2 ));
    1661           0 :         return -1;
    1662           0 :       }
    1663           0 :       break;
    1664           0 :     }
    1665           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_HISTORY_LENGTH: {
    1666           9 :       if( FD_UNLIKELY( parser->length2>MAX_SPARSE_ARRAY_LEN ) ) {
    1667           0 :         FD_LOG_WARNING(( "invalid versioned epoch stakes stake history length %lu", parser->length2 ));
    1668           0 :         return -1;
    1669           0 :       }
    1670           9 :       break;
    1671           9 :     }
    1672           9 :     case STATE_UNUSED_ACCOUNTS1_LENGTH:
    1673           6 :     case STATE_UNUSED_ACCOUNTS2_LENGTH:
    1674           9 :     case STATE_UNUSED_ACCOUNTS3_LENGTH: {
    1675           9 :       if( FD_UNLIKELY( parser->length1>MAX_SPARSE_ARRAY_LEN ) ) {
    1676           0 :         FD_LOG_WARNING(( "invalid unused accounts length %lu", parser->length1 ));
    1677           0 :         return -1;
    1678           0 :       }
    1679           9 :       break;
    1680           9 :     }
    1681           9 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH:
    1682           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_VOTE_ACCOUNTS_LENGTH: {
    1683           0 :       if( FD_UNLIKELY( parser->length3>MAX_SPARSE_ARRAY_LEN ) ) {
    1684           0 :         FD_LOG_WARNING(( "invalid node_id_to_vote_accounts vote accounts length %lu", parser->length3 ));
    1685           0 :         return -1;
    1686           0 :       }
    1687           0 :       break;
    1688           0 :     }
    1689           0 :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH:
    1690           9 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH: {
    1691           9 :       if( FD_UNLIKELY( parser->length2>MAX_SPARSE_ARRAY_LEN ) ) {
    1692           0 :         FD_LOG_WARNING(( "invalid epoch authorized voters length %lu", parser->length2 ));
    1693           0 :         return -1;
    1694           0 :       }
    1695           9 :       break;
    1696           9 :     }
    1697           9 :     case STATE_ACCOUNTS_DB_HISTORICAL_ROOTS_LENGTH:
    1698           6 :     case STATE_ACCOUNTS_DB_HISTORICAL_WITH_HASH_LENGTH: {
    1699           6 :       if( FD_UNLIKELY( parser->length1>MAX_SPARSE_ARRAY_LEN ) ) {
    1700           0 :         FD_LOG_WARNING(( "invalid accounts db historical length %lu", parser->length1 ));
    1701           0 :         return -1;
    1702           0 :       }
    1703           6 :       break;
    1704           6 :     }
    1705        1095 :   }
    1706             : 
    1707        1095 :   return 0;
    1708        1095 : }
    1709             : 
    1710             : static inline int
    1711        1095 : state_process( fd_ssmanifest_parser_t * parser ) {
    1712        1095 :   fd_snapshot_manifest_t * manifest = parser->manifest;
    1713             : 
    1714        1095 :   if( FD_UNLIKELY( parser->state==STATE_DONE ) ) {
    1715           0 :     FD_LOG_WARNING(( "manifest parser re-entered after completion" ));
    1716           0 :     return -1;
    1717           0 :   }
    1718             : 
    1719        1095 :   if( FD_UNLIKELY( parser->state==STATE_EPOCH_SCHEDULE_FIRST_NORMAL_SLOT ) ) {
    1720           3 :     fd_epoch_schedule_t epoch_schedule = (fd_epoch_schedule_t){
    1721           3 :       .slots_per_epoch             = manifest->epoch_schedule_params.slots_per_epoch,
    1722           3 :       .leader_schedule_slot_offset = manifest->epoch_schedule_params.leader_schedule_slot_offset,
    1723           3 :       .warmup                      = manifest->epoch_schedule_params.warmup,
    1724           3 :       .first_normal_epoch          = manifest->epoch_schedule_params.first_normal_epoch,
    1725           3 :       .first_normal_slot           = manifest->epoch_schedule_params.first_normal_slot,
    1726           3 :     };
    1727             : 
    1728             :     /* The epoch field in the snapshot manifest is now deprecated.  We
    1729             :        derive the epoch from the slot and epoch schedule instead.
    1730             :        https://github.com/anza-xyz/agave/blob/v4.0.0-beta.1/runtime/src/serde_snapshot.rs#L174 */
    1731           3 :     parser->epoch                    = fd_slot_to_epoch( &epoch_schedule, manifest->slot, NULL );
    1732           3 :     parser->leader_schedule_epoch    = fd_slot_to_leader_schedule_epoch( &epoch_schedule, manifest->slot );
    1733           3 :     ulong const epoch_stakes_ele_cnt = FD_RUNTIME_MANIFEST_EPOCH_STAKES_LEN;
    1734             : 
    1735           3 :     ulong const epoch_stakes_base = parser->epoch>0UL ? parser->epoch-1UL : 0UL;
    1736           3 :     if( FD_UNLIKELY( parser->leader_schedule_epoch-epoch_stakes_base>=epoch_stakes_ele_cnt ) ) {
    1737           0 :       FD_LOG_WARNING(( "fd_ssmanifest_parser only supports up to %lu epoch_stakes entries, but leader schedule epoch is %lu epochs after base epoch",
    1738           0 :                        epoch_stakes_ele_cnt, parser->leader_schedule_epoch-epoch_stakes_base ));
    1739           0 :       return -1;
    1740           0 :     }
    1741           3 :   }
    1742             : 
    1743        1095 :   if( FD_UNLIKELY( parser->state==STATE_VERSIONED_EPOCH_STAKES_EPOCH ) ) {
    1744             :     /* The versioned epoch stakes field replaces the deprecated epoch
    1745             :        stakes field in the bank.
    1746             :        https://github.com/anza-xyz/agave/blob/v3.1.9/runtime/src/serde_snapshot.rs#L189 */
    1747           9 :     if( FD_UNLIKELY( parser->epoch_stakes_epoch>parser->leader_schedule_epoch ) ) {
    1748             :       /* VerifyEpochStakesError::EpochGreaterThanMax
    1749             :          https://github.com/anza-xyz/agave/blob/v3.1.8/runtime/src/snapshot_bank_utils.rs#L656 */
    1750           0 :       FD_LOG_WARNING(( "epoch stakes epoch %lu is greater than the leader schedule epoch %lu ", parser->epoch_stakes_epoch, parser->leader_schedule_epoch ));
    1751           0 :       return -1;
    1752           0 :     }
    1753             : 
    1754           9 :     ulong const epoch_stakes_base = parser->epoch>0UL ? parser->epoch-1UL : 0UL;
    1755           9 :     if( parser->epoch_stakes_epoch>=epoch_stakes_base && parser->epoch_stakes_epoch<=parser->leader_schedule_epoch ) {
    1756           9 :       parser->epoch_idx = parser->epoch_stakes_epoch-epoch_stakes_base;
    1757           9 :       parser->manifest->epoch_stakes[ parser->epoch_idx ].epoch = parser->epoch_stakes_epoch;
    1758           9 :     }
    1759           0 :     else {
    1760           0 :       parser->epoch_idx = ULONG_MAX;
    1761           0 :     }
    1762           9 :   }
    1763             : 
    1764             :   /* STATE_STAKES_VOTE_ACCOUNTS */
    1765             : 
    1766        1095 :   if( FD_UNLIKELY( parser->state==STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH && !parser->length2 ) ) {
    1767           0 :     parser->state = STATE_STAKES_VOTE_ACCOUNTS_VALUE_OWNER;
    1768           0 :     return 0;
    1769           0 :   }
    1770             : 
    1771        1095 :   if( FD_UNLIKELY( parser->state==STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT ) ) {
    1772           0 :     switch( parser->variant ) {
    1773           0 :       case 3: parser->state = STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_NODE_PUBKEY; return 0;
    1774           0 :       case 2: parser->state = STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY; return 0;
    1775           0 :       case 1: parser->state = STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY; return 0;
    1776           0 :       case 0: parser->state = STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY; return 0;
    1777           0 :     }
    1778           0 :   }
    1779             : 
    1780             :   /* Older vote states only populate bottom 8 bits of the commission
    1781             :      field, upper bytes should be cleared, then multiplied by 100 to
    1782             :      convert to basis points. */
    1783        1095 :   if( FD_UNLIKELY( parser->epoch_idx!=ULONG_MAX &&
    1784        1095 :       (  parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_COMMISSION
    1785        1095 :       || parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION
    1786        1095 :       || parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION
    1787        1095 :       || parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_COMMISSION
    1788        1095 :       || parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_COMMISSION
    1789        1095 :       || parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_COMMISSION ) ) ) {
    1790           0 :     parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].commission &= 0xFF;
    1791           0 :     parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].commission *= 100;
    1792           0 :   }
    1793             : 
    1794        1095 :   if( FD_UNLIKELY( parser->state==STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH ) ) parser->account_data_start = parser->off;
    1795             : 
    1796        1095 :   switch( parser->state ) {
    1797           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_TIMESTAMP:
    1798           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_TIMESTAMP:
    1799           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:
    1800           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:
    1801           0 :       if( FD_UNLIKELY( parser->off-parser->account_data_start>parser->length2 ) ) {
    1802           0 :         FD_LOG_WARNING(( "invalid vote account data: consumed %lu bytes exceeds declared length %lu", parser->off-parser->account_data_start, parser->length2 ));
    1803           0 :         return -1;
    1804           0 :       }
    1805           0 :       parser->state = STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY;
    1806           0 :       return 0;
    1807        1095 :     default: break;
    1808        1095 :   }
    1809             : 
    1810             :   /* STATE_EPOCH_STAKES_VOTE_ACCOUNTS */
    1811             : 
    1812        1095 :   if( FD_UNLIKELY( parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH && !parser->length3 ) ) {
    1813           0 :     parser->state = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_OWNER;
    1814           0 :     return 0;
    1815           0 :   }
    1816             : 
    1817        1095 :   if( FD_UNLIKELY( parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT ) ) {
    1818           0 :     switch( parser->variant ) {
    1819           0 :       case 3: parser->state = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_NODE_PUBKEY; return 0;
    1820           0 :       case 2: parser->state = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY; return 0;
    1821           0 :       case 1: parser->state = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY; return 0;
    1822           0 :       case 0: parser->state = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY; return 0;
    1823           0 :     }
    1824           0 :   }
    1825             : 
    1826        1095 :   if( FD_UNLIKELY( parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH ) ) parser->account_data_start = parser->off;
    1827             : 
    1828        1095 :   switch( parser->state ) {
    1829           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_TIMESTAMP:
    1830           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_TIMESTAMP:
    1831           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:
    1832           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:
    1833           0 :       if( FD_UNLIKELY( parser->off-parser->account_data_start>parser->length3 ) ) {
    1834           0 :         FD_LOG_WARNING(( "invalid epoch stakes vote account data: consumed %lu bytes exceeds declared length %lu", parser->off-parser->account_data_start, parser->length3 ));
    1835           0 :         return -1;
    1836           0 :       }
    1837           0 :       parser->state = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY;
    1838           0 :       return 0;
    1839        1095 :     default: break;
    1840        1095 :   }
    1841             : 
    1842             :   /* STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS */
    1843             : 
    1844        1095 :   if( FD_UNLIKELY( parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH && !parser->length3 ) ) {
    1845           0 :     parser->state = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_OWNER;
    1846           0 :     return 0;
    1847           0 :   }
    1848             : 
    1849        1095 :   if( FD_UNLIKELY( parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_VARIANT ) ) {
    1850          27 :     switch( parser->variant ) {
    1851          27 :       case 3: parser->state = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_NODE_PUBKEY; return 0;
    1852           0 :       case 2: parser->state = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY; return 0;
    1853           0 :       case 1: parser->state = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY; return 0;
    1854           0 :       case 0: parser->state = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY; return 0;
    1855          27 :     }
    1856          27 :   }
    1857             : 
    1858        1068 :   if( FD_UNLIKELY( parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_LENGTH ) ) parser->account_data_start = parser->off;
    1859             : 
    1860        1068 :   switch( parser->state ) {
    1861          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_LAST_TIMESTAMP_TIMESTAMP:
    1862          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_LAST_TIMESTAMP_TIMESTAMP:
    1863          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_LAST_TIMESTAMP_TIMESTAMP:
    1864          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_LAST_TIMESTAMP_TIMESTAMP:
    1865          27 :       if( FD_UNLIKELY( parser->off-parser->account_data_start>parser->length3 ) ) {
    1866           0 :         FD_LOG_WARNING(( "invalid versioned epoch stakes vote account data: consumed %lu bytes exceeds declared length %lu", parser->off-parser->account_data_start, parser->length3 ));
    1867           0 :         return -1;
    1868           0 :       }
    1869          27 :       parser->state = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_DUMMY;
    1870          27 :       return 0;
    1871        1041 :     default: break;
    1872        1068 :   }
    1873             : 
    1874        1041 :   switch( parser->state ) {
    1875           3 :     case STATE_BLOCKHASH_QUEUE_LAST_HASH_OPTION: parser->state += 2-!!parser->option; return 0;
    1876           3 :     case STATE_HASHES_PER_TICK_OPTION:    manifest->has_hashes_per_tick    = !!parser->option; parser->state += 2-!!parser->option; return 0;
    1877           3 :     case STATE_BANK_INCREMENTAL_SNAPSHOT_PERSISTENCE_OPTION: {
    1878           3 :       if( FD_LIKELY( !!parser->option ) ) parser->state += 1;
    1879           3 :       else                                parser->state = STATE_EPOCH_ACCOUNT_HASH_OPTION;
    1880           3 :       return 0;
    1881           0 :     }
    1882           3 :     case STATE_EPOCH_ACCOUNT_HASH_OPTION: manifest->has_epoch_account_hash = !!parser->option; parser->state += 2-!!parser->option; return 0;
    1883           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION: parser->state += 2-!!parser->option; return 0;
    1884           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1885           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1886           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1887           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1888           3 :     case STATE_LTHASH_OPTION:             manifest->has_accounts_lthash    = !!parser->option; parser->state += 2-!!parser->option; return 0;
    1889           3 :     case STATE_BLOCK_ID_OPTION:           manifest->has_block_id           = !!parser->option; parser->state += 2-!!parser->option; return 0;
    1890          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION: if( parser->epoch_idx!=ULONG_MAX ) manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].has_identity_bls = !!parser->option; parser->state += 2-!!parser->option; return 0;
    1891          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1892           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1893           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1894           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1895             : 
    1896           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_BLS_PUBKEY_COMPRESSED_OPTION: if( parser->epoch_idx!=ULONG_MAX ) manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ].has_identity_bls = !!parser->option; parser->state += 2-!!parser->option; return 0;
    1897           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V4_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1898           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1899           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1900           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_ROOT_SLOT_OPTION: parser->state += 2-!!parser->option; return 0;
    1901         969 :     default: break;
    1902        1041 :   }
    1903             : 
    1904         969 :   ulong length = 0UL;
    1905         969 :   ulong * idx;
    1906         969 :   int next_target = INT_MAX;
    1907         969 :   switch( parser->state ) {
    1908           3 :     case STATE_BLOCKHASH_QUEUE_AGES_LENGTH:                            length = manifest->blockhashes_len;   idx = &parser->idx1; next_target = STATE_BLOCKHASH_QUEUE_MAX_AGE;                                break;
    1909           3 :     case STATE_ANCESTORS_LENGTH:                                       length = parser->length1;             idx = &parser->idx1; next_target = STATE_HASH;                                                   break;
    1910           3 :     case STATE_HARD_FORKS_LENGTH:                                      length = manifest->hard_fork_cnt;    idx = &parser->idx1; next_target = STATE_TRANSACTION_COUNT;                                      break;
    1911           3 :     case STATE_STAKES_VOTE_ACCOUNTS_LENGTH:                            length = manifest->vote_accounts_len; idx = &parser->idx1; next_target = STATE_STAKES_STAKE_DELEGATIONS_LENGTH;                        break;
    1912           3 :     case STATE_STAKES_STAKE_DELEGATIONS_LENGTH:                        length = manifest->stake_delegations_len;        idx = &parser->idx1; next_target = STATE_STAKES_UNUSED;                                          break;
    1913           3 :     case STATE_EPOCH_STAKES_LENGTH:                                    length = parser->epoch_stakes_len;    idx = &parser->idx1; next_target = STATE_IS_DELTA;                                               break;
    1914           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH:                      length = parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : parser->length2; idx = &parser->idx2; next_target = STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH;                  break;
    1915           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH:                  length = parser->length2;             idx = &parser->idx2; next_target = STATE_EPOCH_STAKES_UNUSED;                                    break;
    1916           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH:           length = parser->length2;             idx = &parser->idx2; next_target = STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH;            break;
    1917           3 :     case STATE_ACCOUNTS_DB_STORAGES_LENGTH:                            length = parser->length1;             idx = &parser->idx1; next_target = STATE_ACCOUNTS_DB_VERSION;                                    break;
    1918           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_LENGTH:               length = parser->length2;             idx = &parser->idx2; next_target = STATE_ACCOUNTS_DB_STORAGES_DUMMY;                             break;
    1919           3 :     case STATE_VERSIONED_EPOCH_STAKES_LENGTH:                          length = parser->epoch_stakes_len;    idx = &parser->idx1; next_target = STATE_LTHASH_OPTION;                                          break;
    1920           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH:     length = parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : parser->length2; idx = &parser->idx2; next_target = STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH; break;
    1921           9 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH: length = parser->length2;             idx = &parser->idx2; next_target = STATE_VERSIONED_EPOCH_STAKES_STAKES_UNUSED;                   break;
    1922           9 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH: length = parser->length2;             idx = &parser->idx2; next_target = STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH;  break;
    1923         918 :     default: break;
    1924         969 :   }
    1925             : 
    1926         969 :   if( FD_UNLIKELY( next_target!=INT_MAX ) ) {
    1927          51 :     *idx = 0UL;
    1928          51 :     if( FD_UNLIKELY( !length ) ) {
    1929          36 :       parser->state = next_target;
    1930          36 :       return 0;
    1931          36 :     }
    1932          51 :   }
    1933             : 
    1934         933 :   int iter_target = INT_MAX;
    1935         933 :   switch( parser->state ) {
    1936           3 :     case STATE_BLOCKHASH_QUEUE_AGES_TIMESTAMP:                                   length = manifest->blockhashes_len;       idx = &parser->idx1; next_target = STATE_BLOCKHASH_QUEUE_MAX_AGE;                                iter_target = STATE_BLOCKHASH_QUEUE_AGES_LENGTH+1UL;                            break;
    1937           0 :     case STATE_ANCESTORS_VAL:                                                    length = parser->length1;                 idx = &parser->idx1; next_target = STATE_HASH;                                                   iter_target = STATE_ANCESTORS_LENGTH+1UL;                                       break;
    1938           0 :     case STATE_HARD_FORKS_VAL:                                                   length = manifest->hard_fork_cnt;        idx = &parser->idx1; next_target = STATE_TRANSACTION_COUNT;                                      iter_target = STATE_HARD_FORKS_LENGTH+1UL;                                      break;
    1939           0 :     case STATE_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                            length = manifest->vote_accounts_len;     idx = &parser->idx1; next_target = STATE_STAKES_STAKE_DELEGATIONS_LENGTH;                        iter_target = STATE_STAKES_VOTE_ACCOUNTS_LENGTH+1UL;                            break;
    1940           0 :     case STATE_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:                    length = manifest->stake_delegations_len; idx = &parser->idx1; next_target = STATE_STAKES_UNUSED;                                          iter_target = STATE_STAKES_STAKE_DELEGATIONS_LENGTH+1UL;                        break;
    1941           0 :     case STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:                      length = parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : parser->length2; idx = &parser->idx2; next_target = STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH;                  iter_target = STATE_EPOCH_STAKES_VOTE_ACCOUNTS_LENGTH+1UL;                      break;
    1942           0 :     case STATE_EPOCH_STAKES_STAKE_DELEGATIONS_WARMUP_COOLDOWN_RATE:              length = parser->length2;                 idx = &parser->idx2; next_target = STATE_EPOCH_STAKES_UNUSED;                                    iter_target = STATE_EPOCH_STAKES_STAKE_DELEGATIONS_LENGTH+1UL;                  break;
    1943           0 :     case STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE:                length = parser->length2;                 idx = &parser->idx2; next_target = STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH;            iter_target = STATE_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH+1UL;           break;
    1944           0 :     case STATE_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS:                             length = parser->epoch_stakes_len;        idx = &parser->idx1; next_target = STATE_IS_DELTA;                                               iter_target = STATE_EPOCH_STAKES_LENGTH+1UL;                                    break;
    1945           0 :     case STATE_ACCOUNTS_DB_STORAGES_DUMMY:                                       length = parser->length1;                 idx = &parser->idx1; next_target = STATE_ACCOUNTS_DB_VERSION;                                    iter_target = STATE_ACCOUNTS_DB_STORAGES_LENGTH+1UL;                            break;
    1946           0 :     case STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_FILE_SZ:                        length = parser->length2;                 idx = &parser->idx2; next_target = STATE_ACCOUNTS_DB_STORAGES_DUMMY;                             iter_target = STATE_ACCOUNTS_DB_STORAGES_ACCOUNT_VECS_LENGTH+1UL;               break;
    1947          27 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_RENT_EPOCH:     length = parser->epoch_idx!=ULONG_MAX ? manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes_len : parser->length2; idx = &parser->idx2; next_target = STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH; iter_target = STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_LENGTH+1UL;     break;
    1948           0 :     case STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_CREDITS_OBSERVED: length = parser->length2;             idx = &parser->idx2; next_target = STATE_VERSIONED_EPOCH_STAKES_STAKES_UNUSED;                   iter_target = STATE_VERSIONED_EPOCH_STAKES_STAKES_STAKE_DELEGATIONS_LENGTH+1UL; break;
    1949           0 :     case STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_TOTAL_STAKE:      length = parser->length2;             idx = &parser->idx2; next_target = STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS_LENGTH;  iter_target = STATE_VERSIONED_EPOCH_STAKES_NODE_ID_TO_VOTE_ACCOUNTS_LENGTH+1UL; break;
    1950           9 :     case STATE_VERSIONED_EPOCH_STAKES_EPOCH_AUTHORIZED_VOTERS:                   length = parser->epoch_stakes_len;    idx = &parser->idx1; next_target = STATE_LTHASH_OPTION;                                          iter_target = STATE_VERSIONED_EPOCH_STAKES_LENGTH+1UL;                          break;
    1951         894 :     default: break;
    1952         933 :   }
    1953             : 
    1954         933 :   if( FD_UNLIKELY( iter_target!=INT_MAX ) ) {
    1955          39 :     *idx += 1UL;
    1956          39 :     if( FD_LIKELY( *idx<length ) ) parser->state = iter_target;
    1957          15 :     else                           parser->state = next_target;
    1958          39 :     return 0;
    1959          39 :   }
    1960             : 
    1961         894 :   if( FD_UNLIKELY( parser->state==STATE_DONE ) ) return -1;
    1962             : 
    1963         894 :   parser->state += 1;
    1964         894 :   return 0;
    1965         894 : }
    1966             : 
    1967             : FD_FN_CONST ulong
    1968           3 : fd_ssmanifest_parser_align( void ) {
    1969           3 :   return alignof(fd_ssmanifest_parser_t);
    1970           3 : }
    1971             : 
    1972             : FD_FN_CONST ulong
    1973           3 : fd_ssmanifest_parser_footprint( void ) {
    1974           3 :   ulong l = FD_LAYOUT_INIT;
    1975           3 :   l = FD_LAYOUT_APPEND( l, alignof(fd_ssmanifest_parser_t), sizeof(fd_ssmanifest_parser_t) );
    1976           3 :   return FD_LAYOUT_FINI( l, alignof(fd_ssmanifest_parser_t) );
    1977           3 : }
    1978             : 
    1979             : void *
    1980           3 : fd_ssmanifest_parser_new( void * shmem ) {
    1981           3 :   if( FD_UNLIKELY( !shmem ) ) {
    1982           0 :     FD_LOG_WARNING(( "NULL shmem" ));
    1983           0 :     return NULL;
    1984           0 :   }
    1985             : 
    1986           3 :   if( FD_UNLIKELY( !fd_ulong_is_aligned( (ulong)shmem, alignof(fd_ssmanifest_parser_t) ) ) ) {
    1987           0 :     FD_LOG_WARNING(( "misaligned shmem" ));
    1988           0 :     return NULL;
    1989           0 :   }
    1990             : 
    1991           3 :   FD_SCRATCH_ALLOC_INIT( l, shmem );
    1992           3 :   fd_ssmanifest_parser_t * parser = FD_SCRATCH_ALLOC_APPEND( l, alignof(fd_ssmanifest_parser_t), sizeof(fd_ssmanifest_parser_t) );
    1993             : 
    1994           3 :   return parser;
    1995           3 : }
    1996             : 
    1997             : fd_ssmanifest_parser_t *
    1998           3 : fd_ssmanifest_parser_join( void * shmem ) {
    1999           3 :   return shmem;
    2000           3 : }
    2001             : 
    2002             : void
    2003             : fd_ssmanifest_parser_init( fd_ssmanifest_parser_t * parser,
    2004           3 :                            fd_snapshot_manifest_t * manifest ) {
    2005           3 :   parser->state       = STATE_BLOCKHASH_QUEUE_LAST_HASH_INDEX;
    2006           3 :   parser->off         = 0UL;
    2007           3 :   parser->dst         = state_dst( parser );
    2008           3 :   parser->dst_sz      = state_size( parser );
    2009           3 :   parser->dst_cur     = 0UL;
    2010           3 :   parser->manifest    = manifest;
    2011             : 
    2012           3 :   manifest->has_accounts_lthash    = 0;
    2013           3 :   manifest->has_epoch_account_hash = 0;
    2014           3 :   manifest->has_block_id           = 0;
    2015           3 :   manifest->has_hashes_per_tick    = 0;
    2016          12 :   for( ulong i=0UL; i<FD_RUNTIME_MANIFEST_EPOCH_STAKES_LEN; i++ ) {
    2017           9 :     manifest->epoch_stakes[i].epoch           = ULONG_MAX;  /* sentinel: not populated */
    2018           9 :     manifest->epoch_stakes[i].total_stake     = 0UL;
    2019           9 :     manifest->epoch_stakes[i].vote_stakes_len = 0UL;
    2020           9 :   }
    2021           3 : }
    2022             : 
    2023             : /* Agave can serialize some optional "extra fields" at the
    2024             :    end of the snapshot. The snapshot is valid whether or not
    2025             :    these are present. */
    2026             : static inline int
    2027           3 : state_is_optional_extras_field( fd_ssmanifest_parser_t * parser ) {
    2028           3 :   switch( parser->state ) {
    2029           0 :     case STATE_BLOCK_ID_OPTION: return 1;
    2030           3 :     default:                    return 0;
    2031           3 :   }
    2032           3 : }
    2033             : 
    2034             : /* Pre-v4 vote states carry no SIMD-0232 collector fields: when the
    2035             :    node pubkey field of one completes, default the inflation collector
    2036             :    to the vote account and the block revenue collector to the node
    2037             :    identity (both parsed by then). */
    2038             : 
    2039             : static void
    2040        1095 : state_default_collectors( fd_ssmanifest_parser_t * parser ) {
    2041        1095 :   if( FD_LIKELY( !(  parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY
    2042        1095 :                   || parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY
    2043        1095 :                   || parser->state==STATE_EPOCH_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY
    2044        1095 :                   || parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V3_NODE_PUBKEY
    2045        1095 :                   || parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V11411_NODE_PUBKEY
    2046        1095 :                   || parser->state==STATE_VERSIONED_EPOCH_STAKES_STAKES_VOTE_ACCOUNTS_VALUE_DATA_V0235_NODE_PUBKEY ) ) ) return;
    2047           0 :   if( FD_UNLIKELY( parser->epoch_idx==ULONG_MAX ) ) return;
    2048             : 
    2049           0 :   fd_snapshot_manifest_vote_stakes_t * vote_stakes =
    2050           0 :     &parser->manifest->epoch_stakes[ parser->epoch_idx ].vote_stakes[ parser->idx2 ];
    2051           0 :   memcpy( vote_stakes->commission_inflation, vote_stakes->vote,     32UL );
    2052           0 :   memcpy( vote_stakes->commission_block,     vote_stakes->identity, 32UL );
    2053           0 : }
    2054             : 
    2055             : int
    2056             : fd_ssmanifest_parser_consume( fd_ssmanifest_parser_t * parser,
    2057             :                               uchar const *            buf,
    2058           3 :                               ulong                    bufsz ) {
    2059             : #if SSMANIFEST_DEBUG
    2060             :   int state = parser->state;
    2061             : #endif
    2062             : 
    2063        1095 :   while( bufsz ) {
    2064             : #if SSMANIFEST_DEBUG
    2065             :     if( parser->state>state ) {
    2066             :       FD_LOG_WARNING(( "State is %d (%lu/%lu)", parser->state, parser->dst_cur, parser->dst_sz ));
    2067             :       state = parser->state;
    2068             :     }
    2069             : #endif
    2070             : 
    2071        1095 :     ulong consume = fd_ulong_min( bufsz, parser->dst_sz-parser->dst_cur );
    2072             : 
    2073        1095 :     if( FD_LIKELY( parser->dst && consume ) ) memcpy( parser->dst+parser->dst_cur, buf, consume );
    2074             : 
    2075        1095 :     parser->off     += consume;
    2076        1095 :     parser->dst_cur += consume;
    2077        1095 :     buf             += consume;
    2078        1095 :     bufsz           -= consume;
    2079             : 
    2080             : #if SSMANIFEST_DEBUG
    2081             :     // FD_LOG_WARNING(( "Consumed %lu new (%lu/%lu) bytes", consume, parser->dst_cur, parser->dst_sz ));
    2082             : #endif
    2083             : 
    2084        1095 :     if( FD_LIKELY( parser->dst_cur==parser->dst_sz ) ) {
    2085             : #if SSMANIFEST_DEBUG
    2086             :       state_log( parser );
    2087             : #endif
    2088        1095 :       if( FD_UNLIKELY( -1==state_validate( parser ) ) ) {
    2089           0 :         FD_LOG_WARNING(("state_validate failed"));
    2090           0 :         return FD_SSMANIFEST_PARSER_ADVANCE_ERROR;
    2091           0 :       }
    2092        1095 :       state_default_collectors( parser );
    2093        1095 :       if( FD_UNLIKELY( -1==state_process( parser ) ) ) {
    2094           0 :         FD_LOG_WARNING(("state_process failed"));
    2095           0 :         return FD_SSMANIFEST_PARSER_ADVANCE_ERROR;
    2096           0 :       }
    2097        1095 :       parser->dst     = state_dst( parser );
    2098        1095 :       parser->dst_sz  = state_size( parser );
    2099        1095 :       parser->dst_cur = 0UL;
    2100        1095 :     }
    2101             : 
    2102        1095 :     if( FD_UNLIKELY( parser->state==STATE_DONE ) ) break;
    2103        1092 :     if( FD_UNLIKELY( !bufsz ) ) return FD_SSMANIFEST_PARSER_ADVANCE_AGAIN;
    2104        1092 :   }
    2105             : 
    2106           3 :   if( FD_UNLIKELY( bufsz ) ) {
    2107           0 :     FD_LOG_WARNING(( "excess data in buffer" ));
    2108           0 :     return FD_SSMANIFEST_PARSER_ADVANCE_ERROR;
    2109           0 :   }
    2110             : 
    2111           3 :   return parser->state==STATE_DONE ? FD_SSMANIFEST_PARSER_ADVANCE_DONE
    2112           3 :                                    : FD_SSMANIFEST_PARSER_ADVANCE_AGAIN;
    2113           3 : }
    2114             : 
    2115             : int
    2116           3 : fd_ssmanifest_parser_fini( fd_ssmanifest_parser_t * parser ) {
    2117             :   /* If we are at an optional extra field, it is ok to end the parsing here. */
    2118           3 :   if( state_is_optional_extras_field( parser ) ) {
    2119           0 :     parser->state = STATE_DONE;
    2120           0 :   }
    2121             : 
    2122           3 :   if( FD_LIKELY( parser->state==STATE_DONE ) ) {
    2123           3 :     return FD_SSMANIFEST_PARSER_ADVANCE_DONE;
    2124           3 :   }
    2125             : 
    2126           0 :   return FD_SSMANIFEST_PARSER_ADVANCE_ERROR;
    2127           3 : }

Generated by: LCOV version 1.14