x
696
1100
parameter (or (unit %request_balance) (or (nat %set_fa1_balance) (or (list %set_fa2_balance (pair (pair address nat) nat)) (or (option %set_pool_delegate key_hash) (or (or %set_flat_curve_exponent (unit %exponent8) (or (unit %exponent6) (unit %exponent4))) (or (address %set_target_oracle) (or (pair %set_swap_fee_ratio (nat %numerator) (nat %denominator)) (or (address %remove_admin) (or (unit %accept_admin_proposal) (or (address %propose_admin) (or (address %set_baking_rewards_receiver) (or (pair %set_rewards_receiver_ratio (nat %numerator) (nat %denominator)) (or (address %set_rewards_receiver) (or (address %set_lqt_address) (or (pair %token_swap_internal (pair (or %src_token (pair %fa2 address nat) (or (address %fa1) (unit %tez))) (or %dst_token (pair %fa2 address nat) (or (address %fa1) (unit %tez))) (nat %amount_sold) (nat %min_amount_bought) (address %receiver) (timestamp %deadline)) address) (or (pair %token_swap (or %src_token (pair %fa2 address nat) (or (address %fa1) (unit %tez))) (or %dst_token (pair %fa2 address nat) (or (address %fa1) (unit %tez))) (nat %amount_sold) (nat %min_amount_bought) (address %receiver) (timestamp %deadline)) (or (pair %remove_liquidity_internal (pair (address %receiver) (nat %lqt_burned) (map %min_tokens_withdrawn (or (pair %fa2 address nat) (or (address %fa1) (unit %tez))) nat) (timestamp %deadline)) address) (or (pair %remove_liquidity (address %receiver) (nat %lqt_burned) (map %min_tokens_withdrawn (or (pair %fa2 address nat) (or (address %fa1) (unit %tez))) nat) (timestamp %deadline)) (or (pair %add_liquidity_internal (pair (address %owner) (nat %min_lqt_minted) (or %src_token (pair %fa2 address nat) (or (address %fa1) (unit %tez))) (nat %src_token_amount) (map %remaining_tokens_max_deposited (or (pair %fa2 address nat) (or (address %fa1) (unit %tez))) nat) (timestamp %deadline)) address) (or (pair %add_liquidity (address %owner) (nat %min_lqt_minted) (or %src_token (pair %fa2 address nat) (or (address %fa1) (unit %tez))) (nat %src_token_amount) (map %remaining_tokens_max_deposited (or (pair %fa2 address nat) (or (address %fa1) (unit %tez))) nat) (timestamp %deadline)) (unit %default)))))))))))))))))))));storage (pair (big_map %administrators address (or (unit %proposed) (unit %set))) (nat %lqt_total) (address %lqt_address) (pair %swap_fee_ratio (nat %numerator) (nat %denominator)) (address %rewards_receiver) (pair %rewards_receiver_ratio (nat %numerator) (nat %denominator)) (address %baking_rewards_receiver) (map %tokens_info (or (pair %fa2 address nat) (or (address %fa1) (unit %tez))) (pair (nat %funds) (nat %multiplier))) (address %target_oracle) (or %curve_exponent (unit %exponent8) (or (unit %exponent6) (unit %exponent4))));code { LAMBDA (pair (or (pair address nat) (or address unit)) address address nat (or unit unit)) (option operation) { UNPAIR 5 ; IF_LEFT { DIG 4 ; DROP ; UNPAIR ; CONTRACT %transfer (list (pair address (list (pair address nat nat)))) ; IF_NONE { PUSH nat 2 ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address nat nat))) ; NIL (pair address nat nat) ; DIG 7 ; DIG 5 ; PAIR ; DIG 6 ; PAIR ; CONS ; DIG 4 ; PAIR ; CONS ; TRANSFER_TOKENS ; SOME } { IF_LEFT { DIG 4 ; DROP ; CONTRACT %transfer (pair address address nat) ; IF_NONE { PUSH nat 2 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 4 ; DIG 4 ; PAIR ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; SOME } { DROP 2 ; DIG 2 ; IF_LEFT { DROP ; CONTRACT unit ; IF_NONE { PUSH nat 2 ; FAILWITH } {} ; PUSH mutez 1 ; DIG 2 ; MUL ; UNIT ; TRANSFER_TOKENS ; SOME } { DROP 3 ; NONE operation } } } } ; LAMBDA (pair nat nat) (pair nat nat) { UNPAIR ; DUP 2 ; DUP 2 ; ADD ; DUG 2 ; SUB ; DUP 2 ; DUP 3 ; MUL ; DUP ; MUL ; DUP ; MUL ; DIG 2 ; DUP 2 ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP 3 ; DUP 4 ; MUL ; DUP ; MUL ; DUP ; MUL ; PUSH int 0 ; DUP 5 ; COMPARE ; EQ ; IF { DIG 3 ; DROP ; PUSH int 0 } { DIG 3 ; DUP 2 ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } ; SWAP ; DIG 3 ; SUB ; ISNAT ; IF_NONE { PUSH nat 13 ; FAILWITH } {} ; DUG 2 ; ADD ; ISNAT ; IF_NONE { PUSH nat 13 ; FAILWITH } {} ; PUSH nat 8 ; MUL ; SWAP ; PAIR } ; LAMBDA (pair nat nat) (pair nat nat) { UNPAIR ; DUP 2 ; DUP 2 ; ADD ; DUG 2 ; SUB ; DUP 2 ; DUP 3 ; MUL ; DUP ; DUP 2 ; DIG 2 ; MUL ; MUL ; DIG 2 ; DUP 2 ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP 3 ; DUP 4 ; MUL ; DUP ; DUP 2 ; DIG 2 ; MUL ; MUL ; PUSH int 0 ; DUP 5 ; COMPARE ; EQ ; IF { DIG 3 ; DROP ; PUSH int 0 } { DIG 3 ; DUP 2 ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } ; SWAP ; DIG 3 ; SUB ; ISNAT ; IF_NONE { PUSH nat 13 ; FAILWITH } {} ; DUG 2 ; ADD ; ISNAT ; IF_NONE { PUSH nat 13 ; FAILWITH } {} ; PUSH nat 6 ; MUL ; SWAP ; PAIR } ; LAMBDA (pair nat nat) (pair nat nat) { UNPAIR ; DUP 2 ; DUP 2 ; ADD ; DUG 2 ; SUB ; DUP 2 ; DUP 3 ; MUL ; DUP ; DUP 2 ; MUL ; DIG 3 ; DIG 2 ; MUL ; DUP 3 ; DUP 4 ; MUL ; DUP ; DUP 2 ; MUL ; DIG 4 ; DIG 2 ; MUL ; SWAP ; DIG 3 ; SUB ; ISNAT ; IF_NONE { PUSH nat 13 ; FAILWITH } {} ; DUG 2 ; ADD ; ISNAT ; IF_NONE { PUSH nat 13 ; FAILWITH } {} ; PUSH nat 4 ; MUL ; SWAP ; PAIR } ; DIG 4 ; UNPAIR ; IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 ; SELF_ADDRESS ; SENDER ; COMPARE ; NEQ ; SOURCE ; SENDER ; COMPARE ; NEQ ; AND ; IF { DROP ; PUSH nat 25 ; FAILWITH } { PUSH mutez 0 ; AMOUNT ; COMPARE ; GT ; IF { DROP ; PUSH nat 24 ; FAILWITH } { NIL operation ; DUP 2 ; GET 15 ; ITER { CAR ; IF_LEFT { UNPAIR ; SELF %set_fa2_balance ; SWAP ; CONTRACT %balance_of (pair (list (pair address nat)) (contract (list (pair (pair address nat) nat)))) ; IF_NONE { PUSH nat 27 ; FAILWITH } {} ; SWAP ; NIL (pair address nat) ; DIG 3 ; SELF_ADDRESS ; PAIR ; CONS ; PAIR ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { IF_LEFT { SELF %set_fa1_balance ; SWAP ; CONTRACT %getBalance (pair address (contract nat)) ; IF_NONE { PUSH nat 26 ; FAILWITH } {} ; SWAP ; SELF_ADDRESS ; PAIR ; SWAP ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; CONS } { DROP } } } ; PAIR } } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; SENDER ; LEFT unit ; RIGHT (pair address nat) ; DUP 3 ; GET 15 ; DUP 2 ; GET ; IF_NONE { DROP 3 ; PUSH nat 30 ; FAILWITH } { DUP 4 ; DIG 4 ; GET 15 ; DIG 2 ; DIG 4 ; UPDATE 1 ; SOME ; DIG 3 ; UPDATE ; UPDATE 15 ; NIL operation ; PAIR } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; IF_CONS { SWAP ; DROP ; DUP ; CDR ; DUP 2 ; CAR ; CDR ; DIG 2 ; CAR ; CAR ; PAIR 3 } { PUSH nat 28 ; FAILWITH } ; UNPAIR 3 ; SELF_ADDRESS ; SWAP ; COMPARE ; NEQ ; IF { DROP 3 ; PUSH nat 29 ; FAILWITH } { SENDER ; PAIR ; LEFT (or address unit) ; DUP 3 ; GET 15 ; DUP 2 ; GET ; IF_NONE { DROP 3 ; PUSH nat 30 ; FAILWITH } { DUP 4 ; DIG 4 ; GET 15 ; DIG 2 ; DIG 4 ; UPDATE 1 ; SOME ; DIG 3 ; UPDATE ; UPDATE 15 ; NIL operation ; PAIR } } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { DROP 2 ; PUSH nat 12 ; FAILWITH } { IF_LEFT { DROP 3 ; PUSH nat 12 ; FAILWITH } { DROP ; SWAP ; NIL operation ; DIG 2 ; SET_DELEGATE ; CONS ; PAIR } } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { DROP 2 ; PUSH nat 12 ; FAILWITH } { IF_LEFT { DROP 3 ; PUSH nat 12 ; FAILWITH } { DROP ; UPDATE 18 ; NIL operation ; PAIR } } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { DROP 2 ; PUSH nat 12 ; FAILWITH } { IF_LEFT { DROP 3 ; PUSH nat 12 ; FAILWITH } { DROP ; UPDATE 17 ; NIL operation ; PAIR } } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { DROP 2 ; PUSH nat 12 ; FAILWITH } { IF_LEFT { DROP 3 ; PUSH nat 12 ; FAILWITH } { DROP ; UPDATE 7 ; NIL operation ; PAIR } } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { DROP 2 ; PUSH nat 12 ; FAILWITH } { IF_LEFT { DROP 3 ; PUSH nat 12 ; FAILWITH } { DROP ; DUP 2 ; DIG 2 ; CAR ; NONE (or unit unit) ; DIG 3 ; UPDATE ; UPDATE 1 ; NIL operation ; PAIR } } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 ; DUP ; CAR ; SENDER ; GET ; IF_NONE { DROP ; PUSH nat 16 ; FAILWITH } { IF_LEFT { DROP ; DUP ; CAR ; UNIT ; RIGHT unit ; SOME ; SENDER ; UPDATE ; UPDATE 1 ; NIL operation ; PAIR } { DROP 2 ; PUSH nat 17 ; FAILWITH } } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { DROP 2 ; PUSH nat 12 ; FAILWITH } { IF_LEFT { DROP 3 ; PUSH nat 12 ; FAILWITH } { DROP ; DUP 2 ; DIG 2 ; CAR ; UNIT ; LEFT unit ; SOME ; DIG 3 ; UPDATE ; UPDATE 1 ; NIL operation ; PAIR } } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { DROP 2 ; PUSH nat 12 ; FAILWITH } { IF_LEFT { DROP 3 ; PUSH nat 12 ; FAILWITH } { DROP ; UPDATE 13 ; NIL operation ; PAIR } } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { DROP 2 ; PUSH nat 12 ; FAILWITH } { IF_LEFT { DROP 3 ; PUSH nat 12 ; FAILWITH } { DROP ; UPDATE 11 ; NIL operation ; PAIR } } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; DUP 2 ; CAR ; SENDER ; GET ; IF_NONE { DROP 2 ; PUSH nat 12 ; FAILWITH } { IF_LEFT { DROP 3 ; PUSH nat 12 ; FAILWITH } { DROP ; UPDATE 9 ; NIL operation ; PAIR } } } { IF_LEFT { DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; PUSH address "tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU" ; DUP 3 ; GET 5 ; COMPARE ; NEQ ; IF { DROP 2 ; PUSH nat 18 ; FAILWITH } { UPDATE 5 ; NIL operation ; PAIR } } { IF_LEFT { UNPAIR ; UNPAIR 6 ; DIG 5 ; DROP ; SELF_ADDRESS ; SENDER ; COMPARE ; NEQ ; IF { DROP 11 ; PUSH nat 31 ; FAILWITH } { DUP 7 ; GET 15 ; DUP 2 ; GET ; IF_NONE { PUSH nat 21 ; FAILWITH } {} ; DUP 8 ; GET 15 ; DUP 4 ; GET ; IF_NONE { PUSH nat 21 ; FAILWITH } {} ; DUP 9 ; GET 17 ; DUP 5 ; DUP 5 ; PAIR ; VIEW "get_token_price" (pair nat nat) ; IF_NONE { PUSH nat 22 ; FAILWITH } {} ; UNPAIR ; DUP 4 ; CDR ; MUL ; SWAP ; DUP 3 ; CDR ; MUL ; DUP 11 ; GET 18 ; DUP 3 ; DUP 6 ; CAR ; MUL ; DUP 3 ; DUP 6 ; CAR ; MUL ; DUP 3 ; IF_LEFT { DROP ; DUP ; DUP 3 ; PAIR ; DUP 18 ; SWAP ; EXEC } { IF_LEFT { DROP ; DUP ; DUP 3 ; PAIR ; DUP 17 ; SWAP ; EXEC } { DROP ; DUP ; DUP 3 ; PAIR ; DUP 16 ; SWAP ; EXEC } } ; CAR ; DIG 4 ; DIG 4 ; PUSH int 5 ; DIG 3 ; PUSH nat 0 ; DIG 7 ; DUP 13 ; MUL ; DIG 6 ; DIG 7 ; PAIR 7 ; LEFT nat ; LOOP_LEFT { PUSH int 0 ; DUP 2 ; GET 11 ; COMPARE ; EQ ; IF { GET 7 ; RIGHT (pair nat nat nat nat nat int (or unit (or unit unit))) } { DUP ; GET 7 ; DUP 2 ; GET 3 ; SUB ; ISNAT ; IF_NONE { PUSH nat 13 ; FAILWITH } {} ; DUP 2 ; GET 12 ; IF_LEFT { DROP ; DUP 2 ; GET 5 ; DUP 3 ; CAR ; ADD ; PAIR ; DUP 15 ; SWAP ; EXEC } { IF_LEFT { DROP ; DUP 2 ; GET 5 ; DUP 3 ; CAR ; ADD ; PAIR ; DUP 14 ; SWAP ; EXEC } { DROP ; DUP 2 ; GET 5 ; DUP 3 ; CAR ; ADD ; PAIR ; DUP 13 ; SWAP ; EXEC } } ; UNPAIR ; DUP 3 ; GET 9 ; SWAP ; SUB ; ISNAT ; IF_NONE { DROP ; PUSH nat 13 ; FAILWITH } { EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP 2 ; GET 7 ; ADD } ; DUP 2 ; SWAP ; UPDATE 7 ; PUSH int 1 ; DIG 2 ; GET 11 ; SUB ; UPDATE 11 ; LEFT nat } } ; DIG 11 ; DIG 12 ; DIG 13 ; DROP 3 ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP 10 ; GET 7 ; CDR ; DUP 2 ; DUP 12 ; GET 7 ; CAR ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP ; DIG 2 ; SUB ; ISNAT ; IF_NONE { DIG 6 ; DROP ; PUSH nat 15 ; FAILWITH } { DIG 7 ; DUP 2 ; COMPARE ; LT ; IF { DROP ; PUSH nat 15 ; FAILWITH } {} } ; DUP 10 ; GET 11 ; CDR ; DIG 2 ; DUP 11 ; GET 11 ; CAR ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DUP 7 ; INT ; DIG 4 ; SWAP ; DUP 2 ; CAR ; ADD ; ISNAT ; IF_NONE { PUSH nat 3 ; FAILWITH } {} ; UPDATE 1 ; DUP 2 ; DUP 4 ; ADD ; PUSH int 0 ; SUB ; DIG 4 ; SWAP ; DUP 2 ; CAR ; ADD ; ISNAT ; IF_NONE { PUSH nat 3 ; FAILWITH } {} ; UPDATE 1 ; DUP 10 ; DIG 10 ; GET 15 ; DIG 3 ; SOME ; DUP 7 ; UPDATE ; DIG 2 ; SOME ; DUP 7 ; UPDATE ; UPDATE 15 ; NIL operation ; UNIT ; RIGHT unit ; DIG 7 ; SELF_ADDRESS ; DIG 10 ; DIG 8 ; PAIR 5 ; DUP 8 ; SWAP ; EXEC ; IF_NONE {} { CONS } ; UNIT ; LEFT unit ; DIG 4 ; DIG 6 ; SELF_ADDRESS ; DUP 8 ; PAIR 5 ; DUP 6 ; SWAP ; EXEC ; IF_NONE {} { CONS } ; UNIT ; LEFT unit ; DIG 3 ; DUP 4 ; GET 9 ; SELF_ADDRESS ; DIG 6 ; PAIR 5 ; DIG 3 ; SWAP ; EXEC ; DIG 2 ; SWAP ; IF_NONE { SWAP } { DIG 2 ; SWAP ; CONS } ; PAIR } } { DIG 2 ; DIG 3 ; DIG 4 ; DROP 3 ; IF_LEFT { DIG 2 ; DROP ; DUP ; GET 10 ; NOW ; COMPARE ; GE ; IF { DROP 2 ; PUSH nat 5 ; FAILWITH } { PUSH bool True ; PUSH bool True ; EMPTY_MAP (or (pair address nat) (or address unit)) nat ; DUP 4 ; GET 5 ; SOME ; DUP 5 ; CAR ; UPDATE ; ITER { UNPAIR ; IF_LEFT { DROP 2 } { IF_LEFT { DROP 2 } { DROP ; AMOUNT ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; COMPARE ; EQ ; AND } } } ; COMPARE ; NEQ ; IF { DROP 2 ; PUSH nat 23 ; FAILWITH } { BALANCE ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; AMOUNT ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; SWAP ; SUB ; ISNAT ; IF_NONE { PUSH nat 32 ; FAILWITH } {} ; UNIT ; RIGHT address ; RIGHT (pair address nat) ; SELF %request_balance ; SELF %token_swap_internal ; SWAP ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; SENDER ; DIG 5 ; PAIR ; DIG 2 ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; DUP 5 ; GET 15 ; DUP 4 ; GET ; IF_NONE { DIG 2 ; DIG 3 ; DROP 2 ; DIG 2 } { DUP 6 ; DIG 6 ; GET 15 ; DIG 2 ; DIG 6 ; UPDATE 1 ; SOME ; DIG 5 ; UPDATE ; UPDATE 15 } ; NIL operation ; DIG 2 ; CONS ; DIG 2 ; CONS ; PAIR } } } { IF_LEFT { UNPAIR ; UNPAIR 4 ; DIG 3 ; DROP ; SELF_ADDRESS ; SENDER ; COMPARE ; NEQ ; IF { DROP 6 ; PUSH nat 31 ; FAILWITH } { DIG 2 ; MAP { UNPAIR ; DUP 6 ; GET 15 ; SWAP ; GET ; IF_NONE { PUSH nat 21 ; FAILWITH } {} ; DUP 6 ; GET 3 ; SWAP ; CAR ; DUP 5 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; PAIR } ; PUSH bool True ; DUP 2 ; ITER { CDR ; UNPAIR ; COMPARE ; GE ; AND } ; PUSH bool True ; SWAP ; COMPARE ; NEQ ; IF { DROP ; PUSH nat 10 ; FAILWITH } { MAP { CDR ; CAR } } ; EMPTY_MAP (or (pair address nat) (or address unit)) (pair nat nat) ; DUP 2 ; ITER { UNPAIR ; DUP 8 ; GET 15 ; DUP 2 ; GET ; IF_NONE { PUSH nat 21 ; FAILWITH } {} ; DIG 2 ; PUSH int 0 ; SUB ; DUP 2 ; CAR ; ADD ; ISNAT ; IF_NONE { PUSH nat 3 ; FAILWITH } {} ; UPDATE 1 ; DIG 2 ; SWAP ; SOME ; DIG 2 ; UPDATE } ; DUP 4 ; DUP 7 ; GET 3 ; SUB ; ISNAT ; IF_NONE { PUSH nat 11 ; FAILWITH } {} ; DIG 6 ; SWAP ; UPDATE 3 ; SWAP ; UPDATE 15 ; DIG 3 ; PUSH int 0 ; SUB ; DIG 4 ; DUP 3 ; GET 5 ; CONTRACT %mintOrBurn (pair (int %quantity) (address %target)) ; IF_NONE { PUSH nat 1 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; DIG 3 ; ITER { UNPAIR ; UNIT ; LEFT unit ; DIG 2 ; DUP 7 ; SELF_ADDRESS ; DIG 4 ; PAIR 5 ; DUP 6 ; SWAP ; EXEC ; IF_NONE {} { CONS } } ; DIG 3 ; DIG 4 ; DROP 2 ; DIG 2 ; SWAP ; DIG 2 ; CONS ; PAIR } } { IF_LEFT { DIG 2 ; DROP ; DUP ; GET 6 ; NOW ; COMPARE ; GE ; IF { DROP 2 ; PUSH nat 5 ; FAILWITH } { DUP 2 ; GET 15 ; SIZE ; DUP 2 ; GET 5 ; SIZE ; COMPARE ; NEQ ; IF { DROP 2 ; PUSH nat 6 ; FAILWITH } { BALANCE ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; AMOUNT ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; SWAP ; SUB ; ISNAT ; IF_NONE { PUSH nat 32 ; FAILWITH } {} ; UNIT ; RIGHT address ; RIGHT (pair address nat) ; SELF %request_balance ; SELF %remove_liquidity_internal ; SWAP ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; SENDER ; DIG 5 ; PAIR ; DIG 2 ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; DUP 5 ; GET 15 ; DUP 4 ; GET ; IF_NONE { DIG 2 ; DIG 3 ; DROP 2 ; DIG 2 } { DUP 6 ; DIG 6 ; GET 15 ; DIG 2 ; DIG 6 ; UPDATE 1 ; SOME ; DIG 5 ; UPDATE ; UPDATE 15 } ; NIL operation ; DIG 2 ; CONS ; DIG 2 ; CONS ; PAIR } } } { IF_LEFT { UNPAIR ; UNPAIR 6 ; DIG 5 ; DROP ; SELF_ADDRESS ; SENDER ; COMPARE ; NEQ ; IF { DROP 8 ; PUSH nat 31 ; FAILWITH } { DUP 7 ; GET 15 ; DUP 4 ; GET ; IF_NONE { PUSH nat 21 ; FAILWITH } {} ; DUP ; CAR ; DUP 9 ; GET 3 ; DUP 7 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; DIG 3 ; DUP 2 ; COMPARE ; LT ; IF { DROP 9 ; PUSH nat 9 ; FAILWITH } { DIG 5 ; DUP 6 ; SOME ; DIG 5 ; UPDATE ; MAP { UNPAIR ; DUP 8 ; GET 15 ; SWAP ; GET ; IF_NONE { PUSH nat 21 ; FAILWITH } {} ; DUP 4 ; CAR ; SWAP ; CAR ; DUP 7 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; PAIR } ; DIG 2 ; DIG 4 ; DROP 2 ; PUSH bool True ; DUP 2 ; ITER { CDR ; UNPAIR ; COMPARE ; LE ; AND } ; PUSH bool True ; SWAP ; COMPARE ; NEQ ; IF { DROP ; PUSH nat 8 ; FAILWITH } { MAP { CDR ; CAR } } ; EMPTY_MAP (or (pair address nat) (or address unit)) (pair nat nat) ; DUP 2 ; ITER { UNPAIR ; DUP 8 ; GET 15 ; DUP 2 ; GET ; IF_NONE { PUSH nat 21 ; FAILWITH } {} ; DIG 2 ; INT ; DUP 2 ; CAR ; ADD ; ISNAT ; IF_NONE { PUSH nat 3 ; FAILWITH } {} ; UPDATE 1 ; DIG 2 ; SWAP ; SOME ; DIG 2 ; UPDATE } ; DUP 6 ; DUP 4 ; DIG 7 ; GET 3 ; ADD ; UPDATE 3 ; SWAP ; UPDATE 15 ; DIG 2 ; INT ; DIG 3 ; DUP 3 ; GET 5 ; CONTRACT %mintOrBurn (pair (int %quantity) (address %target)) ; IF_NONE { PUSH nat 1 ; FAILWITH } {} ; PUSH mutez 0 ; DIG 2 ; DIG 3 ; PAIR ; TRANSFER_TOKENS ; NIL operation ; DIG 3 ; ITER { UNPAIR ; UNIT ; RIGHT unit ; DIG 2 ; SELF_ADDRESS ; DUP 8 ; DIG 4 ; PAIR 5 ; DUP 6 ; SWAP ; EXEC ; IF_NONE {} { CONS } } ; DIG 3 ; DIG 4 ; DROP 2 ; DIG 2 ; SWAP ; DIG 2 ; CONS ; PAIR } } } { DIG 2 ; DROP ; IF_LEFT { DUP ; UNPAIR 6 ; DROP 2 ; DUG 2 ; SOME ; DIG 2 ; UPDATE ; SWAP ; NOW ; COMPARE ; GE ; IF { DROP 3 ; PUSH nat 5 ; FAILWITH } { DUP 3 ; GET 15 ; SIZE ; DUP 2 ; SIZE ; COMPARE ; NEQ ; IF { DROP 3 ; PUSH nat 6 ; FAILWITH } { PUSH bool True ; PUSH bool True ; DIG 2 ; ITER { UNPAIR ; IF_LEFT { DROP 2 } { IF_LEFT { DROP 2 } { DROP ; AMOUNT ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; COMPARE ; EQ ; AND } } } ; COMPARE ; NEQ ; IF { DROP 2 ; PUSH nat 23 ; FAILWITH } { BALANCE ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; AMOUNT ; PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; SWAP ; SUB ; ISNAT ; IF_NONE { PUSH nat 32 ; FAILWITH } {} ; UNIT ; RIGHT address ; RIGHT (pair address nat) ; SELF %request_balance ; SELF %add_liquidity_internal ; SWAP ; PUSH mutez 0 ; UNIT ; TRANSFER_TOKENS ; SENDER ; DIG 5 ; PAIR ; DIG 2 ; PUSH mutez 0 ; DIG 2 ; TRANSFER_TOKENS ; DUP 5 ; GET 15 ; DUP 4 ; GET ; IF_NONE { DIG 2 ; DIG 3 ; DROP 2 ; DIG 2 } { DUP 6 ; DIG 6 ; GET 15 ; DIG 2 ; DIG 6 ; UPDATE 1 ; SOME ; DIG 5 ; UPDATE ; UPDATE 15 } ; NIL operation ; DIG 2 ; CONS ; DIG 2 ; CONS ; PAIR } } } } { DROP ; SELF_ADDRESS ; DUP 2 ; GET 13 ; COMPARE ; NEQ ; IF { DUP ; GET 13 ; CONTRACT unit ; IF_NONE { PUSH nat 20 ; FAILWITH } {} ; AMOUNT ; UNIT ; TRANSFER_TOKENS ; SWAP ; NIL operation ; DIG 2 ; CONS } { NIL operation } ; PAIR } } } } } } } } } } } } } } } } } } } } }