x
833
parameter (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 (or (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))))) (string %set_token_metadata_path)) (or (nat %drop) (list %do_transfer (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))))) (or (or (list %transfer (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) (list %transfer_gasless (pair (list %transfer_params (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) (pair (key %user_pk) (signature %user_sig))))) (or (nat %burn) (pair %burn_gasless (list %bg_token_id nat) (pair (key %bg_user_pk) (signature %bg_user_sig))))))));storage (pair (address %owner) (pair (address %minter) (pair (address %permits) (pair (string %token_metadata_path) (pair (nat %next_token_id) (pair (bool %mint_completed) (pair (set %coowners address) (pair (option %owner_candidate address) (pair (bool %paused) (pair (big_map %token_metadata nat (pair (nat %token_id) (map %token_info string bytes))) (pair (big_map %ledger nat address) (pair (set %operator (pair address (pair nat address))) (pair (big_map %operator_for_all (pair address address) unit) (big_map %metadata string bytes))))))))))))));code { LAMBDA nat string { PUSH unit Unit ; PUSH nat 0 ; DUP 3 ; COMPARE ; GT ; IF { 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 5 ; COMPARE ; GT ; LOOP { PUSH nat 10 ; DUP 5 ; EDIV ; IF_NONE { PUSH string "DIV_BY_ZERO" ; FAILWITH } {} ; DUP 3 ; DUP 3 ; DUP 3 ; CDR ; GET ; IF_NONE { PUSH string "NOT_FOUND" ; FAILWITH } {} ; CONCAT ; DIP { DIG 2 ; DROP } ; DUG 2 ; DUP ; CAR ; DIP { DIG 4 ; DROP } ; DUG 4 ; DROP ; PUSH nat 0 ; DUP 5 ; COMPARE ; GT } ; DUP 2 ; DIP { DIG 2 ; DROP } ; DUG 2 ; DROP 2 } { PUSH string "0" ; SWAP ; DROP } ; DUG 1 ; DROP } ; LAMBDA (pair string string) bytes { UNPAIR 2 ; PUSH unit Unit ; DUP 3 ; 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 { DIG 3 ; DROP } ; DUG 3 ; DROP 3 ; DUG 2 ; DROP 2 } ; LAMBDA (pair (big_map (pair address address) unit) (pair (set (pair address (pair 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 ; CAR ; DUP 2 ; CDR ; DUP ; ITER { DUP 5 ; IF { DUP 3 ; SENDER ; COMPARE ; NEQ ; IF { DUP 8 ; DUP 4 ; DUP 3 ; CDR ; CAR ; 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 { DIG 4 ; DROP } ; DUG 4 ; DROP } ; DROP 3 } ; DUP ; DIP { DIG 1 ; DROP } ; DUG 1 ; DROP ; DUG 3 ; DROP 3 } ; LAMBDA (pair address (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount))))))) bool { UNPAIR 2 ; PUSH unit Unit ; PUSH bool True ; DUP 4 ; ITER { DUP 2 ; IF { DUP ; CAR ; DUP 5 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } { PUSH bool False } ; DIP { DIG 1 ; DROP } ; DUG 1 ; DROP } ; DUP ; DIP { DIG 1 ; DROP } ; DUG 1 ; DROP ; DUG 2 ; DROP 2 } ; NIL operation ; DIG 5 ; UNPAIR ; DIP { UNPAIR 14 } ; IF_LEFT { IF_LEFT { IF_LEFT { IF_LEFT { UNPAIR ; NIL operation ; NIL operation ; DUP 19 ; ITER { CONS } ; DUP 4 ; AMOUNT ; DUP 5 ; MAP { DUP 18 ; DUP 2 ; CDR ; GET ; IF_NONE { PUSH nat 0 } { DUP 2 ; CAR ; DUP 2 ; COMPARE ; EQ ; IF { PUSH nat 1 } { PUSH nat 0 } ; SWAP ; DROP } ; DUP 2 ; PAIR ; SWAP ; DROP } ; TRANSFER_TOKENS ; CONS ; ITER { CONS } ; DIP { DIG 16 ; DROP } ; DUG 16 ; DROP 2 ; PAIR 14 ; DIG 1 ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; IF { PUSH bool True } { DUP 8 ; SENDER ; MEM ; IF { PUSH bool True } { PUSH bool False } } ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP ; SOME ; DIP { DIG 8 ; DROP } ; DUG 8 ; DROP ; PAIR 14 ; DIG 1 ; PAIR } } { IF_LEFT { DROP ; DUP 8 ; IF_NONE { PUSH bool False } { SENDER ; DUP 2 ; COMPARE ; EQ ; SWAP ; DROP } ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; SENDER ; SWAP ; DROP ; NONE address ; DIP { DIG 7 ; DROP } ; DUG 7 ; PAIR 14 ; DIG 1 ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP ; DIP { DIG 3 ; DROP } ; DUG 3 ; DROP ; PAIR 14 ; DIG 1 ; PAIR } } } { IF_LEFT { IF_LEFT { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 10 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 8 ; DUP 2 ; MEM ; IF { PUSH string "coowners" ; PUSH string "KEY_EXISTS" ; PAIR ; FAILWITH } { DUP 8 ; PUSH bool True ; DUP 3 ; UPDATE ; DIP { DIG 7 ; DROP } ; DUG 7 } ; DROP ; PAIR 14 ; DIG 1 ; PAIR } { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 10 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 8 ; PUSH bool False ; DUP 3 ; UPDATE ; DIP { DIG 7 ; DROP } ; DUG 7 ; DROP ; PAIR 14 ; DIG 1 ; PAIR } } { IF_LEFT { DUP 2 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP ; DIP { DIG 2 ; DROP } ; DUG 2 ; DROP ; PAIR 14 ; DIG 1 ; PAIR } { DROP ; DUP ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; PUSH bool True ; DIP { DIG 5 ; DROP } ; DUG 5 ; PAIR 14 ; DIG 1 ; PAIR } } } } { IF_LEFT { IF_LEFT { IF_LEFT { DROP ; DUP ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 9 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; PUSH bool True ; DIP { DIG 8 ; DROP } ; DUG 8 ; PAIR 14 ; DIG 1 ; PAIR } { DROP ; DUP ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 9 ; NOT ; IF { PUSH string "CONTRACT_NOT_PAUSED" ; FAILWITH } {} ; PUSH bool False ; DIP { DIG 8 ; DROP } ; DUG 8 ; PAIR 14 ; DIG 1 ; PAIR } } { IF_LEFT { UNPAIR ; SWAP ; DUP 3 ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP 11 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 16 ; DUP 2 ; DUP 4 ; UPDATE ; DIP { DIG 15 ; DROP } ; DUG 15 ; DROP 2 ; PAIR 14 ; DIG 1 ; 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 11 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 12 ; DUP 13 ; DUP 4 ; GET ; IF_NONE { PUSH string "token_metadata" ; PUSH string "ASSET_NOT_FOUND" ; PAIR ; FAILWITH } {} ; UNPAIR ; DROP ; DUP 4 ; SWAP ; DROP ; DUP 3 ; SWAP ; PAIR ; SOME ; DUP 4 ; UPDATE ; DIP { DIG 11 ; DROP } ; DUG 11 ; DROP 2 ; PAIR 14 ; DIG 1 ; PAIR } } } { IF_LEFT { IF_LEFT { IF_LEFT { DUP 10 ; IF { PUSH string "fa2_r1" ; PUSH string "INVALID_CONDITION" ; PAIR ; FAILWITH } {} ; DUP ; ITER { DUP ; IF_LEFT { SENDER ; DUP 2 ; CAR ; COMPARE ; EQ ; NOT ; IF { PUSH string "CALLER_NOT_OWNER" ; FAILWITH } {} ; DUP 15 ; PUSH bool True ; DUP 3 ; CAR ; DUP 4 ; CDR ; CDR ; PAIR ; DUP 4 ; CDR ; CAR ; PAIR ; UPDATE ; DIP { DIG 14 ; DROP } ; DUG 14 ; DROP } { SENDER ; DUP 2 ; CAR ; COMPARE ; EQ ; NOT ; IF { PUSH string "CALLER_NOT_OWNER" ; FAILWITH } {} ; DUP 15 ; PUSH bool False ; DUP 3 ; CAR ; DUP 4 ; CDR ; CDR ; PAIR ; DUP 4 ; CDR ; CAR ; PAIR ; UPDATE ; DIP { DIG 14 ; DROP } ; DUG 14 ; DROP } ; DROP } ; DROP ; PAIR 14 ; DIG 1 ; PAIR } { 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 10 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP ; DIP { DIG 4 ; DROP } ; DUG 4 ; DROP ; PAIR 14 ; DIG 1 ; PAIR } } { IF_LEFT { 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 7 ; IF { PUSH string "MINT_COMPLETED" ; FAILWITH } {} ; DUP 10 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; PUSH nat 201 ; DUP 2 ; COMPARE ; LT ; NOT ; IF { PUSH string "LIST_SIZE_EXCEDEED" ; FAILWITH } {} ; PUSH nat 0 ; DUP 2 ; DUP 2 ; COMPARE ; LT ; LOOP { DUP 13 ; DUP 8 ; MEM ; IF { PUSH string "ledger" ; PUSH string "KEY_EXISTS" ; PAIR ; FAILWITH } { DUP 13 ; DUP 5 ; SOME ; DUP 9 ; UPDATE ; DIP { DIG 12 ; DROP } ; DUG 12 } ; PUSH string ".json" ; DUP 22 ; DUP 9 ; EXEC ; DUP 8 ; CONCAT ; CONCAT ; EMPTY_MAP string bytes ; DUP 22 ; DUP 3 ; PUSH string "ERROR_SLICE" ; PAIR ; EXEC ; SOME ; PUSH string "" ; UPDATE ; DUP 14 ; DUP 10 ; MEM ; IF { PUSH string "token_metadata" ; PUSH string "KEY_EXISTS" ; PAIR ; FAILWITH } { DUP 14 ; DUP 2 ; DUP 11 ; PAIR ; SOME ; DUP 11 ; UPDATE ; DIP { DIG 13 ; DROP } ; DUG 13 } ; PUSH nat 1 ; DUP 10 ; ADD ; DIP { DIG 8 ; DROP } ; DUG 8 ; PUSH nat 1 ; DUP 4 ; ADD ; DIP { DIG 2 ; DROP } ; DUG 2 ; DROP 2 ; DUP 2 ; DUP 2 ; COMPARE ; LT } ; DROP 2 ; PAIR 14 ; DIG 1 ; PAIR } { SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; NOT ; IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ; DUP ; ITER { DUP ; CAR ; DUP 2 ; CDR ; DUP ; ITER { DUP ; CDR ; CAR ; DUP 17 ; DUP 2 ; GET ; IF_NONE { NONE address } { DUP ; SOME ; SWAP ; DROP } ; IF_NONE { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } {} ; DUP 5 ; DUP 2 ; COMPARE ; EQ ; IF { PUSH nat 1 ; DUP 4 ; CDR ; CDR ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } { PUSH bool False } ; NOT ; IF { PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH } {} ; DUP 18 ; DUP 4 ; CAR ; SOME ; DUP 4 ; UPDATE ; DIP { DIG 17 ; DROP } ; DUG 17 ; DROP 3 } ; DROP 3 } ; DROP ; PAIR 14 ; DIG 1 ; PAIR } } } { IF_LEFT { IF_LEFT { DUP 10 ; IF { PUSH string "fa2_r4" ; PUSH string "INVALID_CONDITION" ; PAIR ; FAILWITH } {} ; DUP 18 ; DUP 2 ; DUP 15 ; PAIR ; DUP 16 ; PAIR ; EXEC ; NOT ; IF { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } {} ; NIL operation ; NIL operation ; DUP 18 ; 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 { DIG 15 ; DROP } ; DUG 15 ; DROP ; PAIR 14 ; DIG 1 ; PAIR } { DUP 10 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP ; ITER { DUP ; CAR ; DUP 2 ; CDR ; CAR ; DUP 3 ; CDR ; CDR ; DUP 2 ; HASH_KEY ; IMPLICIT_ACCOUNT ; ADDRESS ; DUP 22 ; DUP 5 ; DUP 3 ; PAIR ; EXEC ; NOT ; IF { PUSH string "SIGNER_NOT_FROM" ; FAILWITH } {} ; NIL operation ; NIL operation ; DUP 23 ; ITER { CONS } ; DUP 11 ; CONTRACT %check (pair key (pair 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 { DIG 20 ; DROP } ; DUG 20 ; NIL operation ; NIL operation ; DUP 23 ; 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 { DIG 20 ; DROP } ; DUG 20 ; DROP 5 } ; DROP ; PAIR 14 ; DIG 1 ; PAIR } } { IF_LEFT { DUP 12 ; DUP 2 ; GET ; IF_NONE { NONE address } { DUP ; SOME ; SWAP ; DROP } ; IF_NONE { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } {} ; SENDER ; DUP 2 ; COMPARE ; EQ ; NOT ; IF { PUSH string "CALLER_NOT_OWNER" ; FAILWITH } {} ; DUP 11 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP 13 ; NONE address ; DUP 4 ; UPDATE ; DIP { DIG 12 ; DROP } ; DUG 12 ; DUP 12 ; NONE (pair nat (map string bytes)) ; DUP 4 ; UPDATE ; DIP { DIG 11 ; DROP } ; DUG 11 ; DROP 2 ; PAIR 14 ; DIG 1 ; PAIR } { DUP 10 ; IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ; DUP ; CAR ; DUP 2 ; CDR ; CAR ; DUP 3 ; CDR ; CDR ; DUP 2 ; HASH_KEY ; IMPLICIT_ACCOUNT ; ADDRESS ; NIL operation ; NIL operation ; DUP 22 ; ITER { CONS } ; DUP 10 ; CONTRACT %check (pair key (pair 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 { DIG 19 ; DROP } ; DUG 19 ; DUP 4 ; ITER { DUP 17 ; DUP 2 ; GET ; IF_NONE { NONE address } { DUP ; SOME ; SWAP ; DROP } ; IF_NONE { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } {} ; DUP 3 ; DUP 2 ; COMPARE ; EQ ; NOT ; IF { PUSH string "CALLER_NOT_OWNER" ; FAILWITH } {} ; DUP 18 ; NONE address ; DUP 4 ; UPDATE ; DIP { DIG 17 ; DROP } ; DUG 17 ; DUP 17 ; NONE (pair nat (map string bytes)) ; DUP 4 ; UPDATE ; DIP { DIG 16 ; DROP } ; DUG 16 ; DROP 2 } ; DROP 5 ; PAIR 14 ; DIG 1 ; PAIR } } } } } ; DIP { DROP 4 } }