BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • $HUX 4 ALL
FA2Ledger
operations (89)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
882
1014
 
1
parameter (or
2
            (or
3
              (or
4
                (pair %balance_of
5
                  (list %requests (pair (address %owner) (nat %token_id)))
6
                  (contract %callback (list (pair
7
                                            (pair %request (address %owner)
8
                                                           (nat %token_id))
9
                                            (nat %balance)))))
10
                (or
11
                  (list %burn (pair (nat %amount) (pair (address %from_) (nat %token_id))))
12
                  (pair %mint (address %address)
13
                              (pair (nat %amount)
14
                                    (pair (map %metadata string bytes) (nat %token_id))))))
15
              (or (pair %send_hug (address %address) (map %metadata string bytes))
16
                  (or (address %set_administrator)
17
                      (pair %set_metadata (string %k) (bytes %v)))))
18
            (or
19
              (or (unit %toggle_pause)
20
                  (or
21
                    (list %transfer (pair (address %from_)
22
                                         (list %txs (pair (address %to_)
23
                                                         (pair (nat %token_id)
24
                                                               (nat %amount))))))
25
                    (address %update_hux_address)))
26
              (or
27
                (or (nat %update_max_supply)
28
                    (list %update_operators (or
29
                                             (pair %add_operator (address %owner)
30
                                                                 (pair
31
                                                                   (address %operator)
32
                                                                   (nat %token_id)))
33
                                             (pair %remove_operator (address %owner)
34
                                                                    (pair
35
                                                                      (address %operator)
36
                                                                      (nat %token_id))))))
37
                (or (nat %update_price_of_a_hug)
38
                    (pair %update_token_metadata (map %metadata string bytes)
39
                                                 (nat %token_id))))));
40
storage (pair
41
          (pair (pair (address %administrator) (nat %all_tokens))
42
                (pair (address %hux_token_address)
43
                      (pair (big_map %ledger (pair address nat) nat) (nat %max_supply))))
44
          (pair
45
            (pair (big_map %metadata string bytes)
46
                  (pair
47
                    (big_map %operators
48
                      (pair (address %owner) (pair (address %operator) (nat %token_id)))
49
                      unit)
50
                    (bool %paused)))
51
            (pair (nat %price_of_a_hug)
52
                  (pair
53
                    (big_map %token_metadata nat
54
                                             (pair (nat %token_id)
55
                                                   (map %token_info string bytes)))
56
                    (big_map %total_supply nat nat)))));
57
code { CAST (pair
58
              (or
59
                (or
60
                  (or
61
                    (pair (list (pair address nat))
62
                          (contract (list (pair (pair address nat) nat))))
63
                    (or (list (pair nat (pair address nat)))
64
                        (pair address (pair nat (pair (map string bytes) nat)))))
65
                  (or (pair address (map string bytes)) (or address (pair string bytes))))
66
                (or
67
                  (or unit
68
                      (or (list (pair address (list (pair address (pair nat nat)))))
69
                          address))
70
                  (or
71
                    (or nat
72
                        (list (or (pair address (pair address nat))
73
                                 (pair address (pair address nat)))))
74
                    (or nat (pair (map string bytes) nat)))))
75
              (pair
76
                (pair (pair address nat)
77
                      (pair address (pair (big_map (pair address nat) nat) nat)))
78
                (pair
79
                  (pair (big_map string bytes)
80
                        (pair (big_map (pair address (pair address nat)) unit) bool))
81
                  (pair nat
82
                        (pair (big_map nat (pair nat (map string bytes)))
83
                              (big_map nat nat)))))) ;
84
       UNPAIR ;
85
       IF_LEFT
86
         { IF_LEFT
87
             { IF_LEFT
88
                 { SWAP ;
89
                   DUP ;
90
                   DUG 2 ;
91
                   GET 3 ;
92
                   GET 4 ;
93
                   IF { PUSH string "FA2_PAUSED" ; FAILWITH } {} ;
94
                   DUP ;
95
                   CAR ;
96
                   MAP { DUP 3 ;
97
                         GET 7 ;
98
                         SWAP ;
99
                         DUP ;
100
                         DUG 2 ;
101
                         CDR ;
102
                         MEM ;
103
                         IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
104
                         DUP 3 ;
105
                         CAR ;
106
                         GET 5 ;
107
                         SWAP ;
108
                         DUP ;
109
                         CDR ;
110
                         SWAP ;
111
                         DUP ;
112
                         DUG 3 ;
113
                         CAR ;
114
                         PAIR ;
115
                         MEM ;
116
                         IF
117
                           { DUP 3 ;
118
                             CAR ;
119
                             GET 5 ;
120
                             SWAP ;
121
                             DUP ;
122
                             CDR ;
123
                             SWAP ;
124
                             DUP ;
125
                             DUG 3 ;
126
                             CAR ;
127
                             PAIR ;
128
                             GET ;
129
                             IF_NONE { PUSH int 412 ; FAILWITH } {} ;
130
                             SWAP ;
131
                             PAIR }
132
                           { PUSH nat 0 ; SWAP ; PAIR } } ;
133
                   NIL operation ;
134
                   DIG 2 ;
135
                   CDR ;
136
                   PUSH mutez 0 ;
137
                   DIG 3 ;
138
                   TRANSFER_TOKENS ;
139
                   CONS }
140
                 { IF_LEFT
141
                     { SWAP ;
142
                       DUP ;
143
                       DUG 2 ;
144
                       GET 3 ;
145
                       GET 4 ;
146
                       IF { PUSH string "FA2_PAUSED" ; FAILWITH } {} ;
147
                       DUP ;
148
                       ITER { DUP 3 ;
149
                              GET 7 ;
150
                              SWAP ;
151
                              DUP ;
152
                              DUG 2 ;
153
                              GET 4 ;
154
                              MEM ;
155
                              IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
156
                              DUP ;
157
                              CAR ;
158
                              DUP 4 ;
159
                              CAR ;
160
                              GET 5 ;
161
                              DIG 2 ;
162
                              DUP ;
163
                              GET 4 ;
164
                              SWAP ;
165
                              DUP ;
166
                              DUG 4 ;
167
                              GET 3 ;
168
                              PAIR ;
169
                              GET ;
170
                              IF_NONE { PUSH int 178 ; FAILWITH } {} ;
171
                              COMPARE ;
172
                              GE ;
173
                              IF
174
                                {}
175
                                { PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH } ;
176
                              DUP 3 ;
177
                              UNPAIR ;
178
                              UNPAIR ;
179
                              SWAP ;
180
                              UNPAIR ;
181
                              SWAP ;
182
                              UNPAIR ;
183
                              DUP ;
184
                              DIG 6 ;
185
                              DUP ;
186
                              GET 4 ;
187
                              SWAP ;
188
                              DUP ;
189
                              DUG 8 ;
190
                              GET 3 ;
191
                              PAIR ;
192
                              DUP ;
193
                              DUG 2 ;
194
                              GET ;
195
                              IF_NONE { PUSH int 312 ; FAILWITH } { DROP } ;
196
                              DUP 7 ;
197
                              CAR ;
198
                              DIG 9 ;
199
                              CAR ;
200
                              GET 5 ;
201
                              DIG 8 ;
202
                              DUP ;
203
                              GET 4 ;
204
                              SWAP ;
205
                              DUP ;
206
                              DUG 10 ;
207
                              GET 3 ;
208
                              PAIR ;
209
                              GET ;
210
                              IF_NONE { PUSH int 313 ; FAILWITH } {} ;
211
                              SUB ;
212
                              ISNAT ;
213
                              IF_NONE { PUSH int 312 ; FAILWITH } {} ;
214
                              SOME ;
215
                              SWAP ;
216
                              UPDATE ;
217
                              PAIR ;
218
                              SWAP ;
219
                              PAIR ;
220
                              SWAP ;
221
                              PAIR ;
222
                              PAIR ;
223
                              DUP ;
224
                              DUG 3 ;
225
                              DUP ;
226
                              GET 8 ;
227
                              DUP 3 ;
228
                              CAR ;
229
                              DIG 5 ;
230
                              GET 8 ;
231
                              DUP 5 ;
232
                              GET 4 ;
233
                              GET ;
234
                              IF_NONE { PUSH int 316 ; FAILWITH } {} ;
235
                              SUB ;
236
                              ISNAT ;
237
                              IF_NONE { PUSH int 315 ; FAILWITH } {} ;
238
                              SOME ;
239
                              DUP 4 ;
240
                              GET 4 ;
241
                              UPDATE ;
242
                              UPDATE 8 ;
243
                              DUG 2 ;
244
                              PUSH nat 0 ;
245
                              DUP 4 ;
246
                              GET 8 ;
247
                              DUP 3 ;
248
                              GET 4 ;
249
                              GET ;
250
                              IF_NONE { PUSH int 318 ; FAILWITH } {} ;
251
                              COMPARE ;
252
                              EQ ;
253
                              IF
254
                                { DIG 2 ;
255
                                  DUP ;
256
                                  GET 8 ;
257
                                  NONE nat ;
258
                                  DUP 4 ;
259
                                  GET 4 ;
260
                                  UPDATE ;
261
                                  UPDATE 8 ;
262
                                  DUP ;
263
                                  GET 7 ;
264
                                  NONE (pair nat (map string bytes)) ;
265
                                  DUP 4 ;
266
                                  GET 4 ;
267
                                  UPDATE ;
268
                                  UPDATE 7 ;
269
                                  DUG 2 }
270
                                {} ;
271
                              PUSH nat 0 ;
272
                              DUP 4 ;
273
                              CAR ;
274
                              GET 5 ;
275
                              DIG 2 ;
276
                              DUP ;
277
                              GET 4 ;
278
                              SWAP ;
279
                              DUP ;
280
                              DUG 4 ;
281
                              GET 3 ;
282
                              PAIR ;
283
                              GET ;
284
                              IF_NONE { PUSH int 321 ; FAILWITH } {} ;
285
                              COMPARE ;
286
                              EQ ;
287
                              IF
288
                                { DIG 2 ;
289
                                  UNPAIR ;
290
                                  UNPAIR ;
291
                                  SWAP ;
292
                                  UNPAIR ;
293
                                  SWAP ;
294
                                  UNPAIR ;
295
                                  NONE nat ;
296
                                  DIG 6 ;
297
                                  DUP ;
298
                                  GET 4 ;
299
                                  SWAP ;
300
                                  GET 3 ;
301
                                  PAIR ;
302
                                  UPDATE ;
303
                                  PAIR ;
304
                                  SWAP ;
305
                                  PAIR ;
306
                                  SWAP ;
307
                                  PAIR ;
308
                                  PAIR ;
309
                                  SWAP }
310
                                { DROP } } ;
311
                       DROP }
312
                     { SWAP ;
313
                       DUP ;
314
                       DUG 2 ;
315
                       CAR ;
316
                       CAR ;
317
                       CAR ;
318
                       SENDER ;
319
                       COMPARE ;
320
                       EQ ;
321
                       IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
322
                       SWAP ;
323
                       DUP ;
324
                       DUG 2 ;
325
                       CAR ;
326
                       GET 5 ;
327
                       SWAP ;
328
                       DUP ;
329
                       GET 6 ;
330
                       SWAP ;
331
                       DUP ;
332
                       DUG 3 ;
333
                       CAR ;
334
                       PAIR ;
335
                       MEM ;
336
                       IF
337
                         { SWAP ;
338
                           UNPAIR ;
339
                           UNPAIR ;
340
                           SWAP ;
341
                           UNPAIR ;
342
                           SWAP ;
343
                           UNPAIR ;
344
                           DUP ;
345
                           DIG 6 ;
346
                           DUP ;
347
                           GET 6 ;
348
                           SWAP ;
349
                           DUP ;
350
                           DUG 8 ;
351
                           CAR ;
352
                           PAIR ;
353
                           DUP ;
354
                           DUG 2 ;
355
                           GET ;
356
                           IF_NONE { PUSH int 207 ; FAILWITH } {} ;
357
                           DUP 8 ;
358
                           GET 3 ;
359
                           ADD ;
360
                           SOME ;
361
                           SWAP ;
362
                           UPDATE ;
363
                           PAIR ;
364
                           SWAP ;
365
                           PAIR ;
366
                           SWAP ;
367
                           PAIR ;
368
                           PAIR ;
369
                           SWAP }
370
                         { SWAP ;
371
                           UNPAIR ;
372
                           UNPAIR ;
373
                           SWAP ;
374
                           UNPAIR ;
375
                           SWAP ;
376
                           UNPAIR ;
377
                           DUP 6 ;
378
                           GET 3 ;
379
                           SOME ;
380
                           DIG 6 ;
381
                           DUP ;
382
                           GET 6 ;
383
                           SWAP ;
384
                           DUP ;
385
                           DUG 8 ;
386
                           CAR ;
387
                           PAIR ;
388
                           UPDATE ;
389
                           PAIR ;
390
                           SWAP ;
391
                           PAIR ;
392
                           SWAP ;
393
                           PAIR ;
394
                           PAIR ;
395
                           SWAP } ;
396
                       SWAP ;
397
                       DUP ;
398
                       DUG 2 ;
399
                       CAR ;
400
                       CAR ;
401
                       CDR ;
402
                       SWAP ;
403
                       DUP ;
404
                       DUG 2 ;
405
                       GET 6 ;
406
                       COMPARE ;
407
                       LT ;
408
                       IF
409
                         { SWAP ;
410
                           DUP ;
411
                           GET 8 ;
412
                           DUP ;
413
                           DUP 4 ;
414
                           GET 6 ;
415
                           DUP ;
416
                           DUG 2 ;
417
                           GET ;
418
                           IF_NONE { PUSH int 214 ; FAILWITH } {} ;
419
                           DIG 4 ;
420
                           GET 3 ;
421
                           ADD ;
422
                           SOME ;
423
                           SWAP ;
424
                           UPDATE ;
425
                           UPDATE 8 }
426
                         { DUP ;
427
                           GET 6 ;
428
                           DUP 3 ;
429
                           CAR ;
430
                           CAR ;
431
                           CDR ;
432
                           COMPARE ;
433
                           EQ ;
434
                           IF
435
                             {}
436
                             { PUSH string "Token-IDs should be consecutive" ; FAILWITH } ;
437
                           SWAP ;
438
                           DUP ;
439
                           GET 8 ;
440
                           DUP 3 ;
441
                           GET 3 ;
442
                           SOME ;
443
                           DUP 4 ;
444
                           GET 6 ;
445
                           UPDATE ;
446
                           UPDATE 8 ;
447
                           DUP ;
448
                           GET 7 ;
449
                           DIG 2 ;
450
                           DUP ;
451
                           GET 5 ;
452
                           SWAP ;
453
                           DUP ;
454
                           DUG 4 ;
455
                           GET 6 ;
456
                           PAIR ;
457
                           SOME ;
458
                           DIG 3 ;
459
                           GET 6 ;
460
                           UPDATE ;
461
                           UPDATE 7 ;
462
                           UNPAIR ;
463
                           UNPAIR ;
464
                           UNPAIR ;
465
                           SWAP ;
466
                           PUSH nat 1 ;
467
                           ADD ;
468
                           SWAP ;
469
                           PAIR ;
470
                           PAIR ;
471
                           PAIR } } ;
472
                   NIL operation } }
473
             { IF_LEFT
474
                 { SWAP ;
475
                   DUP ;
476
                   CAR ;
477
                   GET 6 ;
478
                   SWAP ;
479
                   DUP ;
480
                   DUG 3 ;
481
                   CAR ;
482
                   CAR ;
483
                   CDR ;
484
                   COMPARE ;
485
                   LT ;
486
                   IF {} { PUSH string "HUG_MAX_SUPPLY_REACHED" ; FAILWITH } ;
487
                   NIL operation ;
488
                   DUP 3 ;
489
                   CAR ;
490
                   GET 3 ;
491
                   CONTRACT %transfer (list (pair (address %from_)
492
                                                 (list %txs (pair (address %to_)
493
                                                                 (pair (nat %token_id)
494
                                                                       (nat %amount)))))) ;
495
                   IF_NONE { PUSH string "Err: here" ; FAILWITH } {} ;
496
                   PUSH mutez 0 ;
497
                   NIL (pair address (list (pair address (pair nat nat)))) ;
498
                   NIL (pair address (pair nat nat)) ;
499
                   DUP 7 ;
500
                   GET 5 ;
501
                   PUSH nat 0 ;
502
                   DUP 8 ;
503
                   CAR ;
504
                   PAIR 3 ;
505
                   CONS ;
506
                   SENDER ;
507
                   PAIR ;
508
                   CONS ;
509
                   TRANSFER_TOKENS ;
510
                   CONS ;
511
                   DUP 3 ;
512
                   UNPAIR ;
513
                   UNPAIR ;
514
                   SWAP ;
515
                   UNPAIR ;
516
                   SWAP ;
517
                   UNPAIR ;
518
                   PUSH (option nat) (Some 1) ;
519
                   DIG 8 ;
520
                   CAR ;
521
                   CAR ;
522
                   CDR ;
523
                   DUP 9 ;
524
                   CAR ;
525
                   PAIR ;
526
                   UPDATE ;
527
                   PAIR ;
528
                   SWAP ;
529
                   PAIR ;
530
                   SWAP ;
531
                   PAIR ;
532
                   PAIR ;
533
                   DUP ;
534
                   DUG 3 ;
535
                   UNPAIR ;
536
                   UNPAIR ;
537
                   SWAP ;
538
                   UNPAIR ;
539
                   SWAP ;
540
                   UNPAIR ;
541
                   PUSH (option nat) (Some 1) ;
542
                   DIG 8 ;
543
                   CAR ;
544
                   CAR ;
545
                   CDR ;
546
                   SENDER ;
547
                   PAIR ;
548
                   UPDATE ;
549
                   PAIR ;
550
                   SWAP ;
551
                   PAIR ;
552
                   SWAP ;
553
                   PAIR ;
554
                   PAIR ;
555
                   DUP ;
556
                   DUG 3 ;
557
                   DUP ;
558
                   GET 8 ;
559
                   PUSH (option nat) (Some 2) ;
560
                   DIG 5 ;
561
                   CAR ;
562
                   CAR ;
563
                   CDR ;
564
                   UPDATE ;
565
                   UPDATE 8 ;
566
                   DUP ;
567
                   DUG 3 ;
568
                   DUP ;
569
                   GET 7 ;
570
                   DIG 3 ;
571
                   CDR ;
572
                   DUP 5 ;
573
                   CAR ;
574
                   CAR ;
575
                   CDR ;
576
                   PAIR ;
577
                   SOME ;
578
                   DIG 4 ;
579
                   CAR ;
580
                   CAR ;
581
                   CDR ;
582
                   UPDATE ;
583
                   UPDATE 7 ;
584
                   UNPAIR ;
585
                   UNPAIR ;
586
                   UNPAIR ;
587
                   SWAP ;
588
                   PUSH nat 1 ;
589
                   ADD ;
590
                   SWAP ;
591
                   PAIR ;
592
                   PAIR ;
593
                   PAIR ;
594
                   SWAP }
595
                 { IF_LEFT
596
                     { SWAP ;
597
                       DUP ;
598
                       DUG 2 ;
599
                       CAR ;
600
                       CAR ;
601
                       CAR ;
602
                       SENDER ;
603
                       COMPARE ;
604
                       EQ ;
605
                       IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
606
                       SWAP ;
607
                       UNPAIR ;
608
                       UNPAIR ;
609
                       CDR ;
610
                       DIG 3 ;
611
                       PAIR ;
612
                       PAIR ;
613
                       PAIR }
614
                     { SWAP ;
615
                       DUP ;
616
                       DUG 2 ;
617
                       CAR ;
618
                       CAR ;
619
                       CAR ;
620
                       SENDER ;
621
                       COMPARE ;
622
                       EQ ;
623
                       IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
624
                       SWAP ;
625
                       UNPAIR ;
626
                       SWAP ;
627
                       UNPAIR ;
628
                       UNPAIR ;
629
                       DUP 5 ;
630
                       CDR ;
631
                       SOME ;
632
                       DIG 5 ;
633
                       CAR ;
634
                       UPDATE ;
635
                       PAIR ;
636
                       PAIR ;
637
                       SWAP ;
638
                       PAIR } ;
639
                   NIL operation } } }
640
         { IF_LEFT
641
             { IF_LEFT
642
                 { DROP ;
643
                   DUP ;
644
                   CAR ;
645
                   CAR ;
646
                   CAR ;
647
                   SENDER ;
648
                   COMPARE ;
649
                   EQ ;
650
                   IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
651
                   DUP ;
652
                   UNPAIR ;
653
                   SWAP ;
654
                   UNPAIR ;
655
                   UNPAIR ;
656
                   SWAP ;
657
                   CAR ;
658
                   DIG 4 ;
659
                   GET 3 ;
660
                   GET 4 ;
661
                   NOT ;
662
                   SWAP ;
663
                   PAIR ;
664
                   SWAP ;
665
                   PAIR ;
666
                   PAIR ;
667
                   SWAP ;
668
                   PAIR }
669
                 { IF_LEFT
670
                     { SWAP ;
671
                       DUP ;
672
                       DUG 2 ;
673
                       GET 3 ;
674
                       GET 4 ;
675
                       IF { PUSH string "FA2_PAUSED" ; FAILWITH } {} ;
676
                       DUP ;
677
                       ITER { DUP ;
678
                              CDR ;
679
                              ITER { DUP 4 ;
680
                                     CAR ;
681
                                     CAR ;
682
                                     CAR ;
683
                                     SENDER ;
684
                                     COMPARE ;
685
                                     EQ ;
686
                                     IF
687
                                       { PUSH bool True }
688
                                       { SWAP ; DUP ; DUG 2 ; CAR ; SENDER ; COMPARE ; EQ } ;
689
                                     IF
690
                                       { PUSH bool True }
691
                                       { DUP 4 ;
692
                                         GET 3 ;
693
                                         GET 3 ;
694
                                         SWAP ;
695
                                         DUP ;
696
                                         DUG 2 ;
697
                                         GET 3 ;
698
                                         SENDER ;
699
                                         DUP 5 ;
700
                                         CAR ;
701
                                         PAIR 3 ;
702
                                         MEM } ;
703
                                     IF
704
                                       {}
705
                                       { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ;
706
                                     DUP 4 ;
707
                                     GET 7 ;
708
                                     SWAP ;
709
                                     DUP ;
710
                                     DUG 2 ;
711
                                     GET 3 ;
712
                                     MEM ;
713
                                     IF
714
                                       {}
715
                                       { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
716
                                     DUP ;
717
                                     GET 4 ;
718
                                     PUSH nat 0 ;
719
                                     COMPARE ;
720
                                     LT ;
721
                                     IF
722
                                       { DUP ;
723
                                         GET 4 ;
724
                                         DUP 5 ;
725
                                         CAR ;
726
                                         GET 5 ;
727
                                         DUP 3 ;
728
                                         GET 3 ;
729
                                         DUP 5 ;
730
                                         CAR ;
731
                                         PAIR ;
732
                                         GET ;
733
                                         IF_NONE { PUSH int 178 ; FAILWITH } {} ;
734
                                         COMPARE ;
735
                                         GE ;
736
                                         IF
737
                                           {}
738
                                           { PUSH string "FA2_INSUFFICIENT_BALANCE" ;
739
                                             FAILWITH } ;
740
                                         DUP 4 ;
741
                                         UNPAIR ;
742
                                         UNPAIR ;
743
                                         SWAP ;
744
                                         UNPAIR ;
745
                                         SWAP ;
746
                                         UNPAIR ;
747
                                         DUP ;
748
                                         DUP 7 ;
749
                                         GET 3 ;
750
                                         DUP 9 ;
751
                                         CAR ;
752
                                         PAIR ;
753
                                         DUP ;
754
                                         DUG 2 ;
755
                                         GET ;
756
                                         IF_NONE { PUSH int 363 ; FAILWITH } { DROP } ;
757
                                         DUP 7 ;
758
                                         GET 4 ;
759
                                         DIG 10 ;
760
                                         CAR ;
761
                                         GET 5 ;
762
                                         DUP 9 ;
763
                                         GET 3 ;
764
                                         DUP 11 ;
765
                                         CAR ;
766
                                         PAIR ;
767
                                         GET ;
768
                                         IF_NONE { PUSH int 364 ; FAILWITH } {} ;
769
                                         SUB ;
770
                                         ISNAT ;
771
                                         IF_NONE { PUSH int 363 ; FAILWITH } {} ;
772
                                         SOME ;
773
                                         SWAP ;
774
                                         UPDATE ;
775
                                         PAIR ;
776
                                         SWAP ;
777
                                         PAIR ;
778
                                         SWAP ;
779
                                         PAIR ;
780
                                         PAIR ;
781
                                         DUP ;
782
                                         DUG 4 ;
783
                                         CAR ;
784
                                         GET 5 ;
785
                                         SWAP ;
786
                                         DUP ;
787
                                         GET 3 ;
788
                                         SWAP ;
789
                                         DUP ;
790
                                         DUG 3 ;
791
                                         CAR ;
792
                                         PAIR ;
793
                                         MEM ;
794
                                         IF
795
                                           { DIG 3 ;
796
                                             UNPAIR ;
797
                                             UNPAIR ;
798
                                             SWAP ;
799
                                             UNPAIR ;
800
                                             SWAP ;
801
                                             UNPAIR ;
802
                                             DUP ;
803
                                             DIG 6 ;
804
                                             DUP ;
805
                                             GET 3 ;
806
                                             SWAP ;
807
                                             DUP ;
808
                                             DUG 8 ;
809
                                             CAR ;
810
                                             PAIR ;
811
                                             DUP ;
812
                                             DUG 2 ;
813
                                             GET ;
814
                                             IF_NONE { PUSH int 371 ; FAILWITH } {} ;
815
                                             DIG 7 ;
816
                                             GET 4 ;
817
                                             ADD ;
818
                                             SOME ;
819
                                             SWAP ;
820
                                             UPDATE ;
821
                                             PAIR ;
822
                                             SWAP ;
823
                                             PAIR ;
824
                                             SWAP ;
825
                                             PAIR ;
826
                                             PAIR ;
827
                                             DUG 2 }
828
                                           { DIG 3 ;
829
                                             UNPAIR ;
830
                                             UNPAIR ;
831
                                             SWAP ;
832
                                             UNPAIR ;
833
                                             SWAP ;
834
                                             UNPAIR ;
835
                                             DUP 6 ;
836
                                             GET 4 ;
837
                                             SOME ;
838
                                             DIG 6 ;
839
                                             DUP ;
840
                                             GET 3 ;
841
                                             SWAP ;
842
                                             CAR ;
843
                                             PAIR ;
844
                                             UPDATE ;
845
                                             PAIR ;
846
                                             SWAP ;
847
                                             PAIR ;
848
                                             SWAP ;
849
                                             PAIR ;
850
                                             PAIR ;
851
                                             DUG 2 } }
852
                                       { DROP } } ;
853
                              DROP } ;
854
                       DROP }
855
                     { SWAP ;
856
                       DUP ;
857
                       DUG 2 ;
858
                       CAR ;
859
                       CAR ;
860
                       CAR ;
861
                       SENDER ;
862
                       COMPARE ;
863
                       EQ ;
864
                       IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
865
                       SWAP ;
866
                       UNPAIR ;
867
                       UNPAIR ;
868
                       SWAP ;
869
                       CDR ;
870
                       DIG 3 ;
871
                       PAIR ;
872
                       SWAP ;
873
                       PAIR ;
874
                       PAIR } } }
875
             { IF_LEFT
876
                 { IF_LEFT
877
                     { SWAP ;
878
                       DUP ;
879
                       DUG 2 ;
880
                       CAR ;
881
                       CAR ;
882
                       CAR ;
883
                       SENDER ;
884
                       COMPARE ;
885
                       EQ ;
886
                       IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
887
                       SWAP ;
888
                       UNPAIR ;
889
                       UNPAIR ;
890
                       SWAP ;
891
                       UNPAIR ;
892
                       SWAP ;
893
                       CAR ;
894
                       DIG 4 ;
895
                       SWAP ;
896
                       PAIR ;
897
                       SWAP ;
898
                       PAIR ;
899
                       SWAP ;
900
                       PAIR ;
901
                       PAIR }
902
                     { DUP ;
903
                       ITER { IF_LEFT
904
                                { DUP 3 ;
905
                                  CAR ;
906
                                  CAR ;
907
                                  CAR ;
908
                                  SENDER ;
909
                                  COMPARE ;
910
                                  EQ ;
911
                                  IF
912
                                    { PUSH bool True }
913
                                    { DUP ; CAR ; SENDER ; COMPARE ; EQ } ;
914
                                  IF
915
                                    {}
916
                                    { PUSH string "FA2_NOT_ADMIN_OR_OPERATOR" ; FAILWITH } ;
917
                                  DIG 2 ;
918
                                  UNPAIR ;
919
                                  SWAP ;
920
                                  UNPAIR ;
921
                                  UNPAIR ;
922
                                  SWAP ;
923
                                  UNPAIR ;
924
                                  PUSH (option unit) (Some Unit) ;
925
                                  DIG 6 ;
926
                                  UPDATE ;
927
                                  PAIR ;
928
                                  SWAP ;
929
                                  PAIR ;
930
                                  PAIR ;
931
                                  SWAP ;
932
                                  PAIR ;
933
                                  SWAP }
934
                                { DUP 3 ;
935
                                  CAR ;
936
                                  CAR ;
937
                                  CAR ;
938
                                  SENDER ;
939
                                  COMPARE ;
940
                                  EQ ;
941
                                  IF
942
                                    { PUSH bool True }
943
                                    { DUP ; CAR ; SENDER ; COMPARE ; EQ } ;
944
                                  IF
945
                                    {}
946
                                    { PUSH string "FA2_NOT_ADMIN_OR_OPERATOR" ; FAILWITH } ;
947
                                  DIG 2 ;
948
                                  UNPAIR ;
949
                                  SWAP ;
950
                                  UNPAIR ;
951
                                  UNPAIR ;
952
                                  SWAP ;
953
                                  UNPAIR ;
954
                                  NONE unit ;
955
                                  DIG 6 ;
956
                                  UPDATE ;
957
                                  PAIR ;
958
                                  SWAP ;
959
                                  PAIR ;
960
                                  PAIR ;
961
                                  SWAP ;
962
                                  PAIR ;
963
                                  SWAP } } ;
964
                       DROP } }
965
                 { IF_LEFT
966
                     { SWAP ;
967
                       DUP ;
968
                       DUG 2 ;
969
                       CAR ;
970
                       CAR ;
971
                       CAR ;
972
                       SENDER ;
973
                       COMPARE ;
974
                       EQ ;
975
                       IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
976
                       UPDATE 5 }
977
                     { SWAP ;
978
                       DUP ;
979
                       DUG 2 ;
980
                       CAR ;
981
                       CAR ;
982
                       CAR ;
983
                       SENDER ;
984
                       COMPARE ;
985
                       EQ ;
986
                       IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
987
                       SWAP ;
988
                       DUP ;
989
                       DUG 2 ;
990
                       GET 7 ;
991
                       SWAP ;
992
                       DUP ;
993
                       DUG 2 ;
994
                       CDR ;
995
                       MEM ;
996
                       IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
997
                       SWAP ;
998
                       DUP ;
999
                       GET 7 ;
1000
                       DIG 2 ;
1001
                       DUP ;
1002
                       CAR ;
1003
                       SWAP ;
1004
                       DUP ;
1005
                       DUG 4 ;
1006
                       CDR ;
1007
                       PAIR ;
1008
                       SOME ;
1009
                       DIG 3 ;
1010
                       CDR ;
1011
                       UPDATE ;
1012
                       UPDATE 7 } } } ;
1013
           NIL operation } ;
1014
       PAIR }