BCD

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