forked from eoscanada/eos-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
abi_test.go
1138 lines (1089 loc) · 78.2 KB
/
abi_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
package eos
import (
"encoding/hex"
"encoding/json"
"strings"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
var systemABIGeneratedV1_0 = "0e656f73696f3a3a6162692f312e30050c6163636f756e745f6e616d65046e616d650f7065726d697373696f6e5f6e616d65046e616d650b616374696f6e5f6e616d65046e616d65137472616e73616374696f6e5f69645f747970650b636865636b73756d3235360b7765696768745f747970650675696e74313631107065726d697373696f6e5f6c6576656c0002056163746f720c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d650a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740b7765696768745f74797065076269646e616d650003066269646465720c6163636f756e745f6e616d65076e65776e616d650c6163636f756e745f6e616d650362696405617373657409626964726566756e640002066269646465720c6163636f756e745f6e616d65076e65776e616d650c6163636f756e745f6e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740b7765696768745f747970650b776169745f776569676874000208776169745f7365630675696e743332067765696768740b7765696768745f7479706509617574686f726974790004097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d0577616974730d776169745f7765696768745b5d0a6e65776163636f756e7400040763726561746f720c6163636f756e745f6e616d65046e616d650c6163636f756e745f6e616d65056f776e657209617574686f726974790661637469766509617574686f7269747907736574636f64650004076163636f756e740c6163636f756e745f6e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f6465056279746573067365746162690002076163636f756e740c6163636f756e745f6e616d65036162690562797465730a757064617465617574680004076163636f756e740c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d6506706172656e740f7065726d697373696f6e5f6e616d65046175746809617574686f726974790a64656c657465617574680002076163636f756e740c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d65086c696e6b617574680004076163636f756e740c6163636f756e745f6e616d6504636f64650c6163636f756e745f6e616d6504747970650b616374696f6e5f6e616d650b726571756972656d656e740f7065726d697373696f6e5f6e616d650a756e6c696e6b617574680003076163636f756e740c6163636f756e745f6e616d6504636f64650c6163636f756e745f6e616d6504747970650b616374696f6e5f6e616d650b63616e63656c64656c617900020e63616e63656c696e675f61757468107065726d697373696f6e5f6c6576656c067472785f6964137472616e73616374696f6e5f69645f74797065076f6e6572726f7200020973656e6465725f69640775696e743132380873656e745f7472780562797465730b62757972616d627974657300030570617965720c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d650562797465730675696e7433320773656c6c72616d0002076163636f756e740c6163636f756e745f6e616d650562797465730675696e7436340662757972616d00030570617965720c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d65057175616e740561737365740a64656c6567617465627700050466726f6d0c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d65127374616b655f6e65745f7175616e74697479056173736574127374616b655f6370755f7175616e74697479056173736574087472616e7366657204626f6f6c0c756e64656c6567617465627700040466726f6d0c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d6514756e7374616b655f6e65745f7175616e7469747905617373657414756e7374616b655f6370755f7175616e7469747905617373657406726566756e640001056f776e65720c6163636f756e745f6e616d651364656c6567617465645f62616e64776964746800040466726f6d0c6163636f756e745f6e616d6502746f0c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740e757365725f7265736f75726365730004056f776e65720c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740972616d5f62797465730675696e7436340f746f74616c5f7265736f75726365730004056f776e65720c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740972616d5f62797465730675696e7436340e726566756e645f726571756573740004056f776e65720c6163636f756e745f6e616d650c726571756573745f74696d650e74696d655f706f696e745f7365630a6e65745f616d6f756e740561737365740a6370755f616d6f756e7405617373657415626c6f636b636861696e5f706172616d65746572730011136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e7433321e626173655f7065725f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f6e756d0675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f64656e0675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e7433321e64656665727265645f7472785f65787069726174696f6e5f77696e646f770675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e74313613656f73696f5f676c6f62616c5f7374617465320005116e65775f72616d5f7065725f626c6f636b0675696e743136116c6173745f72616d5f696e63726561736514626c6f636b5f74696d657374616d705f747970650e6c6173745f626c6f636b5f6e756d14626c6f636b5f74696d657374616d705f7479706508726573657276656407666c6f61743634087265766973696f6e0575696e743812656f73696f5f676c6f62616c5f737461746515626c6f636b636861696e5f706172616d65746572730d0c6d61785f72616d5f73697a650675696e74363418746f74616c5f72616d5f62797465735f72657365727665640675696e7436340f746f74616c5f72616d5f7374616b6505696e7436341d6c6173745f70726f64756365725f7363686564756c655f75706461746514626c6f636b5f74696d657374616d705f74797065186c6173745f706572766f74655f6275636b65745f66696c6c0675696e7436340e706572766f74655f6275636b657405696e7436340f706572626c6f636b5f6275636b657405696e74363413746f74616c5f756e706169645f626c6f636b730675696e74333215746f74616c5f6163746976617465645f7374616b6505696e7436341b7468726573685f6163746976617465645f7374616b655f74696d650675696e7436341b6c6173745f70726f64756365725f7363686564756c655f73697a650675696e7431361a746f74616c5f70726f64756365725f766f74655f77656967687407666c6f617436340f6c6173745f6e616d655f636c6f736514626c6f636b5f74696d657374616d705f747970650d70726f64756365725f696e666f0008056f776e65720c6163636f756e745f6e616d650b746f74616c5f766f74657307666c6f617436340c70726f64756365725f6b65790a7075626c69635f6b65790969735f61637469766504626f6f6c0375726c06737472696e670d756e706169645f626c6f636b730675696e7433320f6c6173745f636c61696d5f74696d650675696e743634086c6f636174696f6e0675696e7431360b72656770726f647563657200040870726f64756365720c6163636f756e745f6e616d650c70726f64756365725f6b65790a7075626c69635f6b65790375726c06737472696e67086c6f636174696f6e0675696e74313609756e72656770726f6400010870726f64756365720c6163636f756e745f6e616d650673657472616d00010c6d61785f72616d5f73697a650675696e7436340a73657472616d7261746500010f62797465735f7065725f626c6f636b0675696e7431360872656770726f787900020570726f78790c6163636f756e745f6e616d6507697370726f787904626f6f6c0c766f746570726f6475636572000305766f7465720c6163636f756e745f6e616d650570726f78790c6163636f756e745f6e616d650970726f6475636572730e6163636f756e745f6e616d655b5d0a766f7465725f696e666f0007056f776e65720c6163636f756e745f6e616d650570726f78790c6163636f756e745f6e616d650970726f6475636572730e6163636f756e745f6e616d655b5d067374616b656405696e743634106c6173745f766f74655f77656967687407666c6f617436341370726f786965645f766f74655f77656967687407666c6f617436340869735f70726f787904626f6f6c0c636c61696d726577617264730001056f776e65720c6163636f756e745f6e616d6507736574707269760002076163636f756e740c6163636f756e745f6e616d650769735f7072697604696e74380b726d7670726f647563657200010870726f64756365720c6163636f756e745f6e616d65127365745f6163636f756e745f6c696d6974730004076163636f756e740c6163636f756e745f6e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e743634117365745f676c6f62616c5f6c696d6974730001136370755f757365635f7065725f706572696f6405696e7436340c70726f64756365725f6b657900020d70726f64756365725f6e616d650c6163636f756e745f6e616d6511626c6f636b5f7369676e696e675f6b65790a7075626c69635f6b65790d7365745f70726f6475636572730001087363686564756c650e70726f64756365725f6b65795b5d0c726571756972655f6175746800010466726f6d0c6163636f756e745f6e616d6509736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727309636f6e6e6563746f7200020762616c616e63650561737365740677656967687407666c6f617436340e65786368616e67655f7374617465000306737570706c79056173736574046261736509636f6e6e6563746f720571756f746509636f6e6e6563746f720c6e616d656269645f696e666f0004076e65776e616d650c6163636f756e745f6e616d650b686967685f6269646465720c6163636f756e745f6e616d6508686967685f62696405696e7436340d6c6173745f6269645f74696d650675696e7436341f00409e9a2264b89a0a6e65776163636f756e740000000040258ab2c207736574636f64650000000000b863b2c206736574616269000040cbdaa86c52d50a75706461746561757468000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b61757468000040cbdac0e9e2d40a756e6c696e6b617574680000bc892a4585a6410b63616e63656c64656c617900000000e0d27bd5a4076f6e6572726f720000b0cafe4873bd3e0b62757972616d627974657300000000004873bd3e0662757972616d00000000409a1ba3c20773656c6c72616d0000003f2a1ba6a24a0a64656c6567617465627700c08fca86a9a8d2d40c756e64656c656761746562770000000000a4a997ba06726566756e640000ae423ad15b99ba0b72656770726f647563657200000000004873b3c20673657472616d000080cae64a73b3c20a73657472616d72617465615365747320746865206e756d626572206f66206e6577206279746573206f662072616d20746f206372656174652070657220626c6f636b20616e6420726573796e63732062616e636f72206261736520636f6e6e6563746f722062616c616e6365000000404933933b076269646e616d6500000048532f75933b09626964726566756e6400000048f456a6eed409756e72656770726f6400000000bed35b99ba0872656770726f7879007015d289deaa32dd0c766f746570726f64756365720080d3355c5de94c440c636c61696d726577617264730000000060bb5bb3c207736574707269760000ae423ad15bb7bc0b726d7670726f6475636572000000ce4eba68b2c2127365745f6163636f756e745f6c696d697473000000ce4ebac8b2c2117365745f676c6f62616c5f6c696d6974730000000038d15bb3c20d7365745f70726f64756365727300000000a0656dacba0c726571756972655f61757468000000c0d25c53b3c209736574706172616d7300090000c057219de8ad0369363401056f776e6572010675696e7436340d70726f64756365725f696e666f000000004473686403693634000012656f73696f5f676c6f62616c5f7374617465000000404473686403693634000013656f73696f5f676c6f62616c5f73746174653200000000e0ab32dd0369363401056f776e6572010c6163636f756e745f6e616d650a766f7465725f696e666f00000000ab7b15d60369363401056f776e6572010675696e7436340e757365725f7265736f7572636573000000204d73a24a036936340102746f010675696e7436341364656c6567617465645f62616e6477696474680000c80a5e23a5b9036936340106737570706c79010675696e7436340e65786368616e67655f737461746500000000a7a997ba0369363401056f776e6572010675696e7436340e726566756e645f7265717565737400000038b9a3a4990369363401076e65776e616d65010c6163636f756e745f6e616d650c6e616d656269645f696e666f010c636f6e737469747574696f6e9a295468697320436f6e737469747574696f6e2069732061206d756c74692d706172747920636f6e747261637420656e746572656420696e746f20627920746865204d656d6265727320627920766972747565206f6620746865697220757365206f66207468697320626c6f636b636861696e2e0a0a232041727469636c652049202d204e6f20496e6974696174696f6e206f662056696f6c656e63650a4d656d62657273207368616c6c206e6f7420696e6974696174652076696f6c656e6365206f722074686520746872656174206f662076696f6c656e636520616761696e737420616e6f74686572204d656d6265722e204c617766756c2070726f7365637574696f6e206f66206372696d657320776974682074686520676f616c206f662070726573657276696e67206c6966652c206c69626572747920616e642070726f706572747920646f6573206e6f7420636f6e7374697475746520696e6974696174696f6e206f662076696f6c656e63652e0a0a232041727469636c65204949202d204e6f205065726a7572790a4d656d62657273207368616c6c206265206c6961626c6520666f72206c6f73736573206361757365642062792066616c7365206f72206d69736c656164696e67206174746573746174696f6e7320616e64207368616c6c20666f726665697420616e792070726f666974206761696e656420746865726562792e0a0a232041727469636c6520494949202d205269676874730a546865204d656d62657273206772616e7420746865207269676874206f6620636f6e747261637420616e64206f6620707269766174652070726f706572747920746f2065616368206f746865722c207468657265666f7265206e6f2070726f7065727479207368616c6c206368616e67652068616e64732065786365707420776974682074686520636f6e73656e74206f6620746865206f776e65722c20627920612076616c69642041726269747261746f72753230313973206f726465722c206f722076696120636f6d6d756e697479207265666572656e64756d2e205468697320436f6e737469747574696f6e2063726561746573206e6f20706f7369746976652072696768747320666f72206f72206265747765656e20616e79204d656d626572732e0a0a232041727469636c65204956202d204e6f20566f746520427579696e670a4e6f204d656d626572207368616c6c206f66666572206e6f722061636365707420616e797468696e67206f662076616c756520696e2065786368616e676520666f72206120766f7465206f6620616e7920747970652c206e6f72207368616c6c20616e79204d656d62657220756e64756c7920696e666c75656e63652074686520766f7465206f6620616e6f746865722e0a0a232041727469636c652056202d204e6f204669647563696172790a4e6f204d656d626572206e6f7220454f5320746f6b656e20686f6c646572207368616c6c20686176652066696475636961727920726573706f6e736962696c69747920746f20737570706f7274207468652076616c7565206f662074686520454f5320746f6b656e2e20546865204d656d6265727320646f206e6f7420617574686f72697a6520616e796f6e6520746f20686f6c64206173736574732c20626f72726f772c206e6f7220636f6e7472616374206f6e20626568616c66206f6620454f5320746f6b656e20686f6c6465727320636f6c6c6563746976656c792e205468697320626c6f636b636861696e20686173206e6f206f776e6572732c206d616e6167657273206f722066696475636961726965733b207468657265666f72652c206e6f204d656d626572207368616c6c20686176652062656e6566696369616c20696e74657265737420696e206d6f7265207468616e20313025206f662074686520454f5320746f6b656e20737570706c792e0a0a232041727469636c65205649202d205265737469747574696f6e0a45616368204d656d6265722061677265657320746861742070656e616c7469657320666f7220627265616368206f6620636f6e7472616374206d617920696e636c7564652c2062757420617265206e6f74206c696d6974656420746f2c2066696e65732c206c6f7373206f66206163636f756e742c20616e64206f74686572207265737469747574696f6e2e0a0a232041727469636c6520564949202d204f70656e20536f757263650a45616368204d656d6265722077686f206d616b657320617661696c61626c65206120736d61727420636f6e7472616374206f6e207468697320626c6f636b636861696e207368616c6c206265206120446576656c6f7065722e204561636820446576656c6f706572207368616c6c206f6666657220746865697220736d61727420636f6e747261637473207669612061206672656520616e64206f70656e20736f75726365206c6963656e73652c20616e64206561636820736d61727420636f6e7472616374207368616c6c20626520646f63756d656e746564207769746820612052696361726469616e20436f6e74726163742073746174696e672074686520696e74656e74206f6620616c6c207061727469657320616e64206e616d696e6720746865204172626974726174696f6e20466f72756d20746861742077696c6c207265736f6c76652064697370757465732061726973696e672066726f6d207468617420636f6e74726163742e0a0a232041727469636c652056494949202d204c616e67756167650a4d756c74692d6c696e6775616c20636f6e747261637473206d7573742073706563696679206f6e65207072657661696c696e67206c616e677561676520696e2063617365206f66206469737075746520616e642074686520617574686f72206f6620616e79207472616e736c6174696f6e207368616c6c206265206c6961626c6520666f72206c6f737365732064756520746f2074686569722066616c73652c206d69736c656164696e672c206f7220616d626967756f7573206174746573746564207472616e736c6174696f6e732e0a0a232041727469636c65204958202d2044697370757465205265736f6c7574696f6e0a416c6c2064697370757465732061726973696e67206f7574206f66206f7220696e20636f6e6e656374696f6e2077697468207468697320436f6e737469747574696f6e207368616c6c2062652066696e616c6c7920736574746c656420756e646572207468652052756c6573206f662044697370757465205265736f6c7574696f6e206f662074686520454f5320436f7265204172626974726174696f6e20466f72756d206279206f6e65206f72206d6f72652061726269747261746f7273206170706f696e74656420696e206163636f7264616e636520776974682074686520736169642052756c65732e0a0a232041727469636c652058202d2043686f696365206f66204c61770a43686f696365206f66206c617720666f72206469737075746573207368616c6c2062652c20696e206f72646572206f6620707265636564656e63652c207468697320436f6e737469747574696f6e20616e6420746865204d6178696d73206f66204571756974792e0a0a232041727469636c65205849202d20416d656e64696e670a5468697320436f6e737469747574696f6e20616e6420697473207375626f7264696e61746520646f63756d656e7473207368616c6c206e6f7420626520616d656e64656420657863657074206279206120766f7465206f662074686520746f6b656e20686f6c646572732077697468206e6f206c657373207468616e2031352520766f74652070617274696369706174696f6e20616d6f6e6720746f6b656e7320616e64206e6f206665776572207468616e20313025206d6f726520596573207468616e204e6f20766f7465732c207375737461696e656420666f7220333020636f6e74696e756f757320646179732077697468696e2061203132302064617920706572696f642e0a0a232041727469636c6520584949202d205075626c697368696e670a4d656d62657273206d6179206f6e6c79207075626c69736820696e666f726d6174696f6e20746f2074686520426c6f636b636861696e20746861742069732077697468696e20746865697220726967687420746f207075626c6973682e20467572746865726d6f72652c204d656d6265727320766f6c756e746172696c7920636f6e73656e7420666f7220616c6c204d656d6265727320746f207065726d616e656e746c7920616e642069727265766f6361626c792072657461696e206120636f70792c20616e616c797a652c20616e64206469737472696275746520616c6c2062726f616463617374207472616e73616374696f6e7320616e64206465726976617469766520696e666f726d6174696f6e2e0a0a232041727469636c652058494949202d20496e666f726d656420436f6e73656e740a416c6c20736572766963652070726f7669646572732077686f2070726f6475636520746f6f6c7320746f20666163696c69746174652074686520636f6e737472756374696f6e20616e64207369676e696e67206f66207472616e73616374696f6e73206f6e20626568616c66206f66206f74686572204d656d62657273207368616c6c2070726573656e7420746f2073616964206f74686572204d656d62657273207468652066756c6c2052696361726469616e20636f6e7472616374207465726d73206f66207468697320436f6e737469747574696f6e20616e64206f74686572207265666572656e63656420636f6e7472616374732e20536572766963652070726f766964657273207368616c6c206265206c6961626c6520666f72206c6f7373657320726573756c74696e672066726f6d206661696c75726520746f20646973636c6f7365207468652066756c6c2052696361726469616e20636f6e7472616374207465726d7320746f2075736572732e0a0a232041727469636c6520584956202d2053657665726162696c6974790a496620616e792070617274206f66207468697320436f6e737469747574696f6e206973206465636c6172656420756e656e666f72636561626c65206f7220696e76616c69642c207468652072656d61696e6465722077696c6c20636f6e74696e756520746f2062652076616c696420616e6420656e666f72636561626c652e0a0a232041727469636c65205856202d205465726d696e6174696f6e206f662041677265656d656e740a41204d656d626572206973206175746f6d61746963616c6c792072656c65617365642066726f6d20616c6c207265766f6361626c65206f626c69676174696f6e7320756e646572207468697320436f6e737469747574696f6e203320796561727320616674657220746865206c617374207472616e73616374696f6e207369676e65642062792074686174204d656d62657220697320696e636f72706f726174656420696e746f2074686520626c6f636b636861696e2e2041667465722033207965617273206f6620696e616374697669747920616e206163636f756e74206d61792062652070757420757020666f722061756374696f6e20616e64207468652070726f636565647320646973747269627574656420746f20616c6c204d656d62657273206163636f7264696e6720746f207468652073797374656d20636f6e74726163742070726f766973696f6e73207468656e20696e2065666665637420666f722073756368207265646973747269627574696f6e2e0a0a232041727469636c6520585649202d20446576656c6f706572204c696162696c6974790a4d656d6265727320616772656520746f20686f6c6420736f66747761726520646576656c6f70657273206861726d6c65737320666f7220756e696e74656e74696f6e616c206d697374616b6573206d61646520696e207468652065787072657373696f6e206f6620636f6e747261637475616c20696e74656e742c2077686574686572206f72206e6f742073616964206d697374616b657320776572652064756520746f2061637475616c206f7220706572636569766564206e65676c6967656e63652e0a0a232041727469636c652058564949202d20436f6e73696465726174696f6e0a416c6c2072696768747320616e64206f626c69676174696f6e7320756e646572207468697320436f6e737469747574696f6e20617265206d757475616c20616e64207265636970726f63616c20616e64206f6620657175616c6c79207369676e69666963616e742076616c756520616e6420636f737420746f20616c6c20706172746965732e0a0a232041727469636c65205856494949202d20416363657074616e63650a4120636f6e7472616374206973206465656d6564206163636570746564207768656e2061206d656d626572207369676e732061207472616e73616374696f6e20776869636820696e636f72706f72617465732061205441504f532070726f6f66206f66206120626c6f636b2077686f736520696d706c69656420737461746520696e636f72706f726174657320616e20414249206f66207361696420636f6e747261637420616e642073616964207472616e73616374696f6e20697320696e636f72706f726174656420696e746f2074686520626c6f636b636861696e2e0a0a232041727469636c6520584958202d20436f756e74657270617274730a5468697320436f6e737469747574696f6e206d617920626520657865637574656420696e20616e79206e756d626572206f6620636f756e74657270617274732c2065616368206f66207768696368207768656e20657865637574656420616e642064656c697665726564207368616c6c20636f6e737469747574652061206475706c6963617465206f726967696e616c2c2062757420616c6c20636f756e746572706172747320746f676574686572207368616c6c20636f6e7374697475746520612073696e676c652061677265656d656e742e0a0a232041727469636c65205858202d20496e746572696d20436f6e737469747574696f6e0a5468697320636f6e737469747574696f6e20697320696e746572696d20616e6420697320696e74656e64656420746f2072656d61696e20696e2065666665637420756e74696c2061207065726d616e656e7420636f6e737469747574696f6e206973207772697474656e20616e6420726174696669656420696e2061207265666572656e64756d2e0a000000"
var systemABIGeneratedV1_1 = "0e656f73696f3a3a6162692f312e31050c6163636f756e745f6e616d65046e616d650f7065726d697373696f6e5f6e616d65046e616d650b616374696f6e5f6e616d65046e616d65137472616e73616374696f6e5f69645f747970650b636865636b73756d3235360b7765696768745f747970650675696e74313631107065726d697373696f6e5f6c6576656c0002056163746f720c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d650a6b65795f7765696768740002036b65790a7075626c69635f6b6579067765696768740b7765696768745f74797065076269646e616d650003066269646465720c6163636f756e745f6e616d65076e65776e616d650c6163636f756e745f6e616d650362696405617373657409626964726566756e640002066269646465720c6163636f756e745f6e616d65076e65776e616d650c6163636f756e745f6e616d65177065726d697373696f6e5f6c6576656c5f77656967687400020a7065726d697373696f6e107065726d697373696f6e5f6c6576656c067765696768740b7765696768745f747970650b776169745f776569676874000208776169745f7365630675696e743332067765696768740b7765696768745f7479706509617574686f726974790004097468726573686f6c640675696e743332046b6579730c6b65795f7765696768745b5d086163636f756e7473197065726d697373696f6e5f6c6576656c5f7765696768745b5d0577616974730d776169745f7765696768745b5d0a6e65776163636f756e7400040763726561746f720c6163636f756e745f6e616d65046e616d650c6163636f756e745f6e616d65056f776e657209617574686f726974790661637469766509617574686f7269747907736574636f64650004076163636f756e740c6163636f756e745f6e616d6506766d747970650575696e743809766d76657273696f6e0575696e743804636f6465056279746573067365746162690002076163636f756e740c6163636f756e745f6e616d65036162690562797465730a757064617465617574680004076163636f756e740c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d6506706172656e740f7065726d697373696f6e5f6e616d65046175746809617574686f726974790a64656c657465617574680002076163636f756e740c6163636f756e745f6e616d650a7065726d697373696f6e0f7065726d697373696f6e5f6e616d65086c696e6b617574680004076163636f756e740c6163636f756e745f6e616d6504636f64650c6163636f756e745f6e616d6504747970650b616374696f6e5f6e616d650b726571756972656d656e740f7065726d697373696f6e5f6e616d650a756e6c696e6b617574680003076163636f756e740c6163636f756e745f6e616d6504636f64650c6163636f756e745f6e616d6504747970650b616374696f6e5f6e616d650b63616e63656c64656c617900020e63616e63656c696e675f61757468107065726d697373696f6e5f6c6576656c067472785f6964137472616e73616374696f6e5f69645f74797065076f6e6572726f7200020973656e6465725f69640775696e743132380873656e745f7472780562797465730b62757972616d627974657300030570617965720c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d650562797465730675696e7433320773656c6c72616d0002076163636f756e740c6163636f756e745f6e616d650562797465730675696e7436340662757972616d00030570617965720c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d65057175616e740561737365740a64656c6567617465627700050466726f6d0c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d65127374616b655f6e65745f7175616e74697479056173736574127374616b655f6370755f7175616e74697479056173736574087472616e7366657204626f6f6c0c756e64656c6567617465627700040466726f6d0c6163636f756e745f6e616d650872656365697665720c6163636f756e745f6e616d6514756e7374616b655f6e65745f7175616e7469747905617373657414756e7374616b655f6370755f7175616e7469747905617373657406726566756e640001056f776e65720c6163636f756e745f6e616d651364656c6567617465645f62616e64776964746800040466726f6d0c6163636f756e745f6e616d6502746f0c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740e757365725f7265736f75726365730004056f776e65720c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740972616d5f62797465730675696e7436340f746f74616c5f7265736f75726365730004056f776e65720c6163636f756e745f6e616d650a6e65745f7765696768740561737365740a6370755f7765696768740561737365740972616d5f62797465730675696e7436340e726566756e645f726571756573740004056f776e65720c6163636f756e745f6e616d650c726571756573745f74696d650e74696d655f706f696e745f7365630a6e65745f616d6f756e740561737365740a6370755f616d6f756e7405617373657415626c6f636b636861696e5f706172616d65746572730011136d61785f626c6f636b5f6e65745f75736167650675696e7436341a7461726765745f626c6f636b5f6e65745f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6e65745f75736167650675696e7433321e626173655f7065725f7472616e73616374696f6e5f6e65745f75736167650675696e743332106e65745f75736167655f6c65657761790675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f6e756d0675696e74333223636f6e746578745f667265655f646973636f756e745f6e65745f75736167655f64656e0675696e743332136d61785f626c6f636b5f6370755f75736167650675696e7433321a7461726765745f626c6f636b5f6370755f75736167655f7063740675696e743332196d61785f7472616e73616374696f6e5f6370755f75736167650675696e743332196d696e5f7472616e73616374696f6e5f6370755f75736167650675696e743332186d61785f7472616e73616374696f6e5f6c69666574696d650675696e7433321e64656665727265645f7472785f65787069726174696f6e5f77696e646f770675696e743332156d61785f7472616e73616374696f6e5f64656c61790675696e743332166d61785f696e6c696e655f616374696f6e5f73697a650675696e743332176d61785f696e6c696e655f616374696f6e5f64657074680675696e743136136d61785f617574686f726974795f64657074680675696e74313613656f73696f5f676c6f62616c5f7374617465320005116e65775f72616d5f7065725f626c6f636b0675696e743136116c6173745f72616d5f696e63726561736514626c6f636b5f74696d657374616d705f747970650e6c6173745f626c6f636b5f6e756d14626c6f636b5f74696d657374616d705f7479706508726573657276656407666c6f61743634087265766973696f6e0575696e743812656f73696f5f676c6f62616c5f737461746515626c6f636b636861696e5f706172616d65746572730d0c6d61785f72616d5f73697a650675696e74363418746f74616c5f72616d5f62797465735f72657365727665640675696e7436340f746f74616c5f72616d5f7374616b6505696e7436341d6c6173745f70726f64756365725f7363686564756c655f75706461746514626c6f636b5f74696d657374616d705f74797065186c6173745f706572766f74655f6275636b65745f66696c6c0675696e7436340e706572766f74655f6275636b657405696e7436340f706572626c6f636b5f6275636b657405696e74363413746f74616c5f756e706169645f626c6f636b730675696e74333215746f74616c5f6163746976617465645f7374616b6505696e7436341b7468726573685f6163746976617465645f7374616b655f74696d650675696e7436341b6c6173745f70726f64756365725f7363686564756c655f73697a650675696e7431361a746f74616c5f70726f64756365725f766f74655f77656967687407666c6f617436340f6c6173745f6e616d655f636c6f736514626c6f636b5f74696d657374616d705f747970650d70726f64756365725f696e666f0008056f776e65720c6163636f756e745f6e616d650b746f74616c5f766f74657307666c6f617436340c70726f64756365725f6b65790a7075626c69635f6b65790969735f61637469766504626f6f6c0375726c06737472696e670d756e706169645f626c6f636b730675696e7433320f6c6173745f636c61696d5f74696d650675696e743634086c6f636174696f6e0675696e7431360b72656770726f647563657200040870726f64756365720c6163636f756e745f6e616d650c70726f64756365725f6b65790a7075626c69635f6b65790375726c06737472696e67086c6f636174696f6e0675696e74313609756e72656770726f6400010870726f64756365720c6163636f756e745f6e616d650673657472616d00010c6d61785f72616d5f73697a650675696e7436340a73657472616d7261746500010f62797465735f7065725f626c6f636b0675696e7431360872656770726f787900020570726f78790c6163636f756e745f6e616d6507697370726f787904626f6f6c0c766f746570726f6475636572000305766f7465720c6163636f756e745f6e616d650570726f78790c6163636f756e745f6e616d650970726f6475636572730e6163636f756e745f6e616d655b5d0a766f7465725f696e666f0007056f776e65720c6163636f756e745f6e616d650570726f78790c6163636f756e745f6e616d650970726f6475636572730e6163636f756e745f6e616d655b5d067374616b656405696e743634106c6173745f766f74655f77656967687407666c6f617436341370726f786965645f766f74655f77656967687407666c6f617436340869735f70726f787904626f6f6c0c636c61696d726577617264730001056f776e65720c6163636f756e745f6e616d6507736574707269760002076163636f756e740c6163636f756e745f6e616d650769735f7072697604696e74380b726d7670726f647563657200010870726f64756365720c6163636f756e745f6e616d65127365745f6163636f756e745f6c696d6974730004076163636f756e740c6163636f756e745f6e616d650972616d5f627974657305696e7436340a6e65745f77656967687405696e7436340a6370755f77656967687405696e743634117365745f676c6f62616c5f6c696d6974730001136370755f757365635f7065725f706572696f6405696e7436340c70726f64756365725f6b657900020d70726f64756365725f6e616d650c6163636f756e745f6e616d6511626c6f636b5f7369676e696e675f6b65790a7075626c69635f6b65790d7365745f70726f6475636572730001087363686564756c650e70726f64756365725f6b65795b5d0c726571756972655f6175746800010466726f6d0c6163636f756e745f6e616d6509736574706172616d73000106706172616d7315626c6f636b636861696e5f706172616d657465727309636f6e6e6563746f7200020762616c616e63650561737365740677656967687407666c6f617436340e65786368616e67655f7374617465000306737570706c79056173736574046261736509636f6e6e6563746f720571756f746509636f6e6e6563746f720c6e616d656269645f696e666f0004076e65776e616d650c6163636f756e745f6e616d650b686967685f6269646465720c6163636f756e745f6e616d6508686967685f62696405696e7436340d6c6173745f6269645f74696d650675696e7436341f00409e9a2264b89a0a6e65776163636f756e740000000040258ab2c207736574636f64650000000000b863b2c206736574616269000040cbdaa86c52d50a75706461746561757468000040cbdaa8aca24a0a64656c65746561757468000000002d6b03a78b086c696e6b61757468000040cbdac0e9e2d40a756e6c696e6b617574680000bc892a4585a6410b63616e63656c64656c617900000000e0d27bd5a4076f6e6572726f720000b0cafe4873bd3e0b62757972616d627974657300000000004873bd3e0662757972616d00000000409a1ba3c20773656c6c72616d0000003f2a1ba6a24a0a64656c6567617465627700c08fca86a9a8d2d40c756e64656c656761746562770000000000a4a997ba06726566756e640000ae423ad15b99ba0b72656770726f647563657200000000004873b3c20673657472616d000080cae64a73b3c20a73657472616d72617465615365747320746865206e756d626572206f66206e6577206279746573206f662072616d20746f206372656174652070657220626c6f636b20616e6420726573796e63732062616e636f72206261736520636f6e6e6563746f722062616c616e6365000000404933933b076269646e616d6500000048532f75933b09626964726566756e6400000048f456a6eed409756e72656770726f6400000000bed35b99ba0872656770726f7879007015d289deaa32dd0c766f746570726f64756365720080d3355c5de94c440c636c61696d726577617264730000000060bb5bb3c207736574707269760000ae423ad15bb7bc0b726d7670726f6475636572000000ce4eba68b2c2127365745f6163636f756e745f6c696d697473000000ce4ebac8b2c2117365745f676c6f62616c5f6c696d6974730000000038d15bb3c20d7365745f70726f64756365727300000000a0656dacba0c726571756972655f61757468000000c0d25c53b3c209736574706172616d7300090000c057219de8ad0369363401056f776e6572010675696e7436340d70726f64756365725f696e666f000000004473686403693634000012656f73696f5f676c6f62616c5f7374617465000000404473686403693634000013656f73696f5f676c6f62616c5f73746174653200000000e0ab32dd0369363401056f776e6572010c6163636f756e745f6e616d650a766f7465725f696e666f00000000ab7b15d60369363401056f776e6572010675696e7436340e757365725f7265736f7572636573000000204d73a24a036936340102746f010675696e7436341364656c6567617465645f62616e6477696474680000c80a5e23a5b9036936340106737570706c79010675696e7436340e65786368616e67655f737461746500000000a7a997ba0369363401056f776e6572010675696e7436340e726566756e645f7265717565737400000038b9a3a4990369363401076e65776e616d65010c6163636f756e745f6e616d650c6e616d656269645f696e666f010c636f6e737469747574696f6e9a295468697320436f6e737469747574696f6e2069732061206d756c74692d706172747920636f6e747261637420656e746572656420696e746f20627920746865204d656d6265727320627920766972747565206f6620746865697220757365206f66207468697320626c6f636b636861696e2e0a0a232041727469636c652049202d204e6f20496e6974696174696f6e206f662056696f6c656e63650a4d656d62657273207368616c6c206e6f7420696e6974696174652076696f6c656e6365206f722074686520746872656174206f662076696f6c656e636520616761696e737420616e6f74686572204d656d6265722e204c617766756c2070726f7365637574696f6e206f66206372696d657320776974682074686520676f616c206f662070726573657276696e67206c6966652c206c69626572747920616e642070726f706572747920646f6573206e6f7420636f6e7374697475746520696e6974696174696f6e206f662076696f6c656e63652e0a0a232041727469636c65204949202d204e6f205065726a7572790a4d656d62657273207368616c6c206265206c6961626c6520666f72206c6f73736573206361757365642062792066616c7365206f72206d69736c656164696e67206174746573746174696f6e7320616e64207368616c6c20666f726665697420616e792070726f666974206761696e656420746865726562792e0a0a232041727469636c6520494949202d205269676874730a546865204d656d62657273206772616e7420746865207269676874206f6620636f6e747261637420616e64206f6620707269766174652070726f706572747920746f2065616368206f746865722c207468657265666f7265206e6f2070726f7065727479207368616c6c206368616e67652068616e64732065786365707420776974682074686520636f6e73656e74206f6620746865206f776e65722c20627920612076616c69642041726269747261746f72753230313973206f726465722c206f722076696120636f6d6d756e697479207265666572656e64756d2e205468697320436f6e737469747574696f6e2063726561746573206e6f20706f7369746976652072696768747320666f72206f72206265747765656e20616e79204d656d626572732e0a0a232041727469636c65204956202d204e6f20566f746520427579696e670a4e6f204d656d626572207368616c6c206f66666572206e6f722061636365707420616e797468696e67206f662076616c756520696e2065786368616e676520666f72206120766f7465206f6620616e7920747970652c206e6f72207368616c6c20616e79204d656d62657220756e64756c7920696e666c75656e63652074686520766f7465206f6620616e6f746865722e0a0a232041727469636c652056202d204e6f204669647563696172790a4e6f204d656d626572206e6f7220454f5320746f6b656e20686f6c646572207368616c6c20686176652066696475636961727920726573706f6e736962696c69747920746f20737570706f7274207468652076616c7565206f662074686520454f5320746f6b656e2e20546865204d656d6265727320646f206e6f7420617574686f72697a6520616e796f6e6520746f20686f6c64206173736574732c20626f72726f772c206e6f7220636f6e7472616374206f6e20626568616c66206f6620454f5320746f6b656e20686f6c6465727320636f6c6c6563746976656c792e205468697320626c6f636b636861696e20686173206e6f206f776e6572732c206d616e6167657273206f722066696475636961726965733b207468657265666f72652c206e6f204d656d626572207368616c6c20686176652062656e6566696369616c20696e74657265737420696e206d6f7265207468616e20313025206f662074686520454f5320746f6b656e20737570706c792e0a0a232041727469636c65205649202d205265737469747574696f6e0a45616368204d656d6265722061677265657320746861742070656e616c7469657320666f7220627265616368206f6620636f6e7472616374206d617920696e636c7564652c2062757420617265206e6f74206c696d6974656420746f2c2066696e65732c206c6f7373206f66206163636f756e742c20616e64206f74686572207265737469747574696f6e2e0a0a232041727469636c6520564949202d204f70656e20536f757263650a45616368204d656d6265722077686f206d616b657320617661696c61626c65206120736d61727420636f6e7472616374206f6e207468697320626c6f636b636861696e207368616c6c206265206120446576656c6f7065722e204561636820446576656c6f706572207368616c6c206f6666657220746865697220736d61727420636f6e747261637473207669612061206672656520616e64206f70656e20736f75726365206c6963656e73652c20616e64206561636820736d61727420636f6e7472616374207368616c6c20626520646f63756d656e746564207769746820612052696361726469616e20436f6e74726163742073746174696e672074686520696e74656e74206f6620616c6c207061727469657320616e64206e616d696e6720746865204172626974726174696f6e20466f72756d20746861742077696c6c207265736f6c76652064697370757465732061726973696e672066726f6d207468617420636f6e74726163742e0a0a232041727469636c652056494949202d204c616e67756167650a4d756c74692d6c696e6775616c20636f6e747261637473206d7573742073706563696679206f6e65207072657661696c696e67206c616e677561676520696e2063617365206f66206469737075746520616e642074686520617574686f72206f6620616e79207472616e736c6174696f6e207368616c6c206265206c6961626c6520666f72206c6f737365732064756520746f2074686569722066616c73652c206d69736c656164696e672c206f7220616d626967756f7573206174746573746564207472616e736c6174696f6e732e0a0a232041727469636c65204958202d2044697370757465205265736f6c7574696f6e0a416c6c2064697370757465732061726973696e67206f7574206f66206f7220696e20636f6e6e656374696f6e2077697468207468697320436f6e737469747574696f6e207368616c6c2062652066696e616c6c7920736574746c656420756e646572207468652052756c6573206f662044697370757465205265736f6c7574696f6e206f662074686520454f5320436f7265204172626974726174696f6e20466f72756d206279206f6e65206f72206d6f72652061726269747261746f7273206170706f696e74656420696e206163636f7264616e636520776974682074686520736169642052756c65732e0a0a232041727469636c652058202d2043686f696365206f66204c61770a43686f696365206f66206c617720666f72206469737075746573207368616c6c2062652c20696e206f72646572206f6620707265636564656e63652c207468697320436f6e737469747574696f6e20616e6420746865204d6178696d73206f66204571756974792e0a0a232041727469636c65205849202d20416d656e64696e670a5468697320436f6e737469747574696f6e20616e6420697473207375626f7264696e61746520646f63756d656e7473207368616c6c206e6f7420626520616d656e64656420657863657074206279206120766f7465206f662074686520746f6b656e20686f6c646572732077697468206e6f206c657373207468616e2031352520766f74652070617274696369706174696f6e20616d6f6e6720746f6b656e7320616e64206e6f206665776572207468616e20313025206d6f726520596573207468616e204e6f20766f7465732c207375737461696e656420666f7220333020636f6e74696e756f757320646179732077697468696e2061203132302064617920706572696f642e0a0a232041727469636c6520584949202d205075626c697368696e670a4d656d62657273206d6179206f6e6c79207075626c69736820696e666f726d6174696f6e20746f2074686520426c6f636b636861696e20746861742069732077697468696e20746865697220726967687420746f207075626c6973682e20467572746865726d6f72652c204d656d6265727320766f6c756e746172696c7920636f6e73656e7420666f7220616c6c204d656d6265727320746f207065726d616e656e746c7920616e642069727265766f6361626c792072657461696e206120636f70792c20616e616c797a652c20616e64206469737472696275746520616c6c2062726f616463617374207472616e73616374696f6e7320616e64206465726976617469766520696e666f726d6174696f6e2e0a0a232041727469636c652058494949202d20496e666f726d656420436f6e73656e740a416c6c20736572766963652070726f7669646572732077686f2070726f6475636520746f6f6c7320746f20666163696c69746174652074686520636f6e737472756374696f6e20616e64207369676e696e67206f66207472616e73616374696f6e73206f6e20626568616c66206f66206f74686572204d656d62657273207368616c6c2070726573656e7420746f2073616964206f74686572204d656d62657273207468652066756c6c2052696361726469616e20636f6e7472616374207465726d73206f66207468697320436f6e737469747574696f6e20616e64206f74686572207265666572656e63656420636f6e7472616374732e20536572766963652070726f766964657273207368616c6c206265206c6961626c6520666f72206c6f7373657320726573756c74696e672066726f6d206661696c75726520746f20646973636c6f7365207468652066756c6c2052696361726469616e20636f6e7472616374207465726d7320746f2075736572732e0a0a232041727469636c6520584956202d2053657665726162696c6974790a496620616e792070617274206f66207468697320436f6e737469747574696f6e206973206465636c6172656420756e656e666f72636561626c65206f7220696e76616c69642c207468652072656d61696e6465722077696c6c20636f6e74696e756520746f2062652076616c696420616e6420656e666f72636561626c652e0a0a232041727469636c65205856202d205465726d696e6174696f6e206f662041677265656d656e740a41204d656d626572206973206175746f6d61746963616c6c792072656c65617365642066726f6d20616c6c207265766f6361626c65206f626c69676174696f6e7320756e646572207468697320436f6e737469747574696f6e203320796561727320616674657220746865206c617374207472616e73616374696f6e207369676e65642062792074686174204d656d62657220697320696e636f72706f726174656420696e746f2074686520626c6f636b636861696e2e2041667465722033207965617273206f6620696e616374697669747920616e206163636f756e74206d61792062652070757420757020666f722061756374696f6e20616e64207468652070726f636565647320646973747269627574656420746f20616c6c204d656d62657273206163636f7264696e6720746f207468652073797374656d20636f6e74726163742070726f766973696f6e73207468656e20696e2065666665637420666f722073756368207265646973747269627574696f6e2e0a0a232041727469636c6520585649202d20446576656c6f706572204c696162696c6974790a4d656d6265727320616772656520746f20686f6c6420736f66747761726520646576656c6f70657273206861726d6c65737320666f7220756e696e74656e74696f6e616c206d697374616b6573206d61646520696e207468652065787072657373696f6e206f6620636f6e747261637475616c20696e74656e742c2077686574686572206f72206e6f742073616964206d697374616b657320776572652064756520746f2061637475616c206f7220706572636569766564206e65676c6967656e63652e0a0a232041727469636c652058564949202d20436f6e73696465726174696f6e0a416c6c2072696768747320616e64206f626c69676174696f6e7320756e646572207468697320436f6e737469747574696f6e20617265206d757475616c20616e64207265636970726f63616c20616e64206f6620657175616c6c79207369676e69666963616e742076616c756520616e6420636f737420746f20616c6c20706172746965732e0a0a232041727469636c65205856494949202d20416363657074616e63650a4120636f6e7472616374206973206465656d6564206163636570746564207768656e2061206d656d626572207369676e732061207472616e73616374696f6e20776869636820696e636f72706f72617465732061205441504f532070726f6f66206f66206120626c6f636b2077686f736520696d706c69656420737461746520696e636f72706f726174657320616e20414249206f66207361696420636f6e747261637420616e642073616964207472616e73616374696f6e20697320696e636f72706f726174656420696e746f2074686520626c6f636b636861696e2e0a0a232041727469636c6520584958202d20436f756e74657270617274730a5468697320436f6e737469747574696f6e206d617920626520657865637574656420696e20616e79206e756d626572206f6620636f756e74657270617274732c2065616368206f66207768696368207768656e20657865637574656420616e642064656c697665726564207368616c6c20636f6e737469747574652061206475706c6963617465206f726967696e616c2c2062757420616c6c20636f756e746572706172747320746f676574686572207368616c6c20636f6e7374697475746520612073696e676c652061677265656d656e742e0a0a232041727469636c65205858202d20496e746572696d20436f6e737469747574696f6e0a5468697320636f6e737469747574696f6e20697320696e746572696d20616e6420697320696e74656e64656420746f2072656d61696e20696e2065666665637420756e74696c2061207065726d616e656e7420636f6e737469747574696f6e206973207772697474656e20616e6420726174696669656420696e2061207265666572656e64756d2e0a000000"
func TestABISerialization_V1_0(t *testing.T) {
systemABIV1_0 := strings.Replace(testSystemABIRaw, "__VERSION__", "eosio::abi/1.0", -1)
systemABIV1_0 = strings.Replace(systemABIV1_0, "__VARIANTS__", "", -1)
var abiDef ABI
require.NoError(t, json.Unmarshal([]byte(systemABIV1_0), &abiDef))
_, err := json.MarshalIndent(abiDef, "", " ")
require.NoError(t, err)
bin, err := MarshalBinary(abiDef)
require.NoError(t, err)
assert.Equal(t, systemABIGeneratedV1_0, hex.EncodeToString(bin))
}
func TestABI_ReadPacked_V1_0(t *testing.T) {
systemABIV1_0 := strings.Replace(testSystemABIRaw, "__VERSION__", "eosio::abi/1.0", -1)
systemABIV1_0 = strings.Replace(systemABIV1_0, "__VARIANTS__", "", -1)
// Here we remove the last byte (in hex so 2 characeters) since variants are always serialized, but we want a test where they are not there
buffer, err := hex.DecodeString(systemABIGeneratedV1_0[0 : len(systemABIGeneratedV1_0)-2])
require.NoError(t, err)
var abiDef ABI
err = UnmarshalBinary(buffer, &abiDef)
require.NoError(t, err)
actualJSON, err := json.Marshal(abiDef)
require.NoError(t, err)
assert.JSONEq(t, systemABIV1_0, string(actualJSON))
}
func TestABISerialization_V1_1(t *testing.T) {
systemABIV1_1 := strings.Replace(testSystemABIRaw, "__VERSION__", "eosio::abi/1.1", -1)
systemABIV1_1 = strings.Replace(systemABIV1_1, "__VARIANTS__", `,"variants":[]`, -1)
var abiDef ABI
require.NoError(t, json.Unmarshal([]byte(systemABIV1_1), &abiDef))
_, err := json.MarshalIndent(abiDef, "", " ")
require.NoError(t, err)
bin, err := MarshalBinary(abiDef)
require.NoError(t, err)
assert.Equal(t, systemABIGeneratedV1_1, hex.EncodeToString(bin))
}
func TestABI_ReadPacked_V1_1(t *testing.T) {
systemABIV1_1 := strings.Replace(testSystemABIRaw, "__VERSION__", "eosio::abi/1.1", -1)
systemABIV1_1 = strings.Replace(systemABIV1_1, "__VARIANTS__", `,"variants":[{"name":"variant","types":["name","uint32"]}]`, -1)
// Here we remove the last byte (in hex so 2 characeters) since we will replace with our own variant hex binary
hexData := systemABIGeneratedV1_1[0 : len(systemABIGeneratedV1_0)-2]
hexData += "010776617269616e7402046e616d650675696e743332"
buffer, err := hex.DecodeString(hexData)
require.NoError(t, err)
var abiDef ABI
err = UnmarshalBinary(buffer, &abiDef)
require.NoError(t, err)
actualJSON, err := json.Marshal(abiDef)
require.NoError(t, err)
assert.JSONEq(t, systemABIV1_1, string(actualJSON))
}
var testSystemABIRaw = `{
"version": "__VERSION__",
"types": [{
"new_type_name": "account_name",
"type": "name"
},{
"new_type_name": "permission_name",
"type": "name"
},{
"new_type_name": "action_name",
"type": "name"
},{
"new_type_name": "transaction_id_type",
"type": "checksum256"
},{
"new_type_name": "weight_type",
"type": "uint16"
}
],
"structs": [{
"name": "permission_level",
"base": "",
"fields": [{
"name": "actor",
"type": "account_name"
},{
"name": "permission",
"type": "permission_name"
}
]
},{
"name": "key_weight",
"base": "",
"fields": [{
"name": "key",
"type": "public_key"
},{
"name": "weight",
"type": "weight_type"
}
]
},{
"name": "bidname",
"base": "",
"fields": [{
"name": "bidder",
"type": "account_name"
},{
"name": "newname",
"type": "account_name"
},{
"name": "bid",
"type": "asset"
}
]
},{
"name": "bidrefund",
"base": "",
"fields": [{
"name": "bidder",
"type": "account_name"
},{
"name": "newname",
"type": "account_name"
}
]
},{
"name": "permission_level_weight",
"base": "",
"fields": [{
"name": "permission",
"type": "permission_level"
},{
"name": "weight",
"type": "weight_type"
}
]
},{
"name": "wait_weight",
"base": "",
"fields": [{
"name": "wait_sec",
"type": "uint32"
},{
"name": "weight",
"type": "weight_type"
}
]
},{
"name": "authority",
"base": "",
"fields": [{
"name": "threshold",
"type": "uint32"
},{
"name": "keys",
"type": "key_weight[]"
},{
"name": "accounts",
"type": "permission_level_weight[]"
},{
"name": "waits",
"type": "wait_weight[]"
}
]
},{
"name": "newaccount",
"base": "",
"fields": [{
"name": "creator",
"type": "account_name"
},{
"name": "name",
"type": "account_name"
},{
"name": "owner",
"type": "authority"
},{
"name": "active",
"type": "authority"
}
]
},{
"name": "setcode",
"base": "",
"fields": [{
"name": "account",
"type": "account_name"
},{
"name": "vmtype",
"type": "uint8"
},{
"name": "vmversion",
"type": "uint8"
},{
"name": "code",
"type": "bytes"
}
]
},{
"name": "setabi",
"base": "",
"fields": [{
"name": "account",
"type": "account_name"
},{
"name": "abi",
"type": "bytes"
}
]
},{
"name": "updateauth",
"base": "",
"fields": [{
"name": "account",
"type": "account_name"
},{
"name": "permission",
"type": "permission_name"
},{
"name": "parent",
"type": "permission_name"
},{
"name": "auth",
"type": "authority"
}
]
},{
"name": "deleteauth",
"base": "",
"fields": [{
"name": "account",
"type": "account_name"
},{
"name": "permission",
"type": "permission_name"
}
]
},{
"name": "linkauth",
"base": "",
"fields": [{
"name": "account",
"type": "account_name"
},{
"name": "code",
"type": "account_name"
},{
"name": "type",
"type": "action_name"
},{
"name": "requirement",
"type": "permission_name"
}
]
},{
"name": "unlinkauth",
"base": "",
"fields": [{
"name": "account",
"type": "account_name"
},{
"name": "code",
"type": "account_name"
},{
"name": "type",
"type": "action_name"
}
]
},{
"name": "canceldelay",
"base": "",
"fields": [{
"name": "canceling_auth",
"type": "permission_level"
},{
"name": "trx_id",
"type": "transaction_id_type"
}
]
},{
"name": "onerror",
"base": "",
"fields": [{
"name": "sender_id",
"type": "uint128"
},{
"name": "sent_trx",
"type": "bytes"
}
]
},{
"name": "buyrambytes",
"base": "",
"fields": [{
"name": "payer",
"type": "account_name"
},{
"name": "receiver",
"type": "account_name"
},{
"name": "bytes",
"type": "uint32"
}
]
},{
"name": "sellram",
"base": "",
"fields": [{
"name": "account",
"type": "account_name"
},{
"name": "bytes",
"type": "uint64"
}
]
},{
"name": "buyram",
"base": "",
"fields": [{
"name": "payer",
"type": "account_name"
},{
"name": "receiver",
"type": "account_name"
},{
"name": "quant",
"type": "asset"
}
]
},{
"name": "delegatebw",
"base": "",
"fields": [{
"name": "from",
"type": "account_name"
},{
"name": "receiver",
"type": "account_name"
},{
"name": "stake_net_quantity",
"type": "asset"
},{
"name": "stake_cpu_quantity",
"type": "asset"
},{
"name": "transfer",
"type": "bool"
}
]
},{
"name": "undelegatebw",
"base": "",
"fields": [{
"name": "from",
"type": "account_name"
},{
"name": "receiver",
"type": "account_name"
},{
"name": "unstake_net_quantity",
"type": "asset"
},{
"name": "unstake_cpu_quantity",
"type": "asset"
}
]
},{
"name": "refund",
"base": "",
"fields": [{
"name": "owner",
"type": "account_name"
}
]
},{
"name": "delegated_bandwidth",
"base": "",
"fields": [{
"name": "from",
"type": "account_name"
},{
"name": "to",
"type": "account_name"
},{
"name": "net_weight",
"type": "asset"
},{
"name": "cpu_weight",
"type": "asset"
}
]
},{
"name": "user_resources",
"base": "",
"fields": [{
"name": "owner",
"type": "account_name"
},{
"name": "net_weight",
"type": "asset"
},{
"name": "cpu_weight",
"type": "asset"
},{
"name": "ram_bytes",
"type": "uint64"
}
]
},{
"name": "total_resources",
"base": "",
"fields": [{
"name": "owner",
"type": "account_name"
},{
"name": "net_weight",
"type": "asset"
},{
"name": "cpu_weight",
"type": "asset"
},{
"name": "ram_bytes",
"type": "uint64"
}
]
},{
"name": "refund_request",
"base": "",
"fields": [{
"name": "owner",
"type": "account_name"
},{
"name": "request_time",
"type": "time_point_sec"
},{
"name": "net_amount",
"type": "asset"
},{
"name": "cpu_amount",
"type": "asset"
}
]
},{
"name": "blockchain_parameters",
"base": "",
"fields": [{
"name": "max_block_net_usage",
"type": "uint64"
},{
"name": "target_block_net_usage_pct",
"type": "uint32"
},{
"name": "max_transaction_net_usage",
"type": "uint32"
},{
"name": "base_per_transaction_net_usage",
"type": "uint32"
},{
"name": "net_usage_leeway",
"type": "uint32"
},{
"name": "context_free_discount_net_usage_num",
"type": "uint32"
},{
"name": "context_free_discount_net_usage_den",
"type": "uint32"
},{
"name": "max_block_cpu_usage",
"type": "uint32"
},{
"name": "target_block_cpu_usage_pct",
"type": "uint32"
},{
"name": "max_transaction_cpu_usage",
"type": "uint32"
},{
"name": "min_transaction_cpu_usage",
"type": "uint32"
},{
"name": "max_transaction_lifetime",
"type": "uint32"
},{
"name": "deferred_trx_expiration_window",
"type": "uint32"
},{
"name": "max_transaction_delay",
"type": "uint32"
},{
"name": "max_inline_action_size",
"type": "uint32"
},{
"name": "max_inline_action_depth",
"type": "uint16"
},{
"name": "max_authority_depth",
"type": "uint16"
}
]
},{
"name": "eosio_global_state2",
"base": "",
"fields": [{
"name": "new_ram_per_block",
"type": "uint16"
},{
"name": "last_ram_increase",
"type": "block_timestamp_type"
},{
"name": "last_block_num",
"type": "block_timestamp_type"
},{
"name": "reserved",
"type": "float64"
},{
"name": "revision",
"type": "uint8"
}
]
},{
"name": "eosio_global_state",
"base": "blockchain_parameters",
"fields": [{
"name": "max_ram_size",
"type": "uint64"
},{
"name": "total_ram_bytes_reserved",
"type": "uint64"
},{
"name": "total_ram_stake",
"type": "int64"
},{
"name": "last_producer_schedule_update",
"type": "block_timestamp_type"
},{
"name": "last_pervote_bucket_fill",
"type": "uint64"
},{
"name": "pervote_bucket",
"type": "int64"
},{
"name": "perblock_bucket",
"type": "int64"
},{
"name": "total_unpaid_blocks",
"type": "uint32"
},{
"name": "total_activated_stake",
"type": "int64"
},{
"name": "thresh_activated_stake_time",
"type": "uint64"
},{
"name": "last_producer_schedule_size",
"type": "uint16"
},{
"name": "total_producer_vote_weight",
"type": "float64"
},{
"name": "last_name_close",
"type": "block_timestamp_type"
}
]
},{
"name": "producer_info",
"base": "",
"fields": [{
"name": "owner",
"type": "account_name"
},{
"name": "total_votes",
"type": "float64"
},{
"name": "producer_key",
"type": "public_key"
},{
"name": "is_active",
"type": "bool"
},{
"name": "url",
"type": "string"
},{
"name": "unpaid_blocks",
"type": "uint32"
},{
"name": "last_claim_time",
"type": "uint64"
},{
"name": "location",
"type": "uint16"
}
]
},{
"name": "regproducer",
"base": "",
"fields": [{
"name": "producer",
"type": "account_name"
},{
"name": "producer_key",
"type": "public_key"
},{
"name": "url",
"type": "string"
},{
"name": "location",
"type": "uint16"
}
]
},{
"name": "unregprod",
"base": "",
"fields": [{
"name": "producer",
"type": "account_name"
}
]
},{
"name": "setram",
"base": "",
"fields": [{
"name": "max_ram_size",
"type": "uint64"
}
]
},{
"name": "setramrate",
"base": "",
"fields": [{
"name": "bytes_per_block",
"type": "uint16"
}
]
},{
"name": "regproxy",
"base": "",
"fields": [{
"name": "proxy",
"type": "account_name"
},{
"name": "isproxy",
"type": "bool"
}
]
},{
"name": "voteproducer",
"base": "",
"fields": [{
"name": "voter",
"type": "account_name"
},{
"name": "proxy",
"type": "account_name"
},{
"name": "producers",
"type": "account_name[]"
}
]
},{
"name": "voter_info",
"base": "",
"fields": [{
"name": "owner",
"type": "account_name"
},{
"name": "proxy",
"type": "account_name"
},{
"name": "producers",
"type": "account_name[]"
},{
"name": "staked",
"type": "int64"
},{
"name": "last_vote_weight",
"type": "float64"
},{
"name": "proxied_vote_weight",
"type": "float64"
},{
"name": "is_proxy",
"type": "bool"
}
]
},{
"name": "claimrewards",
"base": "",
"fields": [{
"name": "owner",
"type": "account_name"
}
]
},{
"name": "setpriv",
"base": "",
"fields": [{
"name": "account",
"type": "account_name"
},{
"name": "is_priv",
"type": "int8"
}
]
},{
"name": "rmvproducer",
"base": "",
"fields": [{
"name": "producer",
"type": "account_name"
}
]
},{
"name": "set_account_limits",
"base": "",
"fields": [{
"name": "account",
"type": "account_name"
},{
"name": "ram_bytes",
"type": "int64"
},{
"name": "net_weight",
"type": "int64"
},{
"name": "cpu_weight",
"type": "int64"
}
]
},{
"name": "set_global_limits",
"base": "",
"fields": [{
"name": "cpu_usec_per_period",
"type": "int64"
}
]
},{
"name": "producer_key",
"base": "",
"fields": [{
"name": "producer_name",
"type": "account_name"
},{
"name": "block_signing_key",
"type": "public_key"
}
]
},{
"name": "set_producers",
"base": "",
"fields": [{
"name": "schedule",
"type": "producer_key[]"
}
]
},{
"name": "require_auth",
"base": "",
"fields": [{
"name": "from",
"type": "account_name"
}
]
},{
"name": "setparams",
"base": "",
"fields": [{
"name": "params",
"type": "blockchain_parameters"
}
]
},{
"name": "connector",
"base": "",
"fields": [{
"name": "balance",
"type": "asset"
},{
"name": "weight",
"type": "float64"
}
]
},{
"name": "exchange_state",
"base": "",
"fields": [{
"name": "supply",
"type": "asset"
},{
"name": "base",
"type": "connector"
},{
"name": "quote",
"type": "connector"
}
]
},{
"name": "namebid_info",
"base": "",
"fields": [{
"name": "newname",
"type": "account_name"
},{
"name": "high_bidder",
"type": "account_name"
},{
"name": "high_bid",
"type": "int64"
},{
"name": "last_bid_time",
"type": "uint64"
}
]
}
],
"actions": [{
"name": "newaccount",
"type": "newaccount",
"ricardian_contract": ""
},{
"name": "setcode",
"type": "setcode",
"ricardian_contract": ""
},{
"name": "setabi",
"type": "setabi",
"ricardian_contract": ""
},{
"name": "updateauth",
"type": "updateauth",
"ricardian_contract": ""
},{
"name": "deleteauth",
"type": "deleteauth",
"ricardian_contract": ""
},{
"name": "linkauth",
"type": "linkauth",
"ricardian_contract": ""
},{
"name": "unlinkauth",
"type": "unlinkauth",
"ricardian_contract": ""
},{
"name": "canceldelay",
"type": "canceldelay",
"ricardian_contract": ""
},{
"name": "onerror",
"type": "onerror",
"ricardian_contract": ""
},{
"name": "buyrambytes",
"type": "buyrambytes",
"ricardian_contract": ""
},{
"name": "buyram",
"type": "buyram",
"ricardian_contract": ""
},{
"name": "sellram",
"type": "sellram",
"ricardian_contract": ""
},{
"name": "delegatebw",
"type": "delegatebw",
"ricardian_contract": ""
},{
"name": "undelegatebw",
"type": "undelegatebw",
"ricardian_contract": ""
},{
"name": "refund",
"type": "refund",
"ricardian_contract": ""
},{
"name": "regproducer",
"type": "regproducer",
"ricardian_contract": ""
},{
"name": "setram",
"type": "setram",
"ricardian_contract": ""
},{
"name": "setramrate",
"type": "setramrate",
"ricardian_contract": "Sets the number of new bytes of ram to create per block and resyncs bancor base connector balance"
},{
"name": "bidname",
"type": "bidname",
"ricardian_contract": ""
},{
"name": "bidrefund",
"type": "bidrefund",
"ricardian_contract": ""
},{
"name": "unregprod",
"type": "unregprod",
"ricardian_contract": ""
},{
"name": "regproxy",
"type": "regproxy",
"ricardian_contract": ""
},{
"name": "voteproducer",
"type": "voteproducer",
"ricardian_contract": ""
},{
"name": "claimrewards",
"type": "claimrewards",
"ricardian_contract": ""
},{
"name": "setpriv",
"type": "setpriv",
"ricardian_contract": ""
},{
"name": "rmvproducer",
"type": "rmvproducer",
"ricardian_contract": ""
},{
"name": "setalimits",
"type": "set_account_limits",
"ricardian_contract": ""
},{
"name": "setglimits",
"type": "set_global_limits",
"ricardian_contract": ""
},{
"name": "setprods",
"type": "set_producers",
"ricardian_contract": ""
},{
"name": "reqauth",
"type": "require_auth",
"ricardian_contract": ""
},{
"name": "setparams",
"type": "setparams",
"ricardian_contract": ""
}
],
"tables": [{
"name": "producers",
"index_type": "i64",
"key_names": [
"owner"
],
"key_types": [
"uint64"
],
"type": "producer_info"
},{
"name": "global",
"index_type": "i64",
"type": "eosio_global_state"
},{
"name": "global2",
"index_type": "i64",
"type": "eosio_global_state2"
},{
"name": "voters",
"index_type": "i64",
"key_names": [
"owner"
],
"key_types": [
"account_name"
],
"type": "voter_info"
},{
"name": "userres",
"index_type": "i64",
"key_names": [
"owner"
],
"key_types": [
"uint64"