x
850
1726
{ 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))))) (pair %deposit (nat %stake_id) (nat %token_amount))) (or (pair %internal_deposit (nat %stake_id) (nat %token_amount)) (pair %internal_withdraw (nat %ratio_denominator) (pair (nat %ratio_numerator) (nat %stake_id))))) (or (or (address %propose_administrator) (address %remove_administrator)) (or (pair %remove_exchange (nat %src_token_id) (pair (address %src_token_address) (pair (nat %dst_token_id) (address %dst_token_address)))) (unit %set_administrator)))) (or (or (or (list %set_balance (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))) (pair %set_exchange (pair %exchange_key (nat %src_token_id) (pair (address %src_token_address) (pair (nat %dst_token_id) (address %dst_token_address)))) (pair %exchange_value (address %oracle_address) (lambda %execution_lambda (pair nat nat) (list operation))))) (or (list %swap (pair (pair %exchange_key (nat %src_token_id) (pair (address %src_token_address) (pair (nat %dst_token_id) (address %dst_token_address)))) (nat %token_amount))) (list %transfer (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))))) (or (or (nat %update_max_release_period) (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 (pair %update_trading_window (timestamp %initial_shift) (pair (nat %duration_in_seconds) (nat %recurrence_in_seconds))) (pair %withdraw (nat %ratio_denominator) (pair (nat %ratio_numerator) (nat %stake_id))))))) ; storage (pair (pair (pair (big_map %administrators address int) (pair (nat %current_token_balance) (nat %disc_factor))) (pair (pair (big_map %exchanges (pair (nat %src_token_id) (pair (address %src_token_address) (pair (nat %dst_token_id) (address %dst_token_address)))) (pair (address %oracle_address) (lambda %execution_lambda (pair nat nat) (list operation)))) (nat %last_stake_id)) (pair (nat %last_token_balance) (nat %max_release_period)))) (pair (pair (pair (big_map %operators (pair (address %owner) (pair (address %operator) (nat %token_id))) unit) (address %sender)) (pair (big_map %stakes nat (pair (nat %token_amount) (pair (nat %stake) (timestamp %age_timestamp)))) (big_map %stakes_owner_lookup address (set nat)))) (pair (pair (address %token_address) (nat %token_id)) (pair (nat %total_stake) (pair %trading_window (timestamp %initial_shift) (pair (nat %duration_in_seconds) (nat %recurrence_in_seconds))))))) ; code { LAMBDA (pair unit (pair (list operation) (pair (pair (pair (big_map address int) (pair nat nat)) (pair (pair (big_map (pair nat (pair address (pair nat address))) (pair address (lambda (pair nat nat) (list operation)))) nat) (pair nat nat))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) address) (pair (big_map nat (pair nat (pair nat timestamp))) (big_map address (set nat)))) (pair (pair address nat) (pair nat (pair timestamp (pair nat nat)))))))) (pair unit (pair (list operation) (pair (pair (pair (big_map address int) (pair nat nat)) (pair (pair (big_map (pair nat (pair address (pair nat address))) (pair address (lambda (pair nat nat) (list operation)))) nat) (pair nat nat))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) address) (pair (big_map nat (pair nat (pair nat timestamp))) (big_map address (set nat)))) (pair (pair address nat) (pair nat (pair timestamp (pair nat nat)))))))) { CDR ; UNPAIR ; SWAP ; DUP ; DUG 2 ; GET 5 ; CAR ; CONTRACT %balance_of (pair (list %requests (pair (address %owner) (nat %token_id))) (contract %callback (list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))))) ; IF_NONE { PUSH int 138 ; FAILWITH } {} ; PUSH mutez 0 ; SELF_ADDRESS ; CONTRACT %set_balance (list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance))) ; IF_NONE { PUSH int 139 ; FAILWITH } {} ; NIL (pair address nat) ; DUP 6 ; GET 5 ; CDR ; SELF_ADDRESS ; PAIR ; CONS ; PAIR ; TRANSFER_TOKENS ; CONS ; UNIT ; PAIR 3 } ; SWAP ; LAMBDA (pair unit (pair (pair (pair (big_map address int) (pair nat nat)) (pair (pair (big_map (pair nat (pair address (pair nat address))) (pair address (lambda (pair nat nat) (list operation)))) nat) (pair nat nat))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) address) (pair (big_map nat (pair nat (pair nat timestamp))) (big_map address (set nat)))) (pair (pair address nat) (pair nat (pair timestamp (pair nat nat))))))) (pair unit (pair (pair (pair (big_map address int) (pair nat nat)) (pair (pair (big_map (pair nat (pair address (pair nat address))) (pair address (lambda (pair nat nat) (list operation)))) nat) (pair nat nat))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) address) (pair (big_map nat (pair nat (pair nat timestamp))) (big_map address (set nat)))) (pair (pair address nat) (pair nat (pair timestamp (pair nat nat))))))) { CDR ; DUP ; GET 7 ; PUSH nat 0 ; COMPARE ; LT ; IF { DUP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP 6 ; GET 7 ; PUSH nat 1000000000000 ; DIG 7 ; DUP ; CAR ; GET 5 ; SWAP ; CAR ; CAR ; GET 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 163 ; FAILWITH } {} ; MUL ; EDIV ; IF_NONE { PUSH int 164 ; FAILWITH } { CAR } ; ADD ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR ; DUP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CDR ; DIG 4 ; CAR ; CAR ; GET 3 ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR } {} ; UNIT ; PAIR } ; SWAP ; LAMBDA unit unit { DROP ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 400 ; FAILWITH } ; UNIT } ; SWAP ; LAMBDA (pair unit (pair (pair (pair (big_map address int) (pair nat nat)) (pair (pair (big_map (pair nat (pair address (pair nat address))) (pair address (lambda (pair nat nat) (list operation)))) nat) (pair nat nat))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) address) (pair (big_map nat (pair nat (pair nat timestamp))) (big_map address (set nat)))) (pair (pair address nat) (pair nat (pair timestamp (pair nat nat))))))) (pair unit (pair (pair (pair (big_map address int) (pair nat nat)) (pair (pair (big_map (pair nat (pair address (pair nat address))) (pair address (lambda (pair nat nat) (list operation)))) nat) (pair nat nat))) (pair (pair (pair (big_map (pair address (pair address nat)) unit) address) (pair (big_map nat (pair nat (pair nat timestamp))) (big_map address (set nat)))) (pair (pair address nat) (pair nat (pair timestamp (pair nat nat))))))) { CDR ; DUP ; CAR ; CAR ; CAR ; PUSH int 1 ; SWAP ; SENDER ; GET ; IF_NONE { PUSH int 35 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH int 401 ; FAILWITH } ; UNIT ; PAIR } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { IF_LEFT { NIL (pair (pair address nat) nat) ; SWAP ; DUP ; DUG 2 ; CAR ; ITER { DUP 4 ; GET 3 ; GET 3 ; SWAP ; DUP ; DUG 2 ; CDR ; MEM ; IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ; DUP 4 ; GET 3 ; GET 3 ; SWAP ; DUP ; DUG 2 ; CDR ; GET ; IF_NONE { PUSH int 339 ; FAILWITH } { DROP } ; DUP 4 ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { DUP 4 ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 341 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CDR ; MEM ; IF { SWAP ; PUSH nat 1 ; DIG 2 ; PAIR ; CONS } { DROP } } { SWAP ; PUSH nat 0 ; DIG 2 ; PAIR ; CONS } } ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; NIL operation ; DIG 2 ; CDR ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; CAR ; SENDER ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; NIL operation ; DIG 3 ; UNIT ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; SWAP ; DUG 2 ; SELF %internal_deposit ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } { IF_LEFT { DUP 4 ; UNIT ; EXEC ; DUP 6 ; UNIT ; SWAP ; DIG 4 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DIG 7 ; DIG 7 ; DIG 7 ; DIG 7 ; DIG 5 ; DIG 7 ; DIG 7 ; DIG 7 ; DUP 3 ; CDR ; NIL operation ; DUP 6 ; GET 5 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 109 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 6 ; DUP 11 ; GET 5 ; CDR ; SELF_ADDRESS ; PAIR 3 ; CONS ; DUP 10 ; GET 3 ; CAR ; CDR ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS ; DIG 5 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DUP 7 ; ADD ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; DUP ; DUG 6 ; CAR ; CAR ; GET 4 ; PUSH nat 1000000000000 ; DUP 4 ; MUL ; EDIV ; IF_NONE { PUSH int 216 ; FAILWITH } { CAR } ; DUP 6 ; CAR ; DUP ; PUSH nat 0 ; COMPARE ; LT ; IF { DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 4 ; DUP ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 6 ; GET 3 ; CAR ; CDR ; GET ; IF_NONE { PUSH int 220 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; MEM ; IF {} { PUSH int 404 ; FAILWITH } } { DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 3 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; PUSH nat 1 ; ADD ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR ; DUP ; DUG 4 ; CAR ; GET 3 ; CDR } ; DUP 5 ; GET 3 ; GET 3 ; SWAP ; DUP ; DUG 2 ; MEM ; IF { DUP 5 ; GET 3 ; GET 3 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 226 ; FAILWITH } {} ; DUP 3 ; SWAP ; DUP ; DUG 2 ; GET 3 ; ADD ; DUP 7 ; CAR ; GET 6 ; DUP 3 ; GET 4 ; NOW ; SUB ; ISNAT ; IF_NONE { PUSH int 227 ; FAILWITH } {} ; DUP ; DUP 3 ; COMPARE ; LE ; IF { DROP } { SWAP ; DROP } ; DUP 3 ; GET 3 ; MUL ; EDIV ; IF_NONE { PUSH int 229 ; FAILWITH } { CAR } ; INT ; PUSH int -1 ; MUL ; NOW ; ADD ; SWAP ; DUP ; DUG 2 ; DUP 5 ; DIG 3 ; GET 3 ; ADD ; UPDATE 3 ; DUP ; CAR ; DIG 6 ; ADD ; UPDATE 1 ; SWAP ; UPDATE 4 ; DIG 4 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; DIG 5 ; SOME ; DIG 6 ; UPDATE ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUG 2 } { DIG 4 ; DUP ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 6 ; GET 3 ; CAR ; CDR ; MEM ; IF {} { DUP 5 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; PUSH (option (set nat)) (Some {}) ; DIG 10 ; GET 3 ; CAR ; CDR ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUG 4 } ; DUP 5 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP ; DIG 10 ; GET 3 ; CAR ; CDR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 237 ; FAILWITH } {} ; PUSH bool True ; DUP 9 ; UPDATE ; SOME ; SWAP ; UPDATE ; SWAP ; NOW ; DUP 8 ; DIG 10 ; PAIR 3 ; SOME ; DIG 6 ; UPDATE ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUG 2 } ; DIG 2 ; DUP ; GET 7 ; DIG 2 ; ADD ; UPDATE 7 ; SWAP } { DUP 4 ; UNIT ; EXEC ; DUP 6 ; UNIT ; SWAP ; DIG 4 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; DIG 7 ; DIG 7 ; DIG 7 ; DIG 7 ; DIG 5 ; DIG 7 ; DIG 7 ; DIG 7 ; DUP 4 ; GET 3 ; GET 3 ; DUP 4 ; GET 4 ; GET ; IF_NONE { PUSH int 261 ; FAILWITH } {} ; DIG 4 ; DUP ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 6 ; GET 3 ; CAR ; CDR ; GET ; IF_NONE { PUSH int 263 ; FAILWITH } {} ; DUP 5 ; GET 4 ; MEM ; IF {} { PUSH int 404 ; FAILWITH } ; DIG 3 ; DUP ; CAR ; SWAP ; DUP ; DUG 5 ; GET 3 ; COMPARE ; LE ; IF {} { PUSH int 603 ; FAILWITH } ; DIG 3 ; DUP ; CAR ; SWAP ; DUP ; DUG 5 ; GET 3 ; DUP 3 ; CAR ; MUL ; EDIV ; IF_NONE { PUSH int 268 ; FAILWITH } { CAR } ; DIG 4 ; DUP ; CAR ; SWAP ; DUP ; DUG 6 ; GET 3 ; DUP 4 ; GET 3 ; MUL ; EDIV ; IF_NONE { PUSH int 269 ; FAILWITH } { CAR } ; PUSH nat 1000000000000 ; DUP 8 ; CAR ; CAR ; GET 4 ; DUP 3 ; MUL ; EDIV ; IF_NONE { PUSH int 270 ; FAILWITH } { CAR } ; PUSH nat 0 ; DUP 4 ; DUP 3 ; COMPARE ; GT ; IF { DROP ; DUP 3 ; SWAP ; DUP ; DUG 2 ; SUB ; ISNAT ; IF_NONE { PUSH int 273 ; FAILWITH } {} } {} ; NIL operation ; DUP 10 ; GET 5 ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 109 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DIG 13 ; DUP ; CAR ; GET 6 ; SWAP ; DUP ; DUG 15 ; CAR ; GET 6 ; DUP 12 ; GET 4 ; NOW ; SUB ; ISNAT ; IF_NONE { PUSH int 266 ; FAILWITH } {} ; DUP ; DUP 3 ; COMPARE ; LE ; IF { DROP } { SWAP ; DROP } ; DIG 7 ; MUL ; EDIV ; IF_NONE { PUSH int 274 ; FAILWITH } { CAR } ; DUP 9 ; ADD ; DIG 13 ; DUP ; GET 5 ; CDR ; SWAP ; DUP ; DUG 15 ; GET 3 ; CAR ; CDR ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS ; DUP 9 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CDR ; DIG 5 ; DIG 12 ; CAR ; GET 5 ; SUB ; ISNAT ; IF_NONE { PUSH int 278 ; FAILWITH } {} ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; DUP ; DUG 8 ; DUP 3 ; DIG 9 ; GET 7 ; SUB ; ISNAT ; IF_NONE { PUSH int 279 ; FAILWITH } {} ; UPDATE 7 ; DUG 7 ; PUSH nat 0 ; DUP 3 ; DUP 6 ; GET 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 282 ; FAILWITH } {} ; COMPARE ; EQ ; IF { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; NONE (pair nat (pair nat timestamp)) ; DUP 8 ; GET 4 ; UPDATE ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; DUG 3 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP ; DIG 8 ; GET 3 ; CAR ; CDR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 286 ; FAILWITH } {} ; PUSH bool False ; DIG 9 ; GET 4 ; UPDATE ; SOME ; SWAP ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP } { DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 5 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; DUP ; DUP 11 ; GET 4 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 288 ; FAILWITH } {} ; DIG 9 ; DUP 11 ; CAR ; SUB ; ISNAT ; IF_NONE { PUSH int 281 ; FAILWITH } {} ; UPDATE 1 ; SOME ; SWAP ; UPDATE ; DUP ; DIG 9 ; GET 4 ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 289 ; FAILWITH } {} ; DIG 8 ; DIG 9 ; GET 3 ; SUB ; ISNAT ; IF_NONE { PUSH int 282 ; FAILWITH } {} ; UPDATE 3 ; SOME ; SWAP ; UPDATE ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP } } } } { IF_LEFT { IF_LEFT { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; UNPAIR ; PUSH (option int) (Some 0) ; DIG 5 ; UPDATE ; PAIR ; PAIR ; PAIR } { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; UNPAIR ; NONE int ; DIG 5 ; UPDATE ; PAIR ; PAIR ; PAIR } } { IF_LEFT { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; NONE (pair address (lambda (pair nat nat) (list operation))) ; DIG 6 ; UPDATE ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR } { DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DUP ; CAR ; CAR ; CAR ; PUSH int 0 ; SWAP ; SENDER ; GET ; IF_NONE { PUSH int 57 ; FAILWITH } {} ; COMPARE ; EQ ; IF {} { PUSH int 405 ; FAILWITH } ; UNPAIR ; UNPAIR ; UNPAIR ; PUSH (option int) (Some 1) ; SENDER ; UPDATE ; PAIR ; PAIR ; PAIR } } ; NIL operation } } { IF_LEFT { IF_LEFT { IF_LEFT { SWAP ; DUP ; DUG 2 ; GET 5 ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH int 504 ; FAILWITH } ; DUP ; IF_CONS { SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; DUP ; CAR ; CAR ; SELF_ADDRESS ; COMPARE ; EQ ; IF {} { PUSH int 503 ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 4 ; CDR ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR } { DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } } { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; DUP 6 ; CDR ; SOME ; DIG 6 ; CAR ; UPDATE ; PAIR ; PAIR ; SWAP ; PAIR ; PAIR } ; NIL operation } { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; IF_LEFT { SWAP ; DUP ; GET 11 ; SWAP ; DUP ; GET 12 ; SWAP ; DUP ; DUG 4 ; GET 9 ; NOW ; SUB ; ISNAT ; IF_NONE { PUSH int 352 ; FAILWITH } {} ; EDIV ; IF_NONE { PUSH int 353 ; FAILWITH } { CDR } ; COMPARE ; LE ; IF {} { PUSH int 505 ; FAILWITH } ; DUP ; NIL operation ; SWAP ; ITER { DUP 4 ; CAR ; GET 3 ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF {} { PUSH string "WrongCondition: self.data.exchanges.contains(exchange.exchange_key)" ; FAILWITH } ; DUP 4 ; CAR ; GET 3 ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 359 ; FAILWITH } {} ; CDR ; DUP 5 ; CAR ; GET 3 ; CAR ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 359 ; FAILWITH } {} ; CAR ; DUP 3 ; CDR ; VIEW "get_min_out" nat ; IF_NONE { PUSH int 360 ; FAILWITH } {} ; DUP 3 ; CDR ; PAIR ; EXEC ; NIL operation ; SWAP ; ITER { CONS } ; ITER { DIG 2 ; SWAP ; CONS ; SWAP } ; DROP } ; SWAP ; DROP ; DIG 2 ; DROP } { DUP ; ITER { DUP ; CDR ; ITER { DUP 4 ; GET 3 ; GET 3 ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET ; IF_NONE { PUSH int 316 ; FAILWITH } { DROP } ; SWAP ; DUP ; DUG 2 ; CAR ; SENDER ; COMPARE ; EQ ; IF { PUSH bool True } { DUP 4 ; GET 3 ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; GET 3 ; SENDER ; DUP 5 ; CAR ; PAIR 3 ; MEM } ; IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ; DUP ; GET 4 ; PUSH nat 1 ; COMPARE ; EQ ; IF { DUP 4 ; GET 3 ; GET 4 ; DUP 3 ; CAR ; GET ; IF_NONE { PUSH int 319 ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; GET 3 ; MEM } { PUSH bool False } ; IF {} { PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH } ; DUP 4 ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF {} { DIG 3 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; PUSH (option (set nat)) (Some {}) ; DUP 7 ; CAR ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUG 3 } ; DIG 3 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; DUP ; DUP 8 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 323 ; FAILWITH } {} ; PUSH bool False ; DUP 9 ; GET 3 ; UPDATE ; SOME ; SWAP ; UPDATE ; DUP ; DUP 7 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 324 ; FAILWITH } {} ; PUSH bool True ; DIG 8 ; GET 3 ; UPDATE ; SOME ; SWAP ; UPDATE ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUG 2 } ; DROP } ; DROP ; SWAP ; DROP ; NIL operation } } } { IF_LEFT { IF_LEFT { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; CAR ; DIG 4 ; SWAP ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR } { DUP ; ITER { IF_LEFT { DUP ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; PUSH (option unit) (Some Unit) ; DIG 6 ; DUP ; GET 4 ; SWAP ; DUP ; GET 3 ; SWAP ; CAR ; PAIR 3 ; UPDATE ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP } { DUP ; CAR ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; NONE unit ; DIG 6 ; DUP ; GET 4 ; SWAP ; DUP ; GET 3 ; SWAP ; CAR ; PAIR 3 ; UPDATE ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP } } ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP } ; NIL operation } { IF_LEFT { DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DUP ; CAR ; NOW ; COMPARE ; GT ; IF {} { PUSH int 506 ; FAILWITH } ; DUP ; GET 4 ; SWAP ; DUP ; DUG 2 ; GET 3 ; COMPARE ; LT ; IF {} { PUSH int 506 ; FAILWITH } ; DIG 2 ; UNIT ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; CDR ; SWAP ; UPDATE 8 ; NIL operation } { DIG 2 ; DROP ; DIG 2 ; DROP ; DIG 2 ; DROP ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; CAR ; SENDER ; SWAP ; PAIR ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP ; NIL operation ; DIG 3 ; UNIT ; SWAP ; DIG 4 ; DIG 3 ; DIG 3 ; PAIR 3 ; EXEC ; CDR ; UNPAIR ; SWAP ; DUG 2 ; SELF %internal_withdraw ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR } ; view "view_administrator_state" address int { UNPAIR ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; MEM ; IF { SWAP ; CAR ; CAR ; CAR ; SWAP ; GET ; IF_NONE { PUSH int 426 ; FAILWITH } {} } { DROP 2 ; PUSH int -1 } } ; view "view_balance" (pair (address %address) (nat %token_id)) int { UNPAIR ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; SWAP ; DUP ; DUG 2 ; CDR ; MEM ; IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 2 ; CAR ; MEM ; IF { SWAP ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 2 ; CAR ; GET ; IF_NONE { PUSH int 392 ; FAILWITH } {} ; SWAP ; CDR ; MEM } { DROP 2 ; PUSH bool False } ; IF { PUSH int 1 } { PUSH int 0 } } ; view "view_disc_factor" unit nat { CDR ; CAR ; CAR ; GET 4 } ; view "view_is_operator" (pair (address %owner) (pair (address %operator) (nat %token_id))) bool { UNPAIR ; SWAP ; GET 3 ; CAR ; CAR ; SWAP ; DUP ; GET 4 ; SWAP ; DUP ; GET 3 ; SWAP ; CAR ; PAIR 3 ; MEM } ; view "view_last_stake_id" unit nat { CDR ; CAR ; GET 3 ; CDR } ; view "view_max_release_period" unit nat { CDR ; CAR ; GET 6 } ; view "view_owner_stakes" address (set nat) { UNPAIR ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 2 ; MEM ; IF { SWAP ; GET 3 ; GET 4 ; SWAP ; GET ; IF_NONE { PUSH int 409 ; FAILWITH } {} } { DROP 2 ; EMPTY_SET nat } } ; view "view_stake" nat (pair (nat %token_amount) (pair (nat %stake) (timestamp %age_timestamp))) { UNPAIR ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; SWAP ; DUP ; DUG 2 ; MEM ; IF { SWAP ; GET 3 ; GET 3 ; SWAP ; GET ; IF_NONE { PUSH int 417 ; FAILWITH } {} } { DROP 2 ; PUSH timestamp "1970-01-01T00:00:00Z" ; PUSH nat 0 ; DUP ; PAIR 3 } } ; view "view_total_stake" unit nat { CDR ; GET 7 } }