x
849
parameter (or
(or
(or
(or
(or
(pair %balance_of
(list %requests (pair (address %owner) (nat %token_id)))
(contract %callback (list (pair
(pair %request (address %owner)
(nat %token_id))
(nat %balance)))))
(address %declare_ownership))
(or (unit %claim_ownership) (address %set_permits)))
(or (or (address %add_coowner) (address %remove_coowner))
(or (address %set_minter) (unit %set_mint_completed))))
(or
(or (or (unit %pause) (unit %unpause))
(or (pair %set_metadata (string %k) (option %d bytes))
(pair %set_token_metadata (nat %tid) (map %tdata string bytes))))
(or
(or
(list %set_token_metadatas (pair (nat %stmp_tid)
(map %stmp_tdata string bytes)))
(list %update_operators (or
(pair %add_operator (address %owner)
(pair
(address %operator)
(nat %token_id)))
(pair %remove_operator (address %owner)
(pair
(address %operator)
(nat %token_id))))))
(or (string %set_token_metadata_path) (list %drop nat)))))
(or
(or
(or
(list %do_transfer (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id)
(nat %amount))))))
(list %transfer (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id)
(nat %amount)))))))
(or
(list %transfer_gasless (pair
(list %transfer_params (pair (address %from_)
(list %txs (pair
(address %to_)
(pair
(nat %token_id)
(nat %amount))))))
(key %user_pk)
(signature %user_sig)))
(nat %burn)))
(pair %burn_gasless (list %bg_token_id nat) (key %bg_user_pk)
(signature %bg_user_sig))));
storage (pair (address %owner) (address %minter) (address %permits)
(string %token_metadata_path)
(bool %mint_completed)
(big_map %coowners address unit)
(option %owner_candidate address)
(bool %paused)
(big_map %token_metadata nat
(pair (nat %token_id)
(map %token_info string bytes)))
(big_map %ledger nat address)
(set %operator (pair address nat address))
(big_map %operator_for_all (pair address address) unit)
(big_map %metadata string bytes));
code { LAMBDA
nat
string
{ PUSH unit Unit ;
DUP 2 ;
PUSH string "" ;
EMPTY_MAP nat string ;
PUSH string "9" ;
SOME ;
PUSH nat 9 ;
UPDATE ;
PUSH string "8" ;
SOME ;
PUSH nat 8 ;
UPDATE ;
PUSH string "7" ;
SOME ;
PUSH nat 7 ;
UPDATE ;
PUSH string "6" ;
SOME ;
PUSH nat 6 ;
UPDATE ;
PUSH string "5" ;
SOME ;
PUSH nat 5 ;
UPDATE ;
PUSH string "4" ;
SOME ;
PUSH nat 4 ;
UPDATE ;
PUSH string "3" ;
SOME ;
PUSH nat 3 ;
UPDATE ;
PUSH string "2" ;
SOME ;
PUSH nat 2 ;
UPDATE ;
PUSH string "1" ;
SOME ;
PUSH nat 1 ;
UPDATE ;
PUSH string "0" ;
SOME ;
PUSH nat 0 ;
UPDATE ;
PUSH nat 0 ;
DUP 4 ;
COMPARE ;
GT ;
LOOP { DUP 2 ;
DUP 2 ;
PUSH nat 10 ;
DUP 6 ;
EDIV ;
IF_NONE
{ PUSH string "DIV_BY_ZERO" ; FAILWITH }
{ DUP ; CDR ; SWAP ; DROP 1 } ;
GET ;
IF_NONE { PUSH string "NOT_FOUND" ; FAILWITH } {} ;
CONCAT ;
DIP 1 { SWAP ; DROP 1 } ;
SWAP ;
PUSH nat 10 ;
DUP 4 ;
EDIV ;
IF_NONE
{ PUSH string "DIV_BY_ZERO" ; FAILWITH }
{ DUP ; CAR ; SWAP ; DROP 1 } ;
DIP 1 { DIG 2 ; DROP 1 } ;
DUG 2 ;
PUSH nat 0 ;
DUP 4 ;
COMPARE ;
GT } ;
DUP 5 ;
PUSH nat 0 ;
COMPARE ;
EQ ;
IF { PUSH string "0" } { DUP 2 } ;
DIP 1 { DIG 3 ; DROP 1 } ;
DUG 3 ;
DROP 3 ;
SWAP ;
DROP 1 } ;
LAMBDA
string
bytes
{ PUSH unit Unit ;
DUP 2 ;
PACK ;
PUSH int 6 ;
DUP 2 ;
SIZE ;
INT ;
SUB ;
ABS ;
DUP 2 ;
DUP 2 ;
PUSH nat 6 ;
SLICE ;
IF_NONE { PUSH string "ERROR_SLICE" ; FAILWITH } {} ;
DUP ;
DIP 1 { DIG 3 ; DROP 1 } ;
DUG 3 ;
DROP 3 ;
SWAP ;
DROP 1 } ;
LAMBDA
(pair (big_map (pair address address) unit) (set (pair address nat address))
(list (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id) (nat %amount)))))))
bool
{ UNPAIR 3 ;
PUSH unit Unit ;
PUSH bool True ;
DUP 5 ;
ITER { DUP ;
GET 1 ;
DUP 2 ;
GET 2 ;
DUP ;
ITER { DUP 5 ;
IF
{ DUP 3 ;
SENDER ;
COMPARE ;
NEQ ;
IF
{ DUP 8 ;
DUP 4 ;
DUP 3 ;
GET 2 ;
GET 1 ;
PAIR ;
SENDER ;
PAIR ;
MEM ;
IF
{ PUSH bool True }
{ DUP 7 ;
DUP 4 ;
SENDER ;
PAIR ;
MEM ;
IF { PUSH bool True } { PUSH bool False } } }
{ PUSH bool True } ;
IF { PUSH bool True } { PUSH bool False } }
{ PUSH bool False } ;
DIP 1 { DIG 4 ; DROP 1 } ;
DUG 4 ;
DROP 1 } ;
DROP 3 } ;
DUP ;
DIP 1 { SWAP ; DROP 1 } ;
SWAP ;
DROP 1 ;
DUG 3 ;
DROP 3 } ;
LAMBDA
(pair address
(list (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id) (nat %amount)))))))
bool
{ UNPAIR ;
PUSH unit Unit ;
PUSH bool True ;
DUP 4 ;
ITER { DUP 2 ;
IF
{ DUP ; GET 1 ; DUP 5 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } }
{ PUSH bool False } ;
DIP 1 { SWAP ; DROP 1 } ;
SWAP ;
DROP 1 } ;
DUP ;
DIP 1 { SWAP ; DROP 1 } ;
SWAP ;
DROP 1 ;
DUG 2 ;
DROP 2 } ;
NIL operation ;
DIG 5 ;
UNPAIR ;
DIP 1 { UNPAIR 13 } ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ UNPAIR ;
NIL operation ;
NIL operation ;
DUP 18 ;
ITER { CONS } ;
DUP 4 ;
AMOUNT ;
DUP 5 ;
MAP { DUP 17 ;
DUP 2 ;
GET 2 ;
GET ;
IF_NONE
{ PUSH nat 0 }
{ DUP 2 ;
GET 1 ;
DUP 2 ;
COMPARE ;
EQ ;
IF { PUSH nat 1 } { PUSH nat 0 } ;
SWAP ;
DROP 1 } ;
DUP 2 ;
PAIR ;
SWAP ;
DROP 1 } ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 15 ; DROP 1 } ;
DUG 15 ;
DROP 2 ;
PAIR 13 ;
SWAP ;
PAIR }
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ DUP 7 ;
SENDER ;
MEM ;
IF { PUSH bool True } { PUSH bool False } } ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP ;
SOME ;
DIP 1 { DIG 7 ; DROP 1 } ;
DUG 7 ;
DROP 1 ;
PAIR 13 ;
SWAP ;
PAIR } }
{ IF_LEFT
{ DROP 1 ;
DUP 7 ;
IF_NONE
{ PUSH bool False }
{ SENDER ; DUP 2 ; COMPARE ; EQ ; SWAP ; DROP 1 } ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
SENDER ;
SWAP ;
DROP 1 ;
NONE address ;
DIP 1 { DIG 6 ; DROP 1 } ;
DUG 6 ;
PAIR 13 ;
SWAP ;
PAIR }
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP ;
DIP 1 { DIG 3 ; DROP 1 } ;
DUG 3 ;
DROP 1 ;
PAIR 13 ;
SWAP ;
PAIR } } }
{ IF_LEFT
{ IF_LEFT
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP 9 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
DUP 7 ;
DUP 2 ;
MEM ;
IF
{ PUSH string "coowners" ;
PUSH string "KEY_EXISTS" ;
PAIR ;
FAILWITH }
{ DUP 7 ;
PUSH unit Unit ;
SOME ;
DUP 3 ;
UPDATE ;
DIP 1 { DIG 6 ; DROP 1 } ;
DUG 6 } ;
DROP 1 ;
PAIR 13 ;
SWAP ;
PAIR }
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP 9 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
DUP 7 ;
NONE unit ;
DUP 3 ;
UPDATE ;
DIP 1 { DIG 6 ; DROP 1 } ;
DUG 6 ;
DROP 1 ;
PAIR 13 ;
SWAP ;
PAIR } }
{ IF_LEFT
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP ;
DIP 1 { DIG 2 ; DROP 1 } ;
DUG 2 ;
DROP 1 ;
PAIR 13 ;
SWAP ;
PAIR }
{ DROP 1 ;
DUP ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
PUSH bool True ;
DIP 1 { DIG 4 ; DROP 1 } ;
DUG 4 ;
PAIR 13 ;
SWAP ;
PAIR } } } }
{ IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ DROP 1 ;
DUP ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP 8 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
PUSH bool True ;
DIP 1 { DIG 7 ; DROP 1 } ;
DUG 7 ;
PAIR 13 ;
SWAP ;
PAIR }
{ DROP 1 ;
DUP ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP 8 ;
NOT ;
IF { PUSH string "CONTRACT_NOT_PAUSED" ; FAILWITH } {} ;
PUSH bool False ;
DIP 1 { DIG 7 ; DROP 1 } ;
DUG 7 ;
PAIR 13 ;
SWAP ;
PAIR } }
{ IF_LEFT
{ UNPAIR ;
SWAP ;
DUP 3 ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP 10 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
DUP 15 ;
DUP 2 ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 14 ; DROP 1 } ;
DUG 14 ;
DROP 2 ;
PAIR 13 ;
SWAP ;
PAIR }
{ UNPAIR ;
SWAP ;
DUP 3 ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ DUP 4 ;
SENDER ;
COMPARE ;
EQ ;
IF { PUSH bool True } { PUSH bool False } } ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP 10 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
DUP 11 ;
DUP 12 ;
DUP 4 ;
GET ;
IF_NONE
{ PUSH string "token_metadata" ;
PUSH string "ASSET_NOT_FOUND" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
DUP 4 ;
SWAP ;
DROP 1 ;
DUP 3 ;
SWAP ;
PAIR ;
SOME ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 10 ; DROP 1 } ;
DUG 10 ;
DROP 2 ;
PAIR 13 ;
SWAP ;
PAIR } } }
{ IF_LEFT
{ IF_LEFT
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ DUP 3 ;
SENDER ;
COMPARE ;
EQ ;
IF { PUSH bool True } { PUSH bool False } } ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP 9 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
DUP ;
ITER { DUP 11 ;
DUP 12 ;
DUP 3 ;
GET 1 ;
GET ;
IF_NONE
{ PUSH string "token_metadata" ;
PUSH string "ASSET_NOT_FOUND" ;
PAIR ;
FAILWITH }
{} ;
CDR ;
DUP 3 ;
GET 1 ;
SWAP ;
DROP 1 ;
DUP 3 ;
GET 2 ;
SWAP ;
PAIR ;
SOME ;
DUP 3 ;
GET 1 ;
UPDATE ;
DIP 1 { DIG 10 ; DROP 1 } ;
DUG 10 ;
DROP 1 } ;
DROP 1 ;
PAIR 13 ;
SWAP ;
PAIR }
{ DUP 9 ;
IF
{ PUSH string "fa2_r1" ;
PUSH string "INVALID_CONDITION" ;
PAIR ;
FAILWITH }
{} ;
DUP ;
ITER { DUP ;
IF_LEFT
{ SENDER ;
DUP 2 ;
GET 1 ;
GET 0 ;
COMPARE ;
EQ ;
NOT ;
IF
{ PUSH string "CALLER_NOT_OWNER" ; FAILWITH }
{} ;
DUP 14 ;
PUSH bool True ;
DUP 3 ;
GET 1 ;
GET 0 ;
DUP 4 ;
GET 2 ;
GET 2 ;
PAIR ;
DUP 4 ;
GET 2 ;
GET 1 ;
PAIR ;
UPDATE ;
DIP 1 { DIG 13 ; DROP 1 } ;
DUG 13 ;
DROP 1 }
{ SENDER ;
DUP 2 ;
GET 1 ;
GET 0 ;
COMPARE ;
EQ ;
NOT ;
IF
{ PUSH string "CALLER_NOT_OWNER" ; FAILWITH }
{} ;
DUP 14 ;
PUSH bool False ;
DUP 3 ;
GET 1 ;
GET 0 ;
DUP 4 ;
GET 2 ;
GET 2 ;
PAIR ;
DUP 4 ;
GET 2 ;
GET 1 ;
PAIR ;
UPDATE ;
DIP 1 { DIG 13 ; DROP 1 } ;
DUG 13 ;
DROP 1 } ;
DROP 1 } ;
DROP 1 ;
PAIR 13 ;
SWAP ;
PAIR } }
{ IF_LEFT
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ DUP 3 ;
SENDER ;
COMPARE ;
EQ ;
IF { PUSH bool True } { PUSH bool False } } ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP 9 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
DUP ;
DIP 1 { DIG 4 ; DROP 1 } ;
DUG 4 ;
DROP 1 ;
PAIR 13 ;
SWAP ;
PAIR }
{ DUP 3 ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ DUP 2 ;
SENDER ;
COMPARE ;
EQ ;
IF { PUSH bool True } { PUSH bool False } } ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP 6 ;
IF { PUSH string "MINT_COMPLETED" ; FAILWITH } {} ;
DUP 9 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
DUP ;
ITER { DUP 12 ;
DUP 2 ;
MEM ;
IF
{ PUSH string "ledger" ;
PUSH string "KEY_EXISTS" ;
PAIR ;
FAILWITH }
{ DUP 12 ;
DUP 5 ;
SOME ;
DUP 3 ;
UPDATE ;
DIP 1 { DIG 11 ; DROP 1 } ;
DUG 11 } ;
PUSH string ".json" ;
DUP 21 ;
DUP 3 ;
EXEC ;
DUP 8 ;
CONCAT ;
CONCAT ;
EMPTY_MAP string bytes ;
DUP 21 ;
DUP 3 ;
EXEC ;
SOME ;
PUSH string "" ;
UPDATE ;
DUP 13 ;
DUP 4 ;
MEM ;
IF
{ PUSH string "token_metadata" ;
PUSH string "KEY_EXISTS" ;
PAIR ;
FAILWITH }
{ DUP 13 ;
DUP 2 ;
DUP 5 ;
PAIR ;
SOME ;
DUP 5 ;
UPDATE ;
DIP 1 { DIG 12 ; DROP 1 } ;
DUG 12 } ;
DROP 3 } ;
DROP 1 ;
PAIR 13 ;
SWAP ;
PAIR } } } } }
{ IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ SELF_ADDRESS ;
SENDER ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
DUP ;
ITER { DUP ;
GET 1 ;
DUP 2 ;
GET 2 ;
DUP ;
ITER { DUP ;
GET 2 ;
GET 1 ;
DUP 16 ;
DUP 2 ;
GET ;
IF_NONE
{ NONE address }
{ DUP ; SOME ; SWAP ; DROP 1 } ;
IF_NONE
{ PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH }
{} ;
DUP 5 ;
DUP 2 ;
COMPARE ;
EQ ;
IF
{ PUSH nat 1 ;
DUP 4 ;
GET 2 ;
GET 2 ;
COMPARE ;
EQ ;
IF { PUSH bool True } { PUSH bool False } }
{ PUSH bool False } ;
NOT ;
IF
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ;
FAILWITH }
{} ;
DUP 17 ;
DUP 4 ;
GET 1 ;
GET 0 ;
SOME ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 16 ; DROP 1 } ;
DUG 16 ;
DROP 3 } ;
DROP 3 } ;
DROP 1 ;
PAIR 13 ;
SWAP ;
PAIR }
{ DUP 9 ;
IF
{ PUSH string "fa2_r4" ;
PUSH string "INVALID_CONDITION" ;
PAIR ;
FAILWITH }
{} ;
DUP 17 ;
DUP 2 ;
DUP 14 ;
PAIR ;
DUP 15 ;
PAIR ;
EXEC ;
NOT ;
IF { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } {} ;
NIL operation ;
NIL operation ;
DUP 17 ;
ITER { CONS } ;
SELF_ADDRESS ;
CONTRACT %do_transfer (list (pair address
(list (pair address
(pair nat nat))))) ;
IF_NONE
{ PUSH string "do_transfer" ;
PUSH string "ENTRY_NOT_FOUND" ;
PAIR ;
FAILWITH }
{} ;
PUSH mutez 0 ;
DUP 5 ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 14 ; DROP 1 } ;
DUG 14 ;
DROP 1 ;
PAIR 13 ;
SWAP ;
PAIR } }
{ IF_LEFT
{ DUP 9 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
DUP ;
ITER { DUP ;
GET 1 ;
DUP 2 ;
GET 3 ;
DUP 3 ;
GET 4 ;
DUP 2 ;
HASH_KEY ;
IMPLICIT_ACCOUNT ;
ADDRESS ;
DUP 21 ;
DUP 5 ;
DUP 3 ;
PAIR ;
EXEC ;
NOT ;
IF { PUSH string "SIGNER_NOT_FROM" ; FAILWITH } {} ;
NIL operation ;
NIL operation ;
DUP 22 ;
ITER { CONS } ;
DUP 11 ;
CONTRACT %check (pair key signature bytes) ;
IF_NONE
{ PUSH string "check" ;
PUSH string "ENTRY_NOT_FOUND" ;
PAIR ;
FAILWITH }
{} ;
PUSH mutez 0 ;
DUP 8 ;
PACK ;
DUP 7 ;
PAIR ;
DUP 8 ;
PAIR ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 19 ; DROP 1 } ;
DUG 19 ;
NIL operation ;
NIL operation ;
DUP 22 ;
ITER { CONS } ;
SELF_ADDRESS ;
CONTRACT %do_transfer (list (pair address
(list (pair address
(pair nat nat))))) ;
IF_NONE
{ PUSH string "do_transfer" ;
PUSH string "ENTRY_NOT_FOUND" ;
PAIR ;
FAILWITH }
{} ;
PUSH mutez 0 ;
DUP 8 ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 19 ; DROP 1 } ;
DUG 19 ;
DROP 5 } ;
DROP 1 ;
PAIR 13 ;
SWAP ;
PAIR }
{ DUP 11 ;
DUP 2 ;
GET ;
IF_NONE { NONE address } { DUP ; SOME ; SWAP ; DROP 1 } ;
IF_NONE { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } {} ;
SENDER ;
DUP 2 ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "CALLER_NOT_OWNER" ; FAILWITH } {} ;
DUP 10 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
DUP 12 ;
NONE address ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 11 ; DROP 1 } ;
DUG 11 ;
DUP 11 ;
NONE (pair nat (map string bytes)) ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 10 ; DROP 1 } ;
DUG 10 ;
DROP 2 ;
PAIR 13 ;
SWAP ;
PAIR } } }
{ DUP 9 ;
IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
DUP ;
GET 1 ;
DUP 2 ;
GET 3 ;
DUP 3 ;
GET 4 ;
DUP 2 ;
HASH_KEY ;
IMPLICIT_ACCOUNT ;
ADDRESS ;
NIL operation ;
NIL operation ;
DUP 21 ;
ITER { CONS } ;
DUP 10 ;
CONTRACT %check (pair key signature bytes) ;
IF_NONE
{ PUSH string "check" ; PUSH string "ENTRY_NOT_FOUND" ; PAIR ; FAILWITH }
{} ;
PUSH mutez 0 ;
DUP 8 ;
PACK ;
DUP 7 ;
PAIR ;
DUP 8 ;
PAIR ;
TRANSFER_TOKENS ;
CONS ;
ITER { CONS } ;
DIP 1 { DIG 18 ; DROP 1 } ;
DUG 18 ;
DUP 4 ;
ITER { DUP 16 ;
DUP 2 ;
GET ;
IF_NONE { NONE address } { DUP ; SOME ; SWAP ; DROP 1 } ;
IF_NONE { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } {} ;
DUP 3 ;
DUP 2 ;
COMPARE ;
EQ ;
NOT ;
IF { PUSH string "CALLER_NOT_OWNER" ; FAILWITH } {} ;
DUP 17 ;
NONE address ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 16 ; DROP 1 } ;
DUG 16 ;
DUP 16 ;
NONE (pair nat (map string bytes)) ;
DUP 4 ;
UPDATE ;
DIP 1 { DIG 15 ; DROP 1 } ;
DUG 15 ;
DROP 2 } ;
DROP 5 ;
PAIR 13 ;
SWAP ;
PAIR } } ;
DIP 1 { DROP 4 } }