BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Trooperz
FA2Ledger
operations (1.11M)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
814
1428
 
1
{ parameter (or
2
              (or
3
                (or
4
                  (or (pair %add_energy (nat %amount) (nat %token_id))
5
                      (string %add_mutable_attribute))
6
                  (or (pair %add_xp (nat %amount) (nat %token_id))
7
                      (or
8
                        (pair %balance_of
9
                          (list %requests (pair (address %owner) (nat %token_id)))
10
                          (contract %callback (list (pair
11
                                                    (pair %request (address %owner)
12
                                                                   (nat %token_id))
13
                                                    (nat %balance)))))
14
                        (pair %mint (address %address)
15
                                    (pair (map %metadata string bytes) (nat %token_id))))))
16
                (or
17
                  (or (pair %remove_energy (nat %amount) (nat %token_id))
18
                      (pair %remove_xp (nat %amount) (nat %token_id)))
19
                  (or (address %set_administrator)
20
                      (or (map %set_lvl_map nat nat) (address %set_marketplace)))))
21
              (or
22
                (or (or (nat %set_max_energy) (nat %set_max_stats))
23
                    (or (nat %set_max_xp)
24
                        (or (big_map %set_metadata string bytes)
25
                            (list %transfer (pair (address %from_)
26
                                                 (list %txs (pair (address %to_)
27
                                                                 (pair (nat %token_id)
28
                                                                       (nat %amount)))))))))
29
                (or
30
                  (or
31
                    (pair %update_added_mutable_attribute (string %name)
32
                                                          (pair (nat %token_id)
33
                                                                (nat %value)))
34
                    (or
35
                      (list %update_game_manager (or (address %add_game_manager)
36
                                                    (address %remove_game_manager)))
37
                      (list %update_metadata_list (pair (map %metadata string bytes)
38
                                                       (pair (nat %token_id)
39
                                                             (option %trooperz_attributes (pair
40
                                                                                           (pair
41
                                                                                             (map %added_mutable_attributes
42
                                                                                               string
43
                                                                                               nat)
44
                                                                                             (string %family))
45
                                                                                           (pair
46
                                                                                             (bool %has_pet)
47
                                                                                             (pair %mutable_attributes
48
                                                                                               (pair
49
                                                                                                 (nat %close_combat)
50
                                                                                                 (nat %fire_arms))
51
                                                                                               (pair
52
                                                                                                 (nat %hacking)
53
                                                                                                 (nat %trickery)))))))))))
54
                  (or
55
                    (pair %update_mutable_attribute (nat %token_id)
56
                                                    (or %value
57
                                                      (or (nat %close_combat)
58
                                                          (nat %fire_arms))
59
                                                      (or (nat %hacking) (nat %trickery))))
60
                    (or
61
                      (list %update_operators (or
62
                                               (pair %add_operator (address %owner)
63
                                                                   (pair
64
                                                                     (address %operator)
65
                                                                     (nat %token_id)))
66
                                               (pair %remove_operator (address %owner)
67
                                                                      (pair
68
                                                                        (address %operator)
69
                                                                        (nat %token_id)))))
70
                      (pair %withdraw_mutez (mutez %amount) (address %destination))))))) ;
71
  storage (pair
72
            (pair
73
              (pair (pair (address %administrator) (set %all_tokens nat))
74
                    (pair (set %allowed_attributes string) (big_map %energy_map nat nat)))
75
              (pair (pair (set %game_manager address) (nat %last_token_id))
76
                    (pair (big_map %ledger nat address)
77
                          (pair (map %lvl_map nat nat) (address %marketplace)))))
78
            (pair
79
              (pair (pair (nat %max_energy) (nat %max_stats))
80
                    (pair (nat %max_xp)
81
                          (pair (big_map %metadata string bytes)
82
                                (big_map %operators
83
                                  (pair (address %owner)
84
                                        (pair (address %operator) (nat %token_id)))
85
                                  unit))))
86
              (pair
87
                (pair (big_map %revealed nat bool)
88
                      (big_map %token_metadata nat
89
                                               (pair (nat %token_id)
90
                                                     (map %token_info string bytes))))
91
                (pair (int %total_supply)
92
                      (pair
93
                        (big_map %trooperz_attributes nat
94
                                                      (pair
95
                                                        (pair
96
                                                          (map %added_mutable_attributes
97
                                                            string
98
                                                            nat)
99
                                                          (string %family))
100
                                                        (pair (bool %has_pet)
101
                                                              (pair %mutable_attributes
102
                                                                (pair
103
                                                                  (nat %close_combat)
104
                                                                  (nat %fire_arms))
105
                                                                (pair (nat %hacking)
106
                                                                      (nat %trickery))))))
107
                        (big_map %xp_map nat nat)))))) ;
108
  code { UNPAIR ;
109
         IF_LEFT
110
           { IF_LEFT
111
               { IF_LEFT
112
                   { IF_LEFT
113
                       { SWAP ;
114
                         DUP ;
115
                         DUG 2 ;
116
                         CAR ;
117
                         GET 3 ;
118
                         CAR ;
119
                         SENDER ;
120
                         MEM ;
121
                         IF {} { PUSH string "ERROR NOT GAME MANAGER" ; FAILWITH } ;
122
                         SWAP ;
123
                         DUP ;
124
                         DUG 2 ;
125
                         UNPAIR ;
126
                         UNPAIR ;
127
                         UNPAIR ;
128
                         SWAP ;
129
                         UNPAIR ;
130
                         SWAP ;
131
                         DUP 7 ;
132
                         GET 3 ;
133
                         CAR ;
134
                         CAR ;
135
                         DUP 7 ;
136
                         CAR ;
137
                         DIG 8 ;
138
                         CAR ;
139
                         CAR ;
140
                         GET 4 ;
141
                         DUP 9 ;
142
                         CDR ;
143
                         GET ;
144
                         IF_NONE { PUSH int 316 ; FAILWITH } {} ;
145
                         ADD ;
146
                         DUP ;
147
                         DUP 3 ;
148
                         COMPARE ;
149
                         LE ;
150
                         IF { DROP } { SWAP ; DROP } ;
151
                         SOME ;
152
                         DIG 6 ;
153
                         CDR ;
154
                         UPDATE ;
155
                         SWAP ;
156
                         PAIR ;
157
                         SWAP ;
158
                         PAIR ;
159
                         PAIR ;
160
                         PAIR }
161
                       { SWAP ;
162
                         DUP ;
163
                         DUG 2 ;
164
                         CAR ;
165
                         GET 3 ;
166
                         CAR ;
167
                         SENDER ;
168
                         MEM ;
169
                         IF {} { PUSH string "ERROR NOT GAME MANAGER" ; FAILWITH } ;
170
                         SWAP ;
171
                         DUP ;
172
                         DUG 2 ;
173
                         CAR ;
174
                         CAR ;
175
                         GET 3 ;
176
                         SWAP ;
177
                         DUP ;
178
                         DUG 2 ;
179
                         MEM ;
180
                         IF { PUSH string "ALREADY_EXISTING_ATTRIBUTE" ; FAILWITH } {} ;
181
                         SWAP ;
182
                         UNPAIR ;
183
                         UNPAIR ;
184
                         UNPAIR ;
185
                         SWAP ;
186
                         UNPAIR ;
187
                         PUSH bool True ;
188
                         DIG 6 ;
189
                         UPDATE ;
190
                         PAIR ;
191
                         SWAP ;
192
                         PAIR ;
193
                         PAIR ;
194
                         PAIR } ;
195
                     NIL operation }
196
                   { IF_LEFT
197
                       { SWAP ;
198
                         DUP ;
199
                         DUG 2 ;
200
                         CAR ;
201
                         GET 3 ;
202
                         CAR ;
203
                         SENDER ;
204
                         MEM ;
205
                         IF {} { PUSH string "ERROR NOT GAME MANAGER" ; FAILWITH } ;
206
                         SWAP ;
207
                         DUP ;
208
                         DUG 2 ;
209
                         DUP ;
210
                         GET 10 ;
211
                         DUP 4 ;
212
                         GET 3 ;
213
                         GET 3 ;
214
                         DUP 4 ;
215
                         CAR ;
216
                         DIG 5 ;
217
                         GET 10 ;
218
                         DUP 6 ;
219
                         CDR ;
220
                         GET ;
221
                         IF_NONE { PUSH int 292 ; FAILWITH } {} ;
222
                         ADD ;
223
                         DUP ;
224
                         DUP 3 ;
225
                         COMPARE ;
226
                         LE ;
227
                         IF { DROP } { SWAP ; DROP } ;
228
                         SOME ;
229
                         DIG 3 ;
230
                         CDR ;
231
                         UPDATE ;
232
                         UPDATE 10 ;
233
                         NIL operation }
234
                       { IF_LEFT
235
                           { NIL operation ;
236
                             DUP ;
237
                             DUP 3 ;
238
                             CDR ;
239
                             PUSH mutez 0 ;
240
                             DUP 5 ;
241
                             CAR ;
242
                             MAP { DUP 7 ;
243
                                   GET 5 ;
244
                                   CDR ;
245
                                   SWAP ;
246
                                   DUP ;
247
                                   DUG 2 ;
248
                                   CDR ;
249
                                   MEM ;
250
                                   IF
251
                                     {}
252
                                     { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
253
                                   DUP ;
254
                                   CAR ;
255
                                   DUP 8 ;
256
                                   CAR ;
257
                                   GET 5 ;
258
                                   DUP 3 ;
259
                                   CDR ;
260
                                   GET ;
261
                                   IF_NONE { PUSH int 375 ; FAILWITH } {} ;
262
                                   COMPARE ;
263
                                   EQ ;
264
                                   IF { PUSH nat 1 } { PUSH nat 0 } ;
265
                                   SWAP ;
266
                                   PAIR } ;
267
                             DIG 4 ;
268
                             DROP ;
269
                             DIG 4 ;
270
                             DROP ;
271
                             TRANSFER_TOKENS ;
272
                             CONS }
273
                           { SWAP ;
274
                             DUP ;
275
                             DUG 2 ;
276
                             CAR ;
277
                             CAR ;
278
                             CAR ;
279
                             CAR ;
280
                             SENDER ;
281
                             COMPARE ;
282
                             EQ ;
283
                             IF
284
                               { PUSH bool True }
285
                               { SWAP ; DUP ; DUG 2 ; CAR ; GET 8 ; SENDER ; COMPARE ; EQ } ;
286
                             IF {} { PUSH string "FA2_MINT_NOT_ALLOWED" ; FAILWITH } ;
287
                             SWAP ;
288
                             DUP ;
289
                             DUG 2 ;
290
                             CAR ;
291
                             CAR ;
292
                             CAR ;
293
                             CDR ;
294
                             SWAP ;
295
                             DUP ;
296
                             DUG 2 ;
297
                             GET 4 ;
298
                             MEM ;
299
                             IF
300
                               { PUSH string "NFT-asset: cannot mint twice same token" ;
301
                                 FAILWITH }
302
                               {} ;
303
                             SWAP ;
304
                             UNPAIR ;
305
                             UNPAIR ;
306
                             SWAP ;
307
                             UNPAIR ;
308
                             SWAP ;
309
                             UNPAIR ;
310
                             DUP 6 ;
311
                             CAR ;
312
                             SOME ;
313
                             DUP 7 ;
314
                             GET 4 ;
315
                             UPDATE ;
316
                             PAIR ;
317
                             SWAP ;
318
                             PAIR ;
319
                             SWAP ;
320
                             PAIR ;
321
                             SWAP ;
322
                             UNPAIR ;
323
                             SWAP ;
324
                             UNPAIR ;
325
                             UNPAIR ;
326
                             SWAP ;
327
                             DIG 5 ;
328
                             DUP ;
329
                             GET 3 ;
330
                             SWAP ;
331
                             DUP ;
332
                             DUG 7 ;
333
                             GET 4 ;
334
                             PAIR ;
335
                             SOME ;
336
                             DUP 7 ;
337
                             GET 4 ;
338
                             UPDATE ;
339
                             SWAP ;
340
                             PAIR ;
341
                             PAIR ;
342
                             SWAP ;
343
                             PAIR ;
344
                             SWAP ;
345
                             UNPAIR ;
346
                             UNPAIR ;
347
                             UNPAIR ;
348
                             SWAP ;
349
                             PUSH bool True ;
350
                             DUP 7 ;
351
                             GET 4 ;
352
                             UPDATE ;
353
                             SWAP ;
354
                             PAIR ;
355
                             PAIR ;
356
                             PAIR ;
357
                             SWAP ;
358
                             UNPAIR ;
359
                             SWAP ;
360
                             UNPAIR ;
361
                             UNPAIR ;
362
                             PUSH (option bool) (Some False) ;
363
                             DUP 7 ;
364
                             GET 4 ;
365
                             UPDATE ;
366
                             PAIR ;
367
                             PAIR ;
368
                             SWAP ;
369
                             PAIR ;
370
                             SWAP ;
371
                             PAIR ;
372
                             DUP ;
373
                             GET 10 ;
374
                             PUSH (option nat) (Some 0) ;
375
                             DUP 4 ;
376
                             GET 4 ;
377
                             UPDATE ;
378
                             UPDATE 10 ;
379
                             DUP ;
380
                             DUG 2 ;
381
                             UNPAIR ;
382
                             UNPAIR ;
383
                             UNPAIR ;
384
                             SWAP ;
385
                             UNPAIR ;
386
                             SWAP ;
387
                             DIG 6 ;
388
                             GET 3 ;
389
                             CAR ;
390
                             CAR ;
391
                             SOME ;
392
                             DUP 7 ;
393
                             GET 4 ;
394
                             UPDATE ;
395
                             SWAP ;
396
                             PAIR ;
397
                             SWAP ;
398
                             PAIR ;
399
                             SWAP ;
400
                             UNPAIR ;
401
                             CAR ;
402
                             DIG 4 ;
403
                             GET 4 ;
404
                             SWAP ;
405
                             PAIR ;
406
                             PAIR ;
407
                             SWAP ;
408
                             PAIR ;
409
                             PAIR ;
410
                             DUP ;
411
                             GET 7 ;
412
                             PUSH int 1 ;
413
                             ADD ;
414
                             UPDATE 7 ;
415
                             NIL operation } } } }
416
               { IF_LEFT
417
                   { IF_LEFT
418
                       { SWAP ;
419
                         DUP ;
420
                         DUG 2 ;
421
                         CAR ;
422
                         GET 3 ;
423
                         CAR ;
424
                         SENDER ;
425
                         MEM ;
426
                         IF {} { PUSH string "ERROR NOT GAME MANAGER" ; FAILWITH } ;
427
                         SWAP ;
428
                         DUP ;
429
                         DUG 2 ;
430
                         UNPAIR ;
431
                         UNPAIR ;
432
                         UNPAIR ;
433
                         SWAP ;
434
                         UNPAIR ;
435
                         SWAP ;
436
                         PUSH int 0 ;
437
                         DUP 7 ;
438
                         CAR ;
439
                         DIG 8 ;
440
                         CAR ;
441
                         CAR ;
442
                         GET 4 ;
443
                         DUP 9 ;
444
                         CDR ;
445
                         GET ;
446
                         IF_NONE { PUSH int 328 ; FAILWITH } {} ;
447
                         SUB ;
448
                         DUP ;
449
                         DUP 3 ;
450
                         COMPARE ;
451
                         LE ;
452
                         IF { SWAP ; DROP } { DROP } ;
453
                         ISNAT ;
454
                         IF_NONE { PUSH int 328 ; FAILWITH } {} ;
455
                         SOME ;
456
                         DIG 6 ;
457
                         CDR ;
458
                         UPDATE ;
459
                         SWAP ;
460
                         PAIR ;
461
                         SWAP ;
462
                         PAIR ;
463
                         PAIR ;
464
                         PAIR }
465
                       { SWAP ;
466
                         DUP ;
467
                         DUG 2 ;
468
                         CAR ;
469
                         GET 3 ;
470
                         CAR ;
471
                         SENDER ;
472
                         MEM ;
473
                         IF {} { PUSH string "ERROR NOT GAME MANAGER" ; FAILWITH } ;
474
                         SWAP ;
475
                         DUP ;
476
                         DUG 2 ;
477
                         DUP ;
478
                         GET 10 ;
479
                         PUSH int 0 ;
480
                         DUP 4 ;
481
                         CAR ;
482
                         DIG 5 ;
483
                         GET 10 ;
484
                         DUP 6 ;
485
                         CDR ;
486
                         GET ;
487
                         IF_NONE { PUSH int 304 ; FAILWITH } {} ;
488
                         SUB ;
489
                         DUP ;
490
                         DUP 3 ;
491
                         COMPARE ;
492
                         LE ;
493
                         IF { SWAP ; DROP } { DROP } ;
494
                         ISNAT ;
495
                         IF_NONE { PUSH int 304 ; FAILWITH } {} ;
496
                         SOME ;
497
                         DIG 3 ;
498
                         CDR ;
499
                         UPDATE ;
500
                         UPDATE 10 } }
501
                   { IF_LEFT
502
                       { SWAP ;
503
                         DUP ;
504
                         DUG 2 ;
505
                         CAR ;
506
                         CAR ;
507
                         CAR ;
508
                         CAR ;
509
                         SENDER ;
510
                         COMPARE ;
511
                         EQ ;
512
                         IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
513
                         SWAP ;
514
                         UNPAIR ;
515
                         UNPAIR ;
516
                         UNPAIR ;
517
                         CDR ;
518
                         DIG 4 ;
519
                         PAIR ;
520
                         PAIR ;
521
                         PAIR ;
522
                         PAIR }
523
                       { IF_LEFT
524
                           { SWAP ;
525
                             DUP ;
526
                             DUG 2 ;
527
                             CAR ;
528
                             CAR ;
529
                             CAR ;
530
                             CAR ;
531
                             SENDER ;
532
                             COMPARE ;
533
                             EQ ;
534
                             IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
535
                             SWAP ;
536
                             UNPAIR ;
537
                             UNPAIR ;
538
                             SWAP ;
539
                             UNPAIR ;
540
                             SWAP ;
541
                             UNPAIR ;
542
                             SWAP ;
543
                             CDR ;
544
                             DIG 5 ;
545
                             PAIR ;
546
                             SWAP ;
547
                             PAIR ;
548
                             SWAP ;
549
                             PAIR ;
550
                             SWAP ;
551
                             PAIR ;
552
                             PAIR }
553
                           { SWAP ;
554
                             DUP ;
555
                             DUG 2 ;
556
                             CAR ;
557
                             CAR ;
558
                             CAR ;
559
                             CAR ;
560
                             SENDER ;
561
                             COMPARE ;
562
                             EQ ;
563
                             IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
564
                             SWAP ;
565
                             UNPAIR ;
566
                             UNPAIR ;
567
                             SWAP ;
568
                             UNPAIR ;
569
                             SWAP ;
570
                             UNPAIR ;
571
                             SWAP ;
572
                             CAR ;
573
                             DIG 5 ;
574
                             SWAP ;
575
                             PAIR ;
576
                             SWAP ;
577
                             PAIR ;
578
                             SWAP ;
579
                             PAIR ;
580
                             SWAP ;
581
                             PAIR ;
582
                             PAIR } } } ;
583
                 NIL operation } }
584
           { IF_LEFT
585
               { IF_LEFT
586
                   { IF_LEFT
587
                       { SWAP ;
588
                         DUP ;
589
                         DUG 2 ;
590
                         CAR ;
591
                         CAR ;
592
                         CAR ;
593
                         CAR ;
594
                         SENDER ;
595
                         COMPARE ;
596
                         EQ ;
597
                         IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
598
                         SWAP ;
599
                         UNPAIR ;
600
                         SWAP ;
601
                         UNPAIR ;
602
                         UNPAIR ;
603
                         CDR ;
604
                         DIG 4 ;
605
                         PAIR ;
606
                         PAIR ;
607
                         PAIR ;
608
                         SWAP ;
609
                         PAIR }
610
                       { SWAP ;
611
                         DUP ;
612
                         DUG 2 ;
613
                         CAR ;
614
                         CAR ;
615
                         CAR ;
616
                         CAR ;
617
                         SENDER ;
618
                         COMPARE ;
619
                         EQ ;
620
                         IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
621
                         SWAP ;
622
                         UNPAIR ;
623
                         SWAP ;
624
                         UNPAIR ;
625
                         UNPAIR ;
626
                         CAR ;
627
                         DIG 4 ;
628
                         SWAP ;
629
                         PAIR ;
630
                         PAIR ;
631
                         PAIR ;
632
                         SWAP ;
633
                         PAIR } }
634
                   { IF_LEFT
635
                       { SWAP ;
636
                         DUP ;
637
                         DUG 2 ;
638
                         CAR ;
639
                         CAR ;
640
                         CAR ;
641
                         CAR ;
642
                         SENDER ;
643
                         COMPARE ;
644
                         EQ ;
645
                         IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
646
                         SWAP ;
647
                         UNPAIR ;
648
                         SWAP ;
649
                         UNPAIR ;
650
                         UNPAIR ;
651
                         SWAP ;
652
                         CDR ;
653
                         DIG 4 ;
654
                         PAIR ;
655
                         SWAP ;
656
                         PAIR ;
657
                         PAIR ;
658
                         SWAP ;
659
                         PAIR }
660
                       { IF_LEFT
661
                           { SWAP ;
662
                             DUP ;
663
                             DUG 2 ;
664
                             CAR ;
665
                             CAR ;
666
                             CAR ;
667
                             CAR ;
668
                             SENDER ;
669
                             COMPARE ;
670
                             EQ ;
671
                             IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
672
                             SWAP ;
673
                             UNPAIR ;
674
                             SWAP ;
675
                             UNPAIR ;
676
                             UNPAIR ;
677
                             SWAP ;
678
                             UNPAIR ;
679
                             SWAP ;
680
                             CDR ;
681
                             DIG 5 ;
682
                             PAIR ;
683
                             SWAP ;
684
                             PAIR ;
685
                             SWAP ;
686
                             PAIR ;
687
                             PAIR ;
688
                             SWAP ;
689
                             PAIR }
690
                           { DUP ;
691
                             ITER { DUP ;
692
                                    CDR ;
693
                                    ITER { DUP 4 ;
694
                                           GET 5 ;
695
                                           CDR ;
696
                                           SWAP ;
697
                                           DUP ;
698
                                           DUG 2 ;
699
                                           GET 3 ;
700
                                           MEM ;
701
                                           IF
702
                                             {}
703
                                             { PUSH string "FA2_TOKEN_UNDEFINED" ;
704
                                               FAILWITH } ;
705
                                           SWAP ;
706
                                           DUP ;
707
                                           DUG 2 ;
708
                                           CAR ;
709
                                           SENDER ;
710
                                           COMPARE ;
711
                                           EQ ;
712
                                           IF
713
                                             { PUSH bool True }
714
                                             { DUP 4 ;
715
                                               GET 3 ;
716
                                               GET 6 ;
717
                                               SWAP ;
718
                                               DUP ;
719
                                               DUG 2 ;
720
                                               GET 3 ;
721
                                               SENDER ;
722
                                               DUP 5 ;
723
                                               CAR ;
724
                                               PAIR 3 ;
725
                                               MEM } ;
726
                                           IF
727
                                             {}
728
                                             { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ;
729
                                           DUP ;
730
                                           GET 4 ;
731
                                           PUSH nat 0 ;
732
                                           COMPARE ;
733
                                           LT ;
734
                                           IF
735
                                             { DUP ;
736
                                               GET 4 ;
737
                                               PUSH nat 1 ;
738
                                               COMPARE ;
739
                                               EQ ;
740
                                               IF
741
                                                 { SWAP ;
742
                                                   DUP ;
743
                                                   DUG 2 ;
744
                                                   CAR ;
745
                                                   DUP 5 ;
746
                                                   CAR ;
747
                                                   GET 5 ;
748
                                                   DUP 3 ;
749
                                                   GET 3 ;
750
                                                   GET ;
751
                                                   IF_NONE
752
                                                     { PUSH int 404 ; FAILWITH }
753
                                                     {} ;
754
                                                   COMPARE ;
755
                                                   EQ }
756
                                                 { PUSH bool False } ;
757
                                               IF
758
                                                 {}
759
                                                 { PUSH string "FA2_INSUFFICIENT_BALANCE" ;
760
                                                   FAILWITH } ;
761
                                               DIG 3 ;
762
                                               UNPAIR ;
763
                                               UNPAIR ;
764
                                               SWAP ;
765
                                               UNPAIR ;
766
                                               SWAP ;
767
                                               UNPAIR ;
768
                                               DUP 6 ;
769
                                               CAR ;
770
                                               SOME ;
771
                                               DIG 6 ;
772
                                               GET 3 ;
773
                                               UPDATE ;
774
                                               PAIR ;
775
                                               SWAP ;
776
                                               PAIR ;
777
                                               SWAP ;
778
                                               PAIR ;
779
                                               PAIR ;
780
                                               DUG 2 }
781
                                             { DROP } } ;
782
                                    DROP } ;
783
                             DROP } } } ;
784
                 NIL operation }
785
               { IF_LEFT
786
                   { IF_LEFT
787
                       { SWAP ;
788
                         DUP ;
789
                         DUG 2 ;
790
                         CAR ;
791
                         GET 3 ;
792
                         CAR ;
793
                         SENDER ;
794
                         MEM ;
795
                         IF {} { PUSH string "ERROR NOT GAME MANAGER" ; FAILWITH } ;
796
                         SWAP ;
797
                         DUP ;
798
                         DUG 2 ;
799
                         CAR ;
800
                         CAR ;
801
                         GET 3 ;
802
                         SWAP ;
803
                         DUP ;
804
                         DUG 2 ;
805
                         CAR ;
806
                         MEM ;
807
                         IF
808
                           {}
809
                           { PUSH string "WrongCondition: self.data.allowed_attributes.contains(params.name)" ;
810
                             FAILWITH } ;
811
                         SWAP ;
812
                         DUP ;
813
                         DUG 2 ;
814
                         GET 9 ;
815
                         SWAP ;
816
                         DUP ;
817
                         DUG 2 ;
818
                         GET 3 ;
819
                         GET ;
820
                         IF_NONE { PUSH int 336 ; FAILWITH } {} ;
821
                         CAR ;
822
                         CAR ;
823
                         SWAP ;
824
                         DUP ;
825
                         DUG 2 ;
826
                         CAR ;
827
                         MEM ;
828
                         IF
829
                           { SWAP ;
830
                             DUP ;
831
                             GET 9 ;
832
                             DUP ;
833
                             DUP 4 ;
834
                             GET 3 ;
835
                             DUP ;
836
                             DUG 2 ;
837
                             GET ;
838
                             IF_NONE { PUSH int 337 ; FAILWITH } {} ;
839
                             UNPAIR ;
840
                             UNPAIR ;
841
                             DUP ;
842
                             DUP 8 ;
843
                             CAR ;
844
                             DUP ;
845
                             DUG 2 ;
846
                             GET ;
847
                             IF_NONE { PUSH int 337 ; FAILWITH } {} ;
848
                             DIG 8 ;
849
                             GET 4 ;
850
                             ADD ;
851
                             SOME ;
852
                             SWAP ;
853
                             UPDATE ;
854
                             PAIR ;
855
                             PAIR ;
856
                             SOME ;
857
                             SWAP ;
858
                             UPDATE ;
859
                             UPDATE 9 }
860
                           { SWAP ;
861
                             DUP ;
862
                             GET 9 ;
863
                             DUP ;
864
                             DUP 4 ;
865
                             GET 3 ;
866
                             DUP ;
867
                             DUG 2 ;
868
                             GET ;
869
                             IF_NONE { PUSH int 340 ; FAILWITH } {} ;
870
                             UNPAIR ;
871
                             UNPAIR ;
872
                             DUP 7 ;
873
                             GET 4 ;
874
                             SOME ;
875
                             DIG 7 ;
876
                             CAR ;
877
                             UPDATE ;
878
                             PAIR ;
879
                             PAIR ;
880
                             SOME ;
881
                             SWAP ;
882
                             UPDATE ;
883
                             UPDATE 9 } }
884
                       { IF_LEFT
885
                           { SWAP ;
886
                             DUP ;
887
                             DUG 2 ;
888
                             CAR ;
889
                             CAR ;
890
                             CAR ;
891
                             CAR ;
892
                             SENDER ;
893
                             COMPARE ;
894
                             EQ ;
895
                             IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
896
                             DUP ;
897
                             ITER { IF_LEFT
898
                                      { DIG 2 ;
899
                                        UNPAIR ;
900
                                        UNPAIR ;
901
                                        SWAP ;
902
                                        UNPAIR ;
903
                                        UNPAIR ;
904
                                        PUSH bool True ;
905
                                        DIG 6 ;
906
                                        UPDATE ;
907
                                        PAIR ;
908
                                        PAIR ;
909
                                        SWAP ;
910
                                        PAIR ;
911
                                        PAIR ;
912
                                        SWAP }
913
                                      { DIG 2 ;
914
                                        UNPAIR ;
915
                                        UNPAIR ;
916
                                        SWAP ;
917
                                        UNPAIR ;
918
                                        UNPAIR ;
919
                                        PUSH bool False ;
920
                                        DIG 6 ;
921
                                        UPDATE ;
922
                                        PAIR ;
923
                                        PAIR ;
924
                                        SWAP ;
925
                                        PAIR ;
926
                                        PAIR ;
927
                                        SWAP } } ;
928
                             DROP }
929
                           { SWAP ;
930
                             DUP ;
931
                             DUG 2 ;
932
                             CAR ;
933
                             CAR ;
934
                             CAR ;
935
                             CAR ;
936
                             SENDER ;
937
                             COMPARE ;
938
                             EQ ;
939
                             IF
940
                               { PUSH bool True }
941
                               { SWAP ; DUP ; DUG 2 ; CAR ; GET 8 ; SENDER ; COMPARE ; EQ } ;
942
                             IF {} { PUSH string "FA2_MINT_NOT_ALLOWED" ; FAILWITH } ;
943
                             DUP ;
944
                             ITER { DUP 3 ;
945
                                    CAR ;
946
                                    CAR ;
947
                                    CAR ;
948
                                    CAR ;
949
                                    SENDER ;
950
                                    COMPARE ;
951
                                    EQ ;
952
                                    IF
953
                                      {}
954
                                      { PUSH bool False ;
955
                                        DUP 4 ;
956
                                        GET 5 ;
957
                                        CAR ;
958
                                        DUP 3 ;
959
                                        GET 3 ;
960
                                        GET ;
961
                                        IF_NONE { PUSH int 255 ; FAILWITH } {} ;
962
                                        COMPARE ;
963
                                        EQ ;
964
                                        IF
965
                                          {}
966
                                          { PUSH string "FA2_ALREADY_REVEAL" ; FAILWITH } } ;
967
                                    DIG 2 ;
968
                                    UNPAIR ;
969
                                    SWAP ;
970
                                    UNPAIR ;
971
                                    SWAP ;
972
                                    UNPAIR ;
973
                                    UNPAIR ;
974
                                    SWAP ;
975
                                    DIG 5 ;
976
                                    DUP ;
977
                                    CAR ;
978
                                    SWAP ;
979
                                    DUP ;
980
                                    DUG 7 ;
981
                                    GET 3 ;
982
                                    PAIR ;
983
                                    SOME ;
984
                                    DUP 7 ;
985
                                    GET 3 ;
986
                                    UPDATE ;
987
                                    SWAP ;
988
                                    PUSH (option bool) (Some True) ;
989
                                    DUP 7 ;
990
                                    GET 3 ;
991
                                    UPDATE ;
992
                                    PAIR ;
993
                                    PAIR ;
994
                                    SWAP ;
995
                                    PAIR ;
996
                                    SWAP ;
997
                                    PAIR ;
998
                                    DUG 2 ;
999
                                    DUP ;
1000
                                    GET 4 ;
1001
                                    IF_NONE
1002
                                      { DROP }
1003
                                      { DROP ;
1004
                                        DIG 2 ;
1005
                                        DUP ;
1006
                                        GET 9 ;
1007
                                        DUP 3 ;
1008
                                        GET 4 ;
1009
                                        IF_NONE { PUSH int 259 ; FAILWITH } {} ;
1010
                                        SOME ;
1011
                                        DIG 3 ;
1012
                                        GET 3 ;
1013
                                        UPDATE ;
1014
                                        UPDATE 9 ;
1015
                                        SWAP } } ;
1016
                             DROP } } ;
1017
                     NIL operation }
1018
                   { IF_LEFT
1019
                       { SWAP ;
1020
                         DUP ;
1021
                         DUG 2 ;
1022
                         CAR ;
1023
                         GET 3 ;
1024
                         CAR ;
1025
                         SENDER ;
1026
                         MEM ;
1027
                         IF {} { PUSH string "ERROR NOT GAME MANAGER" ; FAILWITH } ;
1028
                         DUP ;
1029
                         CDR ;
1030
                         IF_LEFT
1031
                           { IF_LEFT
1032
                               { DUP 3 ;
1033
                                 DUP ;
1034
                                 GET 9 ;
1035
                                 DUP ;
1036
                                 DIG 4 ;
1037
                                 CAR ;
1038
                                 DUP ;
1039
                                 DUG 2 ;
1040
                                 GET ;
1041
                                 IF_NONE { PUSH int 355 ; FAILWITH } {} ;
1042
                                 DUP ;
1043
                                 GET 4 ;
1044
                                 UNPAIR ;
1045
                                 CDR ;
1046
                                 DIG 6 ;
1047
                                 DIG 7 ;
1048
                                 GET 3 ;
1049
                                 CAR ;
1050
                                 CDR ;
1051
                                 DUP ;
1052
                                 DUP 3 ;
1053
                                 COMPARE ;
1054
                                 LE ;
1055
                                 IF { DROP } { SWAP ; DROP } ;
1056
                                 PAIR ;
1057
                                 PAIR ;
1058
                                 UPDATE 4 ;
1059
                                 SOME ;
1060
                                 SWAP ;
1061
                                 UPDATE ;
1062
                                 UPDATE 9 }
1063
                               { DUP 3 ;
1064
                                 DUP ;
1065
                                 GET 9 ;
1066
                                 DUP ;
1067
                                 DIG 4 ;
1068
                                 CAR ;
1069
                                 DUP ;
1070
                                 DUG 2 ;
1071
                                 GET ;
1072
                                 IF_NONE { PUSH int 353 ; FAILWITH } {} ;
1073
                                 DUP ;
1074
                                 GET 4 ;
1075
                                 UNPAIR ;
1076
                                 CAR ;
1077
                                 DIG 6 ;
1078
                                 DIG 7 ;
1079
                                 GET 3 ;
1080
                                 CAR ;
1081
                                 CDR ;
1082
                                 DUP ;
1083
                                 DUP 3 ;
1084
                                 COMPARE ;
1085
                                 LE ;
1086
                                 IF { DROP } { SWAP ; DROP } ;
1087
                                 SWAP ;
1088
                                 PAIR ;
1089
                                 PAIR ;
1090
                                 UPDATE 4 ;
1091
                                 SOME ;
1092
                                 SWAP ;
1093
                                 UPDATE ;
1094
                                 UPDATE 9 } }
1095
                           { IF_LEFT
1096
                               { DUP 3 ;
1097
                                 DUP ;
1098
                                 GET 9 ;
1099
                                 DUP ;
1100
                                 DIG 4 ;
1101
                                 CAR ;
1102
                                 DUP ;
1103
                                 DUG 2 ;
1104
                                 GET ;
1105
                                 IF_NONE { PUSH int 349 ; FAILWITH } {} ;
1106
                                 DUP ;
1107
                                 GET 4 ;
1108
                                 DIG 5 ;
1109
                                 DIG 6 ;
1110
                                 GET 3 ;
1111
                                 CAR ;
1112
                                 CDR ;
1113
                                 DUP ;
1114
                                 DUP 3 ;
1115
                                 COMPARE ;
1116
                                 LE ;
1117
                                 IF { DROP } { SWAP ; DROP } ;
1118
                                 UPDATE 3 ;
1119
                                 UPDATE 4 ;
1120
                                 SOME ;
1121
                                 SWAP ;
1122
                                 UPDATE ;
1123
                                 UPDATE 9 }
1124
                               { DUP 3 ;
1125
                                 DUP ;
1126
                                 GET 9 ;
1127
                                 DUP ;
1128
                                 DIG 4 ;
1129
                                 CAR ;
1130
                                 DUP ;
1131
                                 DUG 2 ;
1132
                                 GET ;
1133
                                 IF_NONE { PUSH int 351 ; FAILWITH } {} ;
1134
                                 DUP ;
1135
                                 GET 4 ;
1136
                                 DIG 5 ;
1137
                                 DIG 6 ;
1138
                                 GET 3 ;
1139
                                 CAR ;
1140
                                 CDR ;
1141
                                 DUP ;
1142
                                 DUP 3 ;
1143
                                 COMPARE ;
1144
                                 LE ;
1145
                                 IF { DROP } { SWAP ; DROP } ;
1146
                                 UPDATE 4 ;
1147
                                 UPDATE 4 ;
1148
                                 SOME ;
1149
                                 SWAP ;
1150
                                 UPDATE ;
1151
                                 UPDATE 9 } } ;
1152
                         NIL operation }
1153
                       { IF_LEFT
1154
                           { DUP ;
1155
                             ITER { IF_LEFT
1156
                                      { DUP ;
1157
                                        CAR ;
1158
                                        SENDER ;
1159
                                        COMPARE ;
1160
                                        EQ ;
1161
                                        IF
1162
                                          {}
1163
                                          { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
1164
                                        DIG 2 ;
1165
                                        UNPAIR ;
1166
                                        SWAP ;
1167
                                        UNPAIR ;
1168
                                        UNPAIR ;
1169
                                        SWAP ;
1170
                                        UNPAIR ;
1171
                                        SWAP ;
1172
                                        UNPAIR ;
1173
                                        SWAP ;
1174
                                        PUSH (option unit) (Some Unit) ;
1175
                                        DIG 7 ;
1176
                                        UPDATE ;
1177
                                        SWAP ;
1178
                                        PAIR ;
1179
                                        SWAP ;
1180
                                        PAIR ;
1181
                                        SWAP ;
1182
                                        PAIR ;
1183
                                        PAIR ;
1184
                                        SWAP ;
1185
                                        PAIR ;
1186
                                        SWAP }
1187
                                      { DUP ;
1188
                                        CAR ;
1189
                                        SENDER ;
1190
                                        COMPARE ;
1191
                                        EQ ;
1192
                                        IF
1193
                                          {}
1194
                                          { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
1195
                                        DIG 2 ;
1196
                                        UNPAIR ;
1197
                                        SWAP ;
1198
                                        UNPAIR ;
1199
                                        UNPAIR ;
1200
                                        SWAP ;
1201
                                        UNPAIR ;
1202
                                        SWAP ;
1203
                                        UNPAIR ;
1204
                                        SWAP ;
1205
                                        NONE unit ;
1206
                                        DIG 7 ;
1207
                                        UPDATE ;
1208
                                        SWAP ;
1209
                                        PAIR ;
1210
                                        SWAP ;
1211
                                        PAIR ;
1212
                                        SWAP ;
1213
                                        PAIR ;
1214
                                        PAIR ;
1215
                                        SWAP ;
1216
                                        PAIR ;
1217
                                        SWAP } } ;
1218
                             DROP ;
1219
                             NIL operation }
1220
                           { SWAP ;
1221
                             DUP ;
1222
                             DUG 2 ;
1223
                             CAR ;
1224
                             CAR ;
1225
                             CAR ;
1226
                             CAR ;
1227
                             SENDER ;
1228
                             COMPARE ;
1229
                             EQ ;
1230
                             IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
1231
                             DUP ;
1232
                             CDR ;
1233
                             CONTRACT unit ;
1234
                             IF_NONE { PUSH int 555 ; FAILWITH } {} ;
1235
                             NIL operation ;
1236
                             SWAP ;
1237
                             DIG 2 ;
1238
                             CAR ;
1239
                             UNIT ;
1240
                             TRANSFER_TOKENS ;
1241
                             CONS } } } } } ;
1242
         PAIR } ;
1243
  view "get_added_stats" nat (map string nat)
1244
        { UNPAIR ;
1245
          SWAP ;
1246
          DUP ;
1247
          DUG 2 ;
1248
          GET 9 ;
1249
          SWAP ;
1250
          DUP ;
1251
          DUG 2 ;
1252
          MEM ;
1253
          IF {} { PUSH string "CAN NOT FIND TROOPERZ" ; FAILWITH } ;
1254
          SWAP ;
1255
          GET 9 ;
1256
          SWAP ;
1257
          GET ;
1258
          IF_NONE { PUSH int 398 ; FAILWITH } {} ;
1259
          CAR ;
1260
          CAR } ;
1261
  view "get_balance_of" (list (pair (address %owner) (nat %token_id)))
1262
        (list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance)))
1263
        { UNPAIR ;
1264
          DUP ;
1265
          MAP { DUP 3 ;
1266
                GET 5 ;
1267
                CDR ;
1268
                SWAP ;
1269
                DUP ;
1270
                DUG 2 ;
1271
                CDR ;
1272
                MEM ;
1273
                IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
1274
                DUP ;
1275
                CAR ;
1276
                DUP 4 ;
1277
                CAR ;
1278
                GET 5 ;
1279
                DUP 3 ;
1280
                CDR ;
1281
                GET ;
1282
                IF_NONE { PUSH int 375 ; FAILWITH } {} ;
1283
                COMPARE ;
1284
                EQ ;
1285
                IF { PUSH nat 1 } { PUSH nat 0 } ;
1286
                SWAP ;
1287
                PAIR } ;
1288
          SWAP ;
1289
          DROP ;
1290
          SWAP ;
1291
          DROP } ;
1292
  view "get_energy" nat nat
1293
        { UNPAIR ;
1294
          SWAP ;
1295
          DUP ;
1296
          DUG 2 ;
1297
          CAR ;
1298
          CAR ;
1299
          GET 4 ;
1300
          SWAP ;
1301
          DUP ;
1302
          DUG 2 ;
1303
          MEM ;
1304
          IF {} { PUSH string "CAN NOT FIND TROOPERZ" ; FAILWITH } ;
1305
          SWAP ;
1306
          CAR ;
1307
          CAR ;
1308
          GET 4 ;
1309
          SWAP ;
1310
          GET ;
1311
          IF_NONE { PUSH int 393 ; FAILWITH } {} } ;
1312
  view "get_lvl" nat nat
1313
        { UNPAIR ;
1314
          SWAP ;
1315
          DUP ;
1316
          DUG 2 ;
1317
          GET 10 ;
1318
          SWAP ;
1319
          DUP ;
1320
          DUG 2 ;
1321
          MEM ;
1322
          IF {} { PUSH string "CAN NOT FIND TROOPERZ" ; FAILWITH } ;
1323
          PUSH nat 0 ;
1324
          DUP 3 ;
1325
          CAR ;
1326
          GET 7 ;
1327
          PUSH nat 1 ;
1328
          DUP 3 ;
1329
          ADD ;
1330
          MEM ;
1331
          IF
1332
            { DUP 3 ;
1333
              CAR ;
1334
              GET 7 ;
1335
              PUSH nat 1 ;
1336
              DUP 3 ;
1337
              ADD ;
1338
              GET ;
1339
              IF_NONE { PUSH int 410 ; FAILWITH } {} ;
1340
              DUP 4 ;
1341
              GET 10 ;
1342
              DUP 4 ;
1343
              GET ;
1344
              IF_NONE { PUSH int 410 ; FAILWITH } {} ;
1345
              COMPARE ;
1346
              GE }
1347
            { PUSH bool False } ;
1348
          LOOP { PUSH nat 1 ;
1349
                 ADD ;
1350
                 DUP 3 ;
1351
                 CAR ;
1352
                 GET 7 ;
1353
                 PUSH nat 1 ;
1354
                 DUP 3 ;
1355
                 ADD ;
1356
                 MEM ;
1357
                 IF
1358
                   { DUP 3 ;
1359
                     CAR ;
1360
                     GET 7 ;
1361
                     PUSH nat 1 ;
1362
                     DUP 3 ;
1363
                     ADD ;
1364
                     GET ;
1365
                     IF_NONE { PUSH int 410 ; FAILWITH } {} ;
1366
                     DUP 4 ;
1367
                     GET 10 ;
1368
                     DUP 4 ;
1369
                     GET ;
1370
                     IF_NONE { PUSH int 410 ; FAILWITH } {} ;
1371
                     COMPARE ;
1372
                     GE }
1373
                   { PUSH bool False } } ;
1374
          SWAP ;
1375
          DROP ;
1376
          SWAP ;
1377
          DROP } ;
1378
  view "get_trooperz_attributes" nat
1379
        (pair (pair (map %added_mutable_attributes string nat) (string %family))
1380
              (pair (bool %has_pet)
1381
                    (pair %mutable_attributes
1382
                      (pair (nat %close_combat) (nat %fire_arms))
1383
                      (pair (nat %hacking) (nat %trickery)))))
1384
        { UNPAIR ;
1385
          SWAP ;
1386
          DUP ;
1387
          DUG 2 ;
1388
          GET 9 ;
1389
          SWAP ;
1390
          DUP ;
1391
          DUG 2 ;
1392
          MEM ;
1393
          IF {} { PUSH string "CAN NOT FIND TROOPERZ" ; FAILWITH } ;
1394
          SWAP ;
1395
          GET 9 ;
1396
          SWAP ;
1397
          GET ;
1398
          IF_NONE { PUSH int 388 ; FAILWITH } {} } ;
1399
  view "get_xp" nat nat
1400
        { UNPAIR ;
1401
          SWAP ;
1402
          DUP ;
1403
          DUG 2 ;
1404
          GET 10 ;
1405
          SWAP ;
1406
          DUP ;
1407
          DUG 2 ;
1408
          MEM ;
1409
          IF {} { PUSH string "CAN NOT FIND TROOPERZ" ; FAILWITH } ;
1410
          SWAP ;
1411
          GET 10 ;
1412
          SWAP ;
1413
          GET ;
1414
          IF_NONE { PUSH int 403 ; FAILWITH } {} } ;
1415
  view "is_revealed" nat bool
1416
        { UNPAIR ;
1417
          SWAP ;
1418
          DUP ;
1419
          DUG 2 ;
1420
          GET 5 ;
1421
          CAR ;
1422
          SWAP ;
1423
          DUP ;
1424
          DUG 2 ;
1425
          MEM ;
1426
          IF
1427
            { SWAP ; GET 5 ; CAR ; SWAP ; GET ; IF_NONE { PUSH int 421 ; FAILWITH } {} }
1428
            { DROP 2 ; PUSH bool False } } }